免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
草草影院爱爱| 丁香五月大片| 99人妻碰碰久久久禁片| 9精品在线| 日本激情ⅩXX免费视频| 婷婷五月色色| 丁香五月 激情文学| 99狠狠色| 五月天播播中文字幕 | 亚洲人人干| 69精品人妻不卡视频| 五月天综合网| 深爱五月激情五月| 色综合色五月| 日本毛片内射| www.99riav99| 亚洲成人AV高清字幕| 亚洲综合1024| 射久久丁香五月| 天天综合天天玩夜夜玩天天玩夜夜玩| 九九热视频精品2| 亚洲欧美日韩另类| AV中文字幕夜夜操b天天摸bb| www.婷婷五月| 九九这里只有精品| 天天狠天天叉| 欧美色五月| 激情五月综合色婷婷| 色情五月婷| 丁香五月综合亚洲| 婷婷性爱综合| 亚洲人妻AV| 婷婷五月另类网站| 深爱婷婷网| 伊人五月天婷婷| 成人精品一区二区三区四区五区| 天天日天天插天天操| 九热精品| 五月丁香婷婷色| www.maotanji.com| 色色色热热热| 日日夜夜狠狠| 九九色色| 日B日潘金莲BB| 超碰久热| 九九九九九九热| 97在线观视频免费观看| 婷婷碰碰| 99少妇精品| 亚洲无码九九九| 婷婷五月天渟渟| 91|疯狂丨高潮丨对白| 欧美在线视频99| 天天日夜夜拍| 91se视频| 98色丁香五月婷婷综合网| 亚洲啪| 亚洲激情四谢| 亚洲乱啪| 激情久久五月天| 成人在线不卡| 美女亚洲五月丁香| 有哪些A片网站| 五月丁香六月婷婷网站| 天天做天天爱| 狠狠操综合| 婷婷导航| 99色.com| 人妻系列久久久久久久久久久| 五月天开心成人网| 狠狠干五月丁香综合网| 五月丁香综合啪啪啪啪啪| 99re热在线视频| 久久久久9999| 日本 @ va 免费| 99热精品在线播放| 人妻精品一区二区三区| 国产一级视频a| 色呦呦在线| 天天综合网色欲香| 9色在线| 婷婷五月天va| 九月婷婷激情| 国产精产国品一二三在观看| www.99精品视频| 欧美一级色| 五月婷婷在线视频免费观看| 五月婷婷婷婷婷| 亚洲成人网站在线播放| 嫩草AV久久伊人妇女超级A| 五月天婷婷网站| 日韩精品一区二区亚洲AV观看| 五月婷婷激情| 99re视频精品| 无码人妻少妇色欲AV一区二区| 久操乱| 婷婷色色欧美| 99热的无码| 久久99热这里只频精品6学生| www.99热| 大香蕉狠狠爱主页| 天天爽夜夜爽| 色色色色色色综合| 久久亚洲激情五码| www.99热这里精品| 26uuuavcom| 欧美日韩成人在线网站| 激情综合色婷婷啪啪五月天| 思思久久99热| 操逼巨乳91| 精品一区二区三区免费毛片爱| 99热黄| 日本综合久久| 五月婷婷|欧美| 五月综合色| 午夜日韩久久久网站| 99色最新在线视频| 亚洲欧美婷婷五月色综合| 亚洲网综合在线| 玖玖在线视| 丁香五月天啪啪激情综和网| 色色热| 爆乳熟女一区二区三区爆乳| 丁香涩涩爱| 婷婷五月天视频| 日韩无码系列| 黄色AAAAA| 色狠狠综合| 超碰在线观看9| 一本综合丁香日日狠狠色| 亚洲第一成人无码A片| 色色亚洲五月天| 99色色网| 综合激情啪啪| 久久婷婷五月| 天天日天天舔天天摸| 色婷婷丁香五月在线观看| 五月婷婷激情综合| 丁香五月 综合| 亚洲精品99| 亚洲午夜在线视频| 26uuu91| 五月天婷婷影院| 九色无码| 五月婷婷av| 日本三级片片| 99九九在线视频| 婷婷激情97| 狠狠色狠狠色综合日日91 | 99精品在线观看视频| 亚洲第一av| 久久人妻在线| 日本道久久91| 婷婷爱五月天| 婷婷七月丁香色色| 99riAv1国产在线观看| 亚州第一A片| 另类综合国产| 色约约视频一区二区三区四区五区 | 精品夜夜澡人妻无码AV| 婷婷五月天激情在线观看 | 99视频综合| AAAA亚洲| 人碰人人人玩91| 99亚洲大片精品永久在线观看 | 五月天激情综合首页| 99热偷拍| 九九九九九无码| 国产精品色色| 伊人婷婷色激情丁香| 最近中文字幕大全免费版在线 | 翔田千里无码| 久久午夜丁香| 大香蕉综合| 五月婷婷丁香综合| www.夜夜| 国产精品热搜丁香五月婷婷| 男人的天堂97| 激情五月天电影| 日韩成人综合网| 婷婷在线精品| 婷婷丁香五月天色区| 久久综合久色欧美综合狠狠 | 日韩中文字幕| 色色色色色网站| 操婷婷基地| 天天爽天天日| 天堂AV三级| 北京熟妇搡BBBB搡BBBB| 激情五月,色播五月| 六月丁香啪| 激情五月天偷拍综合网| 亚洲综合激情五月天婷婷| 婷婷五月天影院| 亚州激情在线视频| 激情国产五月| 亚洲精品国产成人AV在线| 久久之人妻| 国产人妻777人伦精品HD| 深爱激情五月天婷婷网| 婷婷五月天亚洲综合| 成人短视频在线| 亚洲丁香五月综合| 七月激情六月婷婷综合在线播放| 操人无码| 婷婷五月综合视频| 超碰久热| 日韩无码性爱| 成人精品视频99在线观看免费| 天天操天天日天天操| 日韩无码系列| http:色情日本com| 玖玖99免费视频| 性色播| 影音 五月 婷婷 久久| 天天色噜| 日韩六十路91性交电影| 91九色小视频| 91精品刘玥| 色激情五月| 这里只有精品99视频| 夜夜操夜夜操| 综合激情五月丁香9999久久精| 九月丁香网婷婷| 久久hd| 五月久久噜噜| 色99网| 日韩人妻AV在线| 色偷偷色婷婷| www.五月天激情| 欧美影院婷婷| 碰人人操| 久久这里只有精品视频15| 成人五月天丁香| 爱草视频在线| 国产精品久久99| 五月 婷 久| 午夜丁香| 99热1| 久久精品永久免费| 性爱AV天堂| 97超级操操| 大陆极品少妇内射AAAAAA| 久久婷婷网站| 干一干xxxx| 久久婷婷一级片| 色吧五月| 91人人网| 激情五月天啪啪| 亚洲偷| 日日综合网| 久久精品性爱| 婷婷五月天综合久久| 婷婷五月天激情综合婷婷五月天激情综合| 99综合久久| 成人精品网站在线观看| 91大操| 激情六月天| 色九区| 日本狠狠网| 色综合久久久久久久久五月| 亚洲 无码 中文字幕 中出| 亚洲国产婷婷色五月| 综合色婷婷| 狠狠久久婷五月综合色| 蜜臀久久99精品久久久久久酒店| 超pen个人视频97| 深爱婷婷网| 婷婷五月在线观看| 五月天偷拍| 婷婷五月天综合小说网| 无人精品在线视频| 五月婷婷色| 九九精品热| 淫水导航| 性生活视频98791| 六月丁香深深爱| 亚洲综合新99视频| 丁香婷婷免费| 婷婷六月激情丁香| 婷婷六月色情| 婷婷五月情天| 天天插天天射| 激情六月婷婷| 色色色综合色| 欧美在线视频99| 综合网五月| 婷婷五月天综合在线| 成人片在线播放| 丁香五月区| 久久92| 噜噜噜狠狠色综| 综激情网| 激情五月婷婷综合| 色欧美色色色| 一级性感毛片| 久久婷.com| 五月激情啪啪啪| 99久久综合网| 五月六月丁香婷婷在线观看| 综合色色婷婷| 日日操日日撸| 超碰人妻在线| 在线观看国产高清视频免费网站| 激情综合丁香六| www99精品在线观看| 久久九九99视频| 99碰碰碰| 黄网网站在线播放| 五月综合激情图片| 人。妻久久| 婷婷八月丁香激情综合| 天天干 夜夜爽| 涩五月婷婷| XX色综合| 婷婷综合一二三| AV五月丁香| 五月丁香六月婷婷啪啪综合| 日日操,夜夜爽| 丁香婷婷色| 国产精品国产| 亚洲乱码日产精品BD| 亚韩精品视频1区| 五月花激情网| 第2色五月婷| 另类国产综合| 成人版视频在线观看| 五月天色婷婷综合| www.com在线操视频免费观看| 97人人看一| 六月99天天婷婷激情综合| 婷婷5月天激情综合| 色狠狠色噜噜噜a天堂一区| 香焦网五月天| 亚洲欧美在线观看| 狠狠爱婷婷| 人妻系列久久久久久久久久久| 99热这里只有精品50| 五月天婷婷基地| 色爱亚洲| 五月丁香婷婷啪啪综合| 天天插夜夜爽| 五月天久久婷婷| 九八Av| 黑人熟妇一区二区三区| 五月丁香狠狠爱婷婷综合| 激情五月天无人视频在线| 97人人干人人操| 色色婷婷综合| 激情五月天黄色小说| 精久久色| 狠狠操狠狠| 91熟妇大香蕉| 丁香六月激情综合网| 丁香五月天资源网| 婷婷丁香五月天综合在线日韩| 91丨九色丨熟女|老版| 91dy.av| 五月婷婷亚洲| 免费超碰在线| 天天日,夜夜爽| 色综合色五月| 久久丁香婷婷五月| 天天舔日日肏夜夜爽| 日韩成人电影AV| 9色天堂| www.天天干.com| 综合在线色婷婷| 中文字幕日产A片在线看| 操久久精| 婷婷天天婷婷天天澡| 欧洲色色| 99在线观看视频免费| 天天爽天天| 丁香六月天婷婷色| 欧美黑人巨大猛烈cuckold| 97在线精品| 婷婷五月激情五月丁香五月| 九九亚洲视频| 一起操最新网址| 99re这里只有精品国产99| 殴美综合激情五月天免费视频| 色日本颜射| 性爱网久久| 丁香五月情色| 亚洲av综合网| 婷婷涩涩五月天| 玖玖热视频| 色色五月婷婷网| 日本五月婷婷久久久六月丁香| 色啪综合| 色色激情五月天| 五月天婷婷基地综合网| www.射伊蕉婷婷| 色婷婷丁香五月在线观看| 久久婷婷综合五月| 米奇影视五月天| 色色色热| 激情五月天之五月婷婷| 色五月婷婷777| 袁子仪视频观看| 婷婷五月天社区| 开心婷婷五月天综合| 色9999日韩国产| 7超碰自拍| 久久99精品久久久久久噜噜| 色婷婷中文在线| 91碰碰视频| 五月激情射| 99网99热| 欧美影院婷婷| 99热在线播放| 婷婷深爱色五月| 国色天香成人网| 婷婷久久久久久久| 欧美搡BBBBB摔BBBBB| 久久五月天合网| 九九热精品| 国内婷婷丁香社区在线播放| 六月婷婷毛片| 五月婷婷五月丁香| 五月婷婷亚洲| 婷婷丁香成人| 婷婷射图五月天| 精品热九九| 欧美VA在线| 99 福利 导航| 超碰国产在线| 五月丁香六月婷婷亚洲激情综合| 九九热视频在线观看| 色婷六月| 丁香婷婷啪啪| 99热这里只有精品最新| 欧美人久久| 五月丁香六月在线| 激情狠狠丁香月| 1024AV视频| 五月综合激情视频在线| 久久久五月天| 狠狠爱深色婷婷综合| 色久五月天| www.五月天色色.com| 99亚州综合精品成人网| 九色视频这里只有精品| 狠狠色噜噜狠狠| 精品久久99| 婷婷色五月亚洲| 日韩三十六页| 色情五月婷婷| 激情综合五月色丁香婷婷| 日本偷拍九九九| 99免费成人网| www.久久色.com| 亚洲无码成人| 夜夜做夜夜愛| 久久婷婷色| 香蕉人妻AV久久久久天天| 色在线视频网2025| www.天天干.com| 久草婷妨| 久热只有精品| 婷婷五月天第三页| A√天堂网在线| 五月天婷婷Av| 五月丁香五月婷婷| 丁香五月婷婷AV在线| 五月丁香六月激情综合网| 丁香婷婷狠狠97| 大香蕉99热| 国产一区男女| 婷婷色婷婷亚洲成人| 99久| www狠狠| 久久99热这里只有精品| 婷婷六月丁香激情综合| 色色五月天网站| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 欧美在线干| 日本va欧美va国产激情| 亚洲AV无码久久精品色欲| 丁香六月婷婷综合欧美| 丰滿爆乳一区二区三区| 五月天开心网| 久久婷婷五月综合伊人| 五月天婷婷无码视频| 五月丁香大香蕉| 久久天堂女人| 熟惀91九色在线| 日本片日本片祼观看网站在线看中文版网页在线看| 中文字幕久久一区二区三区| www.国产亚洲69ty.久久久久久久久久久久| 在线综合91| 无码免费人妻A片AAA毛片西瓜| 超碰在线免费| 天天日综合| 婷婷五月天亚洲激情戏精品| 欧美激情 日韩无码 婷婷 五月天| 9l视频自拍九色9l视频在线观看| 亚洲综合欧美色丁香婷婷888月图片| 99热这里只有精品8| 爆乳熟妇一区二区三区爆乳| 日日噜噜夜夜狠狠久久丁香五月| 亚洲精品国产精品乱码不99| 丁香成人综合| 色五月婷婷丁香国产在线| 99热e| 九月激情综合婷婷| 五月婷婷亚洲色图| 9 1 A v久久久| 精品国产AV色一区二区深夜久久| 国产日比| 九九香蕉网| 另类小说五月天| 色综合中文| 26uuu亚洲| www.av骚货| 亚洲综合五月天综合| 99热最新精品| 華人性愛AV在線| 99热日韩| 99 热国产在| 操久久网| jiqingtaose五月天| 另类A片| 色婷婷88| 九九色色网| www.色9| 五月婷婷婷综合网| 亚洲一级色电影| 日韩超碰在线| 久久99久久99久久99人受| 99热亚洲| 色五月丁香六月资源站| 99爱在线| 天天色官网| 婷婷五月天日本无码| 五月天成人在线播放丁香| 色婷婷五月天综合网| 精品少妇蜜臀91| 五月丁香六月欧美| 婷婷六月五月天综合| 玖玖资源站蜜臀| 婷婷深爱五月丁香| 国产97色在线 | 日韩| 国产激情在线| 99热这里只有精品2| 99色色视频| 中文字幕按摩做爰| OYIWbGcPu8H| 五月丁香综合久久夜夜| 九九热re99re6在线精品| 91色综合网| 丁香色五月婷婷17C| 亚洲亚洲激情| 五月开行婷婷色五月| 五月天播播| 91九色国产| 婷婷网五月天| 九色视频九色九色91jiuseshipin| 9久热在线视频| 国产精品视频网| 超碰91av| 亚洲第精品| 99视频这里有精品免费观看| 亚洲成人av在线| 亚洲色色色| 99精品丁香五月| 久久久久久久久久久月丁| 色综合久久88色综合天天99| 婷婷另类开心| 色久丁香五| 丁香五月影院| 日本美女97在线视频| 婷婷伊人视婷婷婷| 婷婷丁香社区网| 9这里只有精品| 五月婷在线| 天天爽天天日| 婷婷日韩| 天天日日夜夜爽| 99思思热只有在这里看| 婷婷在线免费| 丁香色色五月| 玖玖资源站国产| 青青草原福利在线| 色色色9| 色色色色色色色五月| 日韩人妻在线观看| 丁香五月天天高清在线| 色久天| 丁香深五月婷婷| 久久综合九九| 婷婷网五月天| 国产乱妇乱子在线播视频播放网站| 婷婷综合av| 99精品这里只有免费视频| 色五月人妻| 乱精品一区字幕二区| 国产色视频网站2| 成人五月天在线视频在线观看| 五月丁香成年黄色| 婷婷丁香成人色综合| 丁香婷婷五月激情| 五月天五月天激情网| 人妻啪啪啪| 五月亭亭欧美女人| 色婷婷五月天综合网| 五月天激情国产综合婷婷| 狠狠色狠狠色综合日日91| 五月丁香婷婷综合在线| www.婷婷六月天| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | www热久久yy9| 操逼棍操逼| 91操人视频| 欧美日韩国产一区| 激情深爱五月| 色婷婷性爱网| 久久九九免费大视频| 99热播放| 玖玖99精品视频| 99视频在线观看欧| 拍真实国产伦偷精品| 啪啪黄页网| 色婷婷色婷婷五月| 97啪在线观看视频| 五月色导航| 久久久久久久人妻| 高清不卡一区| 成人五月天丁香婷| 色婷婷狠狠久久YY| 99精在线| www.久久久久久久久久.com| 婷婷娱乐丁香综合网| 99久久久久| 啪啪综合网| 丁香伊人网| g00d人体西西| 99激情视频| 97人人操人人操人人操人人| 五月色丁香视频精品| 极品人妻VIDEOSSS人妻| 婷婷五月天,影院| 中文av网| 天天天操天天天爰| 五月婷在线| wWw色五月| 激情开心五月天| 九九国产视频| 99热免费| 色婷婷五月天激情久久| 久久精品国产一区二区三区四区| 丁香 婷婷五月| 欧美槡BBBB槡BBB少妇| 婷香五月网在线| 婷婷五月天综合网| se色99| 国产成人精品一区二三区熟女在线| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 日韩性爱AV| 五月天激情网页| 91呦呦呦| 丁香五月婷婷基地| 99久久久久久| 五月婷婷激情网| 五月丁香啪啪激情| 丁香五月婷婷色综合| 色色哒五月婷婷六月丁香| 五月婷婷,六月婷婷| 丁香五月六月婷婷综合| 午夜色婷婷| 99无码| 色婷婷五月天激情综合 | 五月丁香婷中文| 丁香五月亚洲综合| 丁香五月婷婷五月天| 久久综合性| 婷婷五月天社区| 久久在线人妻| 另类视屏| 天天做天天爱天天爽| 99成人精品| 超碰在线观看caop| 色色五月天激情| 青青草a在线| 久久婷婷七月丁香| 超碰国产在线观看| 五月天婷婷三级黄| 91碰免费视频| 日韩av在线电影| 天天操夜夜夜夜爽| 五月深情久久| 久热这里只有精品6| 婷婷深爱五月天在线| 97sese婷婷| 久久婷婷视频| 五月天成人在线| 丁香 久久| 婷婷五月天AV| 99色性爰网络| 高清无码.com| 久久婷婷色综合老司机| 无码任你操| 五月香六月婷| 亚洲精品99| 中文字幕操比影片| 久99| 婷婷激情五月天激情| 涩五月婷婷| 亚洲传媒在线观看| 天天婷婷综合亚洲亚洲| 亚洲色情在线| 亚洲色色图片| 伊人玖玖婷婷| 三人荫蒂添的好舒服A片| 五月天另类激情在线| 操国产人妻| 91日视频| 一本色道久久综合狠狠躁一二三| 日韩婷婷| 丁香五月天色婷婷| 另类图片 五月激情| 国产精品色婷婷99久久精品| 五月综合激情久久| 激情综合五| 色婷婷色99国产综合精品| 婷婷五月天激情综合| 91.com男女操| 丁香五月婷婷少妇| 女人高潮内射99精品| www.五月丁香| 色五月丁香伊人五月| 立川无码av| 大香蕉五月天婷婷丁香91| 桃色五月婷婷| 99热这里| 天天干 夜夜爽| 亚洲VA口| 香蕉AV777XXX色综合一区| 九九热这里都是精品6| 日本视频99| 另类图片五月天激情| AA片在线观看视频在线播放 | 79精品视频| 伊人六月丁香婷婷| 六月婷婷俺也去| 丁香五月自拍| 色哟哟精品| 欧美丁香五月| 青青999| 狼人伊人天堂| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 天天人人天天爽| 九九热这里只有精品23| 91视频精品99| 在线观看av网站| 狠狠综合区| 97sese婷婷| 国产精品 的国产| 日韩在线视频9色| 狠狠精品干练久久久无码中文字幕| 综合网亚洲| 九九精品99| 九九99九九99九九99视频网| 久99久99精品免| 色婷婷五月天在线观看| 五月天亚洲色| 五月婷婷五月天在线| 久热视频这里只有精品| 在线可以看的av网址| 午夜婷婷六月天| WWW.99热| 五月天婷婷爱| 99热97| 成年人最刺激的综合网| 色婷久久| 伊久久婷婷| 五月婷婷三级| 综合五月婷婷| 噜噜在线| 亚洲妇女熟BBW| www.色五月| 色网五月婷婷| 99久热在线精品99re6热| 婷婷丁香五月天色色| 99在线小视频| av激情在线| 色琪琪一综合久久激情五月视频| 婷香五月| 99热久只有| 在线综合婷婷| 婷婷五亚洲| 免费视频99| 婷婷五月综合久久中文字幕| 久久婷婷六月综合| 五月婷婷无码| 久99在线| 91色吧网| 亚洲五月天色| 开心五月综合激情综合五月| 日韩99色99| 超碰人人99| 久久婷婷六月综合| 国产成人一区二区三区在线观看 | 综合狠狠干| 99热这里只有精品最新网址| 五月丁香六月| 99免费热视频在线| 51精品国自产在线| 人人操大| 亚洲sesesese| 天天综合亚洲综合| 99无码视频| 四色五月婷婷| 婷婷操无码| 91|九色|动漫| 爱之国产色情综合| 久久色五月天综合网| 原琪琪色影院| 亚洲日本韩国| 久久色9| 五月丁色AV| 婷婷五月天激情基地| 大香蕉婷婷五月天| 五月开心播播网| 碰碰人人漕| 欧美日韩大黄| 99热色精品| 五月天偷拍| 亚洲成人综合网在线免费观看| 棕合影院色色| 综合在线丁香五月| 五月 激情视频| 欧美交换配乱吟粗大25P| 99精品网址| 色婷婷综合久色AV五色最新| 深情五月天| 天天插天天射| 99热在线爱| 26uuu四色| 亚洲综合五月| 国产在线aaa片一区二区99| 五月天停婷基地| 夜夜www| 爱久综合| 激情五月婷婷丁香综合网| 九九99精品视频在线观看| 九一99| 婷婷丁香在线| 色天使色婷婷| 日日日影院| 狠狠操综合| 久久99看免费| 丁香五月天BBw| 色婷婷小说| 婷婷丁香五月天熟女丝袜| 这里只有在线精品| 欧美婷婷日本| 东京热人妻一区二区三区在线| 日韩三级片一区二区| WWW.17C亚洲精品| A片天天| 激情文学天天| 亚洲1区| 大婷婷色呦呦噜噜色呦呦噜噜| 99国产精品久久久久久久久久久| 99色天堂| 99综合| 91碰人人| 日日想日日夜日日操| 亚洲色在线观看| 密乳Va| 五月天激情www| 久久综合久色欧美综合狠狠| 色婷婷五月影视| 五月久久婷婷丁香| 丁香五月婷婷99| 五月丁香做爱视频| 久九男女天堂| 精品婷婷五月视| 九九在线精点品| 色色色国产| 欧美色色色色色色| 久久精品噜噜噜成人A∨色欲| www激情网| 国产成人精品一区二三区熟女在线 | AV在线免费观看不卡| www.狠狠操.com| 亚洲中文乱字字幕在线永久| 亚洲熟女色| 91九色在线视频| 精品亚洲日韩99欧美片| 五月开心色| 67久久| 色婷婷在线视频综合| 一本大道熟女人妻中文字幕在线| 激情综合自拍五月婷婷色五月| 六月激情婷婷| 伊人激情啪啪| 狠狠爱综合| 性爱网五月天| 超碰激情网| 99 re视频一区| av在线激情| 人妻激情综合| 色婷久久| 亚洲色色色色色色色色色| 91Chinese在线| 亚洲午夜AV| 婷婷色五月天在线观看| 99九九久久| 天天色天天日| 久一这里有精品国产| 日日干夜夜干| 婷婷久久六月费| 成人AV片播放| 老司机日日夜夜青草| 色婷婷玖玖影院| 婷婷五月在线观看| 99网址在线看| 久久免片| 五月婷婷这里都是精品| 岛国在线观看91| 日日舔夜夜操| 五月婷婷九九热| 婷色五月天| 在线国产精品色| 极品人妻VIDEOSSS人妻| 久久99久久99精品免观看软件| 蜜臀综合久草| 五月天亚洲综合网| 五月婷婷亚洲| 婷婷五月天激情小说| 婷婷黄色五月天在线视频| 日韩艹比| 99热久| 久久人操| 少妇高潮呻吟A片免费看软件| 婷婷五月丁香婷婷| 婷婷色色宗合网| 96精品久久久久久久久| 久久久中文| 国产XXXX搡XXXXX搡麻豆| 五月婷婷激情综合视频| 成人在线视频一区| 综合色久| www激情网| 色涩影院六月丁香| 狠狠干综合| ji'qing'luan'ren'lun| 六月色 亚洲| 色五月成人| 婷婷综合成人五月天| 九九精品系列| 丁香婷婷久久| 丁香五月综合在线播放 | 色爱综合网| 开心久久xxx色| 任你干aa| 色丁香五月婷婷| 欧美韩日AAA网站| 大香AV| 色五月婷婷久久| 99热精品在线免费观看| 色999五月色| 五月成人丁香av91| www99精品| 九九热在这里只有精品| 婷婷色五月开心五月| 人妻AV在线| 99视频这里有精品| 激情五月综合视频| 日韩性爱无码| 五月丁香六月激情| 欧美Va日本Va| www.狠狠操.con| 超碰电影在线播放| 婷婷色影音天| 婷婷五月天AV| 人人爱人人添| 人人草成人视频| 成人短视频免费观看| 91超级碰| 伊人玖玖网| 99热这里只有国产精品| 欧美色图天堂网| 激情碰碰碰| 五月激情天| 综合激情在线| 亚洲五月天婷婷在线| 色六月丁香婷婷啪啪啪| 狠狠色丁香婷婷| 中文字幕日产A片在线看| 91成人视频| 婷婷五月天六点丁香五月| 综合激情五月四射婷婷| 99综合熟女| 色五月,com| 五月婷婷成人| 狠狠色丁香婷婷久久综合| 九九热这里只有精品一| 五月丁香婷婷爱激情综合网| 欧美人人女女精品综合五月天| 艹B高清无码| 婷婷五月天久久久| 91丨九色丨熟女|老版| 五月婷婷视频28| 天天爱天天做天天舔| 超碰在线精品| 色色色婷婷| 午夜激情四射影院| 免费无码毛片一区二区A片| 丁香六月在线| 超碰人人干| 丁香五月天天高清在线| 天天天天天色| eeuss人妻| 婷婷五月激情欧美| 六月婷婷网| 九久热| 另类五月激情| http:色情日本com| 五月丁香婷婷综合| 亚洲婷婷免费| 99综合久久| 亚洲午夜电影| 丁香五月中文字幕色播| 久久人妻伊人| 久久开心五月婷婷| 99热这里只有精品23| 激情综合网五月天天| 六月丁香婷婷视频综合在线观看| 综合激情在线视频| 日本3级片一区2区| 五月天婷婷激情网| 9热在线视频| 五月婷天堂视频| 久色大香蕉| 五月色丁香婷婷综合| 婷婷综合国产| 99在线看视频| 日本97在线看片| 怡春院天天干| 婷婷五月激情视频网| 996黄色片| 丁香六月天婷婷| 国产综合丁香五月天| 91窝窝| www.91在线看| 婷婷五月丁香花综合| 天天搞天天色综合| 欧美在线操| 激情五月婷婷| 人妻自慰在线| 欧美激情Va| 最新五月天婷婷影| 激情婷婷五月天在线观看| 五月丁香激情婷婷综合| 婷婷五月伦理网站| 丁香六月婷婷色XXXXX| 五月天婷婷影院| 亚洲第一成人无码A片| 九色视频91| 久久狠狠干| 五月丁香成人网| 国产精品美女久久久久AV超清| 日韩一级一片内射视频4K| 五月丁香久久激情综合| 五月婷婷97| 日韩超碰在线| 天天综合网、天天综合色| 亚州激情网站无码| 久热a| 综合久久99| 性爱网五月天| 操一区| 在线视频婷婷| 日韩激情网站| 欧美六月| 精品国产va久久久久久久| 岛国av电影网站| 婷婷八月丁香激情综合| 国产成人网| 国产午夜伦鲁鲁| 久久五月天丁香| 五月丁香激情四射| 五月色丁香综合| 色偷偷狠狠| 久久婷婷综合国产| 这里只有精品视频| 六六久久黄色| 人人干99| 97激情五月天| 五月婷激情| 思思精品视频| 久久艹 五月天| 超碰av天堂| 欧日韩AV| 五月丁香啪啪综合| 在线播放成人网站| 男女啪啪做爰高潮无遮挡| 久久精品女人天堂AAA| 五月丁香久久| 天天干天天叉| 97色干| 操操综合网婷婷| 天天色天天射天天日| 6080av| 伊人婷婷大香蕉| A片试看120分钟做受图片| 九九九九九九毛片| 亚洲激情淫网| 能看的av网站| 蜜桃人妻无码AV天堂三区| 九九美女视频| 思思热久在线观看视频| 色五月天成人| 五月天色综合| 成人网丁香五月| 激情综合色五月六月婷婷| 久热免费视频| 亚洲第一成人无码A片| XX久久| 久久人人人人妻| 超碰在线成人| www.99精品日操伊人乱碰在线| 久久综合激情| 婷婷五月天黄色小说| 久久人妻精品| 99超碰人人| 色青青视频| 亚洲超碰在线| 91九九精品| 激情五月综合六月丁香婷婷狠狠干| 类似婷婷激情综合网站| 丰满少妇猛烈A片免费看观看| 91色九| 天堂草在线观看| 五月天婷婷综合| 棕合影院色色| 五月天综合婷婷| 99在线精品视频| 99色热视频| www五月天com| 国产AV一区二区三区日韩| 久久久中文| 婷婷色片| www狠狠爱com| 色五月天综合| 婷婷深爱五月天| 六月色播| 99热精品无码| 91午夜婷婷狠狠久久综合9色| 色久播播| 97资源碰碰| 色五月综合97| 凹凸操Av| 国产AV影片| 很很操96| 99精品视频网站| 二级黄色毛片| 丁香婷婷视频| 99热传媒| 婷婷六月激情丁香| 欧美韩国日本| 五月天久久久| 色婷婷操逼| www.日本91| 五月色婷婷综合| 99久久人人| 五月婷久久在线| 无码少妇高潮喷水A片免费| 欧日美女Va| 夜夜骑夜夜撸| 99九九久久| 久久9视频| 超碰99久久| 99久久99久久| 97色天堂| 五月婷婷激情久久| 色爱99| 五月婷婷色| www.yw色| 天天舔天天爽| 亚洲狠狠婷婷| 人妻久久人妻久久第一区| AV在线不卡网站| 色综合五月| 国产精品A片| 婷婷五月天免费99| 天天射天天射一道本日本社区 | 婷婷久久五月丁香| 天天色丁香| 影音先锋一区| 五月丁香久久综合| 日本三级日本三级99| 99在线精品观看99| 大香蕉520| 激情综合网五月天| 欧美丁香婷婷天天操| 成人短视频在线观看| 久久亚洲色导航| 人妻体体内射精一区二区| 婷婷五月天xxx| 爱99干99| 伊人五月天久久| 九艹在线| 中文aV网| 久久婷婷午夜| 五月丁香激情在线| 任我肏视频精品| 人人干av| 久久天堂网| AV人人操| 婷婷五月激情丁香激情| 激情操逼婷婷| 丁香 婷婷 亚洲 熟女| 亚洲久艹| 亚洲黄色精品| 婷婷丁香射射| 亚洲成人AV电影在线| 五月天,激情四射,婷婷频道| 99日本视频| 丁香婷婷五月天激情四射| 五月婷五月婷伊人伊人五月婷| 欧美 日韩 人妻 高清 中文| 婷婷激情啪啪| 色欲婷婷五月天丁香| 五月综合色| 五月丁香久久久日婷婷久久婷婷日| 五月婷久久久久综合| 五月亭亭性| www,久久久| 成人国产欧美大片一区| 婷婷五月天黄色小说| 激情视频91| 99热| 99人人操人人摸| 青青久久大香蕉| 婷婷五月色天| 天天干天天爽天天爽| 婷婷五月天丁香社区| 99免费在线视频| 我要看激情五月天| 久久香蕉丁香| 99热免费| 五月丁香在线观看| 99色视| 精品五月花| 九月婷婷久久| 久久成人天| 99riAV国产精品视频| 99精品国产在热久久| 亚洲中文乱字字幕在线永久| 好好干Av| 91九色成人原创视频| 99热激情| 色婷婷五月天视频在线| 99热伊人| 丁香色色五月| 亚洲视频99| 丁香六月色婷婷| 天天噜天天插| 亭亭玉月丁香| 国产欧美精品AAAAAA片| www.婷婷,com|