久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Linux 6.6 IOMMU DMA重映射:原理、驗(yàn)證與排障指南

Linux 6.6 IOMMU DMA重映射:原理、驗(yàn)證與排障指南 做驅(qū)動調(diào)試的人大概都經(jīng)歷過這種場面設(shè)備驅(qū)動跑得好好的某一刻數(shù)據(jù)突然錯亂日志里干干凈凈用崩潰轉(zhuǎn)儲一看內(nèi)核某塊結(jié)構(gòu)體被一段完全不相干的十六進(jìn)制數(shù)據(jù)糊住了。查到最后往往是設(shè)備發(fā)出的 DMA 地址寫錯了或者描述符里的地址字段被固件改花了——沒有 IOMMU 的時(shí)候總線上的 DMA 請求就是全裸奔的設(shè)備愛往哪寫就往哪寫內(nèi)存管理單元完全管不了它。Linux 6.6 內(nèi)核里 IOMMU 子系統(tǒng)的 DMA 重映射DMA Remapping就是專門收拾這個問題的一層它把設(shè)備看到的地址空間和 CPU 看到的物理地址空間徹底切開設(shè)備發(fā)出的每一個地址都要先過這張翻譯表。這篇內(nèi)容圍繞 IOMMU 的 DMA 重映射原理展開同時(shí)把 6.6 上怎么打開、怎么觀察、怎么驗(yàn)證、怎么排坑一次講透適合正在寫 PCIe 驅(qū)動、做設(shè)備直通、或者被 DMA 越界搞得睡不著的同行參考。1. IOMMU 到底在解決什么問題從一次指針踩內(nèi)存說起1.1 沒有 IOMMU 時(shí)設(shè)備的 DMA 是完全不設(shè)防的先把最基礎(chǔ)的一層說清楚。CPU 訪問內(nèi)存要經(jīng)過 MMU頁表決定哪塊虛擬地址對應(yīng)哪塊物理頁越界就缺頁異常。但設(shè)備不一樣設(shè)備發(fā)起 DMA 時(shí)把地址丟到總線上由內(nèi)存控制器直接取數(shù)或者寫數(shù)這條路默認(rèn)繞開了 MMU。也就是說一塊 PCIe 采集卡只要往描述符里寫一個0xffff_8880_0000_0000這樣的地址硬件就會老老實(shí)實(shí)往那個物理位置寫數(shù)據(jù)中間沒有任何審批環(huán)節(jié)。我在某實(shí)驗(yàn)室見過一塊自定義采集卡FPGA 側(cè)的地址位寬算錯了一位描述符里的目標(biāo)地址被左移了一位結(jié)果驅(qū)動程序填給它的緩沖區(qū)地址整體偏移。沒開 IOMMU 的機(jī)器上這個偏移會隨機(jī)打壞相鄰的 slab 對象現(xiàn)象是跑幾個小時(shí)之后文件系統(tǒng)報(bào)錯或者某個完全無關(guān)的進(jìn)程收到 SIGBUS。這種問題最難查的地方在于故障點(diǎn)和根因之間隔著幾百毫秒甚至幾秒崩潰現(xiàn)場和元兇毫無關(guān)聯(lián)。打開 IOMMU 之后同樣的錯誤地址會立刻觸發(fā)一次 IOMMU 缺頁內(nèi)核打印出一行包含設(shè)備標(biāo)識和出錯地址的 fault 日志驅(qū)動直接被判定為行為異常。故障從偶發(fā)玄學(xué)變成穩(wěn)定復(fù)現(xiàn)這個價(jià)值遠(yuǎn)比性能優(yōu)化重要。所以我一直跟人說IOMMU 首先是一個調(diào)試工具和隔離邊界其次才是一個地址翻譯器。1.2 三層價(jià)值隔離、翻譯、訪問控制把 IOMMU 的能力拆開看其實(shí)是三件相互支撐的事。第一是地址翻譯設(shè)備用一套地址內(nèi)核里叫 IOVAI/O Virtual Address硬件按頁表翻成物理地址PA。第二是隔離每個設(shè)備嚴(yán)格說是每個 IOMMU group有自己獨(dú)立的地址空間A 設(shè)備映射的區(qū)域 B 設(shè)備看不見也摸不著哪怕兩塊卡是同型號、同一個驅(qū)動。第三是訪問控制每一個頁表項(xiàng)都帶權(quán)限位讀、寫、執(zhí)行是分開的設(shè)備只能做被顯式允許的操作。這三層疊起來才支撐了后來一堆上層玩法設(shè)備直通給虛擬機(jī)時(shí)把整個 group 的地址空間交給客戶機(jī)管內(nèi)核里的vfio靠它做用戶態(tài)驅(qū)動容器場景下做設(shè)備隔離內(nèi)核自己的DMA API靠它在 32 位設(shè)備上做地址窗口收斂bounce buffer 那一套。很多人以為 IOMMU 就是為了虛擬化其實(shí)虛擬化只是最出名的一個消費(fèi)者日常驅(qū)動開發(fā)里它天天都在干活。1.3 為什么叫重映射而不是映射這個用詞值得掰一下因?yàn)樗苯訉?yīng)硬件結(jié)構(gòu)。設(shè)備發(fā)出的地址在 IOMMU 硬件里叫輸入地址經(jīng)過查表后得到輸出地址再送到內(nèi)存控制器。翻譯過程是進(jìn)來一個地址出去另一個地址所以叫 remapping。而 CPU 側(cè)的 MMU 我們習(xí)慣叫 mapping因?yàn)樗菑臎]有物理歸屬的虛擬地址建立起映射關(guān)系。落到代碼上這個差別體現(xiàn)得很明顯CPU 側(cè)你操作的是vm_area_struct和頁表是申請地址→缺頁→填頁表的懶惰路徑IOMMU 側(cè)是先顯式建映射→再告訴設(shè)備可以用這個地址沒有缺頁這回事ATS/PRI那套另說屬于設(shè)備主動問路后面章節(jié)會提。理解了這個不對稱你就能明白為什么 DMA 映射的 API 必須成對出現(xiàn)dma_map_single/dma_unmap_single中間那段窗口硬件已經(jīng)準(zhǔn)備好了用完必須還回去否則 IOVA 會漏。2. DMA 重映射的核心數(shù)據(jù)結(jié)構(gòu)與地址翻譯鏈路2.1 設(shè)備、group、domain三個概念別搞混剛接觸這塊的人最容易在這三個詞上打轉(zhuǎn)。我用一個類比說清楚設(shè)備是具體的網(wǎng)卡、采集卡、NVMe 盤group是一批無法相互隔離的設(shè)備集合硬件上它們共用同一個翻譯單元或者同一條通往內(nèi)存的路徑內(nèi)核只能把它們當(dāng)成一個整體來管domain是真正承載頁表的那塊地址空間一個 domain 里可以掛多個 group。關(guān)鍵點(diǎn)在于內(nèi)核默認(rèn)策略是一個 group 一個 domain同一 group 里的設(shè)備共享同一套頁表。這就意味著如果同一個 group 里有一塊你不信任的設(shè)備它會和同組的可信設(shè)備平起平坐。做過直通的人應(yīng)該都踩過這個坑——想把某塊網(wǎng)卡單獨(dú)丟給虛擬機(jī)結(jié)果發(fā)現(xiàn)它和板載的一個 USB 控制器同組只能整組一起交出去或者用pci-stub提前把同組設(shè)備都占住。在 6.6 里查看分組很簡單for g in /sys/kernel/iommu_groups/*; do echo $(basename $g) for d in $g/devices/*; do echo $(basename $d) $(lspci -nns $(basename $d) 2/dev/null | cut -c1-80) done done分組結(jié)果完全由固件描述決定ACPI 表或者設(shè)備樹里的描述決定了哪些設(shè)備歸到一組內(nèi)核只是照著執(zhí)行。所以有些分組看起來莫名其妙那是固件的鍋不是內(nèi)核的鍋。2.2 頁表結(jié)構(gòu)從根表一路走到最后一頁x86 平臺上的 DMA 重映射硬件ACPI 里描述為 DMAR它的翻譯鏈路大致是三層結(jié)構(gòu)先按設(shè)備標(biāo)識找到根表項(xiàng)再按總線號找到上下文表項(xiàng)上下文表項(xiàng)里存著真正的多級頁表基址。真正做地址翻譯的部分和 CPU 的分頁結(jié)構(gòu)思路一致可以是三級、四級甚至五級具體級別在上下文表項(xiàng)里寫明。另一類主流平臺用的表述叫 SMMU結(jié)構(gòu)換了個名字但思想一樣設(shè)備按流 ID 查到一張表里的表項(xiàng)表項(xiàng)指向另一層配置配置里指定用哪套頁表、哪個地址空間。你在設(shè)備樹里給設(shè)備節(jié)點(diǎn)寫一條描述 IOMMU 歸屬的屬性內(nèi)核初始化時(shí)就能把這條鏈路串起來。這個多層結(jié)構(gòu)的存在直接導(dǎo)致了兩個工程后果。第一初始化階段必須先把整條鏈路建好包括分配頁表內(nèi)存、填根表和上下文表這段代碼在內(nèi)核啟動早期跑調(diào)試起來很麻煩。第二頁表級別可以按設(shè)備能力協(xié)商一塊只支持 32 位地址的設(shè)備給它配的頁表級別低IOVA 窗口自然也小這直接決定了你能給這臺設(shè)備分配多大的 DMA 緩沖區(qū)。后面第 4 節(jié)講參數(shù)計(jì)算時(shí)會用到這一點(diǎn)。2.3 IOVA 分配器地址不是隨便給的頁表建好了還得決定給設(shè)備什么 IOVA。這塊在 6.6 里是dma-iommu這層在管核心是一個按地址范圍分配的管理器內(nèi)部用紅黑樹記錄已占用的區(qū)間再配一層 per-CPU 的小緩存來加速短小分配的復(fù)用。為什么要有 per-CPU 緩存因?yàn)?DMA 映射調(diào)用極其頻繁網(wǎng)卡每發(fā)一個包、磁盤每做一次 I/O 都要映射一次如果每次都去紅黑樹上做插入刪除鎖競爭會直接把性能打下來。緩存的做法是unmap 時(shí)把釋放的 IOVA 區(qū)間按大小檔位存進(jìn)當(dāng)前 CPU 的緩存數(shù)組下次分配同檔位時(shí)直接從數(shù)組里取取不到再去全局樹里找。實(shí)測下來這個緩存能干掉相當(dāng)可觀的一筆分配開銷代價(jià)是 IOVA 的復(fù)用延后了一點(diǎn)對于調(diào)試來說你可能會看到某些 IOVA 長時(shí)間沒被回收。默認(rèn)情況下64 位設(shè)備拿到的 IOVA 窗口通常是 48 位寬度也就是一個非常大的地址空間。這個寬度不是拍腦袋定的它來自設(shè)備的coherent_dma_mask和dma_mask設(shè)備支持多寬的地址內(nèi)核就據(jù)此外推 IOMMU 能給多寬的窗口同時(shí)受 IOMMU 硬件本身支持的最大寬度約束。如果你的驅(qū)動里把dma_mask設(shè)成 32 位恭喜你給自己套了一個 4GB 的籠子映射壓力大時(shí)很快會撞墻。2.4 權(quán)限位、緩存一致性與 IOTLB頁表項(xiàng)里的權(quán)限位不用多說讀、寫分開內(nèi)核在dma_map_*時(shí)按數(shù)據(jù)傳輸方向設(shè)置。這里有個細(xì)節(jié)值得提DMA_FROM_DEVICE方向下建的是可寫權(quán)限設(shè)備要往內(nèi)存寫而不是只讀反過來DMA_TO_DEVICE建的是可讀。剛接觸的人經(jīng)常反著理解以為方向是CPU 要干什么其實(shí)是設(shè)備要干什么。一致性方面同一塊內(nèi)存 CPU 和設(shè)備都能訪問緩存就成了麻煩。一致性架構(gòu)x86 常見的那種硬件自己保證非一致性架構(gòu)上就得軟件動手dma_map_single在映射前要把 CPU 緩存里對應(yīng)的數(shù)據(jù)刷到內(nèi)存dma_unmap_single之后要讓 CPU 緩存失效否則 CPU 讀到的是舊值。這一套在 IOMMU 之上照樣要做IOMMU 管的是地址翻譯和權(quán)限不管緩存。最后是 IOTLB。頁表改了不等于硬件立刻知道IOMMU 內(nèi)部有自己的地址翻譯緩存翻譯結(jié)果會被緩存起來。改了映射必須讓緩存失效否則設(shè)備還在用舊的翻譯結(jié)果訪問已經(jīng)回收的內(nèi)存。這就是嚴(yán)格模式和延遲模式的分界點(diǎn)嚴(yán)格模式下每次 unmap 立刻發(fā)失效指令安全但慢延遲模式下把要失效的區(qū)間攢起來攢到一定量或者遇到必須同步的點(diǎn)再一起發(fā)快但有窗口風(fēng)險(xiǎn)。# 查看當(dāng)前是否嚴(yán)格模式不同小版本參數(shù)名可能微調(diào)以內(nèi)核文檔為準(zhǔn) cat /proc/cmdline | tr \n | grep -E iommu3. Linux 6.6 里的那幾條關(guān)鍵路徑3.1 啟動階段固件描述怎么變成 domain內(nèi)核啟動早期IOMMU 的初始化分兩步走。第一步是探測硬件、解析固件描述把每一條哪個設(shè)備歸哪套翻譯硬件管的關(guān)系記錄下來形成設(shè)備到 group 的對應(yīng)關(guān)系。這一步在內(nèi)存管理初始化之前就要做完一部分因?yàn)楹竺娴?DMA 一致性分配可能馬上就需要翻譯能力。第二步是惰性建域。內(nèi)核不會在啟動時(shí)給所有設(shè)備都建 domain而是等設(shè)備真正被驅(qū)動 probe、第一次調(diào)用 DMA 映射時(shí)才建。這個設(shè)計(jì)很務(wù)實(shí)一臺機(jī)器上可能有幾十個設(shè)備大部分根本沒驅(qū)動管全建一遍純屬浪費(fèi)頁表內(nèi)存。你在日志里看到的那些初始化行只說明翻譯硬件就緒了不代表每個設(shè)備都已經(jīng)有自己的地址空間。這里有個排查技巧開機(jī)日志里搜 IOMMU 相關(guān)的行能看到翻譯單元被識別、支持的頁表級別、以及是否有設(shè)備因?yàn)槊枋鰶_突被跳過。如果某塊設(shè)備明明在卻查不到它的 group八成是固件里的描述沒覆蓋到它或者是熱插拔槽位的描述寫得有問題。3.2 驅(qū)動 probe 之后dma_map_single 里的四層調(diào)用這是整條鏈路里最值得逐層看的一段。你的驅(qū)動調(diào)用dma_map_single(dev, ptr, size, dir)往下依次是通用 DMA 層先看這個設(shè)備有沒有 IOMMU domain有就走 IOMMU 路徑?jīng)]有就退化成直接的物理地址映射這個退化路徑叫 direct mapping需要swiotlb兜底處理地址不可達(dá)的情況。走 IOMMU 路徑時(shí)進(jìn)入dma-iommu這層先做頁對齊處理你傳進(jìn)來的地址和長度幾乎不可能是頁對齊的這層會算出覆蓋范圍并想好頭尾兩頁怎么處理。分配 IOVA從分配器里拿一段足夠大的連續(xù)地址注意這里要的是連續(xù) IOVA物理上可以不連續(xù)。落頁表調(diào)用iommu_map把這批 IOVA 和對應(yīng)的物理頁逐個建立映射頁大小會盡量往大頁上湊能用一個 2MB 頁就不用 512 個 4KB 頁這對減少 TLB 壓力和頁表內(nèi)存都很有意義。最終返回給你的是 IOVA你把它寫進(jìn)設(shè)備寄存器或者描述符。注意返回的這個地址絕對不能當(dāng)指針用CPU 直接解引用它是未定義行為因?yàn)樗辉?CPU 的地址空間里。順手貼一個最小驗(yàn)證模塊的核心片段方便你在自己的板子上跑一遍#include linux/module.h #include linux/pci.h #include linux/dma-mapping.h static int __init dmatest_init(void) { struct pci_dev *pdev; void *buf; dma_addr_t dma; u64 mask DMA_BIT_MASK(48); pdev pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL); if (!pdev) return -ENODEV; if (dma_set_mask_and_coherent(pdev-dev, mask)) dev_warn(pdev-dev, 48-bit mask not accepted\n); buf dma_alloc_coherent(pdev-dev, 4096, dma, GFP_KERNEL); if (!buf) return -ENOMEM; pr_info(iommu probe: va%px dma%pad\n, buf, dma); dma_free_coherent(pdev-dev, 4096, buf, dma); pci_dev_put(pdev); return 0; }跑起來看dma打印出來的值。如果機(jī)器上 IOMMU 生效這個值幾乎不會等于__pa(buf)如果兩者相等說明走的是 direct mapping 或者身份映射IOMMU 實(shí)際沒在翻譯。3.3 iommu_map 內(nèi)部頁大小拆分與批量映射進(jìn)到iommu_map之后核心動作是先算這一段能用的最大頁是多少。硬件會給一個支持的頁大小位圖映射的 IOVA 和物理地址又各有對齊要求兩頭一取得出這一段里能用大頁的范圍剩下的邊角用 4KB 頁補(bǔ)齊。這個拆分邏輯是性能的關(guān)鍵也是坑的來源。舉個具體例子你要映射 4MB 加 4KB 的緩沖區(qū)起始地址只對齊到 4KB。那么開頭那一小段只能是 4KB 頁中間能湊出連續(xù)的 2MB 對齊區(qū)域就用 2MB 頁末尾再補(bǔ)。這樣拼出來的頁表?xiàng)l目數(shù)遠(yuǎn)少于全用 4KB 頁TLB 命中也更好。iommu_map_sg走的是同一套邏輯只是把散列表一次性批量處理省掉了多次調(diào)用的開銷網(wǎng)卡這類做多段 DMA 的設(shè)備全靠它。6.6 里這塊還在演進(jìn)中屬性結(jié)構(gòu)逐步統(tǒng)一老的按設(shè)備單獨(dú)實(shí)現(xiàn)映射回調(diào)的方式正被按域分配的分頁接口替代。這意味著如果你在維護(hù)一個廠內(nèi)私有的 IOMMU 驅(qū)動升級到 6.6 附近時(shí)要留意接口變化別照著老版本的樣板抄。3.4 unmap 的時(shí)機(jī)比 map 更容易出事的地方映射寫起來簡單回收才是見功力的地方。dma_unmap_single做三件事清頁表項(xiàng)、把 IOVA 還給分配器、按模式?jīng)Q定是否立刻發(fā)失效指令。任何一步出問題都有明確癥狀。漏了 unmapIOVA 就一直被占著跑久了分配器找不到連續(xù)區(qū)間驅(qū)動申請緩沖區(qū)開始失敗日志里會出現(xiàn) DMA API 調(diào)試相關(guān)的告警或者分配失敗。這個在長時(shí)間壓測里才暴露所以很多驅(qū)動的問題是在跑了一兩天之后才冒出來的。更陰險(xiǎn)的是時(shí)序錯位設(shè)備還在往緩沖區(qū)寫數(shù)據(jù)你的代碼已經(jīng)把 unmap 做了IOVA 隨后被分配給另一個設(shè)備。這時(shí)候總線上還飛著舊設(shè)備的寫請求落到新設(shè)備的緩沖區(qū)里數(shù)據(jù)就被污染了。這類問題表現(xiàn)為隨機(jī)數(shù)據(jù)錯亂且只在負(fù)載高的時(shí)候出現(xiàn)。規(guī)避辦法很樸素必須確保設(shè)備已經(jīng)停止對該緩沖區(qū)的訪問讀完成寄存器、等中斷、做一次同步屏障才能 unmap。延遲模式會讓這個窗口更長調(diào)試環(huán)境建議先開嚴(yán)格模式穩(wěn)定之后再考慮性能優(yōu)化。4. 實(shí)操打開 IOMMU 之后怎么觀察和驗(yàn)證4.1 內(nèi)核命令行參數(shù)與生效判斷先確認(rèn)硬件和固件是否就緒。開機(jī)日志里搜翻譯單元的初始化信息能看到它被識別、支持的最大地址寬度、頁大小位圖。如果完全沒有相關(guān)行先查固件里對應(yīng)的開關(guān)有沒有打開x86 平臺上這個開關(guān)有時(shí)在芯片組配置里名字不一定顯眼。內(nèi)核參數(shù)方面常用的幾個iommuon強(qiáng)制啟用iommupt讓設(shè)備默認(rèn)走身份映射只建一張等價(jià)映射性能幾乎無損隔離性大部分丟失iommu.strict1強(qiáng)制嚴(yán)格模式iommu.passthrough0禁用透傳。這里要提醒一句參數(shù)名在不同小版本上偶有調(diào)整動手前翻一下隨內(nèi)核源碼附帶的命令行參數(shù)文檔比在網(wǎng)上抄別人的配置靠譜。判斷是否真的生效最直接的辦法是看設(shè)備的 DMA 地址和物理地址是否相同也就是上面那段模塊代碼的輸出。第二直接的辦法是看/sys/kernel/debug/iommu/devices/下面有沒有這個設(shè)備的條目——6.x 里加的這個調(diào)試接口相當(dāng)好用里面能看到它當(dāng)前掛的域類型、是否啟用 ATS、以及身份映射狀態(tài)。我第一次用它排查一個以為開了其實(shí)沒開的直通問題時(shí)五分鐘就定位到了。4.2 用 tracepoint 看每一次映射的真實(shí)參數(shù)調(diào)性能或者查泄漏光看日志不夠得上 tracepoint。IOMMU 子系統(tǒng)埋了幾個關(guān)鍵點(diǎn)映射、解映射、批量映射都能記錄下域指針、IOVA、物理地址、長度、權(quán)限。# 打開映射相關(guān)的事件 cd /sys/kernel/debug/tracing echo 1 events/iommu/enable echo 1 tracing_on # 跑一段你的業(yè)務(wù) sleep 5 echo 0 tracing_on cat trace | head -50從輸出里能直接讀出三件事映射長度分布大部分是 256 字節(jié)還是 4KB反映你的緩沖區(qū)設(shè)計(jì)是否合理、IOVA 是否集中在低地址說明窗口開小了或者分配器壓力大、以及 map 和 unmap 的數(shù)量是否匹配不匹配就是泄漏。我用這套方法抓到過一個很典型的問題某驅(qū)動的接收路徑每包都映射一次小緩沖區(qū)日志里 unmap 次數(shù)比 map 少了不到千分之一??粗黄鹧鄣钠钆芤煌砩暇屠鄯e出幾萬個沒回收的 IOVA最后分配大塊連續(xù)區(qū)間失敗。查出來是錯誤分支上少寫了一行 unmap。4.3 觀察點(diǎn)整理從文件系統(tǒng)到日志觀察目標(biāo)位置關(guān)鍵信息設(shè)備分組情況/sys/kernel/iommu_groups/哪些設(shè)備共用一套翻譯能否獨(dú)立直通設(shè)備當(dāng)前域狀態(tài)/sys/kernel/debug/iommu/devices/域類型、是否身份映射、ATS 狀態(tài)每次映射的詳細(xì)參數(shù)events/iommu/下的 tracepointIOVA、物理地址、長度、權(quán)限缺頁與訪問越權(quán)內(nèi)核日志設(shè)備標(biāo)識、出錯地址、訪問類型映射泄漏與誤用內(nèi)核日志需開 DMA API 調(diào)試長度不一致、方向不一致、提前釋放這張表建議存下來。我排查 IOMMU 相關(guān)問題基本就是從上往下過一遍先看分組對不對再看域建沒建再看映射有沒有異常最后看有沒有硬件報(bào)錯順序亂了容易鉆牛角尖。4.4 嚴(yán)格模式與延遲模式的實(shí)際代價(jià)性能這塊給個量級參考具體數(shù)字跟平臺強(qiáng)相關(guān)別照抄。在一臺普通雙路服務(wù)器上跑萬兆網(wǎng)卡的小包收發(fā)嚴(yán)格模式下每個包一次映射一次失效吞吐比延遲模式低一截某些配置下差距比較明顯換成大包或者批量提交的場景差距迅速縮小因?yàn)槭е噶畹臄偙⌒?yīng)出來了。我的建議是分環(huán)境對待開發(fā)和功能驗(yàn)證階段一律開嚴(yán)格模式讓錯誤盡早暴露生產(chǎn)環(huán)境如果壓測通過、驅(qū)動行為規(guī)范可以切延遲模式換性能。但前提是驅(qū)動真的守規(guī)矩——所有 DMA 緩沖區(qū)的生命周期都有明確的同步點(diǎn)。我見過為了追性能直接切延遲模式結(jié)果把一個本來就存在的時(shí)序 bug 放大了十倍的情況那種排查成本完全不值得。提示切模式之前先做一輪長時(shí)間壓力測試重點(diǎn)看接收方向的數(shù)據(jù)完整性這個方向的問題最容易被延遲失效掩蓋。5. 常見問題與排查速查表5.1 三類典型故障的定位路徑第一類是開了 IOMMU 之后設(shè)備直接不工作。現(xiàn)象是驅(qū)動 probe 成功但第一次 DMA 就報(bào)錯或者數(shù)據(jù)全零。先查這個設(shè)備的 DMA 地址寬度如果驅(qū)動把dma_mask設(shè)成了 32 位而設(shè)備的實(shí)際緩沖區(qū)又申請?jiān)?4GB 以上映射就會失敗或者觸發(fā) bounce buffer。其次查設(shè)備是否被分到了一個奇怪的 group導(dǎo)致它的域里沒有預(yù)期的映射。最后確認(rèn)固件描述里這個設(shè)備確實(shí)歸 IOMMU 管——有些平臺對某些根端口默認(rèn)不做翻譯。第二類是跑一段時(shí)間后隨機(jī)出錯。這是最典型的延遲失效或者生命周期問題。把嚴(yán)格模式打開復(fù)現(xiàn)一次如果嚴(yán)格模式下問題消失基本可以確定是失效時(shí)機(jī)或者緩沖區(qū)回收時(shí)機(jī)的問題。再用 tracepoint 對齊 map/unmap 的時(shí)間戳和業(yè)務(wù)日志找出哪個緩沖區(qū)的釋放早于設(shè)備停止訪問。第三類是性能比不開 IOMMU 差很多。先分清是映射開銷還是失效開銷。映射開銷大的特征是 CPU 占用高、映射次數(shù)多優(yōu)化方向是合并小映射、用散列表批量映射、復(fù)用緩沖區(qū)失效開銷大的特征是延遲模式的收益明顯優(yōu)化方向是調(diào)整同步粒度。還有一種容易被忽略的情況映射時(shí)頁大小沒湊上大頁全是 4KB 頁導(dǎo)致 TLB 壓力大這個從 tracepoint 的長度分布能看出來。5.2 排查速查表現(xiàn)象可能原因快速驗(yàn)證處理方式第一次 DMA 就失敗地址寬度設(shè)置過窄打印dma_mask與緩沖區(qū)地址按設(shè)備能力放開到 48 位或更高數(shù)據(jù)隨機(jī)錯亂提前 unmap 或延遲失效切嚴(yán)格模式復(fù)現(xiàn)補(bǔ)同步點(diǎn)確認(rèn)設(shè)備停止后再釋放運(yùn)行數(shù)小時(shí)后分配失敗IOVA 泄漏對比 map/unmap 計(jì)數(shù)檢查所有錯誤分支的回收映射成功但設(shè)備讀到舊數(shù)據(jù)CPU 緩存未刷單步調(diào)試確認(rèn) map 前的操作檢查方向參數(shù)是否傳錯設(shè)備訪問直接觸發(fā) fault映射范圍沒覆蓋全看 fault 日志里的地址檢查長度與頁對齊處理想直通卻整組被牽連group 內(nèi)設(shè)備不可分查分組目錄提前占住同組其他設(shè)備性能斷崖式下跌全小頁映射或嚴(yán)格模式看映射長度分布合并映射、調(diào)整模式5.3 幾個只有踩過才知道的細(xì)節(jié)邊界頁的處理。你傳進(jìn)去的緩沖區(qū)地址沒對齊、長度也不是頁整數(shù)倍時(shí)dma-iommu這層需要保證覆蓋范圍。它可能會對首尾頁做特殊處理也可能直接要求調(diào)用方保證對齊。不同版本的策略有差異穩(wěn)妥的做法是自己在驅(qū)動里就按頁對齊申請緩沖區(qū)別把麻煩丟給底層。我吃過一次虧一個 64 字節(jié)的映射跨越了頁邊界尾部那一小段落到了相鄰的映射區(qū)域里兩個設(shè)備互相踩查了兩天才定位。方向參數(shù)不是裝飾品。傳錯方向不會立刻報(bào)錯但頁表權(quán)限建錯了某些平臺上設(shè)備會收到訪問拒絕某些平臺上則完全不報(bào)錯只是緩存維護(hù)做反了。后一種最要命表現(xiàn)為數(shù)據(jù)延遲一個周期才更新看起來像硬件時(shí)序問題。身份映射不等于沒開。iommupt或者某些驅(qū)動主動請求身份映射時(shí)設(shè)備看到的就是物理地址隔離性基本沒有但翻譯鏈路還在。排查時(shí)別看到地址相等就斷定 IOMMU 沒工作得去看域類型。熱插拔設(shè)備要重新看分組。上電順序不同固件給的分組可能不一樣一個槽位冷啟動和熱插拔之后可能落到不同的組里。做直通方案時(shí)不能假設(shè)分組固定。調(diào)試階段把 DMA API 調(diào)試選項(xiàng)打開。這個選項(xiàng)會額外檢查每次映射和釋放的參數(shù)一致性代價(jià)是性能下降但能在開發(fā)期抓出大量低級錯誤包括長度不一致、方向不一致、重復(fù)釋放。上線前關(guān)掉即可。我在實(shí)際使用中的體會是IOMMU 這層?xùn)|西的價(jià)值不在于它有多復(fù)雜而在于它把設(shè)備的錯誤行為從不可觀測變成了可觀測。以前遇到 DMA 越界只能靠縮小范圍、加內(nèi)存屏障、打點(diǎn)猜現(xiàn)在一行 fault 日志直接告訴你是哪個設(shè)備、訪問了哪個地址、是讀還是寫。把第 4 節(jié)那幾個觀察點(diǎn)用熟絕大部分和 DMA 相關(guān)的疑難雜癥都能在半小時(shí)內(nèi)鎖定方向剩下的只是修驅(qū)動的問題。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
骚逼高潮久久精品| 人妻社区男人天堂| 9久精品| 2017天天操天天日| 久久大香蕉手机高清| 国产一区二区三区白丝| 不卡在线观看视频| 日韩中文字幕宗合在线| 啪啪视频mP4| 国产视频一区二区免费| 97欧美性爱| 亚洲成人贴图| 精品无av| 日韩日韩日韩-国产乱码精品一区二区| 亚洲色人妻综合| 亚乱色| 日韩操逼性鲍| 亚洲视频中文一区| 又粗又长又大国产不卡| 99热婷婷一区二区三| 黄色十八禁| 亚洲色图加勒比| 99九九久久| 欧美网站免费| 深夜激情无码| 婷婷香蕉| 99爱爱| 欧美精品久久久久久久久88| 在线观看成人性爱免费小视频| 精品久久久久久中文字幕视频免费| 日日日大屁股骚女人精品| 亚洲aw毛茸茸在线| 久久国产对白激情浪潮 | 久草网站免费在线观看| 99这里只有精品国产| 黑人综合网| 亚洲全色网| 久久9精品| 啊啊啊网站| 日韩啪啪视频| 久久综合九色综合欧洲98| 伊人操| 男人的天堂免费| 97碰碰色| JIZZJIZZ亚洲女人被躁| 伊人加勒比| 精品九九九| 天美91| 国产日韩久久| 天天色天天干天天爱| 色在线综合| 色五月综合网| 日韩熟女精品无码专区一区二区| 麻豆AV一区二区| 97中文字幕色| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 黄久在线| 欧美性爱超碰97| 91n处女在线观看| 亚洲人妻日日日| 这里只有精品97| 一级二级在线观看| 久久午夜鲁丝片| 免费观看国产不卡av| 日本一本道A级黄色毛片试看60分钟| 26uuu国产成人综合| 色五月首页| 人人天天欧洲| 日本精品性生活久久久| 亚洲好色人妻| 台湾一区国产高清在线| 日本色色色视频| 你懂得91| 99热线麻豆| 不卡人妻少妇精品毛片一区23区视频| 亚洲色资源| 亚洲天堂情色| 国产精品诱惑| 亚洲综合精品国产一区| 97视频在线免费看| 上特色A在线| 欧美精品久久96人妻无码| www.91人妻.com| 试看60秒 爽| 家庭乱伦国产精品| 日本亚洲熟女视频| 自拍第一页| 另类TS人妖一区二区三区| 99久久婷婷丁香| baisiav| 国产av热热色| 国产自制av蜜乳| 国产隔壁老王影院在线| 九九热最新| 久草在| 九九九久久久| Av色五月| 色约约一区=区三区| 国产精品一区二区手机看片| 九九九九九九九精品视频| 伊人午夜福利视频| AⅤ片水多多| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国外91| 久久久久久亚洲Av无码精| 91久操| 伦理日韩国产久久| 太久视频| 男人 天堂 日 亚洲| 国产路线专区| 盗摄 精品 另类 一区| 久久人爽| 香蕉久久AⅤ...| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 久久99九九九九6666免费观看软件| 欧美激情精品久久久久久| 欧美 亚洲 另类 综合| 2024年最新色情网站在线观看| 激情干在线| 操b网站亚洲无码| 性综合网| 欧美狠狠弄| 亚洲精品久久久久毛片A片拉屎| www.色操逼| 操淫穴亚洲五月丁香| 香伊人在线| 内射黑人| 干B网| 色路综合| 五月婷丁香| 久久久一区二区三区麻豆| 日韩欧美午夜视频在线| 精品久久久久成人码免| 五月婷视频| 亚洲图片小说欧洲| 五月天色图影视| 男人天堂欧美| 美女大乳久久久久久久女人18| 激情黄色片在线观看| www.四虎在线| 看黄片视频免费| 久久久久久久久9| 久久婷婷色综合一区二区三区| 外国免费性情大片| 亚州日韩97| 在线v中文字幕一区二区三区| 国产精品69久久久久久久 | 91色爽欧美| 午夜激情成人在线观看| 久久人妻熟女一区二区| 超碰偷拍| 日韩无码成人电影| 久久免费99精品久久久久久| 日韩精品系列| 中文字幕高清20页视频| 欧亚无码视频| 日韩成人小视频| 操狠狠| 1级午夜影院费免区| 精品女同一区| 日韩美一区| se吧提供国产乱老熟视频胖女人| 婷婷精品久久av影视| 91女人的网站| 丁香六月婷婷综合| 国产精品麻豆成人av| 少妇精品久久久八区九区| 国产999精品久久久久久| 奇米四色影视777久久久| 日日AAvv| 精品人妻一区春色| 大香蕉十区| 色嗨嗨在线| 无码人妻1727| 麻豆a'v电影| 啊好爽受不了无码| 五月婷色| AV无码久久久精品| 久久男人精品| 国产高清成人免费视频| 欧美日韩不卡传媒| 国产一区二区三区,在线观看观看| 婷婷丁香五月综合| 性影在线视频| 欧美极品美女aaaaaa级黄片| 久久久涩| 国产又粗又长视频| 亚洲一区制服诱惑| 五十路二区在线| 97久久精品亚洲| 性爱av网站| 国产视频一区二区三区在线免费观看| 超碰免费人妻人人| 国产精品人妻免费精品| 啊啊啊啊啊在线| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国语精品av| 丰满人妻一区二区中文| 国产精品大屁股999| 宗合情欲网| 丁香五月激情五月| 色激情五月天| 五月天激情小说| 国产小u女在线观看| 2019天天干天天操| 日本成人A片免费看| 翔田千里AⅤHD无码| 日日夜夜摸| 屁股久久久久久| 久久精品店| 99热精品在线观看| 一本久道在线综合视频| 国产毛片片精品天天看视频| 精品久9| 大逼色网站| 亚洲天堂久| 性欧美第一页| 一区二区三区麻豆| 天天综合网网欲色| 操逼天美3区| 国产中文精品一区二区在线观看| 乱伦熟女区| 五月天大香蕉| 超碰国产情侣自拍网| www四虎| 天天日日日射| 色色综合97| 97网址97| 色妺妺AⅤ| 久久尹人大香焦视| 欧美乱伦专区| 黄片色区软件| 大奶啊啊好爽| 日本久久999| AV色图| 91无码人妻精品一区二区三区蜜桃| 中日992视频| 0755午夜福利视频| 欧美成熟性爱精品| 五月丁香六月婷| 日本 成 人 小说 电影 一区二区| 超碰超碰95| 国产乱码精品久久久久久| 99热这里只有是精品10| 久久少妇| 人人插人人摸人人| 天天操天天射青青草| 激情综合av| 校园激情狠狠四射| xxxx网站亚洲精品| 欧美第一页性| 综合性视频99| 日韩综合无码一区久久92| 亚洲精品国产熟女| 殴美牲| 天天操人人操骚逼网站| 日韩三级伊人| 亚洲最大无码中文字幕网站| 草蕉影视亚洲无码| 夜夜草天天| 日韩一区二区三区四区五区 | 99久在线精品99re8| 大香蕉伊人75| 亚洲国产精品成人无码久久久| 天天拍天天操| 综合激情一一91| 深夜福利黄片| 新怡红院| 亚洲 自拍偷拍 欧美| 久久色人体 | 亚州免费啪啪视频| 少妇与黑人高潮在线| 日韩内| 中文字幕精品日韩中文字幕| 久久香蕉国产线看观看亚洲女人 | 国语精品av| 午夜一级免费毛片| 人人澡人人爽人人精品| 97超碰色情| 青娱乐亚洲自拍| 97亚洲国产影视| 欧美激情 亚洲色图| 亚洲国产奇米影视久久| 日本最新1区2区3区| 国产操逼网站亚洲一级黄色| 午夜免费视频1000| 狠狠入| 操逼操网| 亚洲一二三四区在线免费看视频| 女人被男人桶爽视频网站| 夜夜操老骚逼视频网站| www久久国产精品| 丰满人妻-区二区三区免费| 欧美骚少妇| 日韩一区二区高清在线观看的| 国产青视频| av一区二区三区不卡| 91ise欧美| 99少妇| 免费观看啪视频| 欧美96在线|欧| 午夜精品探花| 人妻另类| 26uuu欧美| 精品欧美乱码久| 久热九九| 欧美天天性| 91是天天| 中文字幕美女91| 久久久久9999妇女| 日韩欧美中文日韩欧美色| 国产免费一区| 99精品在线播放| 日韩精品-原创伙伴| 高清不卡视频| 日本狂喷奶水在线播放212| 欧美 日韩 另类 亚洲| 日韩精品人妻一| 国产热av| 综精品久久久aaaa| 日人妻视频91| 欧美18老人禁| 豆1无夜无码| 国产a级午夜毛片| 日日骚一区二区三区| 色五月婷婷麻豆在| 国产人妻精品久久久一区二区三区| 嗯嗯啊啊啊好爽| 久久9精品视频| 激情 欧美 亚洲 小说| 久久97超碰香蕉| 夜夜操狠狠操| 亚洲色图尤物视频| 精品午夜福利| 天天操人人操骚逼网站| 国产久久视频| 99精品久久| 激情黄色片在线观看| 男人的天堂无码| 熟女性视频| 人人摸.人人色| 国产精品操| 永久免费av无码网站国产app| 97欧美精品综合| 97任你吞精| 日本熟妇浓毛hdsex| 午夜精品人妻二区三区| 清纯唯美激情四射| 九九在线视频| 影音先锋乱| 欧美精品精品一区二区| 亚洲熟女国产综合另类| 五月婷婷六月丁香网址| 亚洲成人贴图| 夜夜骑日日| 春色校园综合网| 亚州操逼网| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲色色探花| 天天激情综合站| 欧美色图91| 久草男人天堂| 色综合中文字幕不卡| 无码视频黄色网战| 人人操人人操人人人操| 亚州男人天堂| 欧美综合中文| 欧美色图欧美| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 婷婷五月天福利| 女同女同恋久久级三级| 日本欧美中文字幕| 色香综合| 奶水 人妻 哺乳 在线| A男人的天堂| 国产一级片| 十八禁啪啦拍视频无遮挡| 国产欧美日本亚洲精品| 日韩视频中文字幕| 亚洲另类色综合网站| 精品一区二区久久| 日韩三级视频一区二区三区| 亚洲操人| 日韩亚洲Av人人夜夜澡人人爽| 99久久无码| 亚洲黑人在线| 强奸抽插av| 国产高清成人免费视频| 亚洲丝袜诱惑| 日日夜夜免费| 粉嫩av在线| 日韩精品-原创伙伴| 日本一二三免费久久| 欧美草草| 久久9精品| 成人区人妻精品一| 九九九九久久久久| 天美传媒AV在线播放| 97资源站久久| 欧美,日韩,中文,另类| 超碰在线1234区| 精品国产久久乱码| 91精品国| 精品欧美老熟女一二区| 黄色无码高清黄色无码网站| 久久性爱视频免费看| 亚洲97成人在线观看| 自拍偷拍草一草| 五十路六十路七十路熟婆| 370p日韩欧美亚洲精品| 欧美人与性动交a美精品| 国产又大又硬又长又粗| 91 刺激在线| 丰满少妇一区二区三区四区观看 | 啊啊啊在线观看| 啊啊嗯嗯好爽| 色欲av一区二区三区蜜芽| 日韩熟女乱伦中出| 日韩无码专区| 在线天堂999| 好看的91视频| 欧美草草| 日本十八禁免费看污网站| 殴美在线AⅤ| 日韩一级片在线看| 久草视频制服诱惑| 加勒比性爱成人在线| 一本色道久久综合精品婷婷| 欧美色www亚洲国产阿娇要播| 操逼逼福利视频| 亚洲高清在线| 啊啊啊啊啊好大好舒服想要| 中国和日本人色哪个不下载能放| 人人摸.人人色| 狠狠爱综合| 欧美九九爱| 熟妇一区,二区,三区。| 国产精品直播在线观看直播| 超碰成人国产| 三级片大波波| 亚洲狠| 以及麻豆国产入口在线观看免费| 久久久久久精品免费看A级| 偷拍伦理视频| 伊人嫩草| 不卡av在线中文字幕| 久久怡红院| 第二页中文字幕| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 欧亚洲精品有视频| 龙兴卡官方查询| 人妻精品视频一区二区三区| 欧美黄片视频在线观看免费| 天天看天天综合成人网| 色欲久久99精品久久| 国产日韩精品suv| 韩国一级婬片A片AAAAA| 天天操妹子| 中文色综合| 色爽爽文学| 亚洲性刺激| 97这里有精品| 亚洲色久| 中文字幕第二页| 欧美,日韩综合久久| 国产精品亚洲四五区在线观看| 人人妻人人爽人人精品| 国产 无码 一区二区| 五月婷婷激情网| 熟女久久久| 日韩欧美aⅴ综合网站发布| 操碰97| 精品人妻一区二区三区不卡断 | 成人免费看吃奶视频网站| 五月丁香啪啪啪| 老熟妇一区二区三区| 啊啊啊在线观看| 色蜜AV| sewuyueav| 国内三级自拍小视频在线观看 | 九七超碰| 熟妇在线视频一区二区| 又大又大又大又粗爽高潮观看| 欧美99| sewuyueav| 色婷婷亚洲婷婷| 欧美精品黑人猛交高潮| 激情一区二区三区在线观看| 97se亚洲综合自| 欧美日日网| 久久产精品一区二区三区电影| 高清不卡国产| 日韩中文字幕国产| 偷拍片久久| 无码抄逼网| 欧美色网络| 色综合潮| 亚洲第一狼人丝袜美女另类| 啊啊啊轻点在线观看| 久久久久9| 天堂综合网| 强上我不卡卡| 人人操肉肉| 97天天在线| 日日夜夜干| 精品无码秘 人妻一区二区| 97超碰天天爱天天爱| 无码一区二区精品视频久久久春药| 97超碰人操| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 97精品全部| 怡红院视频在线| 中国AV美女| 视频黄站| 超碰97资源大奶| 欧美日韩国产黄色片| 曰本道人妻久久久在线不卡色视频| 久久精品 六十路 熟女 欧美| 日韩av情韩国爱禁区av一区二区| 九九av| 国产兽交视频在线播放| 久久日韩肥臀| 青女在线| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 亚洲精品一区二区精华| 大但人体久久久久| 97色色色综合网站| 久久 国产精品 一区| 国产91福利小视频在线观看 | 黄色香蕉视频网站一区| 大香蕉久久| B049AV在线播放| 天天爱天天韩国日本牛牛牛牛| 久久国产性爱| 99精品无码| 91色综合色| 91暧暧| 另类天堂| 亚洲欧美国产成人综合不卡| 中文字幕日韩精品久久| 酒色综合网| a人片中文字幕一区二区| 日本一区二区三区欧美日韩中文字幕| 日本色色色视频| 国产二区三区免费视频| 操逼操2| 日韩内| 久久美国毛片| 欧美性爱一区二区三区四区 | 日韩欧美天天爽爽爽天天爽爽| 久久大香蕉手机高清| 婷婷伊人| 亚洲成?V人片在线观看福利| 无遮挡h肉动漫在线观看| 青草草免费网站av| 久久在线观看免费视频| 亚洲无码电影久久久| 午夜一区| 97在线视频免费看| 超碰在线一区二区三区| 97久久超碰亚洲| 丝袜天堂网| 国产精品午夜福利视频| 嗯,啊。舔我逼| 亚洲自拍欧美国产首页网曝 | 91天天美女| 97色五月天完| 91在线综合网| 夫妻四区五区六区| 色综合中文字幕不卡| 欧美人妻精品| 麻豆天美久久91| 97色在线观看| 午夜福利区| 欧美aⅴ99久久黑人专区| 男人天堂综合| 中文字幕精品亚洲熟女| 婷婷九月国产| 密臀在线一区尤物| 91操操操操| av网站国产主播在线| 少妇高潮九九九九九九九| 国产中文字幕在线点播| 日韩乱伦AⅤ| 乱欲一区二区| 911粉嫩人妻| 黑丝少妇在线观看| 少妇国产不卡| 裸体1区| 丁香7月婷婷| 国产9熟妇视频网站| 欧美自拍网| 日韩无码一级黄色av片| 九月激情婷婷| 欧美熟女操屄| 色色色综合| 久久一二三四五六七八九区区| 伊人久久亚洲色欲综合网站 | 97久久超碰| 中文字幕55555| 97一区二区三区视频| 91丰满| 岛国1区2区3区在线观看| 亚洲第2页| 人妻少妇视频在线播放| 裸模AV女优| 91色射| 欧美性爱18观看| 手机看片1024你懂的国产| 欧美少妇大量自拍视频在线观看| 欧美国产日韩清纯唯美| 97碰碰日本乱偷人妻中文的| 亚洲男人天堂手机版| 色视频蜜乳| 日本天天吊| 五月天人妻综合| 日韩电影在线观看网址| 2024人人操人人摸| baiduhicn.com。| 啊啊啊啊好多水| 亚洲最大AV网| 成人色女网| 色爱亚洲| 中国亚洲呦女专区| 亚洲欧美setu| 亚洲九九九九| 综合网色| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 久久9精品| 久久东京伊人一本到鬼色| 97舔舔| 抽插亚洲无码| 日本一区二区成人在线| 久久日本熟女精品一区| 91视频精品| 久久香蕉网| 欧美肥臀在线| www国产天美久久久| 一区 欧美 日韩 麻豆| 九九九久久久| 九九九九九九九精品视频| 91精品在线播放| 黄色大香焦1级‘′‘| 99综合自拍| 亚洲AV秘无码一区..| 日韩美脚一区二区网站| 国产欧美另类久久久精品课程| 深田咏美亚洲精品福利社| 67914亚洲精品| 天天摸天天操视频| 日韩婷婷| 亚洲精品蜜桃久久久| 一区二区三区精品视频| 久久禁| 亚洲国产一级精品毛一级精品看免费视频 | 夜夜嗨一区二区三区三州加勒比 | 97精品在线| 亚洲成a人片在线观看中文!!!| 91 国产丝袜在线放观看| 视频国产欧美在线播放| 四虎AV无码| 秋霞Av理论一级在线| 极品白嫩福利在线| 国产亚洲精品A在线观看下载| 2025亚洲男人天堂| 久久久精品中文字幕爱豆| 屌妞视频久久久久久久| 亚洲97综| 超碰1024久久| 精品九九国产无码| 欧美少妇大量自拍视频在线观看| 精品福利| 国产av热热色| 亚洲福利中文字幕在线| 精品国产99999| 蜜桃视频精品一区二区| 超碰免费人妻人人| 91日产欧美| 黄片在线免费在线观看| 自拍视频大全亚洲专媒视频/一区二区三区 | 激情深爱五月天| 日韩少妇无码| 好看的久久不射无码影视影院| 91强热人妻| 欧美男人的天堂| 麻豆av一区二区三区| 亚欧毛片基地国产毛片基地| 亚洲人妻久久久| 精品久久視頻在线| 欧美探花网| 99热这里只有精品1| 精品久久在线区一区| 婷婷av在线中文字幕| 97欧美色综合| caopeng97| 国产精品精品系列在线观看| 国产亚洲日本| 久久久久久午夜男人的天堂| 2017人人操,人人摸| 偷拍亚洲情色| a人欧美综合天堂麻豆| 国产自偷自拍一区| 強姦亂倫a| 91青青在线| 国产十八禁视频| 熟女乱伦二区| 亚洲一区二区三区中文字幕| 97天天| 久日综合网| 亚洲中文制服诱惑| 综合欧美日本三级| 日韩av性爱在线播放| 黄页网站成人免费| 中文字幕精品久久久久人妻红杏ⅰ| 99久久综合网| 熟女五十路一区二区三| 欧美91精品国产自产| 日韩干B| 九九拍拍精品视频在线播放| 国内毛片婷婷六月色| 午夜一区| 精品人妻久久久| 丁香五月av| 伊欧美综合视频| 国产最新小视频在线播放下载| 伊人亚洲综合| 69人妻精品丰满熟女区| 人人乐大香蕉| 脫衣舞一区二区三区| 色色色日本| 国产精品人妻无码久久久老鸭窝| 美日韩一二三区| 麻豆天美传媒在线视频天堂| 国产极品999| 自拍偷拍 日韩无码| 青草草免费网站av| 999精品国产高清一区二区| 91亚洲欧美综合高清在线| 东京热精品97综合网| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 操99| 久99热| 乱伦一区二区三区‘| 人人操 欧美| 国产精品内射婷婷一级二| 亚洲区限制级 99| 99re6国产精品99re| 青青草成人视频在线观看二区| 怡春苑东京热| 中出789在线视频| 美骚妇av高清在线| 成人一区二区三区四区| 97日视频| 色网在线| 亚洲97网站| 精品二区三四区五电影 | 久久在线观看免费视频| 青娱乐老司机视频| 久久69精品久久久久久久| 欧洲亚洲国产综合在线| 久久东京伊人一本到鬼色| 国产女人与拘做受视频免费| 99在线无码精品秘 入口黑人| 亚洲成人福利电影免费| 女人被添高潮免费视频| 色九区| 亚洲日韩肥臀视频在线观看| 亚洲美女色图| 亚州中文字幕超碰97| 国产一区二区精品在线视频| 大香蕉2017| 97资源站久久| 极品白嫩美少妇在地板上位骑射淫水泛滥| 操碰97| 黑人操一区二区| 中文字幕性感少妇av| 亚洲少妇色| 少妇极品熟妇人妻无码| 无码人妻精品一区二区三区九九| 午夜精品久久久久久久99| 9久久精品| 日韩免费a级毛片无码a∨| 国产日韩精品人妻久久久久色欲网站| 国产精品成人无码av无码免费| www…国产操逼| 东京太热久久久| 加勒比海成人视频网| 中文字幕欧洲有码| 天堂v无码免费视频| 男人高清无码一区二区| 91精品91久久久中77777| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 国产h小视频在线观看免费| 五十路六十路七十路熟婆| 自偷自拍的亚洲视频| 久艹伊人精品综合在线| 国产高清在线自在拍69| 边做饭边操逼逼| 欧美做爰无码A片视频| 人人手机欧洲亚洲国产人妻| 欧美色道啊| 国产精品久久久久无码Av网曝门| 一区AV| 久久久18| 亚洲日韩熟女人妻高清在线| 男人的天堂网页| 操逼不卡中文字幕| 欧美天天综| 久久色精品视频在线| 岛国色情视频在线观看| 国产性感骚丝袜在线| 新91视频.cmp| 91麻豆天美| 久久激情五月| 久超碰这里只有精品| 日韩综合成人免费视频| 思思热在线观看| 欧亚韩国999| 国产高清免费不卡av| 久久久久久午夜男人的天堂| 成人情色综合网| 看黄片视频免费| 老鸭窝黄色视频网站| 91天堂| 99精品免费| 97国产中文| 亚洲一区二区三区中文字幕| 九九玖玖精品| 翔田千里AV无码秘 三区| av天堂5| 99热大香蕉伊在线| 亚洲少妇综合在线播放| 亚洲视频二区 | 白丝AV网站| 亚洲无线观看久久| 玖玖视频在线资源一区二区三区| 99草精| 97人人干人人操| 97ai亚洲| 日本国产欧美高清在线| 91n免费处女| 日韩色| 999 久久久| 色色香蕉| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 国产AV久久野战精品| 久久精品中文| caoni国产亚洲av| 亚熟hd视频在线| 国产欧美岛国精品一区| 国产AV人人夜夜澡人人爽麻豆| 亚洲日韩天堂| 性欧美体内射精| 色色网91| 欧美第二页午夜| 国产女人操逼视频| 老司机福利社视频在线观看| 91狠狠综合久久久| 操熟女91| 欧美日韩免费专区在线| 久久亚洲欧美中文字幕国语| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 欧美97日韩| 日日摸夜夜夜夜爽| av橘色网站| 99热日本| 久久的免费性爱视频| 欧美日韩国产电影| 深夜激情无码| 大茄子熟女AV导航| 人妻日日夜夜精品 | 亚洲情色综合网| 熟女被操视频网址| 91精品人| 欧美亚州色的图| 亚洲欧美国产其他二区| 久久成人网站| 男人的天堂2010| 国产精品视频自拍在线| 成人在线午夜视频一区| 综合久久中文字幕综合日韩精品| 啪啪啪综合网| 歐美性天天| 大香蕉综合网| A级国产欧美激情在线| 69丨亚洲丨精品丨入口免费播放| 日韩女模中文造逼| 伊人热综合| 亚州精品人妻一二三区| 日韩另类色图| 国产A v无码专区| 97超碰欧美精品| 国产精品视频在线播放| 无码伊人久久大杳蕉中文无码| 日本久久女同性恋视频| 久久精品高清无码一区| 操美女高潮抽搐白浆| 日本精品中文字幕视频| 亚洲天天自拍| www.91欧美| AV九九| 18禁网站在线播放| 色色色网站| 久久9999| 美女毛片999| 美女露胸露尿口| 97啪啪| ji熟女.com| 伊人天天久久动态图| 国产丝袜一区二区三区| 成人五月天色网| 色色色综合| 成人av动漫在线观看| 中文字幕一区二区日韩网| 亚洲欧美另类小说| 日韩在线观看AV| 亚洲国产青青| 欧美情色贴图| 欧美亚洲丝袜美女电影| 国内精品久久久久影院亚洲| 亚洲av影音先锋| 九九精品无码专区免费| 热热色综合网| 天操老女人| 日韩超碰精品综合| 国产suv精品一区二区四区999| 九色婷婷| www.91色| 免费一级视频特黄色大片| 人人插人人摸人人| ji熟女.com| 三男一女不戴套的A片| 久操精品| 日本一道在线播放高清| 97久久国产精品女不卡| 亚洲天天自拍| 天天欧美97| 国产综合久| 超碰偷拍| 亚洲脚交| 97综合激情| 国产成人精品网站| 可乐操在线| 欧美一级二级三级| 欧美激情1区| 蜜臀网 一区| 亚洲人妻色图| 酒色综合网| 婷婷丁香激情| 综合伊人网12色| 亚洲无线观看久久| a片偷拍视频| 99国产在线 精品 视频| 日本一级真人黄色性爱视频| 91成人无码| 毛片麻豆91糖心精品毛情片| 天天影视之亚洲综合网| 欧美激情 一区| 亚洲有码视频二区| 97久久超碰日韩精品| 欧美色图片色哟哟| 国产美女高潮| 97在线精品观看视频| 欧美一区二区三区不卡高清视频 | 黑丝少妇麻豆| 夜草欧美| 欧美在线第五页| 久热网| 亚洲综合九九| 伊人五月天婷婷| 粉嫩不卡一区二区性爱| 中文字幕精品资源在线| 免费精品99| 97久久精品国产| 欧洲大香蕉| 精品国产乱码久久久久久免费| 久热最新在线杭州| 1769国内精品视频| 睡产熟女乱伦| 天天干,夜夜爽| 人妻一区久久二区三区色播| 中文日韩欧美熟| 亚洲丝袜综合| 天天躁日日躁成人字幕aⅴ| 五月天黄色激情视频| 97舔舔| 精品久久9| 亚州性色| 国产辣妈在线视频福利| 99久久亚洲精品无码毛片潘甜甜| 国产三级资源在线观看| av午夜影院在线播放| 91五月天| 欧美天天综| 天天天操天天天爱| 密臀在线一区尤物| 影音先锋新男人| 日本欧美成人片AAAA| 中文字幕女同在线| 欧美亚洲综合高清在线| 国产精品久久久久久亚洲色欲| 国产大学生高潮在线播放| 欧美久久毛片基地| 日本欧美不卡| 日韩欧美午夜视频在线| 美女尤物福利视频| 激情婷婷丁香网| 国产AAAAAABBBBB| 男人天堂一区二区| 青青草成人视频在线观看二区| 欧美劲爆第一页| 国产综合永久精品日韩鬼片| 婷婷伊人一区| 久久日韩肥臀| 欧美亚洲另类在线蜜桃| 欧美天堂日韩三级国产传媒| 成人国产二区三区在线,男女精品。| 国产精品美女| 色婷婷丁香五月天| 亚洲少妇激情一区二区三区| 人人做天天爱| 吉川爱美98堂在线| 啊啊啊骚| 久久久久国产一区二| 美女干逼2| 成人av在线播放| baisiav| 国产美女自拍视频| 亚洲欧美激情在线视频| 日日干夜夜欢| 操操操日本的逼| 中文字幕在线观看网页| 欧美色图20p| 操操AV电影| 亚洲成成熟女人综合一区二区| 天天摸夜夜添无码小视频| 91亚州欧美| 内射小黄片| 午夜天堂精品久久| AⅤ片水多多| 天天色悠悠激情| 免费成人自拍视频在线| 麻豆天美国美国产| 97久久网| 中文字幕一区av| 亚洲丝袜综合| 操穴国产| 老司机午夜精品视频| 有码免费观看| yirendaxiangjiashipin| 最新亚洲人成网站在线影院| 密臀在线免费观看| 一本一道久久综合久久| 日韩不卡毛片Av免费高清| 青青青草伊人精品| 成人午夜无码视频| 九九九999久久久网站| 亚洲黑丝在线| 免费国产视频| 伊人青青一区成人视频在线观看区| 成人毛片免费| 台湾大香蕉99热| 欧美 亚洲 在线| 婷婷五月天社区| 国产乱伦视频污| 青青草啪啪网| 国产成人无码高清| 久久天天躁日日躁狠狠躁 | 久久岛国| 九九久久一区二区三区| 亚洲天堂一区二区久久| 久久久久久九九九九九九| 亚洲国产欧美中文永久| 久久精品操| 五月天春色激情网| 天天操夜夜嗨| 午夜噜噜噜| 色老汉色| yellow网站免费观看日韩高清无码| 天操天操夜操夜月操月年年操操| 亚洲五月丁香花狠狠干一区二区三区| 国产性爱强奸乱伦大全| 日日夜夜模| 中文字幕性感少妇av| 思思热国产高清| 亚洲网污污污污| 久久婷婷五月天| 伊人专区一区二区三区| 日本好吊色视频| 国产后入精品| 免费一级a毛片久久久久久鸭绿欲| 97操综合| 久久免费老司机精品| 午夜超爽| 91天天综合日韩欧美| 91丝袜在线视频| 亚洲少妇色| 久久毛卡| 亚洲资源站| 色悠久久久av| 夜夜嗨AV蜜臀av| 久99久视频| 国产第12页| 天天欧美| 日韩 女同 综合| 97久久精品亚洲中六字幕| 无码自拍SM| 中文字幕日韩精品久久| 欧美性五月| WWW4虎| 中文字幕在线免费观看视频| 青草草免费网站av| 欧亚日韩一区在线| 久久久精品九| 校园春色欧美色图| 玖玖在线视频| 久久男女激情视频网站| 欧美一区二区一级岛国大片| 91欧美经典| 97超碰精品成| 久久夜嗨| 国产剧情一区在线观看| 日韩女模中文造逼| 一区操逼日比视频| 超碰色大香蕉| 国产AV线| 嗯嗯啊啊好大好爽| 久久神马影院| 男人的天堂.com| 国产乱码久久| 九月丁香| 久久婷婷色| 欧美 亚洲 偷拍自拍| 嫩草影院在线观看精品| 欧美日韩亚洲一区二区在线观看| 色网亚洲人| 亚洲日韩XXX| 99久在线精品99re8a| 精品人妻视频一区二区三区蜜桃视频| 亚洲综合色男人网| 青草青青久久久久久国产| 不卡啪啪视频| 激情啪啪拍91| 精品一二三区久久AAA片| 性在久久久久久| av网站在线观看了| 亚洲 自拍偷拍 欧美| 日韩三A大片在线观看| 超碰免费人妻人人| 88xx成人精品视频| 国产精品不卡av免费在线观看| 欧美天天综合| 久久精品—区二区三区内射| 热热色91| 亚洲美女AV无码| 永久免费观看的毛片的网站| 丝袜美腿亚洲| a片 xxxx受爽视频| 视频一区二区免费在线| 91精品人妻偷情|