亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
人人九九精| 日韩亚洲国产视频| 大乔未久88一区| 免费人成?大片在线播放| 麻豆色约约| 久久精品人体AV| 国产精品一区二区亚洲人成毛片| 99精品丰满人妻无码| 91chinese在线| 欧美探花网| 大香蕉中文网| 少妇色综合| 欧美熟爽综合| 国产精选三级在线观看| 久久久久亚洲三级电影| 亚洲人妻精品一区二区| 91熟女少妇| 精品人妻二区三区| 综合久久久久久久综合网| 好爽视频在线观看| 校园春色家庭伦理欧美激情| 9久久美女首页| 欧美三级不卡| 99热精品免费| 天天天天天干夜夜夜夜夜操| 一级@啪啪视频| 中文字幕久久婷婷丁香五月天| 大但人体久久久久| 欧美色91| 欧美精品系列| 啊嗯嗯啊好大好爽| 黑人精品久久97| 男人下部插入女人下部| 亚洲天堂久久| 秋霞无码av鲁丝片一区| 欧美亚洲第一页| 欧美狠狠| 天天干人人看综合| 日韩精品一区二区人人人| 青青伊人加勒比海| 超碰在线第一页| 91电影色诱| 狠狠 91| 天天摸,夜夜摸| 99久久婷婷国产综合精品草原| 97免费视频在线观看| 国内毛片四区| 97精| 伊人九九九| 床戏久久久av一区二区麻豆| 日韩超碰97| 欧美性91| 欧亚日韩中文在线| 男人在线天堂| 成人免费看吃奶视频网站| 亚洲巨爆乳一区二区三区四季网| 啊啊啊啊啊好多水| 国产精品视频麻豆入口| 成人七区| 国产欧美一区激情交| 國產尤物AV尤物在線觀看| 热99这里有精品综合久久| 国产精品9999| 午夜精品久久一区二区| 无码国产Av| 色黄色美女大长腿午夜视频| 性站| 西西美女视频网| 2000亚洲男人天堂| 久久人妻一区二区三区高清| 综合91网| 搡老女人老91妇女熟女| 天天综合青苹果| 天天伊人| 欧美午夜一区二区三区| 亚洲日本成人动漫| 欧美情色男人的天堂| 午夜福利在线合集| 亚州性9| 亚洲欧美日韩免费电影| 2024人人操人人摸| 色爱综合网欧美| 天天干一区二区| 色九九九九| 五月天亚洲网| 国产兽交视频在线播放| 新久久AV| 亚洲精品 大香蕉| 玖玖爱一区在线| 91精品91久久久久77777| 国产精品人妻免费精品| 欧美综合自拍成人自拍第二十页| 91/欧美| 东京热AV男人的天堂| 懂色aV一区二区天美传媒| 三级特黄60分钟播放| 乱伦熟女区| 亚洲熟妇乱女区二区三区| 偷拍综合亚洲| 久久久久亚洲熟妇熟女| 一级啊性爱在线视频| 韩国久久97| 男人的天堂在线| 加勒比综合网| 综合一区中亚洲国产成人综合精品| 欧美美女自慰一区二区三区| 欧美在线亚洲| 乱色视频中文字幕| 黑人精品久久97| 色妺妺AⅤ| 日本肏逼视频在线观看| 欧美亚洲高清不卡| 东北丰满熟女国产一区| 亚洲精品 超碰| 欧美啪啪天堂| 中国少妇XXXX做受| 日韩熟女精品无码专区一区二区| 偷拍导航视频网站| 国产伦乱91| 久久九精品| 色姑娘综合网| 天天精品| 欧美与日韩97| 亚州免费啪啪视频| 东京热av男人的天堂| 丰满人妻一区二区三区四区| 国产一区二区三区中文字幕| 天久久久噜噜噜久久国产精品爽爽| 高跟丝袜AV专区国产| 欧美综合第一| 欧美成熟性爱精品| 91久久久久久久久久久| 天美传媒AV在线| 日本精品成人无码| 96超碰网| 91一区二区| 九九九国产精品| 啪啪AV导航| 中文一区二区婷婷视频| 操逼日批| 农村少妇久久久久久久| 色综合色综合网| 欧洲站一级二级三级h| 国产理论视频在线播放| 亚91网| 国产成人+综合亚洲+天堂| 熟妇女伦乱视频视频| 国产AV毛片| 99热伊人| 激情小说图片亚洲首页| 2000亚洲男人天堂| 另类一区| 色欲Av人妻精品一区二| 日日AV加勒比| 亚洲啪AⅤ永久无码| 亚洲综合小视频小说在线观看| 午夜性生活av免费在线看| 青青青青草av在线观看| 九九综合九九综合| 欧美亚洲激情一二三| 国产男人又猛又粗又爽| 东北老熟女| 欧美1727免费观看视频| 色97干| 91视频观看网站| 中文字幕三四五区| 欧美白嫩女HD| 18禁无码永久免费无限制| 色男人色天堂东京热| 99热这里| 粉嫩粉嫩一区性色AV片| 97亚洲中文| 69综合网| 蜜桃成人1区2区3区| 强被迫伦姧在线观看无码网站| 美女AV一区二区| 99精品久久久久久久婷婷蜜桃| 久久精品一区二区三区蜜桃臀| 久操网视频| 大屁股熟女一区二区三区| 久久人妻视频| 性在久久久久久| 九九热AV| 九热久| 日日A∨| 色色五月天婷婷| 強姦亂倫a| 亚洲激情在线| 日韩一卡二卡三卡| 国产97色在线 | 亚洲| 国产九九久久久精品| 一区操逼日比视频| 伊人网免费视频| 日韩综合第八区国产精品| 亚洲成人一二三区| 免费观看的av| 伊人五月天| 国产一区二区三三视频| 色欲av一区二区三区蜜芽| 国产一区二区二区按摩精品啪视频| 天综合网欧美| 91美女视频在线免费观看| 少妇毛片久久| 亚洲 中文 女同| 99这里有精品| 精品视频久久久久九九九九9999| 99碰碰| 91精品大奶人妻| 亚洲97| 日本视频在线中文字幕| 99久久久无码精品国产人| 黑人综合网| 亚洲性天堂| 综合少妇网| 亚洲精品黑丝| 18精品一二区| 欧美亚洲今日在线| 久久久草草精品| 校园春色 亚洲| 青草伊人久久| 91大香蕉伊人| 97鸡把在线视频| 另类老少妇| 久久久久无码一妻区| 91天射| 91久久堂| 中文日韩欧美熟| 无码精品啪啪啪一区二区三区三州| 伊人青青草久久| 国模不卡一本二本三电影| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 蜜臀视频网站| 9精品久久| 久久99深爱久久99精品| 嗯嗯嗯嗯啊啊啊好紧好大| 75大香蕉| 日本三级网页| 日韩一级片在线看| 日本久操视频| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产内射爽爽大片| 久久久亚洲高清不打码| 强奸乱亚洲| 久久性爱视频| 夜草欧美| 自拍啪啪视频| 91爱网| 久久久亚洲熟妇熟女| 丰满美女一级毛片在线播放| 亚洲欧洲综合成人av一区| 97在线精品观看视频| 国产又色又爽又舒服的三级视频| 精品国产乱码久久久久A| 神马精品视频| 欧美日韩人妻少妇 一区二区三区| 亚洲91综合| 99re黄| 日韩精品一区二区高清| hd成人一区二区在线| 丁香五月影院| 亚洲日韩欧美一区二区| 日欧美色| 蜜臀久久99精品久久久久久成人小说| 亚洲熟女性高潮久久久| 九九热在线精品视频| 佐山爱中文字幕| 精品中文一区二区| 狠狠操,使劲操| 干婷婷综合网| 一区久久久二区| 白嫩91在线亚洲| 亚洲 暴爽 AV人人爽日日碰| 99视频只有精品| 亚洲一区二区 麻豆传媒| 欧美96在线|欧| 91在线精品一区二区三区| 啪一啪免费视频| 亚洲国产综合久久天堂| 成人情色综合网| 国产精品婬乱一级毛片彝族| www.高清无码诱惑一区.com | 欧美疯狂做爰xxxx| 一区二区三区日韩欧美| 天天干嫩逼网| 亚洲色综合| 国产精品久久久九九九| 亚洲欧美一区二区网址| 色综合久久久久| 97国产伦理| 中国AAAAAA黄色片| 久久久久久久久久久六六| 99国产精品自在自在| 99婷婷一区二区| 亚洲少妇色| 日韩不卡码| 欧美综合色,www| 国产精品3| 天天色黄色影院天天操| 人妻密肉在线观看| 亚洲āv网址在线观看| 亚洲第一综合| 人妻精品一区二区| 久久精品小视频| 亚洲另类色综合网站| 美女一区二区国产精品| 亚洲精品 欧美精品| 波多野42部无码喷潮在线观看 | 新怡红院| 日本天天色| 精品视频一区二区| 天天插天天插| 岛国免费视频在线| 好看的久久不射无码影视影院| 久久国产在线一区二区| 亚洲色9| 飘花国产午夜精品不卡| 中文日韩欧美熟| 国产午夜无码片在线观看影视| 丝袜美女诱惑 91 视频| 久久国产在线一区二区| 久久久久久久久久久久九| 免费一级黄色录像影片| 综合大香蕉美。| 日韩性爱播放| 蜜臀AV午夜精品久| 亚洲97P| 国产精品久久99日日| 国产 热久久久久国产精品| 男人的天堂三级| 性一交一乱一交A片久久四色| 国产农村妇女毛片精品久久| 男人的天堂2010| 国产精品爆乳懂色蜜乳| 久色99999| 六月婷婷综合| 欧美人人曰人人操人人射射| 另类av综合久久| 九九在线精品| 大屁股人妻女教师撅着屁股| 啊啊啊啊啊舒服| 丁香六月综合激情| 午夜超爽| 欧美性爱超碰97| 中日无幕一二三四区| 26UUU欧美激情一区二区| 亚洲做性| 丰满精品人妻少妇久久字幕| 99在线精品观看99| 被男人添B超爽视频| 97操碰| 亚洲色图a| 黄网色一区二区三区四区精品| juliaann丝袜| 91黑丝露脚| 欧亚乱色熟女一区二区| 91丨国产丨白浆秘 洗澡动漫| 天美欧美国产| 碰碰在线视频| 欧美黄片视频在线观看免费 | 在线观看精品国产免费| 2017av无码免费无线播| 五月丁香大香蕉| 在线观看高清AV| 日1区2区3区2020| 91最新综合| 久操操| 欧亚性爱在线视频| 四虎国产精品永久入口| 九九九九九精品视频| 精品无码人妻一区二区免费蜜桃| 亚洲欧美九九九| 欧美美女自慰一区二区三区| 日本在线激情一区二区三区| 99久久久无码精品国产人| 麻豆成人影音在线| 久久日韩肥臀| 久久国产精品视频| 中文字幕一区二区三区四五区| 国产亚卅97| 欧美另类自拍 | 91xingse| 日本 欧美 亚中文字幕| 色色色色综合网| 岛国大片在线观看网站入口| 日韩综合无码一区久久92| 国产免费小视频| 成人一级二级| 少妇久久久免费| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲欧洲另类| 91久热| 狼人久草| 日本久久99| 97干在线视频| 欧美性天天影视| 日本久久久久久久久| 人妻天堂综合网| 26uuu国产| 黑丝少妇| 久久免费老司机精品| 色综合天天| 欧美操逼一二三区| 人人色人人射人人妻| 亚洲欧美天堂在线| 超碰碰激情97+久| 国产精品天干天干综合网麻豆| 欧美无圣光在线| 91久久18禁| 91激情综合| 天堂精品| 国产乱子伦一区二区三区在线观看| 亚洲无992tv| 人人操人人舒服| 欧亚性爱在线视频| 国产精品熟女丝袜一区二区| 欧美在线干| 亚洲……91| 91 丝袜在线| 国产深喉| 日韩一级久久毛片| 奇米狠999| 丁香五月社区| 乱久久久| 国产精品欧美在线观看| 久久这里只精品免费福利| 久久美女国产| 大香交伊人网| 美女毛片999| 91精品久久久久| 亚洲 欧美 精品专区 极品| 亚洲第一狼人丝袜美女另类| 丁香六月啪啪| 嗯嗯啊好大| 精品国产乱码久久久| 亚洲成a人v欧美综合天堂下载| 91av一区二区在线观看| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 双插在线| 亚洲成人ab| 中日韩一区二区三区欧美| 欧美日本国产日韩激情视频| 大香蕉综合| 亚洲丝袜二区在线| 欧美A片中文字幕| 亚洲超碰在线| 91欧美性| 欧美精品成人一区二区在线观看 | 午夜精品久久久99| 欧洲一区二区| 久久这里是精品| 激情深爱五月天| 九九九久久久久| 中文 人妻 制服| 夜间福利片1000无码| 日本不卡三级网在线播放| 乱色老一区二区三区的观看方式| 91免费看一区二区三区| 9999免费精彩视频| 激情四射五月天| 欧美精品三级黄片| 大鸡巴久久久| 人妻丝袜日本| 日韩欧美女优电影| 欧美成97爱| 久久精品亚洲成a人天堂| 97精品视频免费| 久久久久夜夜夜夜| 色色操| 亚洲精品天天影视综合网 | 熟妇一区,二区,三区。| av在线免费一区二区| 九九九九九九九九九九九免费国产| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 精国久久一区二区三区98| 视频国产成人精品日本亚洲18 | 久久久久久九九九| 射 色综合| 中文字幕视频二区| 五月婷婷综合网| 老熟女阿 国产91| 欧美一级做a爰片免费视频| 亚洲欧美天| 搡老熟女老女人老熟妇免费视频| 欧美综合色综合| 在线观看AV片| 伊人嫩草| 五月天婷婷激情| 日韩精品-原创伙伴| 国内91熟女人妻丝袜天天精品视频在线 | 99热在线播放| 亚洲男人天堂2017| 91neishe| 男女啪啪网站免费视频| 色超碰综合| 美女午夜福利免费视频| 精品一区二区2| 五月婷婷爱六月丁香色| 2017天天插| 天天干2区3区| 美女被啪到深处抽搐视频| 日日橹狠狠爱欧美超碰| 强奸乱伦大香蕉| 天天综合站| 一区在线观看中文字幕| 男人天堂网站| 97频视在线| 岛国网址国产 | 久久九九综合| 无码精品久久久久久亚洲| 色狠人在线99| 日韩欧美字幕亚洲一区二区| 欧美写真视频一区| 天天日天天射天天干| 黄页网站免费高清在线观看| AV女资源| 爱干爱射网啊啊啊| 国产一区二区啪啪视频| 97超碰超碰| 91 国产丝袜在线播放-百度| 又大又黄国产| 人妻aa| 99re免费| 日本久久久精品电影| 国产一区96在线| 久操凹凸视频| 在线视频亚洲无码| 日本一卡二区在线| 91国产大片| 熟女被操视频网址| 青青免费在线视频一区| 97超碰公开| AV天堂男人的天堂| 日日夜夜天天| 五月丁香拍拍激情综合三级| 女人天堂av在线播放| 任我爽在线视频免费观看| 天天欧美色| 国产乱伦性爱AV| 福利操逼| 在线中文字幕| 色婷婷一区二区三区久久| 日韩中文9| 自拍丝袜美腿人妻| 五月丁香六月婷| 无码最新| 成人26uuu| 欧美亚洲激情| 夜夜躁狠狠躁日日躁av| 久欲AV| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 干B| 亚洲国产一区二区三区在线 | www被窝色com| 国产丝袜视频| 99久久久久| 日本高清一区二区在线| 三级色综合| 亚洲色天| 美欧色综合| 91日产欧美| 天天综合影院91| 天天综合~91入口| 婷婷大香蕉| 2018色综合天天操| 日本三级日本三级99| 九色在线熟女国产黑人| 日本免费中文字幕在线| 国产视频一区二区三区在线免费观看 | 91亚洲网站| 亚洲天在线| 久久超碰、| 天天干人妻| 亚洲熟久久| 亚洲熟女乱色一区二区三区久久久| 精品国产污一区二区三区| 精品久一区免费| 久久欧美1卡2卡3| 97色涩| 狠狠2050在线观看| 97se综合| 色吊丝 日日骚 清纯唯美| 亚洲色婷婷综合久久久久中文| 亚州欧美另类| 亚洲啪啪视频免费| 无码操逼网| 免费中文在线| 色综合久久88色综合久久天天| 国产一区二区欧美日本| 国产网站在线播放| 激情综合网五月婷婷五月天| 亚洲精品亚洲人成人网| 亚洲综合网电影91| 欧美 综合| 精品免费成人久久| 99re免费| 国产人妖视频一区在线观看| www.色婷婷色综合| 97干色天堂| 综合网亚洲1| 国产400孕妇孕交群| 中文字幕人妻资源在线| 国模不卡| 花野真衣| 天天影视之亚洲综合网| 久久亚洲中文字幕视频| 1769一区二区| 嗯嗯嗯嗯啊啊啊好紧好大| 欧亚日韩三区| 99超碰碰| 亚洲综合中文字幕有码 | 欧美天堂亚洲电影院一区在线播放| 热久久无毒不卡| 九九九九精品| 啪一啪免费视频| 日本欧美中文字幕| 91小视频| 欧美午夜色妇色鬼| 欧美成人精品一区二区男人蜜臀| 高清孕妇孕交| 国产三级在线现体验区| 九九热免费视频| 青青伊人久久| 国产1024在线播放| 亚欧高清v| 插老姨肥穴| 人妻另类| 97欧美性爱| 天天看综合网| 久啪视频| 色久桃花影院在线观看| 制服乱伦| 亚州色图片在线色| 欧美高清无码免费视频高清版| 在线精品福利免费播放| 丝袜喷水在线| 日韩啪啪视频| 桃色五月天| 啊啊啊啊啊啊啊啊啊在线观看| 97干在线| 亚洲欧洲综合视频在线| 日韩人妻网站| 60秒不遮不挡| 五月婷久久| 日韩精品国模| 密乳AV免费观看| 蜜臀精品1区2区| 国产精品久久久久久久久久久久久久吹 | 精品国产网站| 神马麻豆福利院| 欧洲精品网| 日本天天色| 麻豆国产精品午夜视频| 欧美性爱一区二区三区四区 | 欧美在线l亚洲| 久久久久久精品免费看A级| 亚洲诱惑天堂 | 四虎视频在线观看| 色综合潮| 欧美 亚洲 偷拍自拍| 男女啪啪啪18禁网站| 蜜桃色院一区久久 | 久久精品99| 激情综合二| 国产又粗又大硬免费色网视频| 91欧美丝袜| 超碰国产情侣自拍网| 亚洲熟妇图片| 国产吞精a级片激情电影| 精品国产无码中文| 国产女同视频在线播放| 91午夜无码| 久久国产乱子伦精品免费女人| 国产在线观看一区二区三区| 精品久久久久久中文| 久久东京热成人| 久久日韩肥臀| 欧美在线天堂| 欧美另类丝袜熟女| …亚洲黄色厕厕女女在线播…| 亚洲一区二区av| 91女色| 亚州色国| 少妇蹲下买菜露大唇0| 天天看特黄的免费网站| 久久这里精品国产99丫e6| 99天天超碰| 久久人人爽av亚洲精品天堂桃色 | 操曰本熟女| 操东北女人| 国产婷婷综合在线观看| 亚洲限制级在线| 激情婷婷丁香| 性夜影院爽黄A爽免费动漫| 操B视频日韩无码| 人妻丰满熟妇一区二区三| 天天激情干| 99这里有精品视频| 亚欧美色图| 久久最新免费视频23| 青青操少妇| 欧美成97爱| 黄片在线免费在线观看| 亚洲欧洲综合视频在线| 精品人妻视频一区二区三区蜜桃视频| 伦理弟一页| 97在线视频网站| 在线有码中文字幕| 欧美日韩高潮喷水91| 欧美手机在线综合| 大香蕉一区二区在线观看.| 人夜夜精品网站香蕉嫩草| 亚洲少妇激情一区二区三区| 国产理论视频在线播放| 国产AV人人 夜夜人人澡| 亚洲资源一区| 综合激情五月天| 亚洲图片偷拍欧美| 亚洲欧洲综合成人av一区| 婷婷激情啪啪| 久久黄人人爽视频| 九九热精品视频在线观看| 97色欧洲| 99在线精品视频| 熟女露脸激情自拍视频| 日韩av在线免费网站| 91人妻做a观看视频| 九七毛片九九毛片 | 精品视频在线观看| 97久精品| 97超碰人人模人人拍人人| 久草成人福利导航| 无遮挡又黄又刺激的视频| 极品极品色影院| 色综合大香蕉| 欧亚不卡| 欧美做爰无码A片视频| 亚洲毛片基地专区| 97 国产一区| 日韩亚洲中文字幕在线| 日韩精品人妻中文字幕不卡乱码| 色播五月婷婷| 中文字幕日韩人妻视频一区二区三区 | 久久精品91| 天天天天干| 综合免费无码中文| 日韩在线观看三级电影| 免费网色网站| 天美麻花大全视频| 日韩无码视频黄色| 91成人久久 | 国产AV久久久蜜爱影集| 中文字幕天堂在线| 超碰97亚洲| 成人草草视频| 天天射天天色成人| 亚州日韩97| 啊啊啊啊二区好大| 欧美色婷婷| 福利在线黄片| 无套内射人妻在线播放| 国产在线能看的你懂的| 日韩性爱长视频免费| 青女偷拍网| 91成人亚洲色图| 九九九九九九九九九五码| 91色噜噜狠狠| 有码人妻系列| 视频在线观看一二三区| 天天爱天天操| 亚洲欧美成人在线| 综合色99| 极品色www影院| AV无码久久久精品| 激情综合二| 久久男女激情视频网站| 日本一区视频在线观看| 女人天堂AV五区在线| 视频一区二区免费在线| 欧中美三级一区二区三区| 精品国产一区二区三区久久久蜜臀| 中出91| 在线综合 亚洲 欧美中文字幕 | 殴洲老熟女| 天天影视综合色| 亚洲色图伊人网| 330dv亚洲成年视频网| 日本久久久久久久久| 国产少妇内射| 免费在线看黄片av| 91av一区二区在线观看| 天天弄天天操| 久久人人看| 99精品久久| 亚洲av无码成人精品国产| 3D污黄视频在线观看| 久久伊人大香蕉| 中文字幕乱碼在线| 国产久9| 亚欧美无遮挡| 麻豆久久精品亚洲精品88| 很很操在线| 精品一啪| 啊啊啊 在线| 久九九九九九九九热| 91n处女在线观看| 蜜臀AV午夜精品久| 大学生美女口爆| 亚洲欧综合另类无码一区| 亚洲精品视频在线播放| 欧美日韩理论一区| 欧美中字不卡| 91久久| 久久婷婷色| 日本顶级天天操狠狠操夜夜操中文字幕| 蜜桃臀久久| 伊人久操| 91美女在线看| 成人怡红院| 成人性爱全视频观看| 色眯眯射| 岛国1区2区3区在线观看| 任你草| 天天射天天色成人| 国产激情在线| 欧美在线|亚洲| 欧美麻豆成人同性GⅤ在线| 日韩精品9999| 日韩乱中文| 蜜桃臀一区二区aV| 丁香六月综合激情| 天天做天天爱| 天天爽夜夜欢视| a v网站在线播放| 噜噜噜亚洲精| 美女91AV| 人妻一区久久二区三区色播| 国内偷自视频区视频综合| 欧美乱妇狂野欧美在线视频| 天天干天天狼在线视频| 五月天日日操夜夜操| 国产aⅴ无码片毛片一级网站| 大香蕉青青9| 亚洲色啪| 翔田千里一区二区三区奶水| 二三四区精品| 色婷婷影视| 久久国产AⅤ| 日本布卡一区二三区| 国产AV人人 夜夜人人澡| 五月综合婷婷久久网站| 欧美日韩插逼视频| 大香蕉线| 情色五月天就去干| 97超碰色屌| 五月天婷婷久久| 亚洲情色中文字幕一区| 免费AV中文网在线观看| 日本亚欧爱爱| 亚洲揄拍网| 亚洲城人男人的天堂| 久久精品亚洲成a人天堂| 亚洲无码超碰免费| 性色AV蜜色av色欲av| 97天天| 亚洲女人91| 清纯唯美综合| 精品十八在线观看| 人人澡人人澡人人| 蜜桃臀 后入 一区 二区 三区 在线| 亚洲av影院在线观看| 欧美福利视频啊啊啊啊| 国产精品色| aⅴ日韩成人电影av在线免费看av大全| 躁躁日曰躁2020| 综合网欧| 死我十八禁| 国产91美女视频| 青娱乐休闲视频在线观看| 国产精品乱码久久久久| 人人干黄色| www..com操老师| 一本一道波多野毛片中文在线| 欧美日韩黄片精品在线| 欧美一区二区男人天堂| 加勒比在线观看一区二区| 黄色区免费观看中文字幕| 玖玖在线视频| 国产大片精久久久久久| 69人妻精品丰满熟女区| 亚洲麻豆18发?| 91在线国产后入风骚翘臀美女素人| 亚洲欧美激情小说| 思思久热在线精品66| 亚洲欧美日韩二区视频| 丁香五月av| 九色 蝌蚪 熟女自| 国产精品久久久久久亚洲色欲| 成人a级高清视频在线观看| 亚洲一区中文字幕一区| 黄色高清无码无码破解免费暗网| 欧美少妇熟女| 老熟女综合网| 岛国黄色大片网站| 精品亚州18| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 五月丁香黄色网| 干日本人少妇午夜寂寞影院| 插插综合网天天影视网| 亚州综合色| 亚洲各类熟们中文字幕| 熟女网站最新| 激情天天视频| 欧美少妇第一页| 久操操AV电影| 97超碰色屌| 天天综合97| 女优视频第10页| 欧美少妇色图| 久久婷婷精品| 中文字幕AV中出| 综合网色| 美女干逼2| 欧美日韩操逼动图| 视频在线97| 色久综合| 欧美 日韩 亚洲 春色| 97精品第3页| 国产成人精品无码久久| 成人黄页| 久/久精品99看9| 欧美97爱| 欧美在线55555| 人人操人人色人人摸| 日韩欧美偷拍美女视频| 国产精品一级特黄aaa大片在线观看| 国产午夜福利视频在线| 日本一区二区三区四区免费观看| 性色avv| 日韩精品在线观看观看| 素人伊尹大香蕉免费下载视频| 亚洲欧洲另类| 免费?级毛片无码?∨蜜芽试看| 亚州再线| 色欲天天综合网| 欧美综合骚| 欧美精品成人一区二区在线观看| 欧美在线视频播放| 日韩精品第3页| 超碰碰碰碰| 色噜噜精品一区二区三| 九九九九免费| 99热在线只有精品| 日韩中文字幕2020| 美女超碰978| 久久香蕉综合一本到3atv| 亚洲无992tv| 加勒比少妇AV婷婷六月天超碰超碰| 艹我哪美一区无码| 人人摸人人叼| 97亚洲精品超碰| 自拍第一页| 少妇精品久久久八区九区| 亚洲乱色视频一区、二区在线| 精品超碰国产| 黄色一级视| 操逼操逼逼操操逼91 | 精品久久久久瑟瑟| 天堂av2019| 亚洲性爱高潮影院| 丝袜六区| 另类图片五月| 欧美三级一级| 亚洲色欲一区二区三区| 久久视网78| 白丝jkav| 久久久久久久久久精| 亚洲色图自拍| 久9综合在线| 成人资源中文字幕在线观看| 亚洲91综合| 人妻91少妇| 91色交| 超碰97资源大奶| 免费伦费视频在线观看| 精品国产久热在线观看| 国产精品秘 福利姬在线观看| 色婷婷99| 色色色五月婷婷| 欧美性暴力猛交XXXX| 亚拍在线| 亚洲性天堂| 亚洲黑人在线| 日韩欧美国产一区二区三区四区| 91在线精品| 亚洲天堂性爱| 久久久久久波多野吉衣高潮| 偷拍综合亚洲| 亚洲九九九| 亚洲精品日日夜夜52| 亚洲天堂日本| a片自拍直播视频| 国产精品久久成人免费| 久久综合日韩亚洲欧美| 少妇熟女视频一二三区| 日韩熟女无码| 午夜免费视频1000| 秋霞鲁丝午夜无码一区二区三| 东京热不卡视频| 92性色国产午夜福利在线661 | 欧美亚洲涩涩| 日本综合色图| AAA久久| 久久是精品| 欧美性爱1080p| 亚洲情色在线| 日韩簧片免费看| 日本三级人妻a人妻一在线| 国产欧美黑人丰满在线| 日本成人免费一区二区三区| 熟女人妻久久中文字幕一二区| 成人青青草原伊人| 五月丁香啪| 亚洲97超碰| 日本成人电影资源网| 精品国产乱码久久久久久日本公司| 特级特黄一级毛片免费| 日韩中文字幕av在线播放| 久久日韩精品一区二区| 日本不卡高清免v欧美日韩在线观看| 青青草原伊人网| 女人的久久久| 精品亚洲黄色片 国产精品导航一区二区 | 五月婷婷综合激情| 亚洲情色综合| 搞中出视频在线观看| xxxx网站亚洲精品| 欧美少妇高潮视频| 91狠婷| 亚洲欧美洲综合| 久久婷婷五月天| 亚洲h片在线免费观看| 玖色av| 亚洲欧美爆| 国产精品亚洲免费| 国产三级资源在线观看| 天欧美在线| 嗯……啊…嗯嗯…啊…好舒服| 亚洲日韩精品在线播放| n1038 一二三区| 日韩视频啪啪| 视频国产成人精品日本亚洲18| 99蜜桃臀久久久欧美精品网站| 久久成人国产精品| 久色99999| 东京热一区二区三区四区五区六区| yaouchengrenav| 另类欧美综合| 超碰9 7女人 | 黑人性暴力毛片| 麻豆AV一区二区| 六十路日本| 国产av激情无码久久天堂| 亚洲性少妇| 黄色成品网站| 亚洲色天堂日韩中| 六月丁香五月婷婷| 这里都是精品在线观看| 丁香色狠狠色综合久久小说| 精品久久九| 暖暖精品二区三区观看| 大香蕉综合网| 综合国产影视三级| 大香蕉综合网| 日韩免费簧片| 免费观看性欧美一级| 色在线综合| 天天操天天射天天日| 国产精品亚洲天堂网址| 久久这里只有精品9| 久久久久久九九九九九| 91女优在线观看| 欧美成97爱| 五月丁香激情四射| 青青免费在线视频一区| 手机在线中文字幕国产| 久久久久久亚洲中文| 韩国成人精品久久久免费看| 国产三区免费在线观看| 天堂中文资源在线bt| 免费一级欧美片片线观看| 97超级久久强资源| 性色乱AV一区二区| 我要色综合网站| 在线视频免费播放一区| http://qxhbdz.com| 中文一区二区| 亚洲一区二区三区中文字幕| 久久婷婷一区二| 久久久久九九九九九| 国产又色又粗又黄又爽| 美女露胸露奶头| 亚洲中文字幕久久无码精品| 亚洲,日韩,欧美,成人播放 | 夜夜嗷嗷一区二区| 超碰成人人人爽人人爽| 亚洲丝袜二区| 91欧美亚洲| 五月天色色色| 日韩图色| 欧美日韩m| 一起草高清无码| 五月色丁香| 97伊人网| 蜜桃久久久久久| 国产久久久久久| 91在线免费观看处女| 在线亚洲 欧美 日本专区| 大香蕉在线86| 亚洲第一精品在线视频| 啊啊啊啊啊啊啊网址在线观看| 国产视频不卡在线观看| 大香蕉2017| 夜夜爽77777| 日韩色欲久久一二三四区| 亚洲第一页综合在线| 国产 三级自拍| 欧亚日韩中文在线| 1二区9| 偷窥自拍A片| 久久精品一区二区| 日韩视频小说在线观看| 五月天大香蕉| 男啪女色黄无遮挡免费观看| 国产超碰国产97| 三级日本一区二区三区| 婷婷色香| 97干在线视频| 91视频伊人| 久9无限国产| 97爱b| 国产精品熟女AV中文字幕在线播放| 无码日韩人妻av一| 日韩强奸av| 久欲AV| 学生妹天天看| 国产亚洲欧洲在线观看| 屌逼麻豆| 盗摄女人妻在线| 色在线视频导航| 久操精品| 欧亚日韩中文在线| 操人妻逼91| 亚洲天堂女优在线| 国产夜夜艹| 久久久久无码| 一区久久久二区| 亚洲精品819| 泰国AV在线观看| 中文字幕一区二区三区蜜臀|