99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜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
返回資訊列表
色婷婷丁香五月| 激情六月天婷婷| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 狠狠丁香| 丁香六月婷婷色XXXXX| 色综合久久天天综合网| 99在线小视频| 90色免费视频| 色视频色综合91| 台湾无码A片一区二区| 激情都市五月天| WWW.久久久久久久| 五月婷免费视频| 欧美性生交XXXXX无码小说| 色五月激情| AAAA亚洲| 欧美激情五月天婷婷| 日韩肏屄网| 夜精品无码A片一区二区蜜桃| 五月综合色| 五月天激情小说电影| 男人的天堂97| 婷五月天| 亚洲综合在线网站| 美女91一起草| 青青日韩| 99riAV国产精品视频| 精品九九九久| 精品九九九久| 成人va在线| ..真实国产乱子伦对白在线_欧 | 天天更新天天亚洲| 婷婷5月色| 日韩精品超碰在线观看| 久久精品综合色| 婷婷激情97| 欧美S码亚洲码精品M码| 九九九九精品精| 久久免费精彩视频| 久草热久草在线视频| 久热九九| 超碰久热| 亚洲精品a成人在线播放| 欧美大片| 欧美A A A A A| www。久久久久一b。Cc| 91干婷婷| 激情文学 综合 九月| 色五月,com| 丁香六月天| 五月丁香| 成人国产欧美大片一区| 日韩野外 无套| 五月花婷婷| 国产 码在线成人网站| 亚洲这里只有精品| 超级碰碰97在线| 丁香五月影院| 人人爽网| 日本欧美成人片AAAA| 欧美综合激情五月丁香| 新激情五月天| 五月丁香久久呀| 天天日,天天插| 久久综合干| 欧美大道不卡| 五月激情六月丁香| 一本色道久久综合狠狠躁一二三| 色约约视频一区二区三区四区五区| 丁香网五月网| 五月丁香在线综合| www.婷婷六月天| 五月激情啪啪啪| 99re6久热只有精品6在线直播| 人妻少妇色综合| 久久久婷婷| 狼人久草| 五月 婷 久| 丁香五月色色婷| 91熟妇大香蕉| www.久久| 看久久性爱视频| 丁香五月天中文字幕| 人人色婷婷| 伊人婷婷大香蕉| 91精品综合久久久久久五月丁香| 综合色色五月| 99精品热视频| 五月丁香好婷婷A片网| 婷婷综合网站| 亚洲午夜av| 国产精品久久欧美久久一区| 久久综合五月| 婷婷丁香人妻| 激情六月天婷婷| 色色五月天激情| 国产91资源在线| 欧美婷婷精品激| 丁香五月婷婷色| 美女婷婷六月色| 婷婷五月色综合| 五月开心久久| 99视频| 久久久潮喷-久久久九九-成人AV| 激情网第九色| 色播播五月| 五月婷婷六月丁香综合在线| 丁香五月婷婷久久久| 丁香五月综合| Caoub青青超碰 | 97久久久| 91/九色黑人| 91人人操人人| 激情丁香五月天图片| 欧美内射AA| 国产高清av黄色看片| 大香蕉狼人久久| 加勒比色色| 天天干天天做| 久久性都花花世界成人免费视频| 99热这里只有精品国产免费| 五月丁香婷婷综合久久| 丁香五月婷婷综合91| 久久精品性爱视频,| 亚洲va欧洲va国产va不卡| 亚洲人妻av| 666555。COm毛片| 久久久久久久久久久97| 久久这里只有精品22| 超碰成人电影| 丁香婷婷色色| 九九热在线视频观看| 99热在线观看| 99热免费精品热久久66| 久久久婷婷婷| 97香蕉久久超级碰碰高清版| 婷婷中文字幕| ady狠狠入| 99re思思精品视频在线观看| 五月婷激情| 色五月综合97| 秋霞三及片| www.狠狠操.co m| 色婷婷的五月天| 三级毛片视频| 99在线看片| 五月天开心激情综合网| 97操操操| www激情| 婷婷成人在线| 婷婷色色婷婷| 97黑人精品区| 日本99在线| se婷97| 丁香五月天欧美在线| 欧美色色色| 国产成人网站在线观看| 天天色视频| 操九色| 婷婷伊人网| 婷色天堂| 婷婷五月天干干| 免费看欧美成人A片无码| 26UUU| 狠狠爱综合| 丁香五月天.com| 99精品视频网| 中文字幕av在线| 99在线免费视频| 日本三日本三级少妇三级66| 婷婷五月天在线视频网站| 亚洲黄色操逼| 五月花免费视频| 六月丁香综合| 久久东京热婷婷五月| 激情五月天综合婷婷网| 无码人妻电影| 亚洲AV成人在线| 欧美色图45678| 久色网| 婷婷五月天AV| 成 人片 黄 色 大 片| 亚洲视频色色| 99久久婷婷精品视频| 综合网激情五月天| 97自拍视频网| 欧美在线视频免费播放| 色色丁香| 国产av天天插天天操天天爽| 日韩啊啊啊| 激情久久久久久久久| 超碰免费大香蕉| 99热91| 天天操综合网| 日日夜夜天天综合| 亚洲中文字幕av| 26uuu最新地址| 激情综合青草| 超碰色碰碰| 日日爽日日爽| 婷婷五月天av| 搡BBBB搡BBB搡18| 婷婷五月丁香五月天| 婷婷五月欧美综合| 五月天久久综合| 7777激情基地| 欧美xx激情视频在线观看| 丁香五月电影院在线观看| 婷婷中文字幕| 青草视频在线蜜臀| 成人中文字幕在线| 久久久婷丁香五月| 婷婷久热| 婷婷六月花| 99热99| 五月天婷婷色色| 天天爽—爽| 中文字幕不卡网站| 婷婷五月天堂| 日婷婷久久开心| 丁香五月影院| 成人人操| 久久久久人妻| 色婷婷888| 襙比视频| 丁香综合网| 丁香综合| 天天天天操| 。久久久久久久久久久久久久人妻| 亚洲天堂无码| 人妻无码视频网| 免费看成人747474九号视频在线观看| 五月婷婷综合色拍| 秋霞免费三级片| 大香蕉太香蕉视频97| 婷婷久久亚洲| 99精彩视频| 精品国产va久久久久| 激情五月婷婷丁香综合网| 欧日韩成人| 成人午夜天| 激情视频综合| 久久久久久久久人妻| 99色综合| 色色色在线观看| 婷婷五月花| 亚洲视频二区| 日熟女| 欧美色小说婷婷| 超碰在线免费| 婷婷成人AV| 婷婷.com| av高清无码| 五月婷婷欧美| 婷婷丁香九月| 狠狠综合网| 五月婷婷婷婷婷婷艺术| 丁香五月色播中文在线播放| 婷婷五月色播网| 免费成人中文字幕| 六月婷婷操逼| 日本色超碰| 超碰av在线| 激情久久肏屄视频| www色五月| 亚洲第一第二网站| 五月婷婷五月天亚洲无码| 久久久思思热| 久久永久网址| www。五月天激情| 亚洲超级碰| 免费观看日韩成人av| 亚洲春色奇米影视| seuuu婷婷| 99热色精品| 婷婷五月天av| 啪啪综合网| 丁香婷婷九月| 天天狠天天狠| 久久九九视频网站| 五月天丁香啪啪综合| 六月丁香av| 9婷婷内射| 色婷婷91激情小说| 丁香97综合| 91在线视频观看午夜福利| 成人精品视频99在线观看免费| 任你草| 五月激情视频| 综合色99| 日韩一本操| 日本一级黄色片。| 1024AV视频| 国产99久| 六月婷婷最新网址| 婷婷五月综合久久中文字幕| 人人摸人人操人人爽| 91成人视频| 大香蕉五月天| 99er6| 天天更新天天亚洲| 99这里是精品| 五月丁香啪综合| 九色91国产| 色域五月婷婷丁香| 成人精品一区二区三区四区五区| 婷婷丁香人妻| 婷婷丁香五月亚洲综合网在线视频观看| 亚洲色色色色| 久久激情网| 99爱视频| 欧美日韩aaa| 呦呦v线| 淫荡综合网| 丁香五月婷婷色播艳门照| 99热在线观看免费| 91超碰在线播放| 啊V视频在线观看| 婷婷性爱| 五月美女婷婷风骚| 色吊丝永久访问网址| 网色99| 五月丁色AV| 久久五月婷综合网| 老司机日日夜夜青草| 99激情| 亚洲中文乱字字幕在线永久| 91se精品国产| 中文字幕日韩成人| 开心四月婷婷在线色播播| 这里只有精品久| 99热这里精品| 五月激情影院| 99人人干人人操| 成人综合视频在线| 丁香五月综合在线| www.97碰碰com| 色播播五月天| 日本99婷婷| 97在线视频人妻九色| 99re久热只有精品6在线直播| 国产日日操夜夜操的肉棒视频| 欧美这里只有精品| 五月丁香| 9 99免费视频| 这里只有精品99www| 99re8在这里只有精品| 99热婷婷| 丁香婷婷五月人体| 天天综合干| 日本99在线视频| 天天做天天爱天天爽夜夜揉| 天天干天天干天天操| 色播五月网| av网站免费在线| 久久多色| 夜丁香综合| 天天天天天天操| 特黄三级又爽又粗又大| 久热2025无码| 婷综合| 91久久网站| 99超级碰免费视频| 亚洲综合五月| 日曰躁夜夜躁2026| 精品99这里有| 久久大香蕉同僚| 色婷青青| 丁香六月中文| 亚洲激情网| 久久一品区| 欧美天天综合网站上去吧| 五月丁香久人妻中文| www九九免费视频| 亚洲啪视频| 婷婷欧美激情| 校园春色亚洲色| 色色无码日韩| 热久国产| 成人在线综合| 五月天婷婷影院影院观看| 中文成人在线| www.25五月婷婷| 婷婷五月天影视首页| 超碰在线观看三级片| 成人精品在线观看| 欧美97色| 六月丁香网| 狠狠爱婷婷丁香| 五月婷婷激清网| 激情综合久久| 新久久五月天激情| 欧美婷婷综合| 婷婷她六月天| 天天天天天天操| 99热亚洲| 九九热10| 激情综合区| 五月天激情小说网| 日本色色网站| 91九色熟女| 人妻操日日| 婷婷五月成人系列| 九九热99在线视频| 人妻久久人妻久久第一区| 日日操天堂| 天天插天天很| 中文字幕免费高清电视剧| 六月丁香婷| 亚洲精品国产成人AV在线| www,色婷婷| 激情网五月天| 婷婷丁香激情综合色情| 97超碰人人操| 去干网av| 精品人妻伦九区久久AAA片| 亚洲精久久| 五月天激情四射| 五月丁香另类图片| 五月天色色网站| 噜噜色天天开心| 五月婷婷香| 激情综合网五月丁香| 丁香五月手机在线| 色性综合| AA片在线观看视频在线播放| 婷婷亚洲色| AV大片在线观看| 九九精品热| 色五月婷婷激情基地| 五月综合色| 99丁香五月婷| 久热这里只有精品在线观看| 激情婷婷丁香| 五月丁香六月婷婷开心网| 天天综合色99| 九月婷婷综合| 丁香久久五月天视频在线观看| 狠狠爱成人综合网| 天天干,天天日| 久婷婷婷| 亚洲欧洲中文日韩久久AV乱码| 99色热视频| www.色欲丁香婷婷| 曰曰久久| 九九成人精品| 狠狠色丁香久久婷婷综合五月| 久久视频婷婷视频| 激情图片婷婷| 久碰综合| 五月丁香网站| 99热综合网| 色婷五月天| 亚洲日韩乱码一区二区三区四区| 天天日,天天干,天天操| 久久婷婷五月综合97色一本| 七月丁香婷婷 色色| 99热这里只有精品5| 九九性视频| 亚洲色图欧美色图日本视频| 婷婷操久久| 五月丁香五月丁香| 婷婷丁香黄色| 丁香五月色| 婷激情五月| 麻豆雪千夏| 俺也去色| 婷婷伊人综合中文字幕| 五月天婷婷影院影院| 丁香五月激情综合婷综| 免费观看全黄做爰的视频| 九九久热| 天天舔天天摸天天射| 久久大香免费| 精品国产乱码久久久久夜深人妻| 4438激情网| 韩国婷婷丁香五月| 91男同| 91九色偷拍| 99精品无码视频| 午夜AV网| 五月婷丁香| 亚洲色网址| 天天做天天视天天谢| 亚洲123区高清入口| 深爱激情六月天| 99成人免费热视频| 天天干天天日日| 久久与婷婷| 欧美 色婷婷| 婷婷中文字幕| 日本欧美成人片AAAA| 五月夜丁香| 天天肏在线观看| 99久热视频在线| 五月天婷婷色| 久久久久久丁香五月| 天天肏高清在线| 亚洲综合网在线| 99久在线精品99re8热| 有哪些A片网站| 婷婷欧美偷拍综合| 丁香五月中文字幕| 久婷婷色| 久久99久久久久久久噜噜| 婷婷五月花| 99久久婷婷国产综合| 五月丁查人人| 草婷婷在线| 欧美激情丁香五月| 日韩综合网络男女香蕉a片| 婷婷综合av| 伊人久久丁香五月91| 337p大胆噜噜噜噜噜91Av| 大香蕉婷婷五月| 九九热思思| 丁香婷婷伊人| 五月丁香六月合| 亚洲激情无码久久| 丁香婷婷精品视频| 激情婷婷五月亚洲| 伍月婷婷免费视频| 7月婷婷六月丁香| 大香蕉九操| 九九精品热播| 原琪琪色影院| 91婷婷在线| 婷婷六月综合| 久操福利| 色色性爱视频| 美女五月天| 伊人婷婷五月天| 五月丁香婷婷久久| 欧美在线视频99| 婷香五月| 久久这里只有精品热在99| 婷婷五月天久久久| 五月婷婷丁香| 被男人添B超爽视频| 狠狠穞A片一區二區三區| 六月丁香五月婷婷| 五月丁香六月婷| 欧美成人精品三区综合A片| 国产67194| 女人高潮内射99精品| 国产美女无遮挡裸体毛片A片| 777影视理论片大全在线观看| 国产精产国品一二三在观看| 精品成人在线| 综合99在线| 色色色色区| 亚洲婷婷五月| 丁香五月久久| 婷婷五月天深爱| 五月激情基地| 97色色视频| 97狠狠色| 精品一二三区久久AAA片| 91人人人人人| 蜜桃婷婷狠狠久久综合| 97精品在线| 操操碰| 欧美日韓成人亚洲精品另类| www一区二区三区| 婷婷五月天激情在线| 五月天激情婷婷| 五月婷婷久久综合| 欧美日本免费一道免费视频| 婷婷之玖玖| 爆乳熟妇一区二区三区爆乳照片| 久久杏爱视频| 五月六月伦理| 日韩啊啊啊| 九九99久久精品| 丁香九月综合| 五月天综合| 久婷狼色诱惑在线| 久久网日本| 亚洲色五月天是什么| 深爱激情69热| 婷婷婷婷色| 大香蕉久久青青| 操逼国产91| 久久这里只精品66| 丰满熟女人妻一区二区三| 久久婷婷网站| 激情五月婷婷综合秋霞| 人妻久热| 久久婷婷亚洲五月天| 97精品欧美91久久久久久久| 天天干,夜夜爽| 碰碰91| 狠狠色婷婷| 99.色| www.色色com| 99ri精品在线| 婷婷色播色五月五色五月天色妇| 色色色五月天婷婷| 日日噜噜夜夜狠狠久久丁香六月| www色婷婷| 日本欧美成人片AAAA| 开心五月色婷婷综合开心网| 9 99免费视频| 欧美 日韩 人妻 高清 中文| 五月婷六月婷婷| 亚洲av成人在线| 色综合天天| 一级操逼内射在线视频| 玖玖爱伊人| 免费观看全黄做爰的视频 | 青草久久五月婷伊人| 操91综合网| 色色色97| 99热在线精品观看| 国产做爰视频免费播放| 五月婷婷另类| 超碰93在线观看| 婷婷综合仓库中文| 99视频久久免费视频| 久久综合影院 | 99精品在线播放| 久久久久久久五月| 就爱射中文字幕资源网| 丁香婷婷大香蕉| 色婷婷69| 天天狠狠干| 欧美成人AAA片一区国产精品| 91偷拍视频| 天天爱天天狠天天透| 99九九这里有免费视频| 婷婷六月丁香激情综合| 日韩999| 五月色色网| 91无码高清| 亚洲天堂青草| 深爱激情网综合| 亚洲V国产V欧美V久久久久久| 91久久久久久久久18| 天天综合久久| 热久69| 五月丁香六月综合激情无码软件亮点 | 1024操逼视频| 日本美女五月天| 色婷大香蕉| 夜夜骑天天玩天天日| 91肏肏肏| 亚洲欧美综合7777色亭亭| 婷婷五月丁香六月伊人网| 天天日,天天插| 99精品自拍| 91精品久久久久久久| 丁香九月综合激情| 五月婷婷偷拍| www.91九色| 亚洲性爱电影| 色五月婷婷基地| 久久精品婷婷| 九九精品在线视频观看| 成人在线99| 婷色人人狠| www超碰| 久久亚洲精品成人无码网站导航| 操一区| 亚洲AV激情五月综合网| 亚洲愉拍99热成人精品| 五月丁香青草综合啪啪| 五月深情久久| 婷婷五月天在线观看| 国产老熟妇亲子乱对白| 婷婷色导航| 无码九九| 日曰躁夜夜躁2026| 吉澤明步Av一區二區| www激情网站| 色久女| 婷婷性爱| 久久人妻少妇嫩草AV| 丁香婷婷啪啪啪| 日韩成人电泉AV| 99热66| 亚洲综合视频在线| 99热精品在线| 五月丁香婷婷三级| 五月丁香色婷基地综合久久| 97色在线| 色婷婷五月网| 色婷婷丁香社综合| 精品久久久人妻| 亚洲开心激情网| 丁香五月激情五月色综合| 色五月综合资源推荐| 91色婷婷综合久久中文字幕二区| 九月婷婷综合| 噜噜噜噜噜色| 日本久久高清| 江苏少妇性BBB搡BBB爽爽爽| 99热亚洲| www。88热在线视频免费观看| 大香蕉在线99热| 97色啪| 欧美va国产va| 日hao1区| 五月综合激情综合久| 热996精品在线观看| 99在线小视频| 激情五月,激情综合网| 日韩无码专区| 久久综合五月情| 综合AV在线| 色综合久久88色综合中文字幕| 丁香六月综合激| 99热这里只有精品在线| 激情小说视频图片网| 99九色视频在线观看| 九九婷婷激情综合网| 日韩在线视频中文字幕| 亚洲综合婷婷五月天| 日本久久婷婷| www.夜夜爱.com| 婷婷五月天开心网| 久久伊人五月天| 伦乱美欧| 色五月超碰| 热99玖玖99玖玖99九九| 欧美日韩一区二区三区四区| 五月开心深深爱激情综合| 激情五月婷婷综合| 激情婷婷网| 国产熟妇的荡欲午夜视频| 狠狠爱五月婷婷| 精品一区二区三区木瓜| 丁香五月亚洲AV| 色色综合院| 欧美久久一级内射wwwwww.| 超碰9| 天天射色五月天| 国产在线6| 丁香五月色五月| 婷婷综合在线网| 99久热| 欧洲毛片基地c区| 狠狠xx| 久久婷婷五月草视频| 丁香六月婷婷综情欧美| 青青草轻轻操| 色99免费视频中文| 999热这里只有美国精品| 九九这里只有精品| 日本精品99网站| 99这里| 这里只精品热在线18| 色五月婷婷少妇人妻| 激情五月天色网站| 成人AV中文字幕| 五月婷婷之综合激情在线| 成人在线二区| 久久综合天天综合| 天天日日天天| 五月丁香激情片| 免费观看亚洲AV片| 色噜噜夜夜夜综合网| 77777亚洲午夜久久| 97在线日韩| 超碰色热| Www.sesese丁香| 亚洲国产精品VA在线看黑人| 色婷婷综合网| 91Chinese在线| 97热这里只有精品| 综合网五月| 99热18| 97久久人人| 14色综合婷婷| 大香蕉中文| 婷婷中文字幕网| 五月天激情网图片| 色色色综合网| 天天日天天爽| 超级碰碰碰97免费| 99久超碰| 日韩啪啪视频| 夜夜谢天天干| 97自拍视频在线| 欧洲色| 无码激情AAAAA片-区区| 伊人久久大香线蕉精品| www.99色在线| 一区操| 丁香五月黄色| 99热日| 六月丁香综合| 可以免费观看的av网址| 成人婷婷桔色| 日韩AAA| 丁香婷婷色五月天| 日本VA视频| 天天色天天操天天射| 免费AV在线| 色婷婷欧美| 丁香六月婷| http:色情日本com| 五月综合人妻| 激情婷婷丁香色五月| 国产性爱一级| 丁香五月亚洲激情婷婷射| 99re这里只有精品国产99| 国熟女视频| 色播五月婷婷五月| 99热99精品| 久久九九国产精品怡红院| 无码人妻AV久久久一区二区三区 | 色八月婷婷| 色 五月俺去也| 99乱视频| 欧美性爱五月天| 婷婷五月天社区| 91黄色五月天视频| 五月天丁香久久| 狠狠做六月爱婷婷综合aⅴ| 激情婷婷狠狠干| 人人干女人| www.久久| 五月激情网络| 91色综合网| 操人无码| 碰人人97| 在线中文av| 26uuu激情五月天| 色婷狠狠| 伊人99热| 久操人| 五月丁香 六月婷婷a| 操操操操操电影网| 99精品视频偷拍| 色伦专区97中文字幕| 9999热在线观看| 日操| 99热只有| 久久人妻熟女一区二区| 婷婷五月中文字幕| 美女婷婷六月色| 色噜噜狠狠色综无码久久合欧美| 超碰在线看| 大香伊人婷婷| 欧洲亚洲免费视频区| 丁香五月天资源网| 香蕉AV777XXX色综合一区| 亚洲AV无码成人精品区电影网| 五月天丁香啪啪综合| 五月色婷婷综合| 99综合视频一体| 超碰不卡在线| 99在线看片| 91一起操| 日韩精品VIP| 激情五月深爱五月| 五月天婷婷小说| 色伦专区97中文字幕| 五月丁香久久久久| 五月天激情啪啪| 免费黄色视频网址| 天天肏高清在线| 夜夜骑福利资源| 亚洲激情另类| 亚洲久久日| 影音先锋人妻出差| 丁香五月成人| 五月天丁香久久| 久久精品亚洲一级牲爱综合| www.色婷婷.com| 欧美色99| 日日干天天| 九月丁香久久网| 五月激情五月丁香| 曰曰久久| 丁香五月婷婷99| 五月丁六月婷| 99精品偷自拍| 久久九九99| 99久久久久久www| 亞洲自怕| 五六月丁香激情视频| 国产毛片精品一区二区色欲黄A片| 色色影院黄大片| 99热在线观看亚洲区| 大学生高潮无套内谢视频| 91viP在线看| 丁香婷五月天开心六月| 五月色亭丁香| 丁香五月亚洲婷婷| 极品人妻VIDEOSSS人妻| 亭亭丁香久久五月| 99视频久久| 99在线播放视频| 91丨九色丨熟女| 午夜成人在线免费视频| 91色情播放| 五月天另类小说久久小说网| 欧美婷| 伊人综合网站| 国产va在线视频| 婷婷五月天影院| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 九九久久精品| 99热最新| 人人操99| 成人va在线观看视频| av网址在线| 91九色国产在线| 色呦呦美女| 九九干视频| 五月丁香好婷婷A片网| 五月天伊人综合| 婷婷五月,偷窥偷拍网| 操久久精| 99热播放| 99精品久久| 99热在线精品观看| 99热综合在线| 狠狠干,狠狠操| 天天草狠狠擦| 玩熟女五十AV一二三区| 丁香五月,激情五月,深爱五月| 97成人操| 色五月婷婷很很操| 国产精品人妻在线网址| 亚洲操精品| 91精品91久久久中77777| 五月婷婷六月丁香| 激情五月天之六月婷婷| 狠狠五月婷婷| 99热这里只有精品3| 99热99| 狠狠久久婷五月| 激情5月舔| 亚洲精品久久久无码| 色色色色色色综合| www. 五月. com| 久久 婷婷 五月天| 99色视频| 草草夜夜操| 天天婷婷色六月| 91综合在线视频| 久久99精品久久只有精品| 日本人妻丁香婷婷久久寝取熟女五月| 成人网在线观看视频| 直接看的AV| 99在线69| 熟妇无码乱子成人精品| 日日舔夜夜操| 国产脫衣舞一区二区三区| 日日爽日日| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 99在线精品免费视频| 综合激情深爱| 色99自拍| http:色情日本com| 色停停五月,在线观看| 超碰人人操人人干| 综合aV在线| 性热视频99精品| 天天做综合| 久久曰9| 91爱啪啪| 人妻尝试久久久久久久久久久久| 欧美在线视频免费播放| 亚洲九九夜夜| 日本激情综合| 色色婷| 婷婷在线日韩综合| 色吧五月婷婷| 好好干av| 久99久在线| 五月婷三级片| 色综合婷婷| www.亚洲激情| 久久xx| 九久热| 六月婷婷综合| 99re8在这里只有精品| 丁香五月六月久久综合| 国产a视频| 六月丁香五月婷婷| 开心婷婷中文字幕| 开心婷婷五月花| 天天操天天曰天天射| 777精品久无码人妻蜜桃| 另类 在线| 久热这里只有精品66| 九九色人| 丁香婷婷五月天成人| 激情综合五月婷婷| 五月婷婷在线视频观看| 国产六月婷婷| 欧美va视频| 丁香伊人五月色婷婷五十路| 五月丁香六月婷综合成人综合| 婷婷五月丁香六月综合网| yazhou seshipin| 五月丁香激| 色婷婷成人色网| 天天色天天日| 久久精品系列| 丁香五月五婷| 久久这里面只有精品视频| 大香蕉中文| 五月色亭丁香| 野战J办公桌椅H| 天天爽人人综合免费7799| 拳交大逼| 综合在线丁香五月| 久久久妻人人人| www.91在线观看| 亚洲正能量欧美| 国产欧美日韩综合精品一区二区| 婷婷综合色色| 日日操天天操| 99成人免费热视频| 欧美综合丁香网| 激情四射五月天偷偷看婷婷| 久热91精品| 色婷婷性爱| 婷婷激情六月中文| 国产成人精品一区二区三区视频| 激情五月久久| 99热9| 99热主页日本| 热99在线精品| 五月天婷婷久久视频| 激情五月天色婷婷| 五月久久亚洲| 亚洲五月天综合| 亚洲中文无码成人| 日本精品在线噜噜噜| 99热日韩| 91婷色| 99毛片| 色五月偷偷| 香蕉伊人综合| 综合www色| 亚洲久艹| 91九九热| 色444综合网| 91丁香婷婷综合久久欧美| 五月停视频天堂| 久久ri精品| 丁香五月瑟瑟| 91人人妻人人操人人爽| 91九色 熟| 婷婷性爱五月天丁香网| 狠狠狠狠草草| 婷婷五月娱乐在线| 9久热在线精品| 欧美男女婷婷| 六月综合婷婷开心伊人| 《久久综合九色综合97婷婷| 日韩色色一区| av在线播放网址| 九洲一级A片| 久99视频| site:901-07.com| www.99热最新视频8| 密臀久久| 天天干夜夜欢| 天天做天天爱天天做| 强伦轩人妻一区二区电影| 五月天色丁香| 综合狠狠干| 婷婷香五月天| 亚洲人妻av伦理| 午夜伊人大香蕉| 99热九九九九| 色爱99| 日本综合色图| 丁香五月婷婷动漫视频| 99热精品综合| 九九亚洲视频| 色九亚洲| 亚洲精品大片| 婷婷成人基地| 婷婷久久婷婷色五月| 亚洲欧洲午夜成人精品av| 日韩欧美一级大黄网站| 色色色精品无码区| 色欲五月婷婷| 五月激情站| 五月婷亚洲精品AV天堂| 婷婷五月天激情小说| 色五月 婷婷, 大香蕉| 久久丁香社| 亚洲欧洲另类| 久久一二三视频| 99热这里是精品| 这里只有精品1| www.9操| 激情 婷婷| 激情综合网丁香| 欧美综合在线五月天色婷婷| www.婷婷.com| 久久精品99| 狠狠婷婷色| 亚洲色人妻| 热的国产,热的综合,热的有码| 五月天深爱激情网| 久久婷婷网| 无码成人AAAAA毛片AI换脸| av五月天婷婷丁香| 激情五月丁香社区| 狠狠干总合| 天天操夜夜操| 九九热最新| 97超碰欧美中文字幕| 天天操夜夜爽天天操| 五月开行婷婷色五月| 亚洲网视屏| 国内一级片| 久久香蕉福利| 色婷婷AV五月天| 8区视频在线| 天天日天天肏天天奸| 五月婷婷亚洲| www.人人操人人看人人想人人摸 人人人人操,COM | 九九热区一区二区三区| 激情丁香六月| 婷婷在线中文字幕| 天堂久久精品| 99热精地址| 99精彩视频| 毛片蕉地一二| 五月综合激情久久| 亚洲精品永久久久久久| 人妻内射一区二区在线视频| 日韩欧美成人片| 开心日韩丁香婷婷五月| 激情婷婷丁香五月天| 婷婷五月丁香基| 啪啪综合网| 5月婷婷6月六月丁香| 日本欧美成人片AAAA| 久久久大香蕉| 亚洲六月色| 性做久久久久久久免费看| 97色在线观看视频| 天天五月情| 婷婷五月天网| 狠狠爱激情网| 热久久99热欧美国产亚洲| 激情婷婷五月天| 久久免费9| 日日操日日撸| 婷婷久综合| 爱之国产色情综合| 五月婷婷亚洲| 日韩久久欧亚| 99惹精品视频| 五月综合激情| 五月婷婷无码| 超碰在线免费9| 亚洲精品另类| 青青草婷婷综合五月| 丁香五月天激情| 六月丁香久久| 成人永久免费视频在线观看| 亚洲天堂制| 涩涩网五月天| 国产成人一区二区三区在线观看 | 99在线观看这里都是精品| 五月丁香久久网| www.久久9| AV五月婷婷露脸| 夜夜嗨一区二区三区直播内容| 久鲁鲁色网 | 中文在线视频久1| 丁香六月婷婷五月婷婷| 色五月天网| 少妇大叫太大太粗太爽了A片 | 99啪| 亚洲色五月| 99精品偷拍视频| 色婷婷www| 久久密臀婷婷| 婷婷五月天第四色| 精品人妻在线免费观看| 五月天成人在线精品| 人妻久久久久久| 五月婷婷丁香啪啪| 九九热这里| 狠狠色丁香久久久婷| 久久伊人五月天| 97色婷婷成人综合在线观看| 亚洲婷婷91丁香| 美欧日韩国产成人在战| 国产精品视频免费看| 91青娱乐青青草| 人人97碰| 99热最新精品| 色综合激情| 九九黄色网| 天天综合网在线| 99在线观看视频免费| 91欧美| 丁香五月老师| 亚洲综合网在线| www.五月丁香av| 国产在线网址1| 色色色成人网| 五月天停停日日| 99九九99九九九视频精彩| 玖玖综合色| 激情五月天婷婷| 日操五月婷| 超碰妻人人| 免费在线观看欧美激情xx小视频| 99热高清在线| 任我肏| 久久这里这里有精品免费视频| 久久久久久久人妻| 99热99精品在线观看| 大香蕉婷婷婷| 天天日日夜夜| 97色在线视频| 久久九九99| 色五月天在线| 色色综合院| 在线网黄| 国庆精品久久| 亚洲六月综合激情久久下卡| 亚洲狠狠干| 91AV婷婷| 欧日美女Va| 成人婷婷色综合| 五月天综合视频网| 丁香色色色| 亚洲国产精品SUV| 久久丁香久久| www.91婷婷| 九九亚洲视频| 99热这里只有精品最新地址获取| 久久婷婷丁香五月宗合| 99re思思热久久| 久久机热这里只有 | 影音先锋一区| 99热| 色导航色婷婷五月天在线观看| 五月婷婷中文字幕| 性做久久久久久久免费看| 色激情五月| 中文字幕黄色片| 免费黄网不卡AV| 香蕉人在线香蕉人在线 | 天天做综合| .肏屄视频一区二区| 色欲久久综合| 思思热99在线| 五月丁香黄色| 人妻丰满精品一区二区A片| 日本五月婷| 久久视这里只有精品| 婷婷丁香五月视频| 任你艹| 色J香五月天| 久热久色| 97在线/日本| 天天插天天插| 亚洲成人网站在线播放| 天天艹夜夜爽|