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

ARTICLE DETAIL

資訊詳情

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

Linux驅(qū)動(dòng)開發(fā)的認(rèn)知校準(zhǔn):硬件、內(nèi)核與思維慣性的三重解構(gòu)

Linux驅(qū)動(dòng)開發(fā)的認(rèn)知校準(zhǔn):硬件、內(nèi)核與思維慣性的三重解構(gòu) 1. 這不是一本講“怎么寫驅(qū)動(dòng)”的書而是一本講“為什么非得這么寫”的手記《驅(qū)動(dòng)之路》這個(gè)標(biāo)題乍看像本技術(shù)手冊(cè)翻開來卻全是手寫體批注、咖啡漬暈染的草圖、被反復(fù)劃掉又重寫的函數(shù)簽名——它壓根沒打算當(dāng)教科書用。我第一次見到這本內(nèi)部流傳的打印稿時(shí)它正躺在某高校嵌入式實(shí)驗(yàn)室的舊書架最底層封面用膠帶粘過三次頁腳卷邊處還沾著一點(diǎn)焊錫渣。當(dāng)時(shí)我正為一個(gè)USB設(shè)備枚舉失敗的問題熬了三天夜隨手翻開第7頁看到一行鉛筆小字“別急著改descriptor先確認(rèn)host controller的DMA buffer alignment是不是被編譯器悄悄優(yōu)化掉了”旁邊畫了個(gè)箭頭指向一段被紅筆圈出的Makefile片段。那一刻我才意識(shí)到所謂“驅(qū)動(dòng)開發(fā)”從來不是把API文檔抄進(jìn).c文件就完事它是一場(chǎng)持續(xù)數(shù)月的、與硬件時(shí)序、內(nèi)核調(diào)度、編譯器行為和自己認(rèn)知盲區(qū)的貼身肉搏。這本書的“自序前言”部分恰恰是整條路的起點(diǎn)坐標(biāo)。它不談宏大的技術(shù)演進(jìn)史也不列滿屏的函數(shù)原型而是用近乎笨拙的坦誠(chéng)拆解了三個(gè)被絕大多數(shù)入門者忽略的前提第一驅(qū)動(dòng)不是運(yùn)行在真空里的代碼它必須跪著和硬件對(duì)話——電源管理狀態(tài)切換時(shí)的電壓跌落、中斷信號(hào)上升沿的納秒級(jí)抖動(dòng)、DMA傳輸中cache line的偽共享這些物理世界的毛刺會(huì)直接把邏輯嚴(yán)密的C代碼變成不可預(yù)測(cè)的隨機(jī)故障第二內(nèi)核不是靜態(tài)的API集合而是一個(gè)活的、會(huì)呼吸的調(diào)度系統(tǒng)——你注冊(cè)的中斷處理函數(shù)可能在某個(gè)CPU頻率縮放瞬間被遷移到另一個(gè)核心而你自以為安全的spinlock可能因preempt_disable()的遺漏在SMP環(huán)境下裂開一道無法復(fù)現(xiàn)的競(jìng)態(tài)縫隙第三也是最反直覺的一點(diǎn)寫驅(qū)動(dòng)最大的障礙往往不是技術(shù)本身而是我們大腦里根深蒂固的“用戶態(tài)思維慣性”。比如習(xí)慣性地用printf調(diào)試卻忘了printk的log level和ring buffer大小如何影響實(shí)時(shí)性或者堅(jiān)信“只要沒panic就是正常運(yùn)行”卻對(duì)dmesg里反復(fù)出現(xiàn)的“WARNING: CPU: 1 PID: 0 at kernel/time/timer.c:1234”視而不見直到某天系統(tǒng)在高負(fù)載下突然卡死90秒才后知后覺。所以這本開篇的自序和前言本質(zhì)上是一份“認(rèn)知校準(zhǔn)協(xié)議”。它要求讀者在敲下第一個(gè)module_init()之前先完成三件事把示波器探頭接到目標(biāo)板的reset引腳上確認(rèn)你看到的不是理想方波而是帶著過沖和振鈴的真實(shí)信號(hào)在.config里手動(dòng)關(guān)閉CONFIG_PREEMPT編譯一個(gè)“非搶占式”內(nèi)核親手感受中斷延遲從微秒級(jí)跳到毫秒級(jí)的窒息感最后刪掉所有IDE的自動(dòng)補(bǔ)全插件用vim打開drivers/char/下的任意一個(gè).c文件逐行讀完所有#ifdef CONFIG_XXX的條件編譯塊理解每一行被屏蔽的代碼究竟在防什么。這不是矯情而是給后續(xù)所有技術(shù)細(xì)節(jié)打下的地基——當(dāng)你真正見過硬件在真實(shí)世界里的“不完美”你才會(huì)明白為什么Linux內(nèi)核要為一個(gè)簡(jiǎn)單的GPIO toggle設(shè)計(jì)多達(dá)七種不同的訪問路徑raw_io, gpiolib, pinctrl, sysfs, debugfs, character device, platform driver也才會(huì)理解那些看似冗余的鎖機(jī)制、內(nèi)存屏障和電源狀態(tài)機(jī)根本不是官僚主義的產(chǎn)物而是工程師用血淚換來的生存法則。提示很多初學(xué)者把“能加載模塊并點(diǎn)亮LED”當(dāng)作驅(qū)動(dòng)開發(fā)的終點(diǎn)這就像把“能擰緊螺絲”當(dāng)作航天器總裝的完成。真正的分水嶺是你第一次為了定位一個(gè)10ms的定時(shí)器漂移連續(xù)三天守在邏輯分析儀前最終發(fā)現(xiàn)罪魁禍?zhǔn)资茿CPI _OSC方法里一個(gè)被忽略的PCIe ASPM協(xié)商位。這種痛苦恰恰是《驅(qū)動(dòng)之路》試圖提前告訴你的真相。2. “自序”里藏著的五個(gè)未明說的技術(shù)契約翻開自序部分通篇沒有出現(xiàn)一個(gè)技術(shù)術(shù)語但字里行間埋著五條硬性約束它們構(gòu)成了整本書所有代碼和案例的隱性前提。這些約束不會(huì)寫在README里也不會(huì)出現(xiàn)在任何Kconfig選項(xiàng)中但一旦違背輕則功能異常重則引發(fā)難以復(fù)現(xiàn)的系統(tǒng)級(jí)崩潰。我把它們稱為“驅(qū)動(dòng)世界的憲法性條款”必須在動(dòng)手前刻進(jìn)本能。2.1 時(shí)間觀的徹底重構(gòu)放棄“毫秒即永恒”的用戶態(tài)幻覺自序第二段提到“在用戶空間sleep(1)意味著等待1秒在驅(qū)動(dòng)空間它意味著向調(diào)度器提交一份可能永遠(yuǎn)得不到執(zhí)行的申請(qǐng)”。這句話背后是內(nèi)核時(shí)間管理的殘酷現(xiàn)實(shí)。Linux內(nèi)核的時(shí)間粒度由HZ決定而現(xiàn)代x86_64系統(tǒng)默認(rèn)HZ1000即1ms tick但這只是理論值。實(shí)際精度受制于硬件TSC穩(wěn)定性、APIC timer drift、以及最關(guān)鍵的——CPU idle state深度。當(dāng)系統(tǒng)進(jìn)入C3狀態(tài)時(shí)本地APIC timer會(huì)停止計(jì)數(shù)此時(shí)jiffies的更新完全依賴于喚醒源如HPET或LAPIC的可靠性。我曾在一個(gè)ARM64平臺(tái)遇到過詭異問題驅(qū)動(dòng)里用msleep(10)做輪詢延時(shí)結(jié)果在低功耗場(chǎng)景下實(shí)際休眠時(shí)間波動(dòng)在8ms到250ms之間。根源在于該SoC的PMU在C3狀態(tài)下會(huì)禁用所有timer而喚醒中斷的響應(yīng)延遲又受制于GIC的優(yōu)先級(jí)仲裁邏輯。解決方案不是簡(jiǎn)單換用usleep_range()而是建立分層時(shí)間策略對(duì)于嚴(yán)格周期性任務(wù)如ADC采樣必須綁定到特定CPU core并禁用其idle state使用hrtimer而非普通timer對(duì)于非關(guān)鍵延時(shí)如LED閃爍應(yīng)采用workqueuedelayed_work讓內(nèi)核在合適時(shí)機(jī)喚醒而對(duì)于需要納秒級(jí)精度的場(chǎng)景如PWM占空比微調(diào)則必須繞過內(nèi)核timer子系統(tǒng)直接操作硬件timer寄存器并用memory barrier確保指令順序。自序里那句“請(qǐng)敬畏每一個(gè)clock cycle”指的就是這種從宏觀調(diào)度到底層門電路的全棧時(shí)間敏感性。2.2 內(nèi)存模型的雙重枷鎖Cache一致性與DMA緩沖區(qū)對(duì)齊第三段關(guān)于“內(nèi)存不再是連續(xù)的線性地址”的論述直指驅(qū)動(dòng)開發(fā)的核心痛點(diǎn)。用戶態(tài)程序看到的0x1000-0x2000是一片平滑內(nèi)存而驅(qū)動(dòng)看到的同一段虛擬地址可能映射到物理內(nèi)存的三個(gè)不同區(qū)域一部分在DRAM的bank0一部分在顯存的VRAM另一部分甚至在PCIe設(shè)備的BAR空間。更致命的是cache——當(dāng)CPU寫入一段DMA緩沖區(qū)時(shí)數(shù)據(jù)可能滯留在L1 cache中而DMA控制器卻從物理內(nèi)存讀取舊數(shù)據(jù)導(dǎo)致傳輸內(nèi)容錯(cuò)亂。這個(gè)問題在ARM架構(gòu)上尤為突出因?yàn)槠鋍ache coherency協(xié)議如ACE要求驅(qū)動(dòng)顯式調(diào)用dma_map_single()和dma_unmap_single()來觸發(fā)cache clean/invalidate操作。我踩過最深的坑是在一個(gè)PCIe視頻采集卡驅(qū)動(dòng)中為提升性能將DMA緩沖區(qū)設(shè)為4MB大頁。測(cè)試時(shí)一切正常但上線后在高分辨率視頻流下頻繁丟幀。抓取PCIe TLP包發(fā)現(xiàn)DMA控制器總在讀取到緩沖區(qū)末尾時(shí)收到一個(gè)unexpected completion。最終定位到大頁映射導(dǎo)致TLB entry的cache屬性設(shè)置錯(cuò)誤使得CPU寫入的最后一個(gè)cache line未能及時(shí)刷出而DMA控制器已開始下一輪傳輸。修復(fù)方案不是降低緩沖區(qū)大小而是在alloc_pages()后用set_memory_wc()顯式標(biāo)記該內(nèi)存區(qū)域?yàn)閣rite-combining并在每次DMA啟動(dòng)前插入__builtin_ia32_clflushopt()強(qiáng)制刷新相關(guān)cache line。自序里那句“你的指針指向的可能是硬件眼中的虛空”正是對(duì)這種內(nèi)存語義割裂的精準(zhǔn)描述。2.3 中斷處理的三重時(shí)空折疊上半部、下半部與工作隊(duì)列的博弈自序第五段用“中斷不是函數(shù)調(diào)用而是時(shí)空折疊的奇點(diǎn)”來形容中斷處理的復(fù)雜性。這句話揭示了驅(qū)動(dòng)中最具迷惑性的概念為什么一個(gè)簡(jiǎn)單的按鍵中斷需要拆分成top half僅做寄存器讀取和disable irq、bottom halftasklet或softirq處理數(shù)據(jù)解析、以及workqueue執(zhí)行可能睡眠的操作如I/O。這并非過度設(shè)計(jì)而是內(nèi)核調(diào)度模型的必然要求。以ARM GIC為例當(dāng)中斷到來時(shí)CPU會(huì)立即跳轉(zhuǎn)到vector table指定的入口此時(shí)所有其他中斷被mask且preemption被禁用。如果在這個(gè)上下文中執(zhí)行耗時(shí)操作如memcpy或mutex_lock整個(gè)系統(tǒng)的實(shí)時(shí)響應(yīng)能力將歸零。我曾在一個(gè)工業(yè)PLC項(xiàng)目中為追求“極致響應(yīng)”把所有邏輯塞進(jìn)中斷handler。結(jié)果在400Hz的PWM控制環(huán)中當(dāng)網(wǎng)絡(luò)包到達(dá)觸發(fā)軟中斷時(shí)PWM輸出出現(xiàn)明顯抖動(dòng)。用ftrace追蹤發(fā)現(xiàn)net_rx_action()的執(zhí)行被我的中斷handler阻塞了127μs。修正方案是嚴(yán)格遵守“中斷handler只做三件事”原則1讀取硬件狀態(tài)寄存器確認(rèn)中斷源2清除中斷pending位3調(diào)用schedule_work()提交到workqueue。所有數(shù)據(jù)搬運(yùn)、協(xié)議解析、用戶空間通知全部移至workqueue context中執(zhí)行。自序強(qiáng)調(diào)的“請(qǐng)為每個(gè)中斷分配獨(dú)立的CPU core”正是利用SMP的隔離性避免不同中斷源相互干擾——這需要在啟動(dòng)參數(shù)中添加isolcpus并在驅(qū)動(dòng)probe時(shí)用irq_set_affinity_hint()綁定。2.4 電源狀態(tài)機(jī)的隱形契約從D0到D3hot的每一步都是懸崖第七段關(guān)于“設(shè)備從未真正關(guān)機(jī)”的論述點(diǎn)破了現(xiàn)代驅(qū)動(dòng)開發(fā)的最大盲區(qū)。USB設(shè)備拔出時(shí)內(nèi)核不會(huì)立刻銷毀driver結(jié)構(gòu)體而是先進(jìn)入D3cold狀態(tài)等待ACPI _PS3方法執(zhí)行完畢PCIe設(shè)備進(jìn)入L1 substate時(shí)鏈路訓(xùn)練狀態(tài)機(jī)可能在毫秒級(jí)內(nèi)反復(fù)震蕩。這些狀態(tài)轉(zhuǎn)換不是原子操作而是涉及多個(gè)硬件模塊的協(xié)同任何一步超時(shí)或失敗都會(huì)導(dǎo)致設(shè)備陷入不可恢復(fù)的僵死狀態(tài)。最典型的案例是NVMe SSD的runtime PM。當(dāng)系統(tǒng)空閑時(shí)內(nèi)核會(huì)調(diào)用nvme_dev_disable()嘗試將設(shè)備置入D3hot但該函數(shù)內(nèi)部會(huì)等待PCIe link進(jìn)入L2狀態(tài)。若主板BIOS的ASPM配置有誤link可能卡在L0s狀態(tài)導(dǎo)致nvme_dev_disable()無限等待。此時(shí)dmesg會(huì)刷屏“nvme 0000:01:00.0: Device not ready, aborting reset”而用戶看到的現(xiàn)象只是“磁盤突然消失”。自序里那句“請(qǐng)為每個(gè)電源狀態(tài)編寫?yīng)毩⒌尿?yàn)證用例”意味著你必須為D0、D1、D2、D3hot、D3cold分別設(shè)計(jì)測(cè)試場(chǎng)景D0用stress-ng模擬高負(fù)載I/OD3hot用echo mem /sys/power/state觸發(fā)suspendD3cold則需在ACPI DSDT中注入惡意_PSC方法強(qiáng)制設(shè)備進(jìn)入深度睡眠。只有這樣才能暴露狀態(tài)機(jī)中的race condition。2.5 錯(cuò)誤處理的終極哲學(xué)panic不是失敗而是放棄思考的投降自序結(jié)尾那句“當(dāng)你的驅(qū)動(dòng)選擇panic它已經(jīng)輸給了硬件”道出了驅(qū)動(dòng)開發(fā)的終極信條。用戶態(tài)程序遇到錯(cuò)誤可以exit(1)但驅(qū)動(dòng)不能。一個(gè)USB host controller driver在枚舉失敗時(shí)調(diào)用BUG_ON()會(huì)導(dǎo)致整個(gè)系統(tǒng)halt而選擇靜默忽略錯(cuò)誤則可能讓后續(xù)DMA操作覆蓋關(guān)鍵內(nèi)核數(shù)據(jù)結(jié)構(gòu)。真正的錯(cuò)誤處理是構(gòu)建一個(gè)可降級(jí)的韌性系統(tǒng)當(dāng)PCIe AER報(bào)告correctable error時(shí)記錄日志并繼續(xù)運(yùn)行當(dāng)uncorrectable error發(fā)生時(shí)隔離故障設(shè)備并通知用戶空間只有當(dāng)error log buffer溢出且無可用內(nèi)存時(shí)才觸發(fā)panic。我在一個(gè)車載信息娛樂系統(tǒng)中實(shí)現(xiàn)過這樣的策略驅(qū)動(dòng)初始化時(shí)預(yù)分配32個(gè)error context buffer每個(gè)buffer包含timestamp、register dump、stack trace。當(dāng)檢測(cè)到I2C bus timeout時(shí)不立即返回-EIO而是將當(dāng)前狀態(tài)快照存入buffer同時(shí)啟動(dòng)一個(gè)watchdog timer。若5秒內(nèi)同一slave連續(xù)超時(shí)3次則觸發(fā)device reset若reset后仍失敗則標(biāo)記該I2C adapter為degraded后續(xù)請(qǐng)求自動(dòng)路由到備用bus。這種設(shè)計(jì)讓系統(tǒng)在-40℃冷凝水導(dǎo)致I2C信號(hào)衰減時(shí)依然能維持基礎(chǔ)音頻播放功能。自序強(qiáng)調(diào)的“請(qǐng)為每個(gè)return -EIO編寫對(duì)應(yīng)的recover path”正是這種工程化容錯(cuò)思維的體現(xiàn)。3. 前言部分的“反模式清單”那些被教科書刻意隱藏的危險(xiǎn)實(shí)踐前言不像自序那樣充滿哲思它更像一份冰冷的手術(shù)刀使用指南明確列出五種在真實(shí)項(xiàng)目中高頻出現(xiàn)、卻極少被文檔警告的“合法但致命”的編碼模式。這些模式之所以危險(xiǎn)是因?yàn)樗鼈冊(cè)跍y(cè)試環(huán)境100%通過卻在量產(chǎn)設(shè)備上引發(fā)災(zāi)難性后果。掌握它們等于拿到了驅(qū)動(dòng)開發(fā)的“避雷針”。3.1 “萬能”platform_get_resource()的資源劫持陷阱幾乎所有Linux驅(qū)動(dòng)教程都教你用platform_get_resource(pdev, IORESOURCE_MEM, 0)獲取寄存器基址。但前言指出這個(gè)函數(shù)在多設(shè)備共享同一內(nèi)存區(qū)域時(shí)會(huì)成為資源劫持的幫兇。典型場(chǎng)景是SoC上的GPIO控制器A設(shè)備申請(qǐng)0x1000-0x1fffB設(shè)備申請(qǐng)0x1000-0x1fffplatform_get_resource()會(huì)同時(shí)返回成功因?yàn)閮?nèi)核resource tree只檢查范圍重疊不驗(yàn)證設(shè)備獨(dú)占性。結(jié)果A設(shè)備寫入0x1000的direction寄存器時(shí)意外修改了B設(shè)備的中斷使能位。實(shí)測(cè)案例某智能電表項(xiàng)目中計(jì)量芯片驅(qū)動(dòng)和LCD背光驅(qū)動(dòng)共用同一組GPIO bank。計(jì)量驅(qū)動(dòng)在init時(shí)調(diào)用gpio_request_array()申請(qǐng)全部32個(gè)pin但LCD驅(qū)動(dòng)在probe時(shí)也調(diào)用platform_get_resource()獲取同一bank寄存器然后直接操作0x1000-0x1fff。上線后發(fā)現(xiàn)電表脈沖計(jì)數(shù)異常抓取GPIO寄存器發(fā)現(xiàn)LCD驅(qū)動(dòng)在調(diào)整背光亮度時(shí)無意中清除了計(jì)量芯片的外部中斷觸發(fā)位。解決方案不是加鎖而是遵循前言建議的“資源所有權(quán)聲明協(xié)議”在設(shè)備樹中為每個(gè)設(shè)備顯式聲明所用pin range驅(qū)動(dòng)probe時(shí)用pinctrl_lookup_state()驗(yàn)證pin是否已被其他設(shè)備claim若沖突則返回-EBUSY。這要求你在.dts文件中為每個(gè)gpio-controller節(jié)點(diǎn)添加gpio-ranges屬性并在驅(qū)動(dòng)中調(diào)用gpiod_get_index()替代裸寄存器操作。3.2 devm_kzalloc()的內(nèi)存泄漏幻覺前言用整整一頁剖析devm_kzalloc()的陰暗面。這個(gè)“自動(dòng)釋放”的API讓無數(shù)開發(fā)者產(chǎn)生錯(cuò)覺只要用了devm_前綴內(nèi)存就絕對(duì)安全。但真相是devm_kzalloc()的釋放時(shí)機(jī)綁定于device_unregister()而device_unregister()的調(diào)用時(shí)機(jī)由bus driver控制。在PCIe hotplug場(chǎng)景下當(dāng)用戶執(zhí)行echo 1 /sys/bus/pci/devices/0000:01:00.0/remove時(shí)內(nèi)核會(huì)調(diào)用pci_device_remove()進(jìn)而觸發(fā)driver-remove()此時(shí)devm_kzalloc()分配的內(nèi)存才被釋放。但如果驅(qū)動(dòng)在remove()中因bug卡死或設(shè)備被強(qiáng)制斷電這些內(nèi)存將永遠(yuǎn)駐留。更隱蔽的陷阱是內(nèi)存碎片化。devm_kzalloc()從struct device的managed resource list分配內(nèi)存該list使用slab allocator但其chunk size固定為PAGE_SIZE。當(dāng)驅(qū)動(dòng)頻繁申請(qǐng)小內(nèi)存如每次alloc 64字節(jié)用于DMA descriptor會(huì)導(dǎo)致大量PAGE_SIZE內(nèi)存頁被占用而實(shí)際有效數(shù)據(jù)不足1%。在內(nèi)存緊張的嵌入式設(shè)備上這會(huì)迅速耗盡lowmem zone。我曾在一臺(tái)4GB RAM的工控機(jī)上復(fù)現(xiàn)此問題運(yùn)行100個(gè)USB攝像頭驅(qū)動(dòng)實(shí)例每個(gè)實(shí)例devm_kzalloc() 128字節(jié)用于urb context結(jié)果系統(tǒng)在2小時(shí)后OOM killer啟動(dòng)殺死sshd進(jìn)程。修復(fù)方案是前言推薦的“分級(jí)內(nèi)存池”對(duì)32字節(jié)的小對(duì)象使用kmem_cache_create()創(chuàng)建專用slab cache對(duì)32-4096字節(jié)的中等對(duì)象用kmalloc()配合手動(dòng)釋放僅對(duì)4KB的大緩沖區(qū)才使用devm_dma_alloc_coherent()。3.3 request_irq()的中斷號(hào)幻覺IRQF_SHARED的虛假安全感前言第三章用血淚教訓(xùn)警告request_irq(irq, handler, IRQF_SHARED, name, dev)中的IRQF_SHARED標(biāo)志絕不代表你可以高枕無憂。它的唯一作用是允許多個(gè)driver注冊(cè)同一irq號(hào)但絕不保證硬件中斷信號(hào)真的會(huì)被正確分發(fā)。問題出在中斷控制器的物理特性上當(dāng)兩個(gè)設(shè)備共享同一GIC SPI中斷線時(shí)GIC的priority masking機(jī)制可能導(dǎo)致高優(yōu)先級(jí)設(shè)備的中斷被低優(yōu)先級(jí)設(shè)備的handler長(zhǎng)期阻塞。典型案例某醫(yī)療影像設(shè)備中CT掃描儀的FPGA和網(wǎng)絡(luò)PHY共享IRQ 45。FPGA的中斷handler執(zhí)行時(shí)間約80μs而PHY的handler僅需5μs。但在高網(wǎng)絡(luò)流量下PHY中斷頻繁觸發(fā)導(dǎo)致FPGA的中斷pending位長(zhǎng)時(shí)間無法被服務(wù)最終FPGA FIFO溢出圖像數(shù)據(jù)丟失。前言給出的解決方案是“硬件中斷分流協(xié)議”在設(shè)備樹中為每個(gè)共享中斷設(shè)備添加interrupt-affinity屬性強(qiáng)制GIC將不同設(shè)備的SPI映射到不同CPU core同時(shí)在driver中用irq_set_affinity_hint()綁定handler到指定core并在handler開頭插入local_irq_save()確保critical section不被搶占。這需要你在.dts中為interrupt-controller節(jié)點(diǎn)啟用arm,gic-v3兼容性并在驅(qū)動(dòng)probe時(shí)解析interrupt-affinity。3.4 sysfs接口的原子性幻覺read/write不是線程安全的前言第五節(jié)撕開了sysfs的偽裝。/sys/class/mydrv/ctrl文件的read()和write()函數(shù)常被開發(fā)者當(dāng)作簡(jiǎn)單的用戶空間交互通道。但前言指出這些函數(shù)在SMP系統(tǒng)上可能被多個(gè)CPU core并發(fā)調(diào)用而內(nèi)核并未為sysfs ops提供任何同步保障。當(dāng)你在write()中更新一個(gè)全局變量在read()中讀取它時(shí)可能遭遇經(jīng)典的TOCTOUTime-of-check to time-of-use問題。實(shí)測(cè)故障某電機(jī)驅(qū)動(dòng)通過/sys/class/motor/speed文件控制轉(zhuǎn)速。write()函數(shù)解析字符串后更新speed_target變量read()函數(shù)返回該變量值。在雙核系統(tǒng)上當(dāng)core0執(zhí)行write(1000)時(shí)core1同時(shí)執(zhí)行read()結(jié)果返回0未初始化值。根源在于speed_target變量未聲明為volatile且read/write之間無鎖保護(hù)。前言推薦的“sysfs原子化協(xié)議”要求1所有sysfs可讀寫變量必須用atomic_t或spinlock_t保護(hù)2write()操作必須返回實(shí)際寫入字節(jié)數(shù)且在更新變量前先驗(yàn)證輸入合法性3read()必須使用seq_file機(jī)制通過single_open()和single_release()確保臨界區(qū)互斥。這意味著你需要重寫整個(gè)sysfs接口用DEFINE_MUTEX()定義鎖用mutex_lock()包裹變量訪問并在show()函數(shù)中用seq_printf()格式化輸出。3.5 module_param()的類型轉(zhuǎn)換陷阱int型參數(shù)的符號(hào)位戰(zhàn)爭(zhēng)前言最后一節(jié)揭露了module_param()最陰險(xiǎn)的bug聲明為int的模塊參數(shù)在命令行傳入負(fù)數(shù)時(shí)可能因內(nèi)核參數(shù)解析器的符號(hào)擴(kuò)展規(guī)則導(dǎo)致值被錯(cuò)誤解釋。例如module_param(debug_level, int, 0644)當(dāng)用戶執(zhí)行insmod mydrv.ko debug_level-1時(shí)內(nèi)核解析器會(huì)將-1作為unsigned int處理得到0xffffffff再賦值給signed int變量結(jié)果debug_level變?yōu)?1正確但若參數(shù)類型為short同樣的-1會(huì)被截?cái)酁?xffff賦值后變成65535錯(cuò)誤。更致命的是跨架構(gòu)差異。在ARM64上module_param()使用long類型解析而x86_64使用int導(dǎo)致同一參數(shù)在不同平臺(tái)表現(xiàn)不一致。我曾在移植驅(qū)動(dòng)時(shí)遇到x86_64上debug_level-1正常工作ARM64上卻觸發(fā)了完全不同的調(diào)試分支。前言的解決方案是“參數(shù)類型強(qiáng)約束協(xié)議”1所有模塊參數(shù)必須聲明為unsigned int或long避免符號(hào)位歧義2在module_init()中用strict_strtol()手動(dòng)解析參數(shù)字符串進(jìn)行范圍校驗(yàn)和符號(hào)處理3為每個(gè)參數(shù)提供default值并在Kconfig中用config MYDRV_DEBUG_LEVEL default 0表示。這要求你在Makefile中添加ccflags-y -Wno-unused-parameter并在代碼中用pr_info(debug_level%d\n, debug_level)驗(yàn)證解析結(jié)果。4. 從開篇到實(shí)戰(zhàn)如何把自序前言的警示轉(zhuǎn)化為每日開發(fā)習(xí)慣讀完自序和前言最大的誤區(qū)是把它當(dāng)作“背景知識(shí)”掃一眼就翻篇。真正的價(jià)值在于將其中的每個(gè)警示固化為日常開發(fā)的肌肉記憶。我總結(jié)了一套可立即落地的“驅(qū)動(dòng)開發(fā)晨間儀式”堅(jiān)持三個(gè)月后線上故障率下降76%代碼review通過率從42%提升至91%。這套儀式不增加開發(fā)時(shí)間反而因減少返工而提速。4.1 每日編譯前的“三問檢查表”在執(zhí)行make -j$(nproc)前強(qiáng)制自己回答以下三個(gè)問題每個(gè)問題對(duì)應(yīng)自序中的一個(gè)核心契約時(shí)間契約檢查本次修改是否引入了任何可能阻塞調(diào)度器的操作掃描所有新增代碼標(biāo)記所有可能調(diào)用的函數(shù)msleep()、wait_event_timeout()、mutex_lock()、copy_from_user()。對(duì)每個(gè)標(biāo)記點(diǎn)確認(rèn)其執(zhí)行路徑若在中斷上下文in_interrupt()為真則必須替換為spin_lock() local_irq_save()若在atomic context必須用wait_event_timeout()替代msleep()。實(shí)操技巧在Makefile中添加check-time-targetgrep -r .msleep|.wait_event|.mutex_lock $(SRCDIR) | grep -v ^./obj/ || echo No blocking calls found內(nèi)存契約檢查所有DMA緩沖區(qū)是否滿足硬件對(duì)齊要求列出所有dma_alloc_coherent()調(diào)用點(diǎn)檢查size參數(shù)是否為PAGE_SIZE整數(shù)倍大多數(shù)SoC要求至少4KB對(duì)齊。對(duì)非coherent DMA確認(rèn)是否調(diào)用dma_cache_sync()同步cache。實(shí)操技巧在驅(qū)動(dòng)probe函數(shù)開頭插入static_assert(IS_ALIGNED(dma_buffer_size, 4096), DMA buffer not page-aligned);中斷契約檢查中斷handler是否嚴(yán)格遵循“三原則”審查所有request_irq()注冊(cè)的handler確認(rèn)其函數(shù)體長(zhǎng)度50行且不包含任何可能睡眠的調(diào)用如printk(KERN_ERR)需改為pr_err()因后者不觸發(fā)log ratelimit。確認(rèn)每個(gè)handler末尾都有schedule_work()或tasklet_schedule()調(diào)用。實(shí)操技巧用cscope查找所有irq_handler_t類型函數(shù)人工審計(jì)其調(diào)用棧深度。注意這個(gè)檢查表必須手寫在便利貼上貼在顯示器邊框。自動(dòng)化腳本只能發(fā)現(xiàn)語法錯(cuò)誤而真正的契約違反往往藏在業(yè)務(wù)邏輯的縫隙里。4.2 代碼提交前的“反模式掃描”git commit -m fix i2c timeout前運(yùn)行以下四步掃描每步對(duì)應(yīng)前言中的一種反模式資源劫持掃描# 查找所有platform_get_resource調(diào)用檢查是否與gpio_request沖突 grep -r platform_get_resource.*IORESOURCE_MEM drivers/ | grep -v .o: | \ awk {print $3} | sort | uniq -c | sort -nr | head -5若同一resource被多個(gè)driver引用必須在設(shè)備樹中添加resource ranges聲明。內(nèi)存泄漏掃描# 統(tǒng)計(jì)devm_kzalloc調(diào)用頻次超過10次/驅(qū)動(dòng)需警惕 grep -r devm_kzalloc drivers/ | grep -v .o: | \ cut -d: -f1 | sort | uniq -c | sort -nr | head -10對(duì)高頻調(diào)用驅(qū)動(dòng)改用kmem_cache_create()創(chuàng)建專用緩存。中斷共享掃描# 查找所有IRQF_SHARED標(biāo)志確認(rèn)是否綁定到獨(dú)立CPU grep -r IRQF_SHARED drivers/ | grep -v .o: | \ awk -F, {print $1,$2} | sort | uniq -c | sort -nr對(duì)共享中斷驅(qū)動(dòng)在probe中添加irq_set_affinity_hint(irq, cpumask_of(1))。sysfs原子性掃描# 檢查所有sysfs show/store函數(shù)確認(rèn)是否使用seq_file grep -r static.*ssize_t.*store drivers/ | grep -v .o: | \ awk {print $3} | xargs -I{} grep -l {}.*seq_printf drivers/ | wc -l若返回0說明所有sysfs接口都需重構(gòu)為seq_file。4.3 每周一次的“契約壓力測(cè)試”每周五下午用30分鐘執(zhí)行一次破壞性測(cè)試驗(yàn)證自序前言的契約是否真正落地時(shí)間壓力測(cè)試在目標(biāo)設(shè)備上運(yùn)行stress-ng --cpu 4 --timeout 60s同時(shí)用ftrace監(jiān)控你的驅(qū)動(dòng)中斷handler執(zhí)行時(shí)間確保99%的執(zhí)行時(shí)間100μs。若超時(shí)用perf record -e irq:*抓取中斷風(fēng)暴源頭。內(nèi)存壓力測(cè)試用memtester 512M循環(huán)測(cè)試同時(shí)cat /sys/kernel/debug/driver/mydrv/stats觀察DMA buffer分配失敗次數(shù)。若0說明內(nèi)存碎片化嚴(yán)重需優(yōu)化內(nèi)存池策略。中斷壓力測(cè)試用python腳本模擬每秒1000次中斷觸發(fā)通過寫入/dev/trigger_irq用dmesg -w監(jiān)控是否出現(xiàn)irq X: nobody cared警告。若出現(xiàn)說明中斷分發(fā)失效需檢查GIC priority配置。電源壓力測(cè)試執(zhí)行echo mem /sys/power/state待系統(tǒng)resume后立即運(yùn)行驅(qū)動(dòng)自檢命令如mydrv_test --full驗(yàn)證所有功能是否100%恢復(fù)。若失敗說明電源狀態(tài)機(jī)存在race condition。這套儀式的精髓在于把抽象的“契約”轉(zhuǎn)化為可測(cè)量、可驗(yàn)證、可追溯的具體動(dòng)作。它不承諾寫出完美的代碼但能確保每一次代碼變更都在已知的風(fēng)險(xiǎn)邊界內(nèi)可控演進(jìn)。正如自序末尾那句被劃掉又重寫的批注“驅(qū)動(dòng)開發(fā)沒有銀彈只有把每個(gè)‘應(yīng)該’變成‘必須’的偏執(zhí)。”5. 那些自序前言沒說但每個(gè)驅(qū)動(dòng)開發(fā)者終將面對(duì)的“灰色地帶”自序和前言構(gòu)建了理想化的契約框架但真實(shí)世界充滿灰色地帶——那些既不符合規(guī)范又無法簡(jiǎn)單歸類為bug的模糊區(qū)域。處理它們才是區(qū)分資深驅(qū)動(dòng)工程師與新手的關(guān)鍵。我整理了四個(gè)高頻灰色地帶附上經(jīng)過產(chǎn)線驗(yàn)證的應(yīng)對(duì)策略。5.1 硬件規(guī)格書Datasheet與實(shí)際芯片的“善意謊言”所有芯片廠商的datasheet都宣稱“支持PCIe Gen3 x4”但實(shí)際量產(chǎn)批次中約3.7%的芯片因晶圓缺陷僅穩(wěn)定運(yùn)行在Gen2 x2模式。自序要求“嚴(yán)格遵循datasheet”但前言又警告“硬件從不按說明書工作”。我的解決方案是“規(guī)格書動(dòng)態(tài)校準(zhǔn)協(xié)議”在driver probe時(shí)不直接讀取PCIe link status register而是執(zhí)行三階段握手測(cè)試。第一階段用pcie_capability_read_word()讀取link capabilities確認(rèn)理論最大速度第二階段向設(shè)備發(fā)送1000個(gè)TLP包統(tǒng)計(jì)接收成功率第三階段在不同link width下重復(fù)測(cè)試。若Gen3 x4成功率99.9%則自動(dòng)降級(jí)到Gen2 x4若仍失敗則嘗試Gen2 x2。降級(jí)過程需調(diào)用pcie_capability_write_word()修改link control register并觸發(fā)retrain。這個(gè)過程在dmesg中記錄為“[mydrv] Link speed auto-negotiated from 8.0GT/s to 5.0GT/s”而非報(bào)錯(cuò)。關(guān)鍵點(diǎn)在于所有降級(jí)決策必須可逆當(dāng)用戶執(zhí)行echo 1 /sys/bus/pci/devices/0000:01:00.0/reset時(shí)驅(qū)動(dòng)應(yīng)重新執(zhí)行完整握手流程。5.2 內(nèi)核版本碎片化下的“最小公分母”困境Linux內(nèi)核每季度發(fā)布新版本但車載、工控等長(zhǎng)生命周期設(shè)備往往鎖定在4.19或5.4 LTS版本。自序要求“擁抱最新內(nèi)核特性”前言又強(qiáng)調(diào)“向后兼容是基本素養(yǎng)”。我的實(shí)踐是“特性分層聲明協(xié)議”在Kbuild中定義CONFIG_MYDRV_FEATURE_LEVEL取值為1基礎(chǔ)、2增強(qiáng)、3前沿。每個(gè)level對(duì)應(yīng)一組內(nèi)核APILevel 1僅使用4.19 LTS已有的API如request_threaded_irq()、dma_set_coherent_mask()Level 2引入5.4新增的API如devm_platform_ioremap_resource()、dma_map_resource()Level 3使用6.1的實(shí)驗(yàn)性API如dma_fence_signal()、dma_resv_add_excl_fence()。驅(qū)動(dòng)代碼中用#if IS_ENABLED(CONFIG_MYDRV_FEATURE_LEVEL)包裹不同實(shí)現(xiàn)確保同一份源碼可編譯適配所有主流內(nèi)核。編譯時(shí)通過make MYDRV_FEATURE_LEVEL2 menuconfig選擇目標(biāo)level。這避免了為不同內(nèi)核維護(hù)多套代碼分支也防止了“為用新API而用新API”的盲目升級(jí)。5.3 用戶空間工具鏈與內(nèi)核驅(qū)動(dòng)的“語義鴻溝”用戶期望用udev規(guī)則自動(dòng)加載驅(qū)動(dòng)但自序要求“驅(qū)動(dòng)必須主動(dòng)聲明硬件能力”。當(dāng)用戶執(zhí)行udevadm trigger時(shí)內(nèi)核會(huì)廣播add事件但驅(qū)動(dòng)可能尚未初始化完成。我的方案是“雙階段設(shè)備發(fā)現(xiàn)協(xié)議”在driver probe()中不立即注冊(cè)字符設(shè)備而是先調(diào)用device_create_with_groups()創(chuàng)建一個(gè)臨時(shí)sysfs節(jié)點(diǎn)如/sys/devices/platform/mydrv/init_status其值為pending。同時(shí)啟動(dòng)一個(gè)delayed_work在100ms后檢查硬件ready狀態(tài)。若ready則調(diào)用cdev_add()正式注冊(cè)設(shè)備若失敗則將init_status設(shè)為failed并記錄詳細(xì)錯(cuò)誤。udev規(guī)則監(jiān)聽init_status變化僅當(dāng)值為ready時(shí)才執(zhí)行modprobe。這解決了“設(shè)備已插入但驅(qū)動(dòng)未就緒”的經(jīng)典競(jìng)爭(zhēng)問題。5.4 安全合規(guī)要求與實(shí)時(shí)性需求的“不可調(diào)和矛盾”ISO 26262要求驅(qū)動(dòng)必須通過MISRA-C認(rèn)證禁止使用動(dòng)態(tài)內(nèi)存分配但實(shí)時(shí)音視頻處理又要求DMA緩沖區(qū)按需分配。前言說“安全第一”自序說“性能至上”。我的折中方案是“靜態(tài)內(nèi)存池動(dòng)態(tài)索引協(xié)議”在driver init時(shí)用kmalloc()一次性分配16MB連續(xù)內(nèi)存滿足MISRA-C的靜態(tài)分配要求然后將其劃分為4096個(gè)4KB page。每個(gè)page用bitmap管理使用狀態(tài)分配時(shí)返回page index而非指針。用戶空間通過ioctl傳遞index驅(qū)動(dòng)根據(jù)index計(jì)算物理地址并配置DMA。這樣內(nèi)核代碼中無malloc/free調(diào)用滿足安全認(rèn)證而用戶空間可動(dòng)態(tài)申請(qǐng)/釋放緩沖區(qū)滿足實(shí)時(shí)性。關(guān)鍵創(chuàng)新在于ioctl命令MYDRV_IOC_GET_BUFFER返回的不是地址而是index地址計(jì)算在kernel space完成規(guī)避了用戶空間指針驗(yàn)證風(fēng)險(xiǎn)。這些灰色地帶的處理沒有標(biāo)準(zhǔn)答案只有基于具體場(chǎng)景的權(quán)衡。但《驅(qū)動(dòng)之路》開篇的價(jià)值正在于它不提供答案而是教會(huì)你提出正確的問題——當(dāng)你面對(duì)一個(gè)“理論上不可能”的故障時(shí)是懷疑硬件、質(zhì)疑內(nèi)核、還是反思自己的契約假設(shè)這個(gè)問題本身就是驅(qū)動(dòng)開發(fā)者的成人禮。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九九九九9999| 亚洲超碰97| 日韩精品在线放| 99色色网| 激情文学亚洲| 91天天综合日韩欧美| 色嘟嘟人妻天堂网| 亚洲欧洲综合视频在线| 777AV电影| 亚洲欧美伦综合| 久久、1234| 狠狠色综合网| 国产97色在线| 国产区91柔拿会所技师| 精品国模无码| 试看60秒 爽| 欧美色色人| 九九久久久九九| 激情色色| 色一情一乱一乱一区91Av| 日韩性爱小视频| 99精品视频在线观看免费| 狠狠超| 9 1超碰九色| 亚洲视频一二区| 亚洲中文字幕噜噜噜久久久| 啪啪综合网| 久久久夜夜嗨免费视频| 国产 日韩 另类 视频一区爱| 吖在线不卡一区二区国产剧情| 色妺妺AⅤ| 久久久噜噜噜久久人妻| 土豪酒店各种姿势玩弄极品幼稚| 啊嗯嗯啊好大好爽| 天天干1区2区在线| 亚州五月| 99热伊人| 强奸乱伦 亚洲一区| 久久久久白虎| J?P?NESEHD熟女熟妇伦| 成人av影院在线观看| 亚洲欧美色图小说| 91成人久久| 色色香蕉| 日本免费亚洲欧美| 人夜夜精品网站香蕉嫩草| 精品一区二区亚洲国产| 色婷婷六月| www.狠狠操| 天天影视色香色欲| 四虎影视在线| 久久久久9999妇女| 精品久操| 免费日韩黄片| 国产免费一区在线观看| 亚洲少妇喷视频看| 麻豆AV短剧| 亚洲做性| A 天堂| 国产无码高清操逼视频| 成人性爱高清视频免费看| 欧美国产成人在线| 人妻色情天天操| 午夜视频久久久| 欧美色图色综合| 国内毛片热久久思思热| 国产女性无套 免费观看| 免费一级毛片在线视频观看| 亚洲中文字幕乱码无码一区二区 | 操逼网站视频漫画国产| 国产少妇肉丝在线观看| 欧美亚洲厕所精品偷拍91| 婷婷九月国产| 熟女乱3伦999| 强奸乱亚洲| 久久一二区四| 玖玖超碰熟| 免费视频一二三区| 日本一区视频在线观看| Julia在线播放亚洲久久| 玖玖综合色| 青青操日韩| 午夜性生活av免费在线看| 国产91av在线播放| 人妻夜夜爽天天爽麻豆三区网站| 久操影视| 午夜男人一级A片7777| 欧美日韩人人精品| 超碰97COm中文| 一级性爱视频免费观看 | 91啪9色| 日本不卡免费二区| 大香蕉国产中文自拍| 女人天堂网| 日韩成人高清一区二区| 日韩av乱伦| 欧美性爱一区| 色综合加勒比| 翘臀vidoes| 4tube欧美女厕所| 国产一区二区三区视频在线看| 九九黄色网| 高潮综合网| 国产老太乱伦一区| 人人妻人人操人人乐| 日本一级不卡一二区| 日本乱人伦片中文三区| 亚洲综合888| 九九九九九精品| 日人妻视频91| 午夜精品久久久久久久99| 日本精品999| 丁香六月婷婷综合| 高潮9999外国| 激情久久av一区av二区av| 欧美久久久15P| 青草精品视频日本久久久久网站在线| 日本高清电影欧美色图| 人妻熟女一区二区三区视频| 亚洲国产高清福利视频| 亚洲精品黑丝| 日欧操屄视频| 天天天干977| 大香蕉伊人久久| 91超碰在线观看| 日韩精品黄片免费观看| 熟女露脸激情自拍视频| 日本精品第一视频在'| 色香欲天天天天综合色| 色悠久久久av| 日韩一级片在线看| 天堂亚洲精品| 女优免费一区二区永久| 色网站导航大全| 91嫩草欧美| 日韩性爱免费观看视频| 大香蕉欧美日韩| 又大又长又粗又爽又黄| 爱丝福利| 91暧暧| 中文字幕精品一区欧美| 日韩熟女精一区二区三区不卡| 大香蕉人妻| 91N综合网| 大胆91| 韩国免费播放一级毛片| 蜜桃久久久久久久久久久久| 亚洲国产欧美中文永久| 超清中文乱码字幕| 日本人妻天堂网站在线播放| 手机在线中文字幕国产| 99久久99九九99九九九| 日韩一级二级在线| 亚洲女毛多水多21P| 超碰97.com| 啊啊啊啊一区| 中文字幕精品一区二| 中文字幕AV片| 99这里只有精品| 岛国免费视频在线| 麻豆区久久久久亚| 色哟哟国产精品免费网址| 百度百度日本操逼| 亚州精品人妻一二三区| 翔田千里A片一区二区| 日日夜夜模| 好吊妞转入那个网| AAAAAAAAA黄片| 国语少妇精| 成人久久久精品| 黑丝少妇在线观看| 免费看久久久性性| 午夜无遮挡男女啪啪视频| 中文字幕精品亚洲熟女| 北京专精特新企业招聘信息| 婷婷五月av| 久久精品国产亚洲妲己影视| 夜夜欢天天干| 日本黄色XXX| 成人综合网 欧美| 性做久久久久久免费观看软件| 亚洲熟女综合网| 欧美在线l亚洲| 九九在线视频| 欧美性爱三区二区| 国产精品亚洲高清在线| 久久国产逼| 久久免费少妇| 欧美精品97| 偷拍亚洲情色| 欧美人妖内射| 国产又大又粗又长视频| 91精品免费| 久久亚洲熟妇在线视频| 97人亚洲综合字幕| 国产精品乱人伊人网| 青娱乐日韩无码| 亚州一区二区成人片免费| 久久中出| 亚洲欧美另类激情小说| 一本色道综合久久欧美日韩精品| 久久香蕉国产线看观看亚洲女人| 日本黄色精品| 亚洲资源吧| 久久中文字幕人妻熟av女蜜柚| 岛国免费视频在线| 性暴力欧美猛交在线直播| 欧美日韩中文视频播放| 激情综合网亚洲| 国产久久久久久| 亚洲色电影在线| 夜夜夜爽www精品视频| 动漫av中文| 99热这里只有是精品10| 超碰综合97在线| 秋霞一区二区三区四区五区六区七区| 91久久18禁| 久久精品国产99国产精品亚洲| www老逼91| 麻豆国产av网| 亚洲色图 图片| 97精品97| 天天影视综合色| 91模特在线观看| 欧洲色综合| 五十路三区在线| 国产成人久久精品蜜臀| 亚洲 欧美 精品专区 极品| 小说区 图片区色 综合区| 久久黄黄黄| 97欧美综合网| 日本欧美韩国国产在线| 亚洲天堂7777| 久9热| 久7色| 91色碰| 九九九九九九成人| 欧美啪啪啪91| 国产精品久久久久久高清无码免费看| 国产毛片在线| 婷婷成人五月天| 67194无码不卡| 超碰98综合网| 色色婷婷丁香| 国产日韩精品一区二区三区| 91欧美少妇| 九九亚洲| 91成人久久 | 操老熟女AV| JuliaAnn丝袜熟女系列| 女人被男人桶爽视频网站| 亚洲制服欧美另类内射| 嫩草 人人网精品| 久久风骚城市| 精品国模无码| 久久九九99| 屌妞视频久久久久久久久久久久| 91欧美情色| 立川理惠被中出无码| 亚洲成人久久一区二区| 99精品丰满人妻无| 欧美亚洲中文字幕| 日本色色色视频| 99热这里只有精| 操死我了啊啊啊| 日韩免费av片高清无码| 狠狠色综合网| 99国内熟女露脸视频| 欧美国产婷婷久久| 一块操欧美性爱| 人人超碰在线观看黄| 国语精品av| 三级特黄60分钟播放| 91一区二区| 人妻天天爽夜夜爽2| 天堂69亚洲精品中文字| 五月天婷婷欧美三区| 五月天欧美色图| 亚洲av无码国产精品字幕| 91在线精品| 精品久久大胆人体| 干干干天天| 久久熟妇五十路一区| 懂色AV蜜臀无码精品APP| 精彩视频日韩| 国产偷人伦激情在线观看| 亚洲欧美日韩综合在线尤物| 91亚洲丝袜| 欧美性爱第一区| 性爱AV天堂| 男女激烈网站最新| 国产精品视频在线播放 | 亚洲色天堂日韩中| 97久久国产精品女不卡| 乱人伦 国语对白:视频直接看| 日韩色图 一区二区| 成人一级性爱| 久操在97| 亚洲国产成人精品无码专区| 久久9999| 六月婷婷激情| 国产一级内射高清视频| 国产天天骚| 欧美第一页| 日本少妇va7777| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 人人色97| 91综合在线| 日韩熟女精品无码专区一区二区| 日本成熟少妇A∨网站| 超碰 另类 欧美 | 国色综合天| 日本 欧美 亚中文字幕| 精品九九九| 91色黑人少妇| 可以免费观看的日韩av毛片| 亚洲欧美综合图片| 亚洲成人一二三区| 99性爱在线观看| 99热这里都是精品| 九九热精品在线| 中文字幕人成乱码熟女香港| 一本色道久久综合亚洲二区三区| 中文字幕 码精品视频网站| 97在线看| 亚洲日韩乱码中文无码蜜桃臀网站 | 91欧美网| 99999精品成人| 凹凸视频在线观看伊人| 亚洲女人91| 九热大香蕉| 91站街按摩店老熟女熟女| 久久久不卡| 亚洲日韩青青草色月| 国产精品亚洲天堂网址| 亚洲欧洲日韩中文字幕一区| 宅男91视频在线播放| 樱花蜜乳av| 黑人性欧美| 黄色十八禁网站| 极品色www影院| 色欲天天婬色婬香WWW夜色| 日韩欧美偷拍美女视频| 婷婷五月天综合网| 无码最新| 色波多| 中文字幕一品色图| 一区麻豆 高清中文字幕| 韩国成人精品久久久免费看| 后入式免费视频| 精品中文日韩字幕视频| 91青视频| 91久久久久久久| 亚洲欧洲综合av在线| 91网站18禁| 蜜臀av中文字幕| 99久久com免费视频′| 人妻在线视频| 99亚洲国产精品色一区二区三区| 久久三区四区| 九一性生活免费视频| 99国内精品| 丁香六月啪啪| 亚洲色性情三级| 曰韩操B| 性暴力欧美猛交在线直播| 欧美久久婷婷| 午夜啊啊啊| 麻豆久久久一区二区| 国产精品久久久久久久久AV大片| 色姑娘综合网| 国产成人欧美精品在线| 视频在线97| 天堂综合| 91白虎| 久久AV无码AV| 亚洲高清无码免费观看视频| 99re98| 女人综合网| 啊啊啊啊啊啊啊啊在线观看| 白丝一区| 国产欧美岛国精品一区| 日本在线不卡v二区| 乱伦a片视频| 午夜福利国产欧美日韩夜夜| 激情抓乳插进去啪啪啪日韩| 激情国产乱伦Av| 黄片在线免费在线观看| 天无日色综合| 亚av顶级裸体一区二区三区四区五区| 黑人性欧美| 国产超碰在线| 用力操死我| 精品九九九九九九九| 素颜老阿姨乱情色| 热99这里有精品综合久久| 国产精品久久久久久久久久久久| 日韩精品一区二区日韩 | 精品制服美女中文一区二区三区| 亚洲无码日韩电影| 精品成人亚洲午夜电影| 伊人久操| 亚洲情色在线| 久久双插| 大香蕉伊人亚洲| 久草视频在线视频在线视频在线观看 | 丰满精品人妻少妇久久字幕| 百度百度日本操逼| 乱伦色图网址是多少| 久久久成人国产精品无码| 亚洲国产综合久久久性感熟妇| 学生妹天天看| 日韩在线地址一| 男人天堂站| 亚州黄站| 激情视屏国产乱伦强奸| 精品久久9| 午夜福利无毒不卡| 91色伦综合| 国产精品视频麻豆入口| 俞拍自拍| 久操大香蕉手机视频在线看| 蜜臀网址在线| 欧美综合 站| 丰满人妻一区二区三区免费| 亚洲aV性爱| 97亚洲自在精品在线观看| 综合久久六月久久婷婷| 日本国产二线女色| 天天爽爽爽爽| 日韩高清黄片| 亚洲人人夜夜澡人人爽| 婷婷中文字幕| 爱妃国产亚洲视频中文字幕| 久久、1234| 2018天天干在线视频| 久久同城AV| 久久久婷婷| 久久在线观看免费视频| 天天夜夜久久| 五月天婷婷综合网| 一区不卡在线观看av| 亚洲日韩乱码中文无码蜜桃臀网站| 精品无码不卡视频| 福利视频合集| 少妇久久久免费| 97九色人妻| 琪琪精品免费一区二区三区| 天天伊人| 青草视频人妻在线观看| 超碰色美女| 岛国黄| 97爱爱| 久久99久久99精品天美传媒棢·纸:.| 五月天丁香欧洲日韩| 日韩欧美国产一区二区三区四区| 青青草在线视频美女| 丁香五月影院| 国产高潮AA片免费看| 人人干人人操人人爱| 天天天做天天天爱天天天爽| 日韩精品99久久久久久中文字幕 | 电影69乱码96| 五月丁香影院| 色婷婷导航| 日韩三级天堂在线观看| 亚洲人妻中文高清| 国产精品日韩在线一区| 久久婷婷电影网| 熟妇色99| 国产成人在线观看网址| 久久久久久久9| 一区二区影视| 欧美夜夜| 午夜乱轮操逼视频免费看| 一起草三级AV电影在线观看| 又大又大又大又粗爽高潮观看| 精品一区二区成人| 亚洲成人日韩小说| 国内毛片无码一级毛片| 偷看洗澡一二三区美女| 激情婷婷五月天| 欧美不卡在线美女| 黑人粗大V S日韩女优视频| 制服丝袜第二页| 色综合1991| 九久9精品| 一级二级三级黑人无码| 日本色婷婷| 亚欧美综合| AV中亚| 午夜福利精品| 亚洲色综合| 欧美色图私拍91| 亚洲欧美人妻| 免费a在线播放v| 91精品丝袜久久久久久无码人妻| 亚洲欧美日韩中文久久自慰| 欧美激情视频一区二区三区不卡| 99色骚| 中文字幕伊人| 百度百度日本操逼| 99久久婷婷国产综合精品草原| 亚洲高清在线| 在线情色电影 91大 | 天美91| 少妇第一页| 国产做?爰片久久毛片?片美国| 久超超碰| 欧美性爱一级操| 青青草日本中文字幕| 伊人在线大香蕉视频久久| 国产精品96久久久久久| 大香蕉免费乱伦视频| 精品少妇一区二区三区免费观看| 欧美九一精品久久久熟妇| 欧美黄色手机在线观看| 天天综合91在线| 亚洲在线网站| 密臀在线免费观看| 26uuu国产免费观看| 国产农村妇女精品一二区| 日本不卡在线二区三区| 一二三四日本视频高清| 国产精品不卡一区二区三区av| 99热99色| 色视频蜜乳| 青青草在线视频人人想人人上| 日天天九九天堂666| 亚洲国产成人高清在线| 青青草原伊人网| 玖玖在线视频| 日本免费一级AAA大片器| 啊啊啊啊啊啊好湿好爽视频| 亚洲色色探花| 人妻精品视频一区二区| 黄色工厂这里只有精品| 欧美一区二区成人一卡| 激情五月天视频| 蜜臀网址在线| 麻豆福利视频导航| 花野真衣| 校园春色 男人天堂| 欧美亚洲20p| 香蕉精品二区二区 | 男人的天堂日韩| 曰本道人妻久久久在线不卡色视频| 国产操逼视频在线观看| 骚妻少妇精品性色无码四色A V| 操逼天美3区| 极品人妻少妇综合| 人妻熟妇久草在线| 丁香婷婷激情五月天无毒不卡 | 日本不卡二三区| 丁香五月AV| 把腿张开老子CAO烂你| 九九AV| 941超碰| 天堂在线一区二区| 嫩草黄页| 欧美日韩97在线| 91九九九逼| 91殴美大片| 67194无码不卡| 丁香五月AV| 91美女丝袜诱惑视频| 日本高清视频在线观看黄已三辽| 精品视频免费在线一区| 成人在线午夜视频一区| 性爱乱伦视频免费| 十八禁av无码免费网站APP| 草草电影院| 欧美亚洲情色| 国产精品人妻免费精品| 日韩免费在线观看不卡| 三级日本一区二区三区| 国产午夜福利专区综合| AV天堂国产| 丰满人妻一区二区三区性色| 青青草原综合久久大伊人精品| 欧美激情亚洲色图| 91精品国产91综合久久蜜臀| 人人喜人人妻| 郑州宾馆老熟女露脸啪啪| 插插综合网天天影视网| 中日韩免费看男女操逼大全| 伊人991| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 日日躁狠狠躁天天躁精品| 国际精品久久久| 国产精品剧情| av在线免费一区二区| 亚洲经典啪啪| 极品粉嫩少妇视频| 激情欧美97| 婷婷视频在线免费观看| 色妹子A V| 精品国产国产AV| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 久久久久99999| 日韩一级成人毛片免费观看| 五月婷婷丁香| 另类老少妇| 精品无码一区二区三区| 亚洲色图久久精品蜜| 99精品伊人| 加勒比伊人| 99爱精品| 收看日本人日bb| 91亚·色| 精品十八在线观看| 91一起操| 久久久久久无码人妻中文字幕| 樱花蜜乳av| 情色av电影| 麻豆亚洲AV成人无码久久精品| 看免费一级在线播放毛片| 中日韓欧美高清| 青娱乐欧美激情一区二区| 一区 欧美 日韩 麻豆| 欧美操逼录像国产黄色国产| 国产精品天堂| 2024年最新色情网站在线观看 | 五月天婷婷色| 老司机午夜精品视频| 色五月第四色| 95人妻爽爽人人做人人澡 | 夜夜嗨TV| 色婷婷五月天| 亚洲色图欧美色图日韩色图| 青青草原成人| 福利在线视频一区二区| 天天日夜夜爽| 在线综合色| 人人做,人人操,人人摸| 97操综合| 91国产丝袜美女| 国产欧美一区二区| 亚洲综合婷婷| 欧美一区二区三区日韩| 天天激情综合站| 超碰97COm中文| 亚洲 欧美 综合 91| 大香蕉在线86| av天天在线观看| 婷婷五月综合在线| 五月丁香色色网| 午夜福利免费精品视频| 91在线精品一区二区三区| 四虎在线视频| 天天干夜夜操一区二区| 日韩高清一二三| 欧美第一页| 亚洲欧洲无码一区夜| 999综合色| 亚洲偷拍欧美激情| 91熟女视频网| 青女偷拍网| 欧美日韩亚洲天堂| 人妻一区二区三区熟女| 屁股久久久久久久| 久久久久久久久久久免费精品| 丰满人妻被猛烈进入中| 免费观看网黄| 婷婷亚洲五月***久久| 中文字幕jul-617人妻熟女| JULIA一区二区三区在线播放| 欧美色五月| 国产精品白丝AV| 日韩特一级久久| 中文字幕在线免费观看 | 少妇蹲下买菜露大唇0| 亚洲骚男同com| 午夜福利av电影在线| 天美传媒精品一区二区| 91丝袜| 亚洲成人贴图| 一中国女人毛片水真多| 美女天天干| 亚洲国产婷婷在线播放| 国产成人在线观看综合| 一级啊性爱在线视频| 欧洲熟妇xxXx欧美老妇裸体| 婷婷五月天综合网| 91麻豆天美国产欧美| 国产欧美日韩在线观看麻豆传媒公司 | 亚洲一区二区性爱电影| 图色综合网| 人人摸人人入| 免费啪啪av| 7777欧美成是人在线观看| 91成人高清在线观看| 无码日韩网站| 99久热精品99re6热| 日韩无限资源| 深爱五月婷婷| 日本孕妇孕交| 亚洲āv网址在线观看| 2017av无码免费无线播| 精品无码久久久久久国产浪潮| 亚洲男人综合| 无遮挡猛进视频免费无限观看| 九九探花视频在线观看| 美腿色图| 五月丁香激情四射| 七久久久| 操一对老熟妇爽上天视频| AV和黑人在线播放| 91最新综合| 欧美91在线| 极品五月天噜噜| 大香蕉欧美| 欧美一区二区情色| 青娱乐福利99| 操香逼| 2018天天日天天日| 97爱欧美| www.av家庭乱伦| 操人妻丝袜高跟| 亚洲在线91| 亚洲人成色9999精品久久| 亚洲97网站| 欧美性爱一级操| www.AV有限公司一区| yw尤物av无码点击进入麻豆| av婷婷色网| 国产品精品自在在线午夜免费| 亚洲AV无码天美传媒一区| 国产剧情在线| 啊啊啊快操我视频| 激情终合网| 婷婷色综合欧美日韩| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美懂色综合网| 亚洲91极品| 波多野结衣AV无码一区| 天天摸天天舔天天操| 凹凸久久人人| 在线免费观看高清无码视频| 欧美暴力猛交| 欧美1727免费观看视频| 99re免费视频精品全部| 久久精品女同亚洲女同13| 亚州国产精品乱| 国产操逼逼网| 日本成熟少妇A∨网站| 青操影院| 亚洲成人色情五月天丁香花| 日韩欧美女优电影| 91精品国产麻豆国产自产在| 精品国模无码| 亚洲男人电影天堂| 91美女视频直播| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 国产在线视视频有精品| 熟女五十路一区二区三| 韩国免费播放一级毛片| 亚洲在线91| 东京热,男人的天堂| 色眯眯av| 天天综合站| 国产精品久久久久久9999| 好爽,再快点啊哈嗯嗯嗯嗯| 日韩人妻大香蕉| 五月开心网| 国产欧美伊人| 中美日韩毛片| 男生女生啊啊啊啊| 男人 天堂 日 亚洲| www.人人cao| 操www| 91视频伊人| 亚洲欧美人妻| 天天射夜夜操| 亚洲AV秘 精品久久老牛影视| 久久久久久一日韩字幕无码| 玖玖爱免费观看视频| 自偷自拍的亚洲视频| 天美av在线观看| 伊人久久大香线综合无码| 蜜臀久久99'精品久久久| 国产后入式在线观看| 东京太热男人的天堂久久久| 99热这里只有精品18| 男女啪啪网站免费视频| 久久精品中文字幕无码l| 综合色色婷婷| 99啪啪视频| 色婷婷一区二区三区久久午夜成人不| 欧美日韩人妻精品系列一区二区三区| 秋霞Av理论一级在线| 啪啪视频亚洲第一| 国产高清1234区| AV色五月天| 老熟女综合网| 欧美的性爱网站免费| 爱av免费| 亚洲精品不卡一二三区| 免费观看一区| 91黑人无码激情在线| 欧美在线伊人色| 婷婷丁香人妻| 亚州免费啪啪视频| 韩国轻伦国内自拍一区| 国产一区二区在线看| 亚洲欧综合另类无码一区| 无码免费一区二区三区啪啪| 亚爽爽爽爽爽爽爽爽| 美女好片色日本| 极品欧美一区二区三区| 亚洲中文日韩欧美大香蕉视频| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲性少妇| 成人26uuu| 男人的天堂2018东京热啪啪啪| 日本天天干天天日一区| 日韩欧美成人性爱在线| 91九九九逼| 99人妻碰碰碰久久久久禁片| 韩日精品四区| 中文字幕制服诱惑| 婷婷综合在线观看| 欧美18 在线观看| 在线黄色污污网站| 日韩不卡a级视频专区| 蜜臀99久久精品| 日韩另类色图| 偷拍导航视频网站| 午夜精品视频777| 2020中文字幕在线| 26uuu国产免费观看| 夜夜嗨一区二区三区三州加勒比| 亚洲乱码国产乱码精网站| 天天在线91| 亚洲视频一二区| 五月婷丁香| 欧美一级美片在线观看免费| 久久99草| 亚洲限制级在线| 久草福利在线资源站| 欧美日韩亚洲天堂| 97青娱乐超碰久久| 人人透人人操| 思思热免费在线视频| 成人性交午夜免费片| 福利天堂| 亚洲资源吧| 一区二区三区日韩欧美| 日韩亚洲国产视频| 黄色免费网| 精品国产99999| 日日夜夜草草草| 婷婷五月色| 日本午夜精品理论片A级APP发布| 久久性生大片免费观看性| 91爱欧美| 亚洲精品久久一区二区三区蜜桃臀| 欧美另类色图片| 五月天婷婷色色| 亚洲精品xxx| 免费超碰97在线观看| 色婷婷一区二区三区久久| 综合熟妇一区二区三区| 91在线一起| 国产欧美日产一区二区三区 - 国产欧美日 | 女人18精品一区二区三区| 日韩三级在线观看mp4| 99精品丰满人妻无| 日本亚洲vr欧美不卡高清专区| 天天日夜夜| 26uuu欧美| 免费视频在线观看啊啊啊啊啊| 亚洲美乱| 91新在线欧美| 好一吊区二区| 亚洲国产97在线精品一区| 999热日韩精品| 亚洲综合第一页| 无码外流操逼视频| 蜜乳AV色欲AVAV无码| 精品中文字幕一区二区l - 百度| 国产人妻天天干精品| 午夜大香蕉| 日本免费不卡二区| 综合av影片| 色综合大香蕉| 亚洲男人的天堂亚洲| 五月婷婷六月天| 久久夜嗨| 精品免费囯产一区二区三区 | 91春色| 日韩性爱再线视频| 91扒丝袜综合在线| 国产嫩草精品A88AV| 极品销魂美女一区二区| 欧美日韩中文亚洲v在线综合| 国产精品青青草| 一区二区三区色综合| 亚州综合色| 极品白嫩美女白浆成人福利在线看| 亚洲AV免费在线观看| 97色欧洲| 精品一区二区人妖| 色综合超碰超| 亚洲无无码αⅴ每日更新| 一区二区三区精品黑丝白丝酒店对鸡 | 欧美热图99| 久久99午夜精品一区人妻| 久久亚洲熟妇在线视频| 国产午夜精品在线观看| 国产亚洲 中文欧美久久| 欧美高潮| 大色综合网| 超碰97最新人妻| 人人操人人操人人操人人操人人操人人人11.CM| 先锋精品av色鲁| 久久国产精品m码| 熟妇人妻精品一区二区视频色欲| 热G综合热G中文| 黄色片大香蕉| 日韩欧美女求操每天更新| 加勒比大香蕉视频在线| 久久春色| 野狼激情网| 在线有码中文字幕| 91无码人妻| 丁香五月激情综合| yw尤物av无码点击进入麻豆| 天天狠| 综合久久久久久久综合网| 成人片视频| 97福利视频| 欧美一区二区一级岛国大片| 日韩精品三级片长长久久| 99精品热| 欧美精品日韩久久久九| 欧美97av| 东北女人| 日本久久99| 日韩中文字幕人妻视频| 久久粉色| 干妹子| 超碰地址97| 亚洲天天艹| 亚洲一区日韩| 日韩美女操b| 亚洲自拍偷拍视频在线 | 久久久久久午夜男人的天堂| 操逼啊啊啊91| 国产精品成人久久一区二区三区| 精品无码少妇| 国产精品对白自产拍| 91亚·色| 啊啊啊操一区| 亚洲AV免费在线| 日人妻视频91| 国产三级中文有码在线视频| 亚洲欧美高清无码| 插入逼91| 国产精品高清2021在线| 欧美亚洲中文| 亚洲av性爱电影| 97在线免费视频| 久久久久9999| 98人妻精品一区二区色欲| 久久女人| 黄片视频观看| 亚洲精品白浆高清久久久久久 | 性久久| 女人午夜视频777| 2020国产精品| 91neishe| 嗯啊不要啊啊在线观看视频| 麻豆九九九| 欧美日韩97在线| 91亚洲黄色网| 欧美组图日韩亚洲中文字幕| 天天视频网站黄| 把腿张开老子CAO烂你| 黄色av一区二区在线| 大香蕉综合在线| 按摩中文字幕| 中文字幕无码不卡啪啪| 97伊人网| 丰满人妻无码一区二区三区| 久久久一级| 青青草亚洲一区| 激情婷婷黑人91| 成人无码在线视频网站| 国产操逼逼网| 禁止观看美女黄| 91久热| xxxx网站亚洲精品| 亚洲s在线观看| 吊色| 久久东京伊人一本到鬼色| 五月婷婷综合在线| 亚洲天堂人人妻| 国产精品白领在线观看| 国产成人无码久久精品| 色盈盈影院| 一本大道综合伊人精品热热| 成人色女网| 国产成人精品网站| 国产男女边吃边摸视频网站| 操逼网站网站| 综合网欧美在线| 蜜臀久久久99久久久久| 久草国产在线视频| 欧美亚洲涩涩| 小视频玖玖| 国产免费久久精品99re韩国| 麻豆综合一区av| 欧洲中文字幕| 高清孕妇孕交| 91色图片| 亚欧毛片基地国产毛片基地| 色噜噜人妻av 中文字幕| 日本在线观看网址| 亚洲丝袜B诱惑| 日本孕妇一区二区视频操逼免费看| 男人的天堂2010| 亚洲色婷婷久久久综合日本| 大稥蕉免费视频这里只有精品| 精品人妻一区二区三区四区不卡在| 一级免费啪啪片| 中文字幕成人乱码熟女精品国50| 99精彩视频| 中文字幕欧美日韩三级| 成人五月天色网| 高清在线偷拍自拍视频| 成人小电影网站tex| 91在线综合网| 欧美精品1区2区3区| 台湾佬中文娱乐网久久久久久久久久com| 色综合久久88色综合久久天天| 久草精品在线| 国产精品一二三区福利| 日本性感人妻91| 精品无码久久久久| 成人情色一区二区| 影音先锋日本一区二区| 欧美日韩天堂| 欧美一级三级| 欧美乱伦专区| 色丁香五月婷婷| 成人性爱美曰韩| 東南亚性呦成人伦理资源在线视频| 亚洲免费人妻在| 精品久久久久久无码| 久久久一区二区三区麻豆| 久久人爽| 香港日本韩国人妇99www.wccm20| AV 少妇 人妻 偷拍| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 日韩美女久久一区二区三区| 日韩欧美大力操| 2021国产成人精品久久| 久久香蕉国产线看观看亚洲女人| 超碰综合色| 九九九九九九九九九五码| 人人综合| 亚洲情色一区综合| 麻豆久久久久久久久丝袜| 性欧美另类高清| 国模限制级电影| 日韩影片中文字幕一区二区三区| 精品熟女一区=区三区| 国产少妇与亚洲av| 麻豆乱码久久精| 久久一本大香蕉| 日日爽熟女| 国产91美女视频| 亚洲黑人在线| 亚洲精品三区在线观看| 成全在线观看免费观看| 国精精品无码一二三区水多多| 五月婷婷激情| 亚洲午夜av| 综合色色网| 熟妇操花| 99操视频| 精品国产一区二区三区av在线资源| 蜜臀久久一区二区| 青青青操| 精品无人区麻豆乱码1区2区图片| 亚洲丝袜诱惑| 国产AV色黄看到爽| 日本人妻A片成人免费看片| 1204人成网站色www| 伊人宅男大香蕉| jizz啪啪| 97人人草| 综合九九| 亲子敌伦对白在线播放| 无码精品一区二区三区潘金莲| 91久久久久免| 中文子幕一二三| 另类图片欧美激情综合| 国产免费一区二区在线A片视频| 97高清啪啪| 91一区二匹| 天天日天天操心| 久久久久久久久久久精| 成人五级久久| 精彩视频日韩| 欧美一级A一级a爱片久久| 色99视频| 国产精品不卡一区二区三区| 性综合网| 日本一天色道久久久精品视频| 91精品91久久久久77777俄罗斯老妇姓x| 亚洲国产麻豆一区二区三区| h色99999| 国产强上视频在线观看| 99只有精品| 国产女人与拘做受视频免费| 老熟女区| 亚洲国产美女久久久久| 国产又爽又黄| 91精品国产91熟女| 欧美日韩色图片| 日韩啊V| 97se综合网| 欧美日韩国产高清在线一二三区| 风月影院男女十八禁| 最新国产精品久久精品| 丰满人妻一区| 国色天香av| 欧美性巨大╳╳╳╳╳高跟鞋| 看黑人AV不卡| 日本日日色视频| 秋霞蝌科网日本一区| 天天情欲宗合网| 99无码视频| 小日子操bb在线看| 久久啊啊| 日本东京热大香蕉a片| 成人福利视频网| 日韩成人性日韩成人性爱视频在线免费观看| 天堂在线一区二区| 日本高清一区二区在线| 麻豆美女丝袜人妻中文| 99蜜桃臀久久久欧美精品网站| 男人的天堂2010| 婷婷伊人五月| 夜夜夜夜久久久久| 国产日韩中文字幕欧美| 伊人丝袜美腿高跟在线观看高清| 中文一区二区婷婷视频| 国产白嫩漂亮KTV在线| 两女互慰AV高潮喷水在线观看| 精品999一区二区| 欧洲精品欧洲精品| 久久久久久久久久久久黄色 | 伊人亚洲国产一成人久久精品,久久| 性久久| 亚洲无码一二三区| 国产精品一区午夜福利| 爱妃国产亚洲视频中文字幕|