欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

Linux runtime PM:設(shè)備級功耗調(diào)度的核心機(jī)制與實戰(zhàn)指南

Linux runtime PM:設(shè)備級功耗調(diào)度的核心機(jī)制與實戰(zhàn)指南 1. runtime pm不是“省電開關(guān)”而是設(shè)備生命周期的精細(xì)調(diào)度器很多人第一次看到runtime pm這個詞下意識會把它理解成“Linux內(nèi)核里一個用來關(guān)掉設(shè)備電源的模塊”——就像家里拉閘斷電一樣簡單粗暴。這種理解在實操中會立刻碰壁你調(diào)用了pm_runtime_suspend()設(shè)備卻紋絲不動你設(shè)置了autosuspend_delay但設(shè)備該醒還是醒你反復(fù)echo auto power/controldmesg里卻只打印device busy。這不是驅(qū)動寫錯了也不是內(nèi)核版本太舊而是你從一開始就沒抓住 runtime pm 的本質(zhì)。它根本不是“開關(guān)”而是一套基于引用計數(shù)與狀態(tài)機(jī)的設(shè)備運(yùn)行時生命周期協(xié)同調(diào)度機(jī)制。它的核心目標(biāo)不是“讓設(shè)備斷電”而是“在設(shè)備真正空閑、且系統(tǒng)確認(rèn)無任何組件正在使用它時才允許進(jìn)入低功耗狀態(tài)一旦有新請求到來必須能以確定性時延快速恢復(fù)服務(wù)”。這個“確定性時延”和“協(xié)同確認(rèn)”才是 runtime pm 區(qū)別于傳統(tǒng)system suspend整機(jī)休眠的關(guān)鍵分水嶺。舉個生活化的例子runtime pm 就像一棟寫字樓里的智能電梯調(diào)度系統(tǒng)。它不會在沒人按樓層鍵時就直接把所有電梯停運(yùn)、斷電——那樣等你按下12樓按鈕就得等30秒電梯重啟。它做的是當(dāng)某部電梯連續(xù)3分鐘沒被召喚、轎廂內(nèi)無人、且沒有預(yù)約任務(wù)時自動將其轉(zhuǎn)入“待機(jī)模式”電機(jī)休眠、照明調(diào)暗但保持控制系統(tǒng)在線一旦有人刷卡進(jìn)廳、或遠(yuǎn)程呼叫指令到達(dá)它能在1.2秒內(nèi)完成喚醒、平層、開門——整個過程對用戶完全透明。這個“待機(jī)-喚醒”的決策權(quán)不歸電梯自己而由大樓中央調(diào)度系統(tǒng)即內(nèi)核的 PM core統(tǒng)一協(xié)調(diào)依據(jù)的是每部電梯當(dāng)前的“占用狀態(tài)報告”即usage count。在 Linux 內(nèi)核中這個“占用狀態(tài)報告”就是struct device里的power.usage_count字段。它不是布爾值忙/閑而是一個有符號整數(shù)每次調(diào)用pm_runtime_get_sync()就 1調(diào)用pm_runtime_put_sync()就 -1。只有當(dāng)usage_count 0且滿足autosuspend_delay超時后PM core 才會嘗試下發(fā)suspend請求。而驅(qū)動必須在.suspend()回調(diào)里完成真正的硬件斷電操作并返回0表示成功若返回-EBUSY則說明設(shè)備此刻無法安全斷電比如 DMA 正在傳輸、FIFO 未清空PM core 會立即放棄本次 suspend 并重置計時器。提示usage_count是 runtime pm 的唯一真理。所有調(diào)試的第一步永遠(yuǎn)是cat /sys/devices/.../power/usage_count。如果它不為 0設(shè)備就永遠(yuǎn)不會 suspend如果它為 0 卻沒 suspend那一定是驅(qū)動的.suspend()返回了非零值或者autosuspend_delay設(shè)置得過大默認(rèn)是 -1即禁用 autosuspend。這個機(jī)制徹底改變了嵌入式設(shè)備的功耗管理邏輯。過去驅(qū)動開發(fā)者要自己維護(hù)一套“空閑計時器手動調(diào)用clk_disable()regulator_disable()”的私有方案極易出錯且無法與系統(tǒng)級電源策略協(xié)同。runtime pm 把這套邏輯標(biāo)準(zhǔn)化、內(nèi)核化、可審計化——它讓功耗控制從“驅(qū)動私有行為”變成了“內(nèi)核統(tǒng)一調(diào)度的公共資源”。2. 驅(qū)動注冊階段的三道生死線probe 里的 pm_runtime_enable() 不是可選項很多驅(qū)動作者在probe()函數(shù)末尾隨手加上pm_runtime_enable(dev)以為這就完成了 runtime pm 的接入。結(jié)果一跑起來dmesg里全是runtime PM usage counter of ... is 0, but device is not suspended的警告設(shè)備始終處于active狀態(tài)。問題不在pm_runtime_enable()本身而在于它前面的三道“生死線”是否全部通過。這三道線缺一不可且順序嚴(yán)格。2.1 第一道線parent 設(shè)備的 runtime pm 必須已啟用pm_runtime_enable()的本質(zhì)是將當(dāng)前設(shè)備加入內(nèi)核的 runtime pm 管理樹。但這個樹是有層級結(jié)構(gòu)的——每個設(shè)備都有dev-parent。如果 parent 設(shè)備的 runtime pm 沒啟用即parent-power.runtime_status ! RPM_ACTIVE那么子設(shè)備即使usage_count 0PM core 也絕不會允許它 suspend。因為 suspend 子設(shè)備的前提是 parent 設(shè)備自身已處于低功耗狀態(tài)否則子設(shè)備斷電會導(dǎo)致 parent 的電源域異常。實測案例某 ARM SoC 上的 USB host controller 驅(qū)動在probe()中調(diào)用pm_runtime_enable()后其下的 USB device 始終無法 runtime suspend。排查發(fā)現(xiàn)host controller 的 parent 是platform bus上的usb_phy設(shè)備而usb_phy驅(qū)動壓根沒調(diào)用pm_runtime_enable()。修復(fù)方法很簡單在usb_phy的probe()里補(bǔ)上pm_runtime_enable()并確保其.suspend()能正確關(guān)閉 PHY 電源。之后USB device 的usage_count歸零后 500ms 內(nèi)即成功 suspend。2.2 第二道線power.wakeup 屬性必須顯式設(shè)置dev-power.wakeup是一個struct wakeup_source *類型指針默認(rèn)為NULL。如果驅(qū)動不主動初始化它PM core 在設(shè)備 suspend 前會執(zhí)行device_wakeup_path()檢查——這個檢查會遍歷整個設(shè)備樹路徑尋找是否有wakeup_source已激活。由于dev-power.wakeup NULL檢查必然失敗導(dǎo)致pm_runtime_suspend()直接返回-EAGAIN設(shè)備永遠(yuǎn)卡在RPM_ACTIVE。正確的做法是在probe()中緊隨pm_runtime_enable()之后調(diào)用dev-power.wakeup wakeup_source_register(dev, my-device-ws); if (!dev-power.wakeup) { dev_err(dev, Failed to register wakeup source\n); return -ENOMEM; }注意wakeup_source_register()的第二個參數(shù)是字符串標(biāo)識符必須全局唯一。如果設(shè)備確實不需要被外部事件喚醒如 GPIO 中斷、RTC alarm可以設(shè)為NULL但必須顯式賦值不能留空。否則內(nèi)核會認(rèn)為該設(shè)備“可能需要喚醒”但又找不到喚醒源陷入邏輯死鎖。2.3 第三道線autosuspend_delay_ms 的初始化時機(jī)dev-power.autosuspend_delay默認(rèn)值是-1表示 autosuspend 功能被禁用。這意味著即使usage_count 0PM core 也不會自動觸發(fā) suspend除非你手動調(diào)用pm_runtime_autosuspend()或pm_runtime_suspend()。很多驅(qū)動作者習(xí)慣在probe()結(jié)束前設(shè)置pm_runtime_set_autosuspend_delay(dev, 500); // 500ms但這行代碼必須放在pm_runtime_enable()之后。因為pm_runtime_set_autosuspend_delay()內(nèi)部會檢查dev-power.runtime_status是否為RPM_ACTIVE如果不是比如剛 enable 時狀態(tài)還是RPM_SUSPENDED它會直接返回-EAGAINdelay 值根本不會生效。更穩(wěn)妥的做法是pm_runtime_enable(dev); // 確保設(shè)備初始狀態(tài)為 active pm_runtime_get_noresume(dev); pm_runtime_put_sync(dev); // 此時狀態(tài)已為 RPM_ACTIVE再設(shè)置 delay pm_runtime_set_autosuspend_delay(dev, 500);這三道線構(gòu)成了 runtime pm 的“啟動門檻”。它們不是技術(shù)難點而是設(shè)計契約——內(nèi)核要求驅(qū)動必須明確聲明“我已準(zhǔn)備好參與這套協(xié)同調(diào)度”而不是“我隨便試試看”。跳過任何一道設(shè)備就會淪為 runtime pm 系統(tǒng)里的“幽靈節(jié)點”power/control文件存在usage_count可讀但 suspend 永遠(yuǎn)不會發(fā)生。我在調(diào)試某款工業(yè)相機(jī)驅(qū)動時就因漏掉了wakeup_source_register()花了整整兩天才定位到問題根源。教訓(xùn)是pm_runtime_enable()不是終點而是起點它后面跟著的三行代碼才是決定設(shè)備能否真正“呼吸”的關(guān)鍵。3. suspend/resume 回調(diào)里的硬件真相為什么 .suspend() 必須返回 0 或 -EBUSY驅(qū)動開發(fā)者常有一個誤解.suspend()回調(diào)只是“通知我該關(guān)電了”所以隨便返回0就行。這種做法在測試環(huán)境可能暫時通過但在真實產(chǎn)品中會埋下嚴(yán)重隱患。runtime pm 的.suspend()和.resume()回調(diào)不是簡單的通知鉤子而是硬件狀態(tài)轉(zhuǎn)換的原子性契約。內(nèi)核 PM core 嚴(yán)格依賴這兩個回調(diào)的返回值來決定后續(xù)的調(diào)度動作。返回值錯誤輕則導(dǎo)致設(shè)備無法 suspend重則引發(fā)系統(tǒng)死鎖或硬件損壞。3.1 .suspend() 的返回值語義0 表示“已安全斷電”-EBUSY 表示“此刻無法斷電”當(dāng) PM core 調(diào)用驅(qū)動的.suspend()時它期望驅(qū)動完成以下三件事停止所有數(shù)據(jù)傳輸關(guān)閉 DMA 引擎、清空 FIFO、等待 TX/RX 完成保存關(guān)鍵寄存器狀態(tài)記錄當(dāng)前配置如 clock divider、gain setting供 resume 時恢復(fù)切斷硬件供電或時鐘調(diào)用clk_disable_unprepare()、regulator_disable()、pinctrl_select_state()切換到 sleep state。只有當(dāng)這三步全部成功完成后才能返回0。如果第1步失敗例如 DMA 正在忙無法強(qiáng)制停止就必須返回-EBUSY。此時 PM core 會立即放棄本次 suspend 嘗試并重置autosuspend_delay計時器等待下一次usage_count歸零。常見錯誤寫法static int my_device_suspend(struct device *dev) { // 錯誤沒有檢查 DMA 是否空閑直接 disable clock clk_disable_unprepare(my_clk); regulator_disable(my_reg); return 0; // 危險DMA 可能還在寫內(nèi)存 }正確寫法必須包含超時等待static int my_device_suspend(struct device *dev) { int timeout 100; // 100ms 超時 while (dma_is_busy() timeout--) { udelay(100); } if (dma_is_busy()) { dev_warn(dev, DMA still busy, cannot suspend\n); return -EBUSY; // 明確告知 PM core } // 此時 DMA 已空閑安全操作硬件 clk_disable_unprepare(my_clk); regulator_disable(my_reg); // 保存寄存器... return 0; }3.2 .resume() 的隱含契約必須在 10ms 內(nèi)完成喚醒.resume()的返回值語義與.suspend()不同它只應(yīng)返回0成功或負(fù)錯誤碼如-EIO表示硬件故障。但它有一個硬性隱含要求從.resume()開始執(zhí)行到設(shè)備能響應(yīng)第一個 I/O 請求的時間必須 ≤ 10ms。這是 runtime pm 的設(shè)計底線——如果喚醒太慢上層應(yīng)用如音頻播放器會感知到卡頓或丟幀。這意味著.resume()里不能做任何阻塞操作? 不能調(diào)用msleep(20)? 不能等待 slow I2C bus 的 ACKI2C 通信必須用中斷或 DMA不能輪詢? 不能執(zhí)行復(fù)雜的寄存器初始化序列應(yīng)提前預(yù)加載resume 時只做最小必要配置。實測數(shù)據(jù)某 SPI Flash 控制器驅(qū)動.resume()中包含一個 15ms 的usleep_range(10000, 15000)導(dǎo)致音頻播放時出現(xiàn)明顯爆音。移除該延時改用 polling timeout最大 1ms問題消失。3.3 狀態(tài)機(jī)視角RPM_SUSPENDED 不等于“硬件已斷電”內(nèi)核中dev-power.runtime_status有四個狀態(tài)RPM_ACTIVE、RPM_RESUMING、RPM_SUSPENDING、RPM_SUSPENDED。很多開發(fā)者認(rèn)為RPM_SUSPENDED就代表“硬件已斷電”這是致命誤解。RPM_SUSPENDED只表示“PM core 認(rèn)為設(shè)備已 suspend”但硬件實際狀態(tài)取決于驅(qū)動.suspend()的執(zhí)行結(jié)果。如果驅(qū)動.suspend()返回0PM core 會將狀態(tài)設(shè)為RPM_SUSPENDED如果返回-EBUSY狀態(tài)仍為RPM_ACTIVE。但如果驅(qū)動.suspend()返回0卻忘了調(diào)用regulator_disable()那么RPM_SUSPENDED狀態(tài)下硬件依然帶電——這會造成嚴(yán)重的漏電問題尤其在電池供電設(shè)備中。因此RPM_SUSPENDED是一個軟件狀態(tài)標(biāo)記而非硬件事實。驗證硬件是否真斷電必須用萬用表測量 VDD 引腳電壓或用示波器觀察 clock signal。我在調(diào)試一款車載 TCU 模塊時發(fā)現(xiàn)power/runtime_status顯示suspended但電流表讀數(shù)仍是 8mA。最終定位到.suspend()返回了0但regulator_disable()被注釋掉了調(diào)試時遺留。這個案例深刻說明runtime pm 的可靠性最終取決于驅(qū)動代碼的嚴(yán)謹(jǐn)性而非內(nèi)核狀態(tài)機(jī)的完備性。4. 調(diào)試 runtime pm 的黃金四步法從 dmesg 到 trace-cmd 的全鏈路追蹤當(dāng) runtime pm 行為不符合預(yù)期設(shè)備該 suspend 卻不 suspend該 resume 卻卡住靠猜是沒用的。內(nèi)核提供了完整的調(diào)試工具鏈但必須按正確順序使用。我總結(jié)出一套“黃金四步法”覆蓋從宏觀狀態(tài)到微觀時序的完整排查路徑已在數(shù)十個嵌入式項目中驗證有效。4.1 第一步看/sys/devices/.../power/下的原始狀態(tài)文件宏觀快照這是最快速的初步診斷。進(jìn)入對應(yīng)設(shè)備的 sysfs 目錄如/sys/devices/platform/12c0000.i2c/i2c-1/1-0048/power/依次檢查文件正常值異常含義排查方向runtime_statussuspended或activeunknown表示pm_runtime_enable()未調(diào)用檢查驅(qū)動 probe 流程controlautoon表示 autosuspend 被禁用檢查pm_runtime_set_autosuspend_delay()是否生效usage_count0suspend 前0表示仍有組件持有引用grep -r pm_runtime_get drivers/查找誰沒配對putautosuspend500單位 ms-1表示 autosuspend 功能關(guān)閉檢查pm_runtime_set_autosuspend_delay()調(diào)用位置特別注意usage_count它是 runtime pm 的“心跳”。如果它長期 0說明某個 subsystem如 input core、mfd core在 probe 或 event handler 中調(diào)用了pm_runtime_get()卻忘記put。這時需結(jié)合stacktrace分析。4.2 第二步啟用CONFIG_PM_DEBUG并解析 dmesg事件日志在內(nèi)核配置中開啟CONFIG_PM_DEBUGy編譯后啟動。然后觸發(fā) suspend/resume如echo auto power/control再執(zhí)行dmesg | grep runtime。你會看到類似輸出[ 1234.567890] pm_runtime: device 12c0000.i2c: suspending [ 1234.567901] my_i2c_driver: suspend called, usage_count0 [ 1234.567912] my_i2c_driver: DMA idle, disabling clock... [ 1234.567923] pm_runtime: device 12c0000.i2c: suspended如果看到device busy或suspend failed說明.suspend()返回了非零值。此時需檢查驅(qū)動代碼中.suspend()的返回邏輯。注意dmesg日志是異步的可能丟失關(guān)鍵時序。它只能告訴你“發(fā)生了什么”不能告訴你“為什么發(fā)生”。4.3 第三步用trace-cmd抓取 PM event trace時序分析這是定位競態(tài)問題的終極武器。先啟用 trace# 啟用 runtime pm tracepoint trace-cmd record -e pm:runtime_pm_callback -e pm:runtime_pm_status # 觸發(fā) suspend/resume 操作 echo auto /sys/devices/platform/12c0000.i2c/power/control # 停止記錄 trace-cmd stop # 解析 trace trace-cmd report輸出會顯示精確到微秒的事件流myapp-1234 [001] .... 1234.567890: runtime_pm_callback: funcpm_runtime_suspend, dev12c0000.i2c, ret0 myapp-1234 [001] .... 1234.567895: runtime_pm_status: dev12c0000.i2c, statusRPM_SUSPENDING myapp-1234 [001] .... 1234.567900: runtime_pm_callback: funcmy_i2c_suspend, dev12c0000.i2c, ret0 myapp-1234 [001] .... 1234.567905: runtime_pm_status: dev12c0000.i2c, statusRPM_SUSPENDED如果發(fā)現(xiàn)runtime_pm_callback事件后沒有對應(yīng)的runtime_pm_status事件說明.suspend()卡住了如死循環(huán)等待 DMA如果status從RPM_SUSPENDING變回RPM_ACTIVE說明.suspend()返回了-EBUSY。4.4 第四步用perf分析.suspend()函數(shù)耗時性能瓶頸如果.suspend()執(zhí)行時間過長10ms會導(dǎo)致 autosuspend 失敗。用perf抓取函數(shù)級耗時perf record -e cpu-clock -g -a -- sleep 10 # 觸發(fā) suspend echo auto /sys/devices/platform/12c0000.i2c/power/control perf script | grep my_i2c_suspend輸出會顯示.suspend()內(nèi)部各子函數(shù)的耗時占比。常見瓶頸點udelay()或msleep()調(diào)用I2C/SPI 總線輪詢等待復(fù)雜的寄存器讀寫序列。修復(fù)原則所有耗時操作必須異步化或移到.suspend_noirq()如果適用.suspend()本身應(yīng)盡量精簡。這套四步法不是孤立的工具列表而是一個遞進(jìn)的診斷流水線。第一步幫你鎖定問題域第二步定位事件節(jié)點第三步揭示時序真相第四步深挖性能根源。我在為某醫(yī)療監(jiān)護(hù)儀移植 Linux 時曾用此法在 3 小時內(nèi)定位到一個隱藏了半年的 bug.suspend()中一個未加鎖的spin_lock()導(dǎo)致在 SMP 系統(tǒng)上死鎖。沒有 trace-cmd 的時序圖這個問題幾乎不可能被發(fā)現(xiàn)。5. 實戰(zhàn)避坑指南那些文檔里不會寫的 runtime pm 經(jīng)驗陷阱文檔和教科書講原理但真實世界里的坑往往藏在細(xì)節(jié)的縫隙里。這些經(jīng)驗是我踩過十幾次坑、翻過上百次內(nèi)核源碼、和硬件工程師吵架無數(shù)次后總結(jié)出來的。它們不寫在Documentation/power/runtime_pm.txt里但每一個都足以讓你的項目延期一周。5.1 陷阱一pm_runtime_get_sync()在中斷上下文中的“偽安全”很多驅(qū)動在 IRQ handler 中調(diào)用pm_runtime_get_sync()來防止設(shè)備在中斷處理期間被 suspend。這看起來很合理但有個致命前提pm_runtime_get_sync()會嘗試 acquiredev-power.lock而這個 lock 是 sleepable mutex。在中斷上下文hardirq中調(diào)用它會導(dǎo)致 kernel panicscheduling while atomic。正確做法是在中斷 handler 中只調(diào)用pm_runtime_get_noresume()它不嘗試 resume只增加usage_count然后在下半部如 workqueue 或 tasklet中再調(diào)用pm_runtime_resume()。例如static irqreturn_t my_irq_handler(int irq, void *dev_id) { struct my_dev *pdev dev_id; // 僅增加引用計數(shù)不 resume pm_runtime_get_noresume(pdev-dev); schedule_work(pdev-irq_work); return IRQ_HANDLED; } static void my_irq_work(struct work_struct *work) { struct my_dev *pdev container_of(work, struct my_dev, irq_work); // 在進(jìn)程上下文中 resume pm_runtime_resume(pdev-dev); // 處理中斷數(shù)據(jù)... pm_runtime_put(pdev-dev); }5.2 陷阱二autosuspend_delay的單位是毫秒但pm_runtime_set_autosuspend_delay()的參數(shù)是毫秒 * 1000不這是一個經(jīng)典誤解。pm_runtime_set_autosuspend_delay()的參數(shù)單位就是毫秒不是微秒。內(nèi)核內(nèi)部會將其乘以USEC_PER_MSEC1000轉(zhuǎn)為微秒存儲。但很多開發(fā)者看到struct dev_pm_info中autosuspend_delay字段類型是long就誤以為要傳微秒值結(jié)果設(shè)置500000本意是 500ms實際變成了 500 秒延遲。驗證方法設(shè)置后讀取cat /sys/devices/.../power/autosuspend輸出值就是你傳入的毫秒數(shù)。如果顯示500000說明你傳錯了。5.3 陷阱三pm_runtime_idle()不是“強(qiáng)制 idle”而是“發(fā)起 idle 請求”pm_runtime_idle()的作用是向 PM core 發(fā)送一個“設(shè)備現(xiàn)在空閑請考慮 suspend”的信號。它不會立即 suspend 設(shè)備而是觸發(fā)rpm_idle()函數(shù)該函數(shù)會檢查usage_count是否為 0以及autosuspend_delay是否超時。如果條件不滿足它什么也不做。很多開發(fā)者誤以為調(diào)用pm_runtime_idle()就能讓設(shè)備立刻 suspend于是把它放在close()系統(tǒng)調(diào)用末尾。結(jié)果發(fā)現(xiàn)設(shè)備遲遲不 suspend。正確做法是確保usage_count已歸零即所有g(shù)et都已配對put然后調(diào)用pm_runtime_idle()讓 PM core 自行決策。5.4 陷阱四power/control文件的auto模式會覆蓋autosuspend_delay這是一個反直覺的設(shè)計。當(dāng)你執(zhí)行echo auto power/control時內(nèi)核會將dev-power.disable_depth設(shè)為 0并啟動 autosuspend timer。但如果你之前設(shè)置了autosuspend_delay500這個值會被保留如果你沒設(shè)置過內(nèi)核會使用默認(rèn)值通常是 3000ms。然而如果你執(zhí)行echo on power/control再執(zhí)行echo auto power/controlautosuspend_delay會被重置為默認(rèn)值而不是你之前設(shè)置的值。解決方案在驅(qū)動probe()中設(shè)置autosuspend_delay后不要在用戶空間用echo auto來啟用而是用echo auto power/control一次即可。如果需要動態(tài)調(diào)整 delay用echo 1000 power/autosuspend而不是切換 control 模式。5.5 陷阱五RPM_ACTIVE狀態(tài)下pm_runtime_suspend()會失敗但pm_runtime_force_suspend()不會pm_runtime_suspend()是“禮貌請求”它會檢查usage_count和autosuspend_delay只有條件滿足才執(zhí)行。而pm_runtime_force_suspend()是“強(qiáng)制執(zhí)行”它會忽略usage_count直接調(diào)用驅(qū)動的.suspend()。這在系統(tǒng) shutdown 或 debug 場景很有用但絕不能在正常 runtime 流程中使用因為它破壞了引用計數(shù)契約可能導(dǎo)致設(shè)備在被使用時突然斷電。我在調(diào)試一個 PCIe 設(shè)備時曾用force_suspend快速驗證硬件斷電邏輯結(jié)果導(dǎo)致 host bridge 的 config space 訪問失敗系統(tǒng) panic。教訓(xùn)是force_*API 是 debug 工具不是 production 代碼。這些陷阱沒有一個是內(nèi)核文檔明確警告的但每一個都曾在我的項目中造成過嚴(yán)重后果。它們的存在恰恰說明 runtime pm 不是一個“開箱即用”的黑盒而是一個需要深入理解其契約精神的精密協(xié)作系統(tǒng)。尊重它的規(guī)則比掌握它的 API 更重要。6. runtime pm 與 system suspend 的協(xié)同邊界何時該用哪個在嵌入式開發(fā)中一個常見困惑是runtime pm和system suspend即mem或disk狀態(tài)到底是什么關(guān)系能不能混用很多團(tuán)隊試圖用 runtime pm 替代 system suspend結(jié)果發(fā)現(xiàn)整機(jī)功耗降不下來另一些團(tuán)隊則完全不用 runtime pm只依賴 system suspend導(dǎo)致設(shè)備喚醒延遲高達(dá) 2 秒。問題的核心在于沒搞清兩者的設(shè)計邊界與協(xié)同邏輯。6.1 根本差異粒度、時延、觸發(fā)源維度runtime pmsystem suspend作用粒度單個設(shè)備device整個系統(tǒng)system典型時延sub-10msresume100ms ~ 2sresume觸發(fā)源設(shè)備 driver 的usage_count變化用戶空間echo mem /sys/power/state或內(nèi)核pm_suspend()電源域設(shè)備級電源域clock/regulator/pinmux系統(tǒng)級電源域VCC_MAIN, VCC_SOC, RTC battery狀態(tài)持久性RPM_SUSPENDED是易失的resume 后狀態(tài)重置PM_SUSPEND_MEM是持久的需 bootloader 協(xié)助恢復(fù)簡單說runtime pm是“設(shè)備呼吸”system suspend是“系統(tǒng)小憩”。前者讓單個設(shè)備在空閑時打個盹后者讓整個系統(tǒng)進(jìn)入深度睡眠。6.2 協(xié)同邏輯system suspend 會“凍結(jié)” runtime pm當(dāng)系統(tǒng)執(zhí)行echo mem /sys/power/state時內(nèi)核的suspend_prepare()會遍歷所有設(shè)備對每個啟用 runtime pm 的設(shè)備調(diào)用pm_runtime_force_suspend()。這意味著在 system suspend 進(jìn)入PM_SUSPEND_MEM狀態(tài)前所有設(shè)備必須已處于RPM_SUSPENDED狀態(tài)。如果某個設(shè)備的.suspend()返回-EBUSY整個 system suspend 就會失敗dmesg里會出現(xiàn)PM: Some devices failed to suspend。因此runtime pm是system suspend的前置條件。一個設(shè)備的 runtime pm 不穩(wěn)定會直接拖垮整機(jī)休眠。我在為某款智能手表移植內(nèi)核時發(fā)現(xiàn)bluetooth子系統(tǒng)總在 suspend 時失敗。最終定位到btusb驅(qū)動的.suspend()中一個未加鎖的mutex_lock()導(dǎo)致在 suspend 流程中死鎖。修復(fù) runtime pm 后system suspend 成功率從 30% 提升到 100%。6.3 實戰(zhàn)選擇指南一張決策表面對具體場景如何選擇場景推薦方案理由移動設(shè)備待機(jī)屏幕熄滅runtime pm system suspend屏幕、背光、觸摸屏用 runtime pm 快速關(guān)閉CPU、RAM 用 system suspend 深度休眠工業(yè) PLC 24小時運(yùn)行僅 runtime pmsystem suspend 會中斷實時控制但傳感器、ADC 等外設(shè)可用 runtime pm 降低功耗車載 infotainment 系統(tǒng)runtime pm主 UI system suspend停車后行車中用 runtime pm 管理 GPU、audio codec停車后整機(jī)進(jìn)入mem狀態(tài)IoT sensor node電池供電runtime pm絕對主力system suspend 的喚醒源有限RTC、GPIO而 runtime pm 可讓每個 sensor 獨立控制功耗最大化續(xù)航關(guān)鍵原則system suspend 解決“系統(tǒng)級長時靜默”runtime pm 解決“設(shè)備級短時空閑”。兩者不是替代關(guān)系而是分層協(xié)作關(guān)系。6.4 一個反模式用 runtime pm 模擬 system suspend曾有團(tuán)隊為降低功耗讓所有設(shè)備的autosuspend_delay設(shè)為 100ms期望達(dá)到“整機(jī)快速休眠”效果。結(jié)果發(fā)現(xiàn)usage_count頻繁波動網(wǎng)絡(luò)包到達(dá)、timer tick設(shè)備不斷 suspend/resume功耗反而比 constant active 高 20%。這是因為 suspend/resume 本身有開銷cache flush、TLB invalidate、clock gating overhead。正確做法識別真正的“系統(tǒng)空閑期”如無用戶交互、無網(wǎng)絡(luò) activity、CPU load 5%在此期間觸發(fā) system suspend其余時間用 runtime pm 管理單個設(shè)備。兩者結(jié)合才能實現(xiàn)功耗最優(yōu)。runtime pm 的價值不在于它多強(qiáng)大而在于它讓功耗管理從“粗粒度、高延遲、全局一刀切”走向了“細(xì)粒度、低延遲、按需精準(zhǔn)調(diào)控”。它不是一個炫技的功能而是一個讓 Linux 真正適配電池供電、實時響應(yīng)、高能效嵌入式場景的基礎(chǔ)設(shè)施。理解它不是為了寫一個 demo而是為了構(gòu)建一個可靠、高效、可預(yù)測的功耗管理體系。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲婷婷欧美婷婷| 五月丁香综合啪啪| 国产白丝在线一区| 伊人五月天在线| 丁香婷婷五月综合色情| 婷婷五月色天| 美女激情婷婷| 超碰资源在线| 极品少妇XXXX精品少妇偷拍| 天天干天天射色综合| 九月丁香八月婷婷加勒比| 激情影院免费视频婷婷五月天| 91人人人人人| 日日夜夜狠狠| 99婷婷五月天| 超碰2021| 丁香婷婷久久| 丁香激情五月| 思思热视频在线观看| www.99精品视频| 五月婷婷影院| 婷婷久久六月费| 色吧99| 综合一本道| 五月天之色情综合网| 欧美日比视频| 天天干天天操天天干天天操天天干天天操| 色五月大| 日本欧美成人片AAAA| 久久66成人网站| 五月丁香人妻| 久久婷婷热| 六月丁香婷婷网| 五月丁香 狠狠爱| 丁香五月婷婷五月天| www.zbzhongsen.com| 一起草AV| 五月丁香婷婷爱| 亚洲色五月| 天天日天天爽| 夜色综合网| 中文字幕婷婷五月天| 国产真人做爰视频免费| 日韩狠狠色| 婷婷五月天无码熟女| 色五月丁香A欧美com| 噜噜狠狠色综合久| 99热99思午夜精品| 九九热这里只有精品6| 综合性视频99| 天天性视频| 色啦啦视频| 五月天激情啪啪| 十月丁香婷婷| 久久婷婷五月天激情四射| 色色色网站| 夜夜夜夜夜操| 九九久久99| 97婷婷狠狠久久综合9色| 婷婷五月天基地| 米奇影视五月天| 香蕉视频91| 免费看欧美成人A片无码| 少妇综合网| 就要去操亚洲成人精品五月天丁香婷婷| 日韩在线视频9色| 99操逼视频| 九九九九九九九热| 人人色婷婷五月天| 久九色| 级人人91| 国产五月视频| 91九九| 激情网五月天| 色噜噜狠狠一区二区三区| 欧美综合五月天婷婷tin| 91肏| 婷婷丁香五月色| 日日干综合| 五月天婷婷基地综合网| 超碰99热在线观看| 99热xx| 丁香婷婷影院| 色色五月丁香婷婷| 六月久久婷婷| 女人被男人吃奶到高潮| 色综合激情| 色五月天综合| 青草视频在线蜜臀| 婷婷爱综合| 久久久精品AV| 插逼综合网| 天堂va久久久噜噜噜久久Va| 99视频热99| 狠狠狠狠狠干| 狠狠五月天| 狠狠久久婷五月| 丁香五月天啪啪a日本| 丁香综合伊人AV| 热99国产精品| 天天射影| 丁香五月AV综合| 激情色色| 天天噜天天插| 色色色在线免费视频| www.9797国产| 国产avapp 网| www.91色| 天天爽天天| 超碰成人在线观看| 亚洲久热| 色五月婷婷网| 国产精产国品一二三在观看| 国产精品VIDEOSSEX久久发布| 人妻久久久久久久 | www色五月| 婷婷激情图片| 日本一级| 97色色婷婷| 天天干天天操天天拍| 69久久99精品久久久久婷婷| 婷婷综合五月天| 91人人网| 五月天综合在线| 亚洲日日日| 亚洲色五月| 日本三级韩三级99久久| 婷婷视频网| 欧美色婷婷| 婷婷色六月| 激情99| 欧美色频| 亚洲精品字幕| 7777久久亚洲中文字幕| 久人操| 丁香久月| AA片在线观看视频在线播放| 欧美槡BBBB槡BBB少妇| 色色色热| 亚洲天堂玖玖| 色婷婷综合久久久久| 欧美激情综合色综合啪啪五月| www,色婷婷| 久久视频婷婷视频| 久久99热 这里有精品| 色欲丁香久久| 四色五月婷婷| 99热在线精品观看| 欧美A级成人婬片免费看理论| 婷婷五月花.97| 91九色超碰| 五月色激情综合网| 日本99视频| 97丁香花五月天激情小说| 五月丁香激情综合欧美| AV性爱在线| 丁香五月天.com| 五月色色色| 丁香五月久久| 色原狠狠综合| 丁香色六月婷婷| 激情五月婷婷在线区| 日日操,夜夜爽| 97色色在线视频| 成人网址在线观看| 无码AV免费精品一区二区三区| 五月天亭亭俺也| 婷婷丁香五月综合免费视频百花| 天天天天天天操| 丁香六月婷婷色XXXX| 久久久人人操A V| 婷婷六月激情| 久久人人人人妻| 久久免费精彩视频| 无码人妻AV久久久一区二区三区| 日韩视频女神99| 爱射综合| 亚洲va欧洲va国产va不卡| 婷婷九月亚洲| 久久探花91swag| 琪琪色五月天| 五月综合缴情网| 9l视频自拍9l九色9l成人| 欧美在线视频99| 亚洲啪啪精品| 综合色五月天| 久久色情| 免费成人网在线观看| 色五月激情视频在线综合| 婷婷五月天亚洲图片| www.五月丁香| 1024欧美看片| 玖玖资源部在线播放| 99久久综合| 97在线视频观看| 影音先锋一区二区资源站| 99re久久| 97超碰综合| 玖玖福利视频资源| 97香蕉碰碰人妻国产欧美| 伊人九九九久| 六月婷婷日| 超碰人人91| AA片在线观看视频在线播放| 五月天色图| 亚洲最大五月天成人网| 中文字幕人妻熟女在线| 99色综合网| 丁香五月婷婷乱| 色9999日韩国产| 五月停停99| 丁香六月婷婷一区| 婷婷午夜激情| 超色欲天天| 狠色狠色狠色狠色狠色网| 久久久久久综合88| 狠狠色五月| 五月婷婷伊人久久| 99热91| 最新无码专区| 国产日批视频| 婷婷色网站| 精品日本视频444| 日日干五月天婷婷| 97色久| 色综合99无码 | 久久性爱视频| 激情五月婷婷综合网| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 日本九九视频| 婷婷中文字幕在线| 五月丁香六月情亚洲| 91五月天| 激情五月天丁香| 四色AVwww| 九九99久久| 五月婷婷丁香综合| 玖玖99免费视频| 婷婷五月综合社区在线| 国产丁香五月天婷婷| 九九热只有精品| 日本99视频精品免费播放| 开心五月综合激情综合五月| 丰满老熟妇BBBBB搡BBB| 色9色| 亚洲操精品| 婷婷五月超碰| 激情五月天婷婷五月天| 91碰碰碰久久久久| 久久A V无码视频| 成人做爰A片免费看网站找不到了| 日韩久久视频| 男女99免费视频| 抽插特写| 六月丁香成人网| 日韩丰满少妇无码内射| 色婷婷精品小视频| 激情开心五月天| 久久ww| AV在线免费播放| 亚洲av成人一区二区电影在线| 亚州日本欧州韩美高青高潮一| 激情五月激情综合网| 开心五月综合激情网| 九九热在线精品视频| 99久久婷婷综合| 开心五月天激情| 亚洲欧州色情在线观看| 婷婷亚州综合| 成年人丁香五月| 91碰操| 日本熟女内射| 五月婷婷激情在线| 婷婷五月天美女21p| 欧美情色电影一区二区| 开心五月婷婷99| 刘玥av在线| 六月天无码网址| 少妇水多A片太爽了| 亚洲 精品 综合 精品| 99视频只有精品| 丁香五月综合久久八| 丁香五月六月综合激情| 色综合天天网| 91婷婷视频| 亚洲色模骚货| 狠狠久久婷| 婷婷狠狠干| 色综合狠狠色| 亚洲中文字幕网| 九九av| 99热这里只有精品1| 丁香五月色色色色| 婷婷天天五月天| 97色色综合| 91 原创 在线 九色| 天天日天天操心| 91久久| 五月天色影院| 色综合色欲综合天天免费 | 久久总和99| 日韩黄色电影| 人人操AV| 五月天社区狠狠| 成人色图情色成人网 www.5b5b5bcom 五月天 | 五月天婷婷成人网| 97色色色视频| 久草性爱| 日韩成人无码| 国产激情综合五月久久| 思恩热国产视频右线观看| 人妻日日日| 综合图片色色| 色欲Av五月天| 99色.com| 丁香五月成人网| 五月综合亚洲婷婷| 99九九99九九九视频精彩| 激情五月久久| 精国产品一区二区三区A片| 白度黄视频| 久久五月综合| 26UUU成人网| 碰碰人人人| 另类激情五月| 久久这里只有精品16| 久久码久久无清| 丁香五月婷久久| 色五月婷婷在线视频| 激情五月狠狠喔| 另类视频综合| 这里只有九九精品| 五月丁香成人网| 婷婷丁香在线播放| 五月天激情综合网站| 色啪久| 天天综合 99久久婷婷| 色五月涩涩婷婷蜜桃| 亚洲岛国电影| www.99在线| 五月天亭亭俺也| 五月天丁香啪啪综合| www。五月,com| 另类天堂| 99爱在线精品视频免费观看| 色婷婷在线综合色播网| 超碰人人操在线| 成人av在线网| 99热97| 婷婷六月激情综合| 插插干干干色| 五月停停色色丁香| 丁香五月性爱爱五月| 六月丁香五月婷婷| 香蕉综合在线| 激情综合五月婷婷| 天天射夜夜骑| 色9色| 亚洲最大在线| 77777亚洲午夜久久| 丰满人妻一区二区三区| 色婷婷免费观看| 99热99热| WWW.桔色成人.COM入口| 人人色人人摸人人看| 国产中文字幕在线视频免费观看| 九九视频在线观看视频6| 做爱夜夜干天天操| 在线看av| 91九九九九九九| 午夜性做爰电影| 大香蕉久| 色狠狠综合网| 激情都市丁香婷婷| 99热在线这里| 日本熟女一区二区| 色婷婷五月天激情综合| 五月丁香成人日| 91九色国产| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | av在线观看网站| 久久日婷婷| 精品人妻午夜一区二区三区四区| 色啪网| 99热这里只有精品2| 来吧亚洲综合网| 色色综合视频| 日本成人噜噜| 激情九九综合网| 狠狠色婷婷丁香六月| 天天爽成人综合网站| 99毛片| 丁香九月综合在线| 激情婷婷五月天丁香| 色婷婷综合久久| 色婷婷基地| 六月婷婷色综合| 婷婷色综合| 综合激情视频| 国产激情综合五月久久| 开心激情久久久久久久| 就爱操www com| 26uuu视频欧美| 婷婷99狠狠| 色综合综合色| 香蕉综合网| 开心婷婷五月天综合| 97综合在线| 97干网站| 亚洲色9| 99久久免费性爱视频`| 在线观看亚洲视频影院| 8区视频在线| 久久人人九九| 天天操夜夜啊| 激情伊人六| 色婷婷综合网| 亭亭色天香| 东北婷婷五月天| 秋霞电影理论| 婷婷丁香五月综合网上| 噜噜吧天天爱| 99热这里有精力| 激情小说婷婷| 国自产拍偷拍精品啪啪一区二区| 97在线观看| 日本视频久久| www:99热视频| 精品成人在线观看| 久久一热免费视频| 怡红院精品视频久久久久久久久| 国色天香伊人狠狠色| 久久五月天黄色五月天色网址| 五月综合激情视频| 人妻啪啪啪| 婷婷色啪| 精品人妻伦九区久久AAA片| 国产人妻人伦精品一区二区| 午夜爱爱网站| 国产成人网| 97干在线| 色播激情| 在线中文av| 日本三级日本三级三级人妇四虎| 婷婷丁香77777| 久久婷婷操| 亚洲操b| 国产免费一区二区三区三州老师F1F1.CC| 丁香花五月天激情| 亚洲乱码日产精品BD| 九月性爱网| 九九亚洲无码| 99热精品10| 丁香五月综合亚洲| 五月激情六月综合| 97色色视频| www.99色在线| 99啪啪| sewuyuejiqingwang| 色情综合网| 91碰碰碰| 狠狠狠狠狠狠草| 五月天婷婷綜合院| 深爱激情AV| 激情五月天小说| 久久狠狠干| 欧美天堂婷婷日韩| 99ri视频| 五月色天情| 婷婷亚洲影院| 亚洲人成网站999综合| 丁香六月婷婷久久高清| www.日日夜夜| 日韩啪啪视频| 久久探花91swag| 99ri精品| 久久偷拍综合五月天| 亚洲激情综合色站| 精品人妻伦一二三区久久| 99爱在线免费视频| 色婷婷久久综| 五月婷婷狠狠干| 五月天婷婷爱| 五月天婷婷青青草| 99久久亚洲精品视频| 激情五月婷婷丁香综合网| 99热精品在线播放| 欧美在线视频9| 人妻久久久久久久久妻久久久久久久久 | 色色影院黄大片| 老司机午夜福利视频金瓶梅| 射久久丁香五月| 国产又爽又猛又粗的视频A片| av激情在线| 五月婷婷在线观看| 五月婷婷激情| 91碰碰视频| 亚洲色综合性| 五月天久久久| 99久久婷婷| 色中色综合| 精品一区二区三区四区五区六区| 成人精品在线| 久久精品系列| 午夜日韩久久久网站| 日本狠狠爽| 欧美97色| 五月婷婷,狠狠操| 我要射综合| 性无码专区无码| 五月 成人 婷婷| 人妻VideOssS人妻高清| 成熟妇人A片免费看网站 | 丁香六月婷婷综合| 久9无码视频| 五月婷婷综合在线| 噢美99| 五月丁香久久网| 99毛片| 99热一本| 色99欧洲色19| 熟妇天天综合| www.久久久久久久久久.com| 综合深爱五月| 人人摸人人操人人爱| 日本三级日本三级三级人妇四虎| 啪啪 综合网| WWW、日本色丁香、co m| 密乳视频| 午夜69成人做爰视频| 久久婷婷丁香五月一二三| 大香蕉伊人99| 99热99久久| 看片视频在线免费日产在线看| 色五月激情五月| 深爱 五月天| 五月天成人综合| 亚洲综合草草| caop在线视频| 色综合久久88色综合天天99| 亚洲成人高清在线| 激情综合五月天| 超碰免费大香蕉| 99精品97| 无码人妻激情| 99视频内射三四| 99色热| 婷婷五月深情丁香深爱日韩| 中文字幕永久在线| 婷婷第六色| 超碰碰碰碰| 婷婷丁香人妻天久久| 99热这里只有精品22| 97操操| 综合色播| 天天操天天操| 碰碰人人人| 天天综合网亚洲网站| 久综合4| 深爱激情六月| 激情五月天的婷婷| 久久草大香蕉| 亚洲小说五月婷婷| 亚州美女| 伍月激情天| 丰满少妇猛烈A片免费看观看| 久久久久久综合五月婷婷| 久久久全国免费视频| 婷婷五月丁香色播| 9久热在线视频精品| 五月色婷婷影院| 九九这里有精品| 五月天婷婷色紫薇阁| 久久久GOGO无码啪啪艺术| 激情五月丁香色婷婷| 久草九一| 九九99热| 日本激情ⅩXX免费视频| 五月天久久色| 丁香六月欧美| 丁香五月天啪啪| 精品一二三区久久AAA片| 亚洲成人乱码av网站| 日逼影音先锋AV男人资源站| 婷婷久久五月天丁香| 五月久久五月激情| 婷婷五月激情基地| 丁香五月婷婷视频| 超碰在线99| 精品少妇人妻AV无码专区偷人 | 九九综合网| 夜色综合网| 激情宗合哪里能看| 久久密臀婷婷| 色婷婷丁香五月天| 丁香五月六月激情| 久久久久8888| 免费观看欧美成人AA片爱我多深| 日韩啊啊啊| 亭亭五月丁香综合欧美| 五月丁香婷婷欧美色图视频五月丁香777电影 | 五月丁香六月成人| 精品色色网| 在线成人av播放| 色情综合网| 天天插轮理| 色婷婷偷拍| 欧美成人精品A片免费一区99| 99色最新在线视频网站| 久久在这里99| 欧在线一区| 五月天色丁香| 五月婷婷激情久久| 少妇丁香婷婷 | 潮汕成人AV片在线| 丁香婷婷五月| 亚洲婷婷免费| 五月天婷婷在线啪啪视频| 色情五月| 极品人妻VIDEOSSS人妻| 久久99激情| 99热99这里有免费的精品| 99手机在线精品视频| 久久人妻熟女一区二区| 色五月欧美| 婷婷激情五月综合丁香社| 丁香五月香蕉| 99caobi| 天天插天天干| 欧美在线操| www夜夜操wwwcon| 亚洲激情网| 伊人青涩网| 最近中文字幕2019视频1| 色99热| 狠狠999| 久草大| 996黄色片| 亚洲婷婷五月天| 天天肏夜夜肏| 五月丁香五月婷婷| 五月天久久www| 日本老女人黄页在线播放| 极品另类| 丁香五月伊人| 国产69精品久久久久999小说| 伊人网大香| 婷婷久久色| 成人狠狠成人狠狠成人狠狠成人狠狠| 草综合网| 免费亚洲婷婷中文字幕| 五月天丁香综合久久国产| 丁香五月婷婷操逼| 亚洲乱码日产精品BD| 婷婷久久综合| 亚洲综合视频在线| 五月婷婷色| 中文字幕乱轮| 视色综合| 婷婷五月天天aV| 情欲综合网| 九九av| 五月婷婷综合社区| 日韩久综合| 超碰2021| 97色射| www.seqingwuyuetian| 天天干天天爽| 丁香五月播播| 婷婷久久亚洲| 五月停亭六月,六月停亭的英语| 天天影视天天爽天天草| 天天爽免费视频| 人妻久久久久久久久久| 成人电影丁香六月天| 精品综合五月| 久久这里都是精品视频| 5月丁香综合网| 狠狠色丁香99| 天天做天天爱天天爽在| 99小精品| 97丁香五月天| 亚洲人人干| 6月丁香婷婷激情| www.五月婷婷久久.com| 五月婷婷婷婷婷婷艺术| 色婷五月丁香久亚洲| 激情综合网激情五月网| 激情五月天免费视频| 天天综合亚洲综合| 婷婷色网站| 另类激情五月| 欧美激情综合色综合色| 日日日日操| 婷婷激情五月天小说校园| 国产午夜一区二区三区| 色色色网站| 激情綜合網址| 久热九九| 超碰v| yazhoujiqingav| 99九九热播在线免费视频| 91九色超碰正在播放| 啪啪黄页网| 婷婷黄色五月| 日韩成人无码人妻| 丁香六月婷婷综合激情欧美| 99色看这里只有精品| 婷婷激情丁五月| 思思热国产在线| 五月开心激情| 欧美婷婷日本| 蜜臀AV在线观看| 欧美十二区| 色偷偷人人| 九九九九毛片| 五月婷婷久久激情| 热成人网| 9l视频自拍9l九色9l成人| 天天骑天天操| 日韩在线观看网址| 婷婷久久婷婷| 国产xxxxx在线观看| 精品人妻久久久| 色XX综合网| 丁香五月婷婷色情综合| 国产精品99久久久久久久女警| www五月婷婷88导航| 亚洲免费视频网站| 天天激情综合| 亚艹艹| 97碰碰人人| 性一交一乱一交A片久| 卡视频1区2区| 丁香五月激情综合| 思思热在线视频99| 激情另类综合| 久久婷婷九月国产精品| 激情丁香五月AV| 色综合色综合婷婷热| 狠婷婷五月| www.五月婷婷.com| 国产69精品久久久久999小说| 色综合狠狠色| 久久成人性爱| 蜘蛛女侠2003满天星免费观看| se99视频| 99色视频| 伊人九九热| 成人操呦av| 岛国AV网| 99视频只有精品| 亚洲天堂玖玖| 亚洲天天免费| 狠狠色五月| 少妇伦子伦精品无吗| 99九九视频精彩在线| 噜噜综合网| 天天干天天干天天干| 色五月网址| 97碰成超视频免费视频| 激情五月色综合国产精品| 五月婷婷啪啪网| 激情五月综合网| 婷婷久久爱| 久久婷婷五月草视频在线播放| 噜噜色婷婷| 婷婷色色网| 大香蕉欧美在线| 激情综合网亚洲色图| 日韩啪啪视频| 免费观看日韩成人av| 亚洲色精彩| 99热这里只有精品首页| 色五月婷婷网| 99欧美| 久久人妻人人| 国产成人AV不卡| 久久视网36| 天天干天天日天天操| 熟女少妇内射日韩亚洲| 亚洲视频国产一区| 五月婷婷丁香在线视频| 无码色色色| 日本三级毛片| 婷婷五月天成人小说| 亚洲乱码日产精品BD| 97狠狠色| 色五月五月婷婷| 五月婷婷电影院| 激情丁香六月| 网站免费一站二站| 久久久久久婷| 久久机热这里只有 | 日日夜夜天天爽| www久久99| 色你久久| 思思热精品在线| 欧美色激情四射| caopeng超碰| 99热国产| 99精品久久久久| 99热这里只有精品1| 五月天久久婷| 99高级会所久久| 五月丁香激情综合久久| 日逼影音先锋男人资源站| 91狠狠综合久久久| 91干| 男人天堂99| 99爱在线视频| 五月婷婷综合影院| 婷婷狠狠干| 五月天大香蕉婷| 久久只这里有精品| 亚洲亚洲人成综合网络| 久久五月网| 成人av在线网站| 伊人碰碰婷婷| 五月色丁香| 色色色色色色色色色色色色色五月天 | 婷婷狠狠爱| 99在这里有精品| 综合狠久久| 国产片色| 伊人免费视频9| 五月婷婷说| 久久婷婷网址| 色婷婷色婷婷五月| 久久久潮喷-久久久九九-成人AV| 亚洲中文乱字字幕线在永久| 在线18av | 婷激情五月| 九色视频九色九色91jiuseshipin| 东北婷婷五月天| 日韩黄色影院| 色婷婷六月天在线| 五月丁香色色色| 婷婷六月综合激情| 超碰人人99| 国产色网站| 97干欧美| 99综合视频一体| 色婷婷五月天中文字幕| 秋霞免费视频| 99热最新网址| AV操一操| 狠狠爱五月婷婷| 四虎成人精品永久免费AV九九| 久久九九爽| 天天爽在线视频| 色五月网址| xxx综合在线| 久久五月热| 亚洲噜色| 国洲夜色亚热在线久久| 久久综合中文| 激情五月黄色小说| 99年操人人爽| 午夜丁香五月天综合| 午夜日韩久久久网站| 色综合九九| 色综合com| 亚洲成人网无码| 丁香五月色| 五月天色婷婷基地| 色五月婷婷伊人| 超碰人人超碰| 天堂五月婷婷| 综合久久8| 99色亚洲| 五月婷婷三级| 国产亚洲精品久久久久久郑州| 激情五月天色爱| www.九九婷婷| 91超碰人人操| 狠狠干青青草| 99九九中文字幕视频| 一级黄色影片| 国产色五月| 991精品在线视频| 91丨九色丨大屁股| 五月婷婷说| 亚洲视频五区| 成人中文网| 色情五月婷| 色婷婷视频| 久热9热| 九九色婷婷| 婷婷五月天男人影院色色网| 亚洲av网站在线观看| 色五月大香蕉| 五月丁香中文| 99热综合网| 国产日韩精品SUV| 日韩aaa| 亚洲色婷婷色| 成片免费观看大全| 精品久久99| 色婷婷激情五月天| 成人AV在线网站| 国产精品人人做人人爽人人添| 婷婷五六日| 五月丁香亭亭AV女优| 丁香五月婷婷五月| 亚洲色99| 色五月涩涩婷婷蜜桃| 99色免费在线观看| A久久| 天天狠狠夜夜狠狠2023| 欧美成人热| 无码yw| 无遮羞AV| 99久视频| 色色色色网| 青草久久五月婷伊人| 久久久久久久8| 激情内射人妻1区2区3区| 久久婷婷色| 国产色99| 激情综合网之激情五月| 99热销国产这里有精品| 亚洲精品V天堂中文字幕| 五月丁香啪啪网| 天天操天天操综合| 六月婷婷九月丁香| 色婷婷AV在线观看| 欧美成人精品A片免费一区99| 五月婷婷激情中文字幕| www.av骚货| 成人视频九九| www.yw尤物| 精品九九网| 国产av一区二区三区| www.色五月| 免费视频无码| 五月婷网站| 激情的五月婷婷蜜桃| 九热免费视频| www综合久久| 91操人人操| 五月丁香六月色| 五月天天综合| 九九99视频| 狠狠久综合| 美妞av| 婷婷精品视频| 99在线视频免费| www。五月,com| 五月天丁香综合| 五月在线| 婷婷五月天第四色| 成人羞羞啪啪 全 视频| 激情婷婷丁香五月天| 欧美婷婷丁香五月| 伊人超碰在线| 丁香五月婷婷国产av| 九九热精品| 五月天婷婷在线AN| 人人97碰| 日韩性视频| 九月色婷婷综合| 色色色色色色色色网站| 这里只有免费的精品| 国产色婷婷亚洲| 婷婷五月天.com| 超碰大香蕉网| 婷婷五月天综合久久| 激情婷婷视频在线| 成人国产网| WWW色色色COM| 九色99视频| 色欲AVV| 大色鬼综合| 国产人妻777人伦精品HD| 亚洲精品字幕| 日本欧美成人片AAAA| 五月丁香啪啪啪| 久久曰曰| 激情综合五月| 亚洲视频在线观看| 97色在线| 99色在线| 五月激情小说| 国产亚洲在线| 色欲一区二区三区精品A片| 夜夜夜夜夜操| 99色精品| 九九色婷婷| 99久久99久久综合| 一本色道久久88加勒比| 久久se 综合网| 99热草草| 激情五月婷色| 国产jd1024基地手机看国产| 999九九九久久久99HD| 影音先锋综合网| 99国产97在线,| 丁香五月婷婷影院| 欧美在线视频9| 久草五月婷| 人人操操| 大香蕉75线| 2016日日夜夜操| 狠狠爱夜夜| 99在线免费视频| 欧美在线看| 老司机午夜福利视频金瓶梅| 丁香五月婷婷丫| 色99欧洲色19| 色五月天电影| 一区视频网站| 日本人妻A片成人免费看片| 五月婷婷六月色| 免费看欧美成人A片无码| 色综合久久久无码中文字幕999| 日本大人久久| 色青五月天| 97资源碰碰| 一起草无码视频| 情五月亚洲婷婷| 俺去也在线官网| 99视频这里有精品免费观看| 少妇人妻人伦A片| 一起草av| 综合AV网| 六月激情婷婷综合| 99在线观看| 只有久久精品免费| 天天影视天天爽天天草| 久大香蕉| 大香蕉啪啪网| 新激情五月天| 五月六月丁香激情视频| 激情6月| 色吧婷婷五月亚洲| 五月天激情图片网| 99九九久久| 天天拍久久| 丁香在线视频| 91精品综合久久久久久五月丁香| 美女久久婷婷| 九九99精品视频| 男人天堂亚洲综合| 中文不卡一二区| www.婷婷五月天| 婷婷99狠狠| 碰超亚洲| 色五婷婷| 色综合xx| 五月丁香激情综合网| 97精品人人A片免费看| 欧美男女婷婷| 婷婷五月色| 天天干天天干天天干天天干天天干天天干天天 | 五月天成人免费视频| 色99视频| 碰超在线九色| 这里只有精品视频视频在线观看| 五月天婷婷无码视频| 五月停停999| 丁香色婷婷| 丁香婷婷影院| 99精品久久久久久久| 99re26视频| 久久草中文日韩欧美| 欧洲色区| 操日视频| 久久久久久丁香五月| 99色在线视频| 黄色99热| site:picc-up.com| 色播播五月天| 青青久在线视频免费观看| 九九九热精品| 综合九九| 亚洲亚洲人成综合网络| 国产老熟妇亲子乱对白| 26uuu视频欧美| 六月丁香婷婷综合在线| 俺也去色| 色999五月色| 久久人妻视步| 婷婷五月天基地| 91凹凸在线| av网站中文| 激情亚洲五月| 五月激情站| 热热99爱爱| 五月婷婷综合激情| 97操视频| 欧美综合激情| 中文字幕婷婷五月天| 国产精品色色| 伊人超碰在线| 日韩狠狠色婷婷| 亚洲情欲| 久久9999| 婷婷综合六月| 五月色综合| 婷香五月| 天天干天天插| 超碰丁香五月| 内射丰满人妻| 中文AV网| 亚洲旡码| 色噜噜五月天| 色婷婷久久7777| 婷婷深爱五月丁香网| 久久婷婷五月天| 99精品自拍视频| 2025天天日爽| 亚洲在线播放| 日本五月视频| 九九99精品免费播放| 激情99。| 五月天国产| 四虎成人精品永久免费AV九九| 狠狠干综合网| 婷婷色情五月| www,天天干| AV在线免费观看不卡| 亚洲九九99精品视频在线播放| 欧美99热| 日本熟女视频一区二区| 日良久久| 丁香五月区| 人人摸人人干| 天天干天天操天天射 | 9月色婷婷| 26uuu成人网| 在线日韩av| 色久综合天天做视频| 雪千夏麻豆| 亚洲人妻一区二区| 久久丁香综合香蕉| 五月婷婷免费| 婷婷久久色五月婷婷久久久| 爱草视频在线| 亚洲婷婷性爱| 色五月视频无码播放| 精品一二三区久久AAA片| 丁香五月天色综合| 日日夜夜干| 久热这里有精品视频| 国产暴力强伦轩1区二区小说| 99在线er热| 婷婷五月天社区| 天天弄天天爽| 国产一区二区三区影院| 狠狠狠狠免费| 欧美丰满熟妇BBB久久久| 一根材五月婷成人| 超碰av在| 99er6| 97色精品视频| 激情五月色播五月| 日韩有码久久| 丁香六月啪啪啪| 日日干天天射| 天天爱天天操| 亚洲俩性性爱图片久久第六页 | 欧美黑人巨大猛烈cuckold| .精品久久久麻豆国产精品| 丁香婷婷五月天色播| 婷婷干| 天天干天天干天天操| 一起草无码| 色五月天激情| 五月丁香六月婷婷,婷| 五月丁香啪| 欧美精品熟女一区二区| 91久久久久久久久久| 国产成人av在线播放| aaaaaa片| 极品人妻VIDEOSSS人妻| 99热国产国产| 色播激情| 色五月婷婷一二| 婷婷天堂综合| 99热久| 丁香婷婷五月基地| www激情网站| 亚洲色婷婷| 99综合免费视频| 青草视频在线播放| 色婷婷社区| 99亚洲精品视频| 97色久| 99久久99热| 91狼友视频在线观看| 五月天综合色| 五月激情婷婷图片基地| 成人午夜视频精品一区| 5月丁香六月婷婷| 天天色综| 一本色道久久综合狠狠躁小说| 五月丁香激情综合网官网| 亚洲色图啪啪| 五月天婷婷AV| 久久这里只有国产| 99操九九网| 色久影院| 婷婷六月丁香色| 99热在线播放精品| 97干免费视频| 天天操天天爽天天爱| 九9九9无码| 天天日天天舔| 伊人深爱综合| 婷婷99狠狠| 99热爆在线| 亚洲六月色婷婷| 五月婷婷亚洲天堂激情在线| 97碰碰人人视频| 啪啪啪综合网| 99热这里有精力| 蜜臀av粉嫩av懂色av| 伊人久久婷婷| 久草热在线视频| WWW色五月天| 色综合久久无码| 91婷婷丁香| 欧美色小说婷婷| 91精品无码| 伊人免费视频9| 亚洲色网络| 久久丁香五月婷| 成人视频九九| 99热在线看| 久热9| 色色色地址| 91啪级电影| 精品网站:999WWW| 激情五月激情综合网| 99爱在线视频| 激情五月视频| 丁香六月婷婷综合| 丁香花五月天社区| 九九热视频在线观看| 九九视频这里只有精品| 久久性爱视频| 综合久久十| 六月丁香啪啪| 久久综合影院| 五月天色婷婷图片| 久久人操| 深爱五月天婷综合| 色开心五月婷婷丁香HD| 婷婷丁香五月激情| 狠狠色噜噜狠狠狠狠综合| 五月婷婷狠天天色综合| 七七九色| 久久婷婷超碰| 色色色欧美| 激情综合无码| AV五月婷婷露脸| 婷婷综合五月天激情| 亚洲综合在线播放| 五月婷婷 自拍| av亚洲国产小电影| 日韩999| 婷婷色综合| 婷婷五月天干干| 99er日韩| 超碰激情网|