日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

Linux PCI設(shè)備驅(qū)動核心機(jī)制:匹配、BAR映射與DMA配置實戰(zhàn)

Linux PCI設(shè)備驅(qū)動核心機(jī)制:匹配、BAR映射與DMA配置實戰(zhàn) 做PCI設(shè)備驅(qū)動開發(fā)的人大概都有過這種體驗照著范例把struct pci_driver填滿在 probe 里寫上一堆初始化代碼編譯加載然后心提到嗓子眼——設(shè)備到底有沒有被正確掛上BAR 空間夠不夠中斷會不會來我上周調(diào)一塊 PCIe 采集卡時就撞上了pci out of resources這個經(jīng)典報錯排查過程讓我意識到與其零散地搜日志不如把 Linux PCI 驅(qū)動框架的運(yùn)轉(zhuǎn)邏輯完整梳理一遍。這是系列的第二篇上一篇講了 PCIe 拓?fù)浜兔杜e的基本概念這次聚焦驅(qū)動開發(fā)真正繞不開的部分設(shè)備匹配流程、資源映射手法、DMA 與中斷配置以及現(xiàn)場怎么排障。內(nèi)容不追求覆蓋每一個 API而是幫你在腦子里搭出一張設(shè)備從識別到跑數(shù)據(jù)的路線圖。1. 先弄清誰來找誰PCI 設(shè)備與驅(qū)動的匹配機(jī)制剛接觸 PCI 驅(qū)動的人最容易犯的一個錯是把字符設(shè)備驅(qū)動的思路直接搬過來注冊一個 file_operations然后等著用戶 open 設(shè)備文件。但 PCI 驅(qū)動的主動權(quán)根本不在驅(qū)動這邊。內(nèi)核的pci_bus_type會在總線枚舉和后續(xù)熱插拔事件中主動掃描設(shè)備拿著設(shè)備信息去比對所有已注冊的pci_driver找到匹配項之后才調(diào)用你的 probe??梢哉f設(shè)備是崗位驅(qū)動是候選人內(nèi)核是 HR。1.1 一張 pci_device_id 表就是尋人啟事struct pci_device_id是驅(qū)動和設(shè)備之間的約定。內(nèi)核匹配時就是拿設(shè)備的 vendor、device、subvendor、subdevice、class 等字段逐條遍歷驅(qū)動提供的 id_table只要任何一條能對上就認(rèn)為這個驅(qū)動負(fù)責(zé)這個設(shè)備。struct pci_device_id { __u32 vendor, device; // 主ID必須匹配 __u32 subvendor, subdevice; // 子系統(tǒng)ID可設(shè) PCI_ANY_ID __u32 class, class_mask; // 類別匹配帶掩碼 kernel_ulong_t driver_data; // 透傳給 probe 的私有數(shù)據(jù) };vendor 和 device 是主干匹配項幾乎不會用PCI_ANY_ID去模糊匹配因為那等于對所有設(shè)備喊我是你爹會把別人的設(shè)備搶過來。subvendor 和 subdevice 描述的是具體板卡而不僅僅是芯片。同一顆芯片可能被多家廠商做成不同板卡如果你只寫 vendor/device 而不約束 subdevice驅(qū)動就會錯誤綁定到不是你目標(biāo)的板卡上。我自己就踩過這個坑。當(dāng)時有兩個子型號vendor/device 完全一樣只有 subdevice 不同。我偷懶只寫了PCI_DEVICE(0x1234, 0x5678)結(jié)果兩個型號都被 probe第二個型號的寄存器布局不一樣初始化直接崩。改成PCI_DEVICE_SUB(0x1234, 0x5678, 0x1234, 0x0002)之后才清凈。所以如果你的硬件有子系統(tǒng)標(biāo)識盡量用全約束。1.2 匹配成功之后driver_data 和 MODULE_DEVICE_TABLE 在忙什么driver_data是個kernel_ulong_t按內(nèi)核慣例用來存放指向私有配置結(jié)構(gòu)體的指針取整。probe 的第二個參數(shù)const struct pci_device_id *id會把這一項原樣傳給你這樣同一個驅(qū)動支持多個型號時你可以在 probe 入口直接根據(jù) id 拿到對應(yīng)配置不用到處寫 if/else。static const struct pci_device_id cap_ids[] { { PCI_DEVICE(0x1234, 0x5678), .driver_data (kernel_ulong_t)cap_a_config }, { PCI_DEVICE(0x1234, 0x5679), .driver_data (kernel_ulong_t)cap_b_config }, { } }; MODULE_DEVICE_TABLE(pci, cap_ids);MODULE_DEVICE_TABLE不是給人看的儀式它會在編譯時生成模塊的 alias 信息depmod后寫入modules.alias。系統(tǒng)里 udev 在發(fā)現(xiàn) PCI 設(shè)備時會讀取設(shè)備 sysfs 下的 modalias 文件內(nèi)容像一串編碼比如pci:v00001234d00005678sv...然后用它去 modules.alias 里反查該加載哪個 .ko。所以哪怕你在板子上手動insmod沒問題如果忘了寫MODULE_DEVICE_TABLE開箱時驅(qū)動基本不會被自動加載——這不是內(nèi)核 bug是你不小心砍掉了自動加載鏈路。1.3 class 匹配的適用場景除了精確 ID 匹配pci_device_id 還支持按設(shè)備類別匹配比如匹配某個網(wǎng)卡或者顯卡類別下的所有設(shè)備。class 字段本身是編碼形式class_mask用來屏蔽不需要比較的位。實操中 class 匹配用得少因為同一個類別下不同設(shè)備的寄存器差異巨大強(qiáng)行匹配進(jìn)去probe 里還得再靠 vendor/device 二次區(qū)分不如直接精確匹配干凈。真正的典型用途是某種通用類驅(qū)動比如某些 vendor 提供的通用 PCIe 驅(qū)動先按 class 兜底再在內(nèi)部分流派。新手不建議模仿。一句話總結(jié)匹配機(jī)制id_table 是門禁driver_data 是進(jìn)門后遞給你的工牌MODULE_DEVICE_TABLE 是讓門衛(wèi)知道今天有你這個候選人的通訊錄。三者配合probe 才會在一個設(shè)備真實存在的前提下被調(diào)用。2. probe 不是隨便寫寫驅(qū)動的出生、存活與退休probe是 PCI 驅(qū)動的核心主戰(zhàn)場但很多人把它當(dāng)成初始化硬件的地方這個理解太窄。probe 更準(zhǔn)確的定位是資源申請清單。設(shè)備枚舉是內(nèi)核做的驅(qū)動能做的只是把自己需要的資源申請下來做好映射然后讓設(shè)備可被系統(tǒng)其他子系統(tǒng)使用。2.1 probe 里該干的七件事和對應(yīng)釋放我按自己寫 PCIe 驅(qū)動的習(xí)慣給出 probe 的標(biāo)準(zhǔn)動作static int my_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { struct my_dev *dev; int ret; dev kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; dev-pdev pdev; pci_set_drvdata(pdev, dev); ret pci_enable_device(pdev); if (ret) goto err_free; ret pci_request_regions(pdev, my_driver); if (ret) goto err_disable; dev-bar pci_iomap(pdev, 0, pci_resource_len(pdev, 0)); if (!dev-bar) goto err_release; pci_set_master(pdev); ret dma_set_mask_and_coherent(pdev-dev, DMA_BIT_MASK(64)); if (ret) { ret dma_set_mask_and_coherent(pdev-dev, DMA_BIT_MASK(32)); if (ret) goto err_unmap; } ret pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_INTX); if (ret 0) goto err_unmap; dev-irq pci_irq_vector(pdev, 0); ret devm_request_irq(pdev-dev, dev-irq, my_irq_handler, 0, my_driver, dev); if (ret) goto err_irq; ret misc_register(dev-miscdev); if (ret) goto err_irq; return 0; err_irq: pci_free_irq_vectors(pdev); err_unmap: pci_iounmap(pdev, dev-bar); err_release: pci_release_regions(pdev); err_disable: pci_disable_device(pdev); err_free: kfree(dev); return ret; }對應(yīng)的 remove 就是把這套動作倒著做一遍首先注銷 miscdev 這類對外接口確保不再有用戶態(tài)路徑能摸到設(shè)備然后 free 中斷、釋放中斷向量、iounmap、release regions、disable device最后 kfree。順序不能亂尤其要記住先斷對外接口再斷內(nèi)部資源否則 remove 過程中有進(jìn)程正在讀寫你這邊把 ioremap 釋放了那邊 read 還在訪問非法地址直接 oops。2.2 devm 資源偷懶的前提是搞清楚生命周期上面的錯誤處理鏈里有一堆 goto寫多了容易漏。內(nèi)核提供了一套 devmmanaged device resources機(jī)制注冊的資源會在設(shè)備解除綁定或驅(qū)動移除時自動釋放。比如devm_kzalloc、devm_ioremap、devm_request_irq以及較新內(nèi)核里的devm_request_pci_regions和pcim_enable_device。用 devm 的好處是 probe 中途失敗時不用一個個手動回滾代碼里可以少寫很多錯誤處理標(biāo)簽。但副作用也很明確這些資源按棧順序逆序釋放也就是后申請的反而先釋放。如果你的資源之間有依賴關(guān)系就必須仔細(xì)設(shè)計申請次序。我現(xiàn)在的習(xí)慣是小驅(qū)動直接用 devm 一把梭減少出錯大驅(qū)動則保持手動管理因為移除順序我想完全掌控。有一點必須強(qiáng)調(diào)用了devm_request_irq之后remove 里絕對不要再手動free_irq否則會重復(fù)釋放內(nèi)核直接炸給你看。2.3 suspend/resume別讓設(shè)備在睡眠中失憶現(xiàn)代 PCI 驅(qū)動很少直接在struct pci_driver里寫 suspend/resume 回調(diào)而是用driver.pm my_pm_ops掛dev_pm_ops。掛起時主要做三件事停掉數(shù)據(jù)流DMA 停、中斷屏蔽、保存需要恢復(fù)的寄存器狀態(tài)、把設(shè)備放到低功耗狀態(tài)?;謴?fù)時反過來先恢復(fù) PCI 配置空間再重新初始化設(shè)備內(nèi)部狀態(tài)最后開中斷、啟動 DMA。這里有個最常見的誤解很多人以為 resume 之后 BAR 地址、DMA 配置由內(nèi)核全包了。內(nèi)核確實會恢復(fù)標(biāo)準(zhǔn) PCI 配置空間pci_restore_state但設(shè)備內(nèi)部私有寄存器和 DMA 描述符狀態(tài)屬于設(shè)備固件上下文內(nèi)核管不著。如果硬件固件設(shè)計得比較偷懶D3 之后內(nèi)部狀態(tài)全丟resume 里不重新初始化開起來的 DMA 會像脫韁野馬一樣訪問無效地址。我碰到過一塊板卡resume 后必須重新下發(fā)整個描述符環(huán)基地址否則中斷永遠(yuǎn)不來數(shù)據(jù)也永遠(yuǎn)不更新。3. 地址空間真相BAR、MMIO 與pci out of resources的根因PCI 設(shè)備不直接知道CPU 物理地址這個概念。它只知道自己有幾個 BARBase Address RegisterBAR 是設(shè)備向系統(tǒng)申報地址空間的窗口。固件在枚舉時讀取 BAR 的寫入行為來判斷窗口大小然后給每個窗口分配一段 PCI 域地址這段地址再經(jīng)過 Host Bridge 映射到 CPU 物理地址空間。驅(qū)動要訪問設(shè)備寄存器本質(zhì)上就是訪問這段被映射進(jìn)來的內(nèi)存或 IO 空間。3.1 從 BAR 描述符讀出你要的資源驅(qū)動不要自己去讀配置空間里的 BAR 原始值那是固件和內(nèi)核枚舉階段的事。內(nèi)核已經(jīng)幫你解析好了直接使用pci_resource_*系列函數(shù)resource_size_t start pci_resource_start(pdev, bar); resource_size_t len pci_resource_len(pdev, bar); unsigned long flags pci_resource_flags(pdev, bar);flags 里需要注意兩位IORESOURCE_IO表示 IO 端口空間IORESOURCE_MEM表示內(nèi)存映射空間。內(nèi)存空間里還有IORESOURCE_PREFETCH標(biāo)志表示可預(yù)取。可預(yù)取的含義是讀這個地址沒有副作用、數(shù)據(jù)可以被 CPU 緩存合并。如果你的 BAR 實際是控制寄存器或者 FIFO讀它本身會改變設(shè)備狀態(tài)那就絕不該標(biāo)成 prefetchable。之前調(diào)試一塊回讀 FIFO 的板卡readl 拿回來的數(shù)據(jù)偶爾亂序查到最后就是硬件工程師把 BAR 配成了 prefetchable軟件這邊讀操作被 CPU 重排合并了。3.2 從 PCI 域地址到 CPU 指針ioremap 的三條路拿到pci_resource_start之后你還需要把它映射成內(nèi)核虛擬地址才能用 C 語言訪問。最省事的是pci_iomap它內(nèi)部會根據(jù)資源類型自動選擇ioremap還是ioport_mapvoid __iomem *bar0 pci_iomap(pdev, 0, pci_resource_len(pdev, 0)); if (!bar0) { ... } u32 val ioread32(bar0 REG_STATUS); iowrite32(0x1, bar0 REG_CTRL);這里我建議統(tǒng)一用ioread32/iowrite32而不是readl/writel。兩者在 x86 上行為差別不大但ioread32的語義就是訪問 MMIO移植到 ARM、RISC-V 上更安全。64 位 BAR 也沒有玄學(xué)pci_resource_len返回的已經(jīng)是resource_size_t64 位只要內(nèi)核開啟 64 位資源支持直接按同樣方式訪問即可。3.3 排障實戰(zhàn)新卡在老機(jī)器上報 no space 的完整排查這個報錯值得單獨立一節(jié)因為它不是驅(qū)動的鍋而是整個系統(tǒng)資源分配的鍋。典型 dmesg 長這樣pci 0000:03:00.0: BAR 0: no space for resource [mem size 0x01000000] pci 0000:03:00.0: BAR 0: cant assign mem (size 0x01000000)第一句的意思是設(shè)備想要 16MB 的 MMIO 窗口但系統(tǒng)當(dāng)前的 PCI 域地址空間里找不到連續(xù) 16MB 的空閑區(qū)間。這在老平臺和虛擬機(jī)上特別常見。PCI 地址空間不是無限的傳統(tǒng) PC 在 32 位時代只把 3G 到 4G 附近一段留給 PCI 設(shè)備多個設(shè)備瓜分完就沒了?,F(xiàn)代主板 BIOS 里有Above 4G Decoding選項打開之后才允許把 PCI 資源放到 4G 以上的高位地址空間。我那次遇到的具體情況是一塊板卡 BAR0 要 16MB插上一臺只有 8MB 空閑 MMIO 窗口的舊工控機(jī)報的正是這個錯。排查順序是那一次排查的節(jié)奏是先看lspci -vvv -s 03:00.0發(fā)現(xiàn) Region 0 顯示[size16M]而不是具體地址說明 BAR 沒被分配再看dmesg | grep -i pci立刻定位到 no space 日志最后進(jìn) BIOS 確認(rèn)平臺上確實沒有 Above 4G 選項。你要是也遇到同樣日志處理手段按優(yōu)先級來BIOS 里打開 Above 4G Decoding有些 BIOS 叫 Large BAR、SR-IOV 支持都得開換插槽避開集顯或其他大 BAR 設(shè)備占用的窗口內(nèi)核啟動參數(shù)加pcirealloc讓內(nèi)核在啟動階段強(qiáng)行重新分配所有 PCI 資源虛擬機(jī)環(huán)境則檢查虛擬機(jī)的 MMIO 窗口配置有些 hypervisor 默認(rèn)給 PCIe 預(yù)留空間很小還有一個容易被忽略的細(xì)節(jié)pci_enable_device失敗時也可能報cant enable device: BAR 0 ... not assigned。很多人以為 enable 只是開電源管理實際上它內(nèi)部也會嘗試為未分配資源的 BAR 爭取空間。如果 BAR 壓根沒分到地址這里的報錯只是把枚舉階段的問題延遲到了驅(qū)動加載階段而已。4. 讓數(shù)據(jù)流動起來DMA 設(shè)置與中斷選擇的若干細(xì)節(jié)設(shè)備識別了、寄存器能訪問了但一塊 PCIe 板卡真正的價值在于數(shù)據(jù)搬運(yùn)。這一步繞不開 DMA 和中斷也是驅(qū)動開發(fā)中出錯率最高的部分。4.1 DMA 掩碼先讓設(shè)備夠得著內(nèi)存設(shè)備做 DMA 時要往內(nèi)存總線地址上寫數(shù)據(jù)但設(shè)備本身不知道自己 CPU 物理地址多寬。你需要用dma_set_mask_and_coherent告訴 DMA 層這個設(shè)備認(rèn)得多少位地址if (dma_set_mask_and_coherent(pdev-dev, DMA_BIT_MASK(64))) { if (dma_set_mask_and_coherent(pdev-dev, DMA_BIT_MASK(32))) return -EIO; }先試 64 位失敗再退化 32 位這是標(biāo)準(zhǔn)順序。為什么失敗可能是 IOMMU 限制、設(shè)備硬件本身只支持 32 位尋址或者總線地址寬度不足。注意dma_set_mask和dma_set_coherent_mask可以分開設(shè)置一般情況用dma_set_mask_and_coherent一起設(shè)更省事。忘了設(shè)掩碼的后果是 DMA 映射層不知道設(shè)備能力可能交出 64 位地址而設(shè)備只能寫低 32 位數(shù)據(jù)寫入完全隨機(jī)排查時讓人抓狂。4.2 一致性內(nèi)存與流式映射的分工DMA 內(nèi)存分兩大類使用場景完全不同。一致性內(nèi)存用dma_alloc_coherent分配CPU 和設(shè)備看到的地址不需要額外同步。適合放描述符環(huán)、狀態(tài)區(qū)域、控制塊這類需要頻繁被雙方讀寫的小塊數(shù)據(jù)struct ring { struct desc *cpu; dma_addr_t dma; }; ring-cpu dma_alloc_coherent(pdev-dev, ring_size, ring-dma, GFP_KERNEL);流式映射用dma_map_single/dma_map_sg一次映射一段緩沖區(qū)用完就 unmap。適合網(wǎng)絡(luò)包、塊數(shù)據(jù)這類一次性大塊數(shù)據(jù)傳輸。速度更快但 CPU 訪問前必須dma_sync_single_for_cpu設(shè)備訪問前必須dma_sync_single_for_device。我吃過一次虧DMA 完成中斷里直接讀 data buffer發(fā)現(xiàn)數(shù)據(jù)是舊的折騰了半天根源就是忘了在 CPU 讀之前做 synccache 里的舊數(shù)據(jù)擋住了新鮮結(jié)果。還要提醒一點dma_alloc_coherent分配的是頁對齊內(nèi)存別指望它能分配幾十 MB。大塊數(shù)據(jù)老老實實走流式映射或者自己管理 SG 列表。設(shè)備端用什么驅(qū)動端就用對應(yīng)的映射 APIDMA 地址一定要用 API 返回的dma_addr_t不要自己拿 virt_to_phys 算有 IOMMU 的時候這兩個值可能完全不一樣。4.3 MSI 與 INTx 的取舍以及分配向量代碼模板現(xiàn)代 PCIe 設(shè)備優(yōu)先用 MSI/MSI-XINTx 是針腳共享中斷的舊方案能不用就不用。MSI-X 的優(yōu)勢是每個隊列可以分配獨立中斷向量多個 CPU 核分別處理不同隊列吞吐量完全不一樣。分配代碼一般這樣寫int nvec pci_alloc_irq_vectors(pdev, 1, num_queues, PCI_IRQ_MSIX | PCI_IRQ_MSI); if (nvec 0) { nvec pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_INTX); if (nvec 0) return nvec; } for (i 0; i nvec; i) { unsigned int irq pci_irq_vector(pdev, i); devm_request_irq(pdev-dev, irq, my_irq_handler, 0, dev_name(pdev-dev), queue[i]); }pci_alloc_irq_vectors會按你給的類型優(yōu)先級依次嘗試返回值是實際分配到的向量數(shù)。拿到nvec后每個向量的 IRQ 號必須用pci_irq_vector查詢不能假設(shè)它們是連續(xù)的。如果走到 INTx 兜底request_irq里要加IRQF_SHARED因為 INTx 本來就是共享中斷線handler 里必須先讀取設(shè)備中斷狀態(tài)寄存器確認(rèn)是不是自己的中斷不是就返回IRQ_NONE。中斷 handler 本身的撰寫原則是在原子上下文里只做最少的事。讀狀態(tài)、清中斷、把數(shù)據(jù)搬進(jìn)預(yù)分配緩沖、置一個標(biāo)志位、喚起 workqueue然后返回IRQ_HANDLED。重活放到線程化中斷或 workqueue 里硬中斷里做得越少鎖的問題越少系統(tǒng)延遲越可控。我甚至?xí)裷equest_threaded_irq的線程化 handler 作為大塊數(shù)據(jù)處理的主戰(zhàn)場硬中斷只負(fù)責(zé) ack 和喚醒。5. 現(xiàn)場調(diào)試三板斧sysfs、dmesg 與 lspci 的配合寫 PCI 驅(qū)動不是一次就能成功的準(zhǔn)備一套高效的現(xiàn)場排查手段能省下大量時間。我在調(diào)試中用的最多的是這三個工具組合lspci -vvv看設(shè)備狀態(tài)、dmesg看內(nèi)核日志、sysfs 里的接口做動態(tài)試驗。5.1 從 lspci -vvv 讀設(shè)備當(dāng)前狀態(tài)lspci -nnvvv -s 03:00.0是查看單設(shè)備全貌的標(biāo)準(zhǔn)命令。重點看幾個字段Region 0: Memory at ...如果顯示的是實際地址說明 BAR 已分配如果顯示[size16M]而沒有地址說明資源沒分配Interrupt: pin A routed to IRQ 51能看到中斷路由狀態(tài)Capabilities: ... MSI-X確認(rèn) MSI-X 能力是否可用LnkCap/LnkSta鏈路速率和寬度懷疑物理連接問題時先看這里每次加載驅(qū)動前后都跑一遍對比設(shè)備狀態(tài)變化很多時候問題一眼就能看出來。5.2 模擬熱插拔與強(qiáng)制綁定的正確姿勢sysfs 提供了一套不需要斷電的熱插拔試驗環(huán)境。把設(shè)備從總線邏輯上移除再重新掃描echo 0000:03:00.0 /sys/bus/pci/devices/0000:03:00.0/remove echo 1 /sys/bus/pci/rescan這樣模擬一次完整的設(shè)備消失-重新枚舉流程非常適合驗證 probe/remove 的配對邏輯。手動綁定驅(qū)動則在驅(qū)動目錄下操作echo 0000:03:00.0 /sys/bus/pci/drivers/my_driver/bind echo 0000:03:00.0 /sys/bus/pci/drivers/my_driver/unbind如果設(shè)備已經(jīng)被別的驅(qū)動占用了會綁定失敗。這時可以先去占用的驅(qū)動目錄下 unbind再回來綁定。另外一個技巧是driver_override往設(shè)備 sysfs 里寫驅(qū)動名可以強(qiáng)制指定某個驅(qū)動來匹配這個在測試多個候選驅(qū)動時非常管用。5.3 常見問題速查調(diào)試中反復(fù)出現(xiàn)的幾類問題我整理成一個速查表省得每次現(xiàn)查現(xiàn)象可能原因優(yōu)先排查手段probe 不調(diào)用id_table 沒匹配lspci -nn 核對 vendor/device/subsystemmodinfo 看 aliasBAR 分配失敗BIOS 窗口不足dmesg 搜 BAR開 Above 4Gpcirealloc讀寄存器全是 0xFF設(shè)備未 enable、地址映射錯誤、設(shè)備沒上電先 pci_enable_device核對 bar0 虛擬地址中斷不觸發(fā)中斷向量配置錯、設(shè)備中斷源被 mask/proc/interrupts 看計數(shù)嘗試 pcinomsi 排除 MSI 問題中斷風(fēng)暴沒屏蔽掛起中斷、共享誤判probe 早期先把設(shè)備中斷輸出 disable清 pending再 request_irqDMA 數(shù)據(jù)全零DMA 掩碼沒設(shè)、映射錯地址核對 dma_alloc_coherent 返回的 dma_addr 是否正確寫入設(shè)備我再分享一個調(diào)試 DMA 時屢試不爽的小技巧在硬件還沒有真正跑起來之前先讓設(shè)備寫一段已知 pattern 到一致性內(nèi)存里CPU 這邊輪詢這段內(nèi)存如果能看到 pattern說明 DMA 寫路徑和地址映射是通的再把 CPU 寫好的 pattern 讓設(shè)備讀出去驗證讀路徑。先打通地址對不對再去調(diào)數(shù)據(jù)對不對能少走很多彎路。最后說點實在的。Linux PCI 驅(qū)動框架表面上是一堆結(jié)構(gòu)體和回調(diào)實際上它把設(shè)備發(fā)現(xiàn)、資源分配、驅(qū)動綁定、生命周期管理這些臟活全包了。真正考驗開發(fā)者的往往不是 API 記不記得住而是對匹配規(guī)則、資源窗口、DMA 語義和中斷模型的理解是否到位。如果你照著這個思路把 probe 當(dāng)資源清單、把 remove 當(dāng)逆序拆解、把 sysfs 當(dāng)實驗臺絕大多數(shù) PCI 驅(qū)動問題都能一步步拆到根因上。下一篇文章我會挑一個具體的 PCIe DMA 驅(qū)動示例從零到一把完整流程跑一遍。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产真实野战在线视频| 九九国产热| 天天综合网91入口| 天堂av最新电影网| 男人的天堂久久| 青娱乐国产剧情av一区| 国产精品秘 福利姬在线观看| 色婷五月| 国产精品网址| 综合影院永久入口国产| 午夜a成v人电影| 欧美性爱系列| se,,,亚洲欧美| 国产高清自拍视频| 熟女六十路| 亚洲成人av色网| 麻豆区99999| 天天操天天射天天日| 十八禁视频网站| 久久久蜜桃一区二区三区| 97 视频在线| 亚洲天天在线| 日韩中文字幕av在线播放| 色色综合97| 亚洲国产一级黄色视频| 97超久碰| 操逼网免费无码视频| 亚洲有码 欧美精品| 蜜臀亚洲中文| 另类在线| 香港澳门日本三级网站| 97超碰精品图片| 夜色五月天| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 亚洲熟妇乱女区二区三区| 男人的天堂 在线一区| 亚洲天堂久久| 久久成人国产| 久久大香蕉97| 欧美成人色| 无码137片内射在线影院| 九九英色视频| 日本熟妇人妻中出视频| 超碰碰激情97+久| 亚洲最新av无码成人精品区 | 中文字幕在线观看AV| 大二网站亚洲| 日本天堂在线播放| 国内黄色精品| 婷婷五月综合在线| 91精品女厕偷拍视频| 性欧美91| 日本久久久久久久久久| 亚洲欧美日韩有码| ′ !γ}丶。。久久精品欧美一区二区三区| 91搡老女人老妇女老熟女歌词翻译| 亚洲熟妇图片| 91露脸熟女专区| 男人的天堂免费| 91欧美另类| 天天综合有色网| 波多野42部无码喷潮在线观看 | 国产亚洲日本精品在线| 国产一区二区精品久久99| 天天干夜夜鈤| 久久αⅴ| 国产精品久久| 人人爱人人乐人人操| 久久熟女嫩草成人片免费| 精品久久九| 中文精品少妇天堂| 欧美色九九九| 亚洲国产一区二区入口| 精品女同一区| 色蜜AV| 蜜屁av| 亚洲国产欧美中文永久| 欧美日韩中文亚洲v在线综合| 视频二区熟女人妻| 久久综合激情| 男女激情黄色网址| 欧美久久伊人| 美女视频尤物网在线看| 青青色在线观看| 中文字幕二区| 欧美性,色九九| 亚洲蜜桃V妇女| 91 综合 色| 免费国产| 免费操逼视频下载| 中文熟女五十乱码在线| 欧美激情亚洲情色| 丝袜喷水在线| 五月天激情国产综合婷婷婷| 欧美日韩香蕉| 日韩欧洲操屄视频| 亚洲情色欧美| 久久香蕉综合一本到3atv| 92性色国产午夜福利在线661| 亚洲啪啪综合?v一区综合精品区| 一区操逼日比视频| 亚洲欧美自拍偷拍| 超碰色综合| 五月丁香色综合| 午夜一区| 探花一区二区三| 日韩精品99999| 很黄很污的免费网站| 久草网站免费在线观看| 一区二区三区美女超清| 91操熟女视频| 国产强奸91| 91另类| 亚洲青青草| 国产欧美一区二区| 国产美女精品| 97欧美日韩| 少妇99成人麻豆| 国产真乱mangent| 丁香五月婷婷基地| 久热影视| 亚洲成人在线高清| 人人操人人摸人人看人人插| 97亚洲综合电影| 东京热一区二区三区四区五区六区| 日本色色视频网站| 国产亚洲在线观看| 亚洲Av无码成人精品国产| 偷拍自拍在线视频观看| 911粉嫩人妻| 国产一级作爱毛片| 97干在线视频| 麻豆人妻偷人精品无码视频| 伊人黄色视频免费观看| 婷婷激情综合网| 熟女乱伦二区| 久久五月综合| 久久99黄色卞西瓜| 中日韩久久人妻一区二区| 中文字幕国产精品1区| 久久人妻熟女一区二区| 99久在线精品99re8热视频在线| 淫淫综合网| 性91| 999国产精品999久久久久久| 黄色欧美性爱视频| 99.色网| 国产精品天美传媒| 日本一二三高清| 风月影院十八禁| 久操热| 中文字幕乱码人妻一区二区三区,99精品 | 日韩伦理视频| 日日做夜狠狠爱欧美黑人| 日本淫穴在线| 日韩免费高清大片在线| 美女丝袜激情小说| www.久久超碰| 99色色网| 九九九国产| 亚洲精品一卡二卡三卡福利视频网站| 中文字幕精品码亚洲| 免费?级毛片无码?∨蜜芽试看| 人妻乱仑一区二区三区| 亚洲91射| 午夜精品久久久久久久99蜜桃一| 亚洲日精品| 男人的天堂三级| 国产精品成人AV片免费看网站| 亚洲情色婷婷五月天| 曰韩中文人妻视频| 一区不卡在线观看av| 精品国产www久久| 欧美色老汉| 热久久无毒不卡| 亚洲国产精品无石码久久| 8x福利精品第一福利视频导航| 久久精品高清AV| 一区二区三区精品视频| 成人AV素股で擦久久| 免看60秒涩涩视频| 1000部熟女视频在线观看| 综合自拍| www. 男人天堂成人在线| 性一级黄色录像片网站导航| 亚洲色婷婷久久91| 天天摸夜夜添无码小视频| 噜噜噜亚洲精品| 99爱爱| 老女人综合| 精品人妻一区春色| 伊人久久大香蕉线AV五月天| 97超碰中文| 亚洲激情视频| 男女性感激情网站| 国产精品一区二区在钱播放| 精品97久久| 2017天天插| 操逼不卡中文字幕| 亚洲青色欧美| 岛国片国产成人亚洲播放| 欧美综合色站| 成年女人18级毛片毛片免费观看| 污到发麻的视频 国产| 超碰97起碰| 超碰美女97| 久久香蕉国产线看观看猫咪av| 99精品久久| 校园春色欧美色图| 操逼www.| 啪啪自拍九九综合| 伊人午夜福利视频| 欧美精品人妻视频| 人妻少妇无码| 中文字幕aⅴ在线视频| 亚洲毛片一级带毛片基地| 91亚州日韩高清| 啊啊啊啊啊在线| 欧美一区二区三区黄色影视| 亚洲AV永久无码一区仙野| 二三四区精品| 校园春色亚洲欧洲| 在线啊v一区| 日韩一级免费性爱| 久久99国产综合精品女同| 狠狠亚洲| 精品久久久不卡一区二区| 人妻人人操| 97在线观看免费视频l| 久久成人午夜精品影院| 国产JDAV无码视频在线观看| 丁香五月激情网| 超碰人妻97| 2019亚洲男人天堂| 97免费视频在线观看| 日B操| 99啪啪视频| 牛牛aV| 午夜.DJ高清在线观看免费7| 亚洲?V高清一区二区三区尤物| 亚洲毛片基地专区| 久久久久久久久久久久久久久乱码 | 国产做?爰片久久毛片?片美国| 天操天操夜操夜月操月年年操操| 精品偷拍13p欧美dodk视频| 国产欧美成人精品| 精品-91人妻子系列| 97欧美日韩综合| 青青草原狼av| 国产精品婬乱一级毛片彝族| 亚洲揄拍网| 久久九九视频九九视频| …亚洲黄色厕厕女女在线播…| 丝袜制服字幕在线| 自拍偷拍 日韩无码| 欧美一区二区三区成人性生活| 日韩无码a片| 99热精品在线| 中国熟女网站| 九九九久| 太久视频| 啊啊啊好湿久久| 九九热超碰97亚洲最新香蕉| 骚逼高潮久久精品| 乱论91| 97综合在线观看| 欧洲精品久久| 97天天摸天天碰| 精品国产乱码久久久影院| 九一屌逼| 男人天堂毛片| 啪啪啪精品| 天干天干天干天天做| 亚欧免费观看视频| 黑人综合色| 少妇毛片久久| 99超级碰免费视频| 久久东京伊人一本到鬼色| 欧亚 另类 久| 91偷拍欧美亚洲| 少妇干B| 欧美成人精品一区| 国产女人视频三四五区| 久久性视频| 91久久精品国产| 色天堂在线观看| 欧美日韩99精品麻豆传媒| 97超碰免费人人性爱| 99在线免费观看| 97人人夜夜精品视频| 国产精品久久久久久久久久久久久久吹 | 97久久久久| 少妇内射www在线观看视频| 久久激情视频| 久久久内射良家| 日本午夜福利视频| 精品性爱无码在线播放| 三上制服丝AV| 就去色综合| 操www| 青女在线| 久久久中文| 亚洲 欧美 日韩 国产一区二区 | 探花精品视频| 青青草日本中文字幕| 99这里只有精品| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 九九玖玖精品| 丁香久久| 啊啊啊操一区| 亚洲熟妇自偷自拍另欧美| 熟女被操视频网址| 色情五月综合婷婷| 五月天婷婷久久| 亚洲精品一区二区三区在线播放| 亚州高清av| 色五月av| 九九在线精品| 欧美丝袜亚洲| 色网综合网| 男女啪啪网站免费视频| 四虎在线免费视频| 加勒比色综合| 97久久超碰国产精品| 超碰79人人乐| 91青视频| 97天天操天天干| 亚洲av性爱电影| 天天网综合| 精品国产乱码久久久久A| 九一综合精品视品av| 久久久久久久9999| jiujiujiujingpin| 日本高清有码网址视频| 免费9 1久久| 最新的亚洲无吗| 色5月婷婷| 国产精品美女久久久久久网站| 极品后入免费视频| 一区二区三区精品视频| 中文字幕国产在线天堂| 乱伦一区二区三区‘| 一卡二卡在线播放| 2021久久国产综合精品青草| 九九九精品美女| 岛国天天午夜影院传媒网| 厕所偷拍在线| 亚洲国产精品成人无码久久久| 熟女熟妇一区二区三四区| 91色综合激情| 综合色久欲| 色情乱伦AV| 国产精品点击进入在线影院高清| 黄色香蕉视频网站一区| 九九无码| 日本熟妇熟色97一本在线观看| 美女操逼福利视频| 国产高清自拍| 乱伦熟妇一区二区| 一级AV性爱| julia国产在线| 久久精品国产亚洲AV无码电影| 国产一区二区精品久久久不卡蜜臀| 香伊人在线| 久久久久精| 亚洲nv男人的天堂网| 中文字幕亚韩| 亚洲色综合| 国产专区第一页| 久久久久久亚洲中文| 国产精品亚洲天堂网址| 最新中文字幕在线亚洲| 日韩簧片免费看| 少妇人妻在线| 可以看的av| 狠狠躁日日躁夜夜躁A| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 国产欧美日韩臀| AV免费在线播放一区| 免费男人的天堂| 韩国一级做A片免费的| 国产精品夜夜| 91男人天堂网| 国产精品久久久久久久黄无码| 男人的天堂VA| 色69大色97香蕉| 欧美A√综合网| 欧美成人午夜免费福利785| 国产肏屁眼视频| 青青操网| 亚洲综合电影| 91欧美www| 99热这里是精品| 三级日韩一区二区三区| 久久一本大香蕉 | 日韩极品无码B| 69精品| 中文字幕人妻丝袜乱一区三区| 老熟女91av| 丁香五月影院| 国产激情久久| 婷婷五月天网| 欧美一区二区福利在线| 91大香蕉伊人| 成人欧美日超碰| 伊人激情五月天一区二区| 狠狠做深爱婷婷久久二区| 操b网站亚洲无码| 性欧美天天| 97福利视频| 在线国产探花| 久久婷婷综合国际产色怕| 国产福利电影| 亚洲av综合伊人久久| 国产精品成人无码a v毛片| 蜜乳AV免费观看| 国产99精品一区二区三区免费| 熟女啪啪视频| 久草精品热视| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 一区二区三区一亚洲中文字幕、综合区灬 | 天天色播亚洲综合网站| 久/久精品99看9| 色玖玖| 97青青操视频| 久久精精区一区二区一蜜桃一区二区| 偷窥自拍亚洲色图| 大香蕉视频啪啪啪啪| 亚洲色图欧美激情| 色欧美综合| 一级二级在线观看| 精品性爱一二三区| 热99这里只有精品| 亚洲棕合电彰| 亚洲Av噜噜一区二区三区妖精| www久久久| 啊嗯好大视频在线观看| 亚熟hd视频在线| 人妻另类| 日韩中文字幕国产| 免费强奸av| 久久精品视频久久久| 日韩精彩免费| 91天天看| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 激情亚洲天堂| 欧美偷拍| 日本色婷婷| 小视频玖玖| 国产 热久久久久国产精品| 9久综合网| 超碰偷拍| 色青青久久影视| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 天天影视射综合网| 久久的免费性爱视频| 丰满人妻一区二区三区四区| 爱爱动态120秒| 国产丝袜美女诱惑| 日本孕妇一区二区视频操逼免费看 | 欧美日韩国产电影| 久久黄色视频一区二区三区 | 日本黄色裸日本黄色裸体| 熟女91网站| 美女露胸露屁股| 岛国网址国产 | 国产成年免费大片黄在线观看| 欧美亚洲日韩人妻在线观看| 国产91丝袜 在线播放| 国产毛片精品一区二区色欲黄A片| 国产精品不卡一区二区三区| 国产精品久久久久久片| 天美传媒精品一区二区| 亚洲熟女中文字幕在线| 999热日韩精品| 99视频内射三四| 亚洲少妇免费视频\| 国模精品一区二区三区苹果色戒| 2020中文字幕在线| 色五月网址| 亚洲欧美日韩偷拍色图| 日韩色女精品| 国产伦精品免编号公布| 抽插无码高清一区| 五月天我淫我色av| 情色五月天就去干| 毛片电影一区二区三区| 最新国产亚洲精品精品国产亚洲综合 | 91人妻人人澡人人爽人人精品| 99国产精品在线观看| 日本国产欧美一区三区二区| 午夜视频久久久| 二级久久网| 日韩性色b| 手机在线大香蕉| 亚洲成人网站在线观看| 欧美片第一页| 国产在线综合福利网站| 激情一区二区| 国产91丝袜 在线播放| 日韩在线76| 囯产精品久久久久久久久久梁医生 | av天堂电影网| 五月天黄色av| 精品一区二区三区蜜桃臀赵总 | 亚洲另类久操网| 好吊妞转入那个网| 久久久精久久久| 做爱福利视频一区二区| 黄色视频高清无码网站| 涩爱AV在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧美日日操| 欧美 亚洲 偷拍自拍| 91小视频| 99久久综合| av亚洲天堂资源网站| 日本亚洲嫩草影院啪啪| 国产A v无码专区| 香蕉一区二区三区在线视频| 欧亚韩国999| 操逼逼一区视频| 920日本午夜免费| www.男人天堂| 色噜噜人妻丝袜a∨先锋影| 色狠狠综合噜一二三区| 天美欧美国产| 亚洲青青草| 欧美97网| 午夜福利区| 久久亚州高清| 九九九国产精品| 久久久久9| 久久国产精品视频| 亚洲欧洲精品成人| 97资源欧美| 国产精品爆乳懂色蜜乳| 在线播放中文字幕| 国内偷拍精品一区二区| 精品妇女一区二区三区| 亚洲精品国产精品乱码不99| 任你艹| 中文字幕性感少妇av| 免费看日产一区二区三区| 啪啪啪东京| 中文字幕亚洲欧美在线不卡| 亚洲第一无码播放立川理惠| 中文字幕在线观| 亚洲精品天天影视综合网 | 最近2018中文字幕在线高清第一页| 日韩AV一区二区三区三州三州| 亚洲男人的天堂AV| 亚洲清纯综合| 国产91av在线播放| 深夜激情无码| 丝袜综合| 久久超碰日韩精品| 欧美日韩在线国产在线| 激情自拍 校园春色| 99精品人人爽| 国产拍偷精品网站| 中文字幕黄色片| 久偷拍| 日韩91网| 2019天天干天天操| 亚洲AV无码国产成人| 天堂日本亚洲欧美| 久久精品国产亚洲粉嫩| 波多野结衣先锋影音| 色五月69夫妻| 综合网欧| 老师充足的奶水小说| 丝袜熟女2P| 激情综合五月丁香| 夜夜高潮夜夜爽夜夜爱爱一区 | 九九综合| 呻吟 欧美 日本 中出| 天美91| 99久久精品国产高潮| 久久久久久久久久黄色网| 久久久久久久久一区二区三区| 人妻 丝袜美腿 中文字幕| 亚洲情色五月天 | 蜜臀99久| 91精品黄在线观看| 国产精品91ai| 草草草视频在线免费看| 好吊妞转入那个网| 久久久久夜夜夜夜| 五月激情小说| 久久91| 成人性爱视频在线看| 欧美无圣光在线| 精品9999| 日韩精品资源专区二区| 亚洲黄色a级片| 亚洲欧美成人在线| 欧美午夜精品久久久久久超碰| 婷婷五月天激情网| 久久精品综合| 性一交一乱一交A片久久四色| 色香91| 岛园激情| 综合少妇网| 91大学精品激情戏| 午夜成人爽爽爽爽A片李冰冰| 天天日美女的B| 成人激情无码在线视频| 热久久无毒不卡| 天天爽天天干| 久久精品国产亚洲AV清纯| 欧美狠狠弄| 草草影院最新网址| 日本性感人妻91| 日本www操操操| 狠狠操狠狠燥| 欧美亚洲日韩16色| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 五月天婷婷在线看| 99精品伊人| 亚洲精品精品一区二区| 五十路三区在线| 女优视频第10页| 920日本午夜免费| 91强在线播放| 天天爱天天操| 欧美性爱无码一区二区三区| 18精品一二区| 人人爱夜夜爱| 欧美日本国产日韩激情视频| 久久久亚洲精品中文字幕人妻| 天天爽爽爽爽| 亚洲导航深夜福利| 91 丝袜在线播放| 少妇精品久久久| 免费夜夜爱黄色视频毛片| 超碰在线一区二区| 国偷自 一区二区| 亚洲美乱| 精品九九九| 中 文字幕一区二区三四 五 区日 日 骚 | 麻豆天天躁天天揉揉AV| 中文伊人大香蕉视频| 高清国产成人无码| 人人妻人人玩人人澡人人爽| 欧美情色贴图| 伊人亚洲国产一成人久久精品,久久| 欧美成人A√在线一区二区| 综合亚州欧美| 污电影在线观看| 婷婷情色综合网| 欧美在线播放aaaa| 四虎影视永久在线免费| 99热18| 人妻久久久| 日韩少妇丰满亚洲| www.zbzhongsen.com| 日本成人A片免费看| 欧美AB在线| 国产少妇内射| 亚洲综合射| 亚洲中文字幕乱码无码一区二区| 婷婷伊人綜合中文字幕| 国产精品久久久久久片| 高清无码一区二区三区| 凹凸视频在线一区二区| 国产综合久| 黄久在线| 91影视亚洲| 亚洲第一二区另类图| 旡码电影特区| 国产亚洲 中文欧美久久| 国模精品一区二区三区苹果色戒| 日日干日日操五月天伦理视频| 日夜尻逼网| 五月婷婷五月天| 午夜福利激情在线视频| 亚洲毛片久久| 北京美女一区二区| 欧美少妇第一页| 91黑丝露脚| 女人双腿搬开让男人桶| 国产精品毛片?v一区二区三区 | 欧美日韩一二三| 丁香六月综合激情| 人人操 欧美| 亚洲无无码αⅴ每日更新| 亚州日韩97| 欧美日韩丝袜| 精品国产Av无码久久久伦古装| 亚洲综合夜色| 一区二区激情国产熟女| 岛国成人av在线播放网址| 男人的天堂VA| 天天躁夜夜躁狠狠躁AV| 国产福利夜| www五月| av绯色| 午夜亚洲WWW湿好大| 亚洲色图8| 上床不卡网站| wwe 天天干.com| 久久小视频| 免费观看国产不卡av| 91丝袜在线观看| 992大香蕉| 91精品91久久久久77777| 嗯阿好爽好紧| 天天弄欧美| 91扒丝袜综合在线| 色诱中文字幕| 国产极品久久久| 91黑丝少妇| 色色色五月婷婷| 少妇滛荡视频| 99在线免费观看| 久久免费中文字幕在线观看| 欧美大码在线视频| 久久人妻办公室视频| 抽插无码高清一区| 小情侣高清国产在线视频| 干婷婷综合网| 国产成人精品亚洲日本| 国产女人操逼视频| 在线性黄高清免费视频| 久热9| 九九久久一区二区三区| 国产原创精品| 国产美女精品| 97色操| 97爱综合| 亚洲欧美国产其他二区| 婷婷五月花| 国产人妻精品久久久一区二区三区 | 一级性爱视频免费观看 | 99re在线视频| 一区在线精品中文字幕| 亚洲国产一区二区日韩专区| 91free福利| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 色综合天天爱去电影网| 欧美成熟性爱精品| 国产理论视频在线播放| 一本道综合色图| 蜜桃视频一区二区三区| 久久线上视频免费看| 长长久久免费视频| 97欧美久久久久久久| 九九九精品成人免费视频小说| 6080YYY午夜理论片在线观看| 99久久99九九99九九九| 欧美中文狠| 中文字幕一区二区三区四五区| 色综合国产在线观看| 亚洲天堂7777| 免费看污网站| 日韩激情无码影院| 美日韩一卡二卡三卡免费人妻精品| 久久免费99精品久久久久久| JULIA一区二区三区在线播放| 麻豆人妻少妇在线免费观看| 亚洲欧美天堂| 天天综合网国产| 三久久久四久久久久| 91精品久久久久久综合五月天| 日韩天天本| 99在线免费公开视频| 午夜精品久久久久久久99热影院| 精品欧美乱码久| 六月丁香网| 人妻精品一区二区| 99热免费| 麻豆国产视频精品观看| 九九九九九九九九九九九免费国产| 亚洲色入欧美| 91另类| 99热导航| 老汉网| 九九在线精品| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 国产原创精品| 亚洲暴力强奸AV| 97资源久久| 伊人丝袜美腿高跟在线观看高清| 亚洲精品人妻吞精av| 日韩在线电影| 加勒比伊人综合| 不卡超碰护士AV在线免费播放| 美女视频尤物网在线看| 九热中文字幕| 五月天九九日国产精品一区二区三区| 欧美美女自慰一区二区三区| 操我无码| 一起草日韩| 秋霞成人一级在线观看| 亚洲欧美色图片| 亚洲熟女诱惑| 99热这里只有精品1| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 久久久成人国产精品无码| 国产精品午夜AV完会免费| 精品国产久久乱码| 99国产精品免费| 91久久精品国产| 日韩乱码Av| 丁香五月综合| 日韩中字av一区| 亚洲春色一区二区三区| 人人妻人人爽一区二区三区| 亚洲欧美激情在线视频| 97爱爱爱| 大二网站亚洲| 岛国黄片网站| 最新岛国大片| 免费一级黄色录像影片| 免费操逼91| 国产精品一区二区手机看片| 性色AV蜜色av色欲av| 久9re热视频这里只有精品| 国产家庭乱伦表演| 免费一级精品啪啪视频| 国产黄色 A 片免费看| 欧美激情超碰777| 欧美第一页| 97超色| 香蕉99秘 精品一区丁香| 另类小说综合网| 97超碰9| 人人操人人摸超碰| yazhououmeizongya| 超碰4A| 亚洲情色欧美| 在线综合 亚洲 欧美中文字幕| 国产精品一二三在线看| 91男女啊啊啊| 免费网色网站| 啊啊啊操死我了| www国产精品| 欧日韩不卡视.频| 黑丝少妇麻豆| 嫩草 我啊~嗯~在线| 啊啊啊好大好深| 欧美自拍偷拍综合图片| 女人爽到高潮潮喷18禁网站| av东京热男人的天堂| 精品91摸| 天天做日日做天天欢。| 久久精品无码专区| 操美女高潮抽搐白浆| 国产极品久久久| 久久高清无码夜夜操| sewuyueav| 东北少妇高潮zzzz| 91精品大奶人妻| 久久同城AV| 成人av性爱电影在线观看| 六六久久日韩不卡| 欧美草草高清日韩视频| a级理论午夜日本| 美日韩一二三区| 国产精品无码久久久久2025| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 欧美大片天天看| 操91| 超碰97人妻| 高清不卡视频| 91超级碰| 成人性爱免费播放| 玖玖爱一区在线| 久久久工口| 91丨九色丨国产打屁股| 国产三级中文有码在线视频| 国产高清无码一区三区二区| 国产精品精品系列在线观看| 日本高清久久| 欧美,日韩,中文,另类| 亚洲中文一区二区三区视频| 欧美日本视频一区| 国产女同视频在线播放| 不卡视频一区蜜桃视频 | 日本精品一区三区| 成人无遮挡毛片免费看| 久久丝袜| 99热精品在线观看| 99久在线精品99re8热视频在线| 射丝袜高跟鞋99| 亚洲欧美自拍偷拍| 日本道日本道中文字幕日本道最新日本道在线观看| 国产欧美成人第一页在线观看| av橘色网站| 国产精品91一样| 色99在线| 国产丝袜视频| 日韩AV电影网站| 中文字暮97| 成 人 影视 一区 二区 三区 四区| 久久精品国产精品亚洲艾通辽熟妇| 无套内射性感少妇视频| 六月色色| 玖色AV| 人妻啊啊人妻啊| 蜜臀av一区二区三区免费观看| 屌逼麻豆| 18一区二区三区| 久久夜色一区二区| 蜜桃精品视频一区| 大JI巴好深好爽又大又粗视频| 亚洲国产精品无石码久久| 啊啊啊啊啊啊在线观看| а√天堂资源官网在线资源| 奇米四色网| 操逼操逼逼操操逼91| 国产成人精品亚洲日本| 99爱爱| 精品视频日日夜夜| 少妇69中文| 欧美极品少妇| 欧美人妻制服| 秋霞操逼片| 日本一区二区成人在线| 日本中文字幕在线电影| 嗯嗯嗯啊啊啊在线免费观看| 一区| 9久9久| 中文一区二区三区影院| 精品久久久高清无码| 欧美久久伊人| 欧美成人9797| 神马久久69| 久久久久女教师免费一区| 97爱爱爱| 欧美人妻久久精品二区三区 | 78精品在线| 欧亚无码视频| 欧美麻豆成人同性GⅤ在线| 欧美操逼一二三区| 大香蕉综合在线| 99国产女人| 吖在线不卡一区二区国产剧情| 国产亚洲国产超碰| 九九久久一区二区三区| 青青草男人天堂| 一区二区三区麻豆| 日韩av不卡在线看| 欧美综合站| 青操影院| 欧美黄色手机在线观看| 欧美视频激情久久久久久| 久久久久久人妻一区精品色欧美| 亚洲一区二区中文字幕| 成人影 天天操 亚洲| 欧美九一精品久久久熟妇| 亚洲图片欧美色图| 国产精品免费美女视频| 九九英色视频| 2017天天操| 午夜久久无码1000合集| 91色黑人少妇| 国产免费内射视频| 温婉少妇玩3p| 禁十八久久| 97在线免费看视频| 日本一区二区不卡精品| 日韩精品人妻系列无码天堂| 欧美自拍网| 操逼操逼逼操操逼91| 春色校园综合网| 97在线免费看视频| 国产一区二区三区精品观看啪| 欧美久久毛片基地| 欧美AB在线| 婷婷伊人网| 骚女高跟AV在线| 十八禁视频一区二区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美日韩亚洲天堂网| 日韩欧美日韩| a网站免费观看| 亚欧操逼片在线观看 | 不卡二三区人妻少妇| 亚洲强奸乱伦影视网| 欧美日韩精品久久| 日韩免费三级黄片电影| 99国产精品人妻人伦| 久操国产在线| 韩国黄色片精品久久久| 久久精品日韩专区免费观看| 天天操天天干一区二区 | 91网亚洲| 亚洲精品久久久久毛片A片拉屎 | 乱理日韩中文| 2024黄色视频| 好爽,再快点啊哈嗯嗯嗯嗯| 伊人骚琪琪亚洲天堂网站| 色情五月婷婷| 老熟女综合网| 色区久久| 9 1果冻精品视频| 97香蕉碰碰人妻国产欧美| 天天操福利视频综合网站| 91精品国产高清久久久久久,亚洲成人| 黄色片G G G| 凹凸久久人人| 日韩丨制服丨中文|在线| 国精精品无码一二三区水多多| 精品一二三区女同| 中日韩熟女| www.久久超碰| www.99热| 69天堂| 成人精品视频一区二区| 黄片免费视频2019| www.91欧美| 人妻中文字幕日韩电影| 玖色av| 依人大香蕉| 啊啊啊啊啊在线| 99啪啪视频| 久久久久久亚洲中文| 狠狠爱夜夜干| 亚洲无码99| 91综合在线| 日本蜜桃| 女人爽到高潮潮喷18禁网站| 亚州男人天堂| 国产大片精久久久久久| 国产精品一区二区校花| 女同性恋中文字幕| 国产乱码久久| 老熟女乱伦一区| 97超级色碰碰| 久久草草欧美精品| 乱操乱伦AV| 九9热伊人| 97色色婷婷| 色哟哟 日韩精品| 美女干逼2| 超碰人妻在线| 亚欧毛片基地国产毛片基地| 精品视频久久区| 三级三级三级日本99| 色婷婷六月丁香七月婷婷| 乱码人妻一区二区三区| 激情久久久| 欧美日韩电影成人在线| 亚洲天堂一区二区| 97在线国产精品| 欧美精品99久久久**| 九九九精品美女| 久久久穴999| 热九九精品| 最新av中文字幕高清| 人人妻人人色一区二区三区| 67914在线精品观看| 欧美视频一区二区在线| 亚洲不卡三级手机播放| 欧美成人国产精品| 91蜜臀在线久久久久| 岛国视频免费在线观看| 丁香七月婷婷| 亚洲九九视频| 99国产精品免费| 天天干天天爽| 精品人妻一区| 久久精品国产亚洲AV清纯| 青青草原成人| 操操操操操操| 免费看毛片操穴| 插欧洲美女欧美精品| 99e久久国产精品| 国产精品农村妇女| 欧美青青草视频| 打av高清| 婷婷久草一区二区三区| 日本熟妇人妻中出视频| 免费成人在线观看91| 97网色| 亚洲交换| 98超碰日本| 日日夜夜国产综合| 九九热免费国产视频婷婷伊人五月| 亚洲午夜福利在线影院| 久久亚州精品成人Av无| 激情文学88| 亚洲色图A| 亚洲偷91色| 精品人妻一区春色| 区一在线观看| 色女女女导航| 亚洲色图91欧美日韩| 91久久久久久| 亚洲一区中文字幕一区| 乱伦Av网| www.黄色在线| 欧美性爱第一区| 一级人妻性爱视频| 色综合加勒比| 91久久久久久久久18| 久久啊啊| 在线看污网站| 大香蕉一人| 蜜桃午夜视频一区二区| 人澡逼| 中文子幕一二三| 欧美青青草视频| Aa东京男人的天堂| 国产久久久久影院老熟女| 在线天堂999| 婷婷丁香九月| 欧美黄色手机在线观看| 男人综合网| 午夜美女诱惑电源网| 亚洲好色人妻| 亚洲激情深爱文学小说网站| 久久美国毛片| 秋霞鲁丝午夜无码一区二区三| 蜜桃视频一区二区三区| 亚av顶级裸体一区二区三区四区五区| 丰满搜索结果 -第18页- 久久高清无码| 人妻天天爽夜夜爽爽| 青娱乐 成人娱乐在线| 亚洲中文制服诱惑| 99999久久久久9国产精品| 伊人成人情色综合| 日韩78m视频| 日韩97视频| 中文字幕日韩情色| 天天干人人乐| av激情亚洲五月天| 国内精品久久人妻性色av| 亚洲色系另类精品国产| 男人a天堂手机在线版| 成人国产精品三级A片| 亚洲h片在线免费观看| 熟妇人妻精品一区二区| 丰满翘臀美女影院视频| av资源在线播放天堂| 操碰97| 色一射色一射| 在线97在线| 青青草久草AV| 麻豆熟妇乱妇熟色A片在线看| 色与欲影视| 成人av毛片在线观看| 奇米狠999| 伊人久久婷婷| www.操| 偷拍五区| 亚洲资源站| 嫩草美女久久| 嫖老熟女A片一二三区| 亚州精人品大香蕉| 人妻社区男人天堂| 亚洲se电影| 热99这里有精品综合久久| 九九视频黄色片| 美女黄频a美女大全免费皮| 9 9精品一区二区三区| 97日视频| 中国一级操逼视频|