免费国产精品自在自线-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
返回資訊列表
婷婷久久五月天中文字幕在线观看| 欧美激情-区二区三区| 日韩1区2区| 9.1综合网| 99re热视频这里只精品| 五月天婷婷伊人| 天天做天天要天天爱| 色综合久久久久| 99精品视频免费观看,| 玖玖婷婷色欲| 三级三久久线久久99久目本WW| 91成人品| 婷婷五月六月丁香| 婷婷久久爱| 婷婷丁香五另类网站| 2025最新亚洲激情在线| 激情婷婷五月天丁香| 久操人妻| 99热欧| 五月婷婷综合在线| 婷婷的久久网站| 色五月婷婷婷婷| 99久久99久久综合| 亚洲精品国产成人AV在线| 中文成人在线| 色99视频| 色五月婷婷老师| 日韩三级高清无码| 久热这里只有精品6| 九九色中文| 香蕉99网| 丁香伊人五月色婷婷五十路 | 啊V视频在线观看| 婷婷97狠狠成人网站| 五月婷婷九| 色高清无码视频| 丁香九月激情| 色婷婷99| 91在线日| www99热| 开心激情网五月天| 啪啪啪五月天| 五月花丁香婷婷| 婷婷丁香成人在线视频| www..999热久| 色综啪啪啪啪啪啪| 丁香五月婷婷婷桃花影院| 九九综合| 久久人人做人人妻人人玩精品va| 99免费热视频| 婷婷五月激情视频在线| 五月天国产| av操一操| 久热99热| 精品思思久久| 人人干天天操五月丁香| 26uuu欧美激情另类| 欧美五月丁香在线观看| 色丁香婷婷| 99精品视频在线| 99riAv1国产在线观看| 亚洲国产网址| 成人五月天丁香婷| 26uuu.| 婷婷五六月丁香| 九月丁香婷婷综合| 99在线观看精彩视频| 五月天婷婷六月激情网| 色丁香五月综合网| 91激情五月开心| 天天日天天舔| 色屌丝中文字幕| 婷婷久久五月| 日本不卡高字幕在线2019| 色一情一乱一乱一区91Av| 91九九| 香蕉婷婷| 久久人视频| 69精品人妻不卡视频| 99色在线免费观看视频| 丁香色婷婷| 影音先锋按摩| 色XX综合网| 五月天国产| www.狠狠| 最近免费中文字幕大全高清大全1| 天天日夜夜曹| 丁香婷婷大香蕉| www.狠狠| 欧美情色电影一区二区| 伊人啪啪网| 68热超碰在线| 婷婷成人在线| 激情综合网婷婷久久| 丁香五月香蕉在线| 婷婷成人五月天成人文学小说| 五月婷婷色播| 色播播之激情五月婷婷| 91碰超| 狠狠色综合网| 婷婷的五月天另类视频| 美女激情综合| 99综合一区| 日日激情网| 丁香五月婷婷网| 人人干99| 18久久| 久99久视频免费观看| 色就是色婷婷五月亚洲激情| 成人丁香婷婷| 白人荫道BBWBBB大荫道| 久99视频在线观看| 色狠狠色综合| 99热在线观看| 色综合婷婷| 丁香五月婷婷呀| 丁香五月婷婷五月| 五月婷婷亚洲天堂97色婷婷| 午夜理论片最新午夜理论剧| 六月婷婷激情图片| 人妻中文字幕精品| 六月香五月婷| 伊人五月天在线| 99精品国产在热久久| 1024在线视频| 性天天中文网| www.久久99| 婷婷亚洲色| 色色色色区| 呦呦v线| 99色色视频| www,999日本色| 色射影院| AV在线免费网站| 91聚色综合网| 丁香网五月天激情| 丁香六月婷婷基地| 久久婷婷五月激情网站| 97碰碰碰免费公开在线视频| 日日日,com| 97操碰日本女人| 久热99热| 中文字幕成人影视| 99啪在线| 五月天婷婷丁香| 夜夜操加勒比| 色婷婷五月网| 婷婷在线五月综合| 婷婷激情五月天小说校园| 亚洲精品99| 亚洲99综合| 久久996re热这里只有精品无码| WWW激情五月天| 9999久久久久| 99r这里只有精品哦| 四虎成人精品永久免费AV九九| 可以直接看的av| 丁香五月激情综合婷综| 色性五月天| 婷婷五月天成人| 九洲一级A片| 五月婷视频在线| 丁香五月伊人| 激情影院丁香五月| 九九久久五月天综合伊人| 五月婷亚洲精品| 天堂二区| 亚洲色无码| 一级AV片| 99狠狠操一| 玖玖婷婷视频| 五月丁香香蕉| 日韩婷婷五月天| 国产FREESEXVIDEOS性中国| 97婷婷色| 俺去也五月| 五月婷婷亚洲综合网| 9热在线观看| 成人在线高清| 九九婷婷网五月天| 天天射色五月天| 最新国产AV| 综合九九| 婷婷伊人视婷婷婷| 亚洲色情久久| 五月婷婷电影院| 色婷婷激情五月天在线观看| 十区AV| 久热91精品| www.激情.com.| 99亚州综合精品成人网| 色五月亚洲开心网| 91九色视频在线观看| 婷婷六月激情在线视频| 97精品在线| 91久久久久久| 婷婷五月天电影在线| 日逼影音先锋男人资源站| 色久五月天| 伦99热| 精品色| 色综合性视频| 婷婷午夜丁香| 在线看AV| 天天干天天干天天| 五月婷婷综合在线| 久久婷婷青草五月天| 97日本操| 色情综合| 六月婷婷色色色| 九九视频免费| 超碰93在线观看| 丁香五月手机在线| 丁香五月天狠狠| 五月丁香久人妻中文| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 99热在线精品播放| 午夜不卡久久精品无码免费| 天堂A∨在线| JAPANRCEP老熟妇乱子伦视频 | 成人免费黄色短视频| 日日爽天天| 青青草原亚洲天堂| 激情五月婷婷啪啪| 香港九九六区八区99| 婷综合| 天天爽夜夜爽天天爽夜夜爽| 丁香八月综合激情| 久操大香蕉| 丰滿爆乳一区二区三区| 99热成人| 久久婷婷综合五月天| 久久机热这里只有精品| 日本ww亚洲| 国产日韩av片| 五月婷婷综合社区| 视频1区2区| 曰韩少妇内射免费播放| 五月婷婷激情网| 五月天婷婷乱论小说| 国产va在线视频| 日本女人久久| 亚洲婷婷激情综合激情999精品| 婷婷激情五月综合基地| 丁香五月六月久久综合| 99久久久国产大片| 玖玖精品婷婷| 久婷久婷| 色婷婷69| 五月婷婷天堂| 爱久综合| 丁香五月天激情四射网络不好| 五月婷婷,六月丁香| 精品五月视频婷婷在线观看| 久久激情综合| 五月丁香啪啪网| 五月丁香激情六月| 狠狠色噜噜色狠狠狠综合久久成人波| 亚洲欧洲美女在线观| 激情六月天| 在线只有精品| 无码激情AAAAA片-区区| 五月天网址在线刘玥| 色区久久| 操操操B| 亚洲精品V天堂中文字幕| 色色网站| 99热久久这里只有精品| 免费看成人AA片无码视频吃奶| 可以看的AV| 亚洲欧美另类在线23p| 狠色狠色狠色狠色狠色网| 亚洲操B视频| 丰满少妇猛烈A片免费看观看| 婷婷丁香十月| 人人爱摸视频| 丁香狠狠色婷婷久久无码视频| 色色色99| 六月激情婷婷综合| 婷婷六月丁香色| www色色com| 久久综合中文| 久久五月丁香综合17C| 色丁香在线视频| 日日撸天天干| 色99在线视频| 在线中文av| 欧日韩成人| 五月天另类小说| 激情五月丁香婷婷| 亚洲精品第一国产综合亚AV | 热久91| 97超级碰| 免费黄色片子| 久久99成人性爱高清视频| 激情另类综合| 亚洲丁香五月美女| 99视频| 五月婷婷九九热| 婷婷丁香色五月| www.夜夜操| 五月香婷婷| 丁香五月五月婷婷欧美大香蕉| 久热这里只有精品在线| 无码人妻电影| 91午夜婷婷狠狠久久综合9色| 五月丁香影院| 亚洲激情久久| 99免费青青蜜臀| 狠狠色噜噜狠狠| 日本99热| 天天玩夜夜操| 精国产品一区二区三区A片 | 五月激情久久| 五月天国产成人| 亚洲婷婷六月天| 激情综合网色播五月| 婷婷六月色开 | 久久丁香五月婷婷| 另类丁香综合| 激情五月丁香在线观看直播| 色婷丁香| www.五月天色色色| 天天视频亚洲| 色99在线| 国产成人+综合亚洲+天堂| 日逼免费视频| 久久婷五月天| 99色天堂| 99re热视频这里只精品5| 久久香蕉影院| 日韩在线视频网站| 亚洲成人婷婷| 六月婷婷综合网2| 婷婷丁香成人| 婷婷五月丁香91| 东京热五月婷婷| 成人在线网| 99这里只有精彩视频| 丁香五月激情啪啪| 99玖玖免费视频| 伊人久久五月天综合| 婷婷成人视频| 91久久久久久久久久| 色婷婷丁香五月丁香| 另类图片婷婷五月天| 久久伊人五月天| 98永久精品| 五月深爱网| 99久久9| 超碰97干| 性生活视频98791| 久久综合图片| 五月丁香六月激情啪| 五月丁香婷婷啪啪| www.激情五月天.com| 色情综合| 天天肏天天肏| 99乱视频| 婷婷五月丁香基| 婷婷成人网五月天| 亚洲综合五月天| 99ri久久| 五月天激情网图片| 久久一热免费视频| 少妇2做爰HD韩国电影| 丁香五月天在线观看视频| 久久性操| 精品久久9| pom538精品视频| 大香蕉伊人丁香五月| 综合xx网| 亚洲AV久久久久久久久久久久久久久久 | 4399精品一区二区| 开心婷婷五月天激情网| 色很久综合| 天天久| 91欧美日韩| 九九操操| 五月丁香| 狠狠色噜噜狠狠狠888了| 一本色道久久88综合日韩精品| 碰碰碰91| 丁香五月婷婷啪啪| 色五月婷婷在线| 91婷婷丁香| 欧美一级色| 日本va欧美va国产激情| 五月四色婷婷| 色99www.| 国产97色在线 | 日韩| 99热综合色图| 麻豆AV一区二区三区| VA国产在线综合网站| BBWCUCKOLD精品熟妇| 婷婷五月丁香成人| 亚洲精品国产A久久久久久| 日 日干 日日做| 蒲京久久无码视频| 五月丁香六月婷| 久久五月婷婷电影| 26uuu色五月| 综合在线色婷婷| 99久在线观看| 九九成人电影婷婷| 亚洲AV网址| 直接看的av| 精品国产va久久久久久久| 黄色中文字目| 婷婷丁香激情综合色情| 亚洲综合色丁香五月天| 六月丁香婷婷综合狠狠爱夜夜爱| 免费在线观看欧美激情xx小视频| 影音先锋女人AA鲁色资源| 亚洲激情AV| 色啪网| 色亚洲婷婷| 99热99| 婷婷色激情五月天| 99激情视频热| 久久婷婷五月综合啪| 五月天激情网站| 久久九九在线视频| 五月色婷婷亚洲 | 中文字幕AV在线| 蜜臀A∨在线水帘洞| www,奇米影视| www.色婷婷| 色婷婷狠狠色| 色一区高清| 天天久久婷婷| 成人做爰黄A片免费看直播室男男| 深爱五月婷婷开心中文字幕| 九九大香蕉黄色影院| 中文字幕日产A片在线看| 婷婷五月大香蕉| 激情五月天色爱| 综合久久综合五月天婷婷| 五月婷婷丁香在线| 婷婷五月天AV在线| 五月婷婷婷| 熟女激情网| 久久婷婷的综合色丁香五月| 婷色天堂| 极品少妇XXXX精品少妇偷拍| 亚洲激情视频在线观看| 激情综合激情综合| 丁香五月天在线| 色综合久久88色综合天天99| 日韩淑女人妻luan伦激情精品一区二 | 99热6色| 婷婷五月天中文字幕| www,超碰| 九九热免费| 超碰人人在线| 色色色在线观看| 中文婷婷狠狠| 91嫩草国产线观看亚洲一区二区| 五月天激情网开心网| 欧美色色色色色色色色色色影视| 在线视频九色97| 91碰碰碰| 开心激情婷婷| 亚洲另类电影| 色婷婷五月综合| 99热偷拍| 日日爽日日| 亚洲乱码在线观看| 久久狼人天堂| 五月天大香蕉| 五月丁香| 狼人久草| 亚洲综合五月天| 99色在线观看| 国产无套精品一区二区| 五月天大香蕉| 日日躁夜夜躁狠狠久久AV| 色9999日韩国产| 九九热精品| 影音先锋噜一噜| 五月天激情啪啪| 九色99视频| 香蕉人妻AV久久久久天天| 另类少妇人与禽zOZZ0性伦| 九九热精品| 久久精彩视频| 国产精品美女久久久久AV超清| 五月天另类激情在线| 亚洲精品婷婷| 丁香五月综合| 99精品成人无码A片观看金桔| 天天色天天操天天射| 亚洲精品色| 五月天激情小说网| 欧美婷婷五月丁香| 欧美私人家庭影院| 日韩精品在线观看9| 极品五月天| 久久九九热38| 2016日日夜夜操| 99热伊人| 99热这里只有精品13| 在线观看玖玖资源免费观看| 99视频久久| 黄网免费观看| 99精品国产在热久久| 蜜臀综合久草| 大香蕉伊人99| 色五月婷婷、老熟女| 丁香五月欧美色综合| 国产精品VA在线| 日日天天干| 91在线日| 91狼友视频在线观看| 91热手机在线| 热中文字幕| 这里只有国产精品在线| 欧美影院| www.97视频| 丁香五月之久操视频| 丁香五月综合无码趴趴| 久久久思思热| 激情网婷婷五月天| www.婷婷| 3p久久| 三区激情四射av| www.日日夜夜.com| 北京熟妇搡BBBB搡BBBB| 婷婷激情五月天桃花网| 丁香五月婷婷婷婷欧美综合| 久久色这里只有精品| 久久伊人婷婷| 双性美人被调教到喷水A片| www九月婷婷| 激情综合五月激情17| 婷婷五月天电影区小说区| 精品久久艹| 欧美性爱五月天| 99热丁香五月| 日韩一级| 色蜜婷婷| 伊人久久丁香婷婷六月五月综合| 婷婷五月天激情五月天| 久久WW| 日韩av变天就操逼不卡区| 激情综合网五月丁香| 91一起操| 人人草人人爱手机视频看看| 国产成人+综合亚洲+天堂| 婷婷五月天亚洲综合网| 天天激情夜夜干| 大香蕉久久久久| 丁香六月天婷婷| 亚洲激情无码久久| 激情伊人五月天| 日韩精品无码AV| 五月丁香啪啪激情| 五月开心久久| 97操操操| 综合久久9| 久久久久五月丁香| 日日艹思思热| 亚洲xx在线| 99精品色色| 开心五月婷婷激情| 97色在线视频| 日日撸夜夜操| 欧美 日韩 成人| 综合性视频99| 少妇AB又爽又紧无码网站 | 婷婷丁香激情综合色情| 殴美日韩成人| 激情性爱五月| 久久东京热婷婷五月| 在线看黄色| 激情五月婷婷丁香| 大地资源色婷婷视频在线| 少妇丁香婷婷| 五月丁香影院| 色狠狠六月| 九九Av| aaaaaa片| XX色综合| 99热视精品| 丁香五月激情久久麻豆| 亚洲人成人五月天| 激情五月天婷婷色色色色色色色色色色色| 色五月首页| 亚洲日日操| 久99久视频| 久久六月综合| 精品亚洲国产成AV人片传媒 | 色五月超碰| 日韩狠狠色| 色色丁香婷婷| 欧美日综合| 亚洲婷婷五月草久| 丁香六月啪啪| 九九色99| 77777亚洲午夜久久| 婷婷激情五月| 无码地址| 亚洲激情四谢| 99∨VTV| 99热9999| 丰满少妇乱A片无码| 青青草视频福利| 婷婷久久色| 五月丁香在线综合| 五月丁香久久呀| 99色天堂| 五月婷婷激情69| 五月婷婷9| 99综合色| 人伦30P| 色综合久久中文| 天天日天天狠狠操| 97超碰99热99| 狠狠爱综合网| 亚洲AV成人无码久久精品老人法拉利| 色偷偷综合| 开心五月激情五月丁香五月婷婷| 一级黄在线| 天天日综合| 婷婷丁香五月天影院| 亚州操人在线视频| 激情五月天伊人av| 青草青草久热这里只有精品| 中文字幕免费高清电视剧| 五月婷婷丁香瑟瑟视频| 综合亚洲六月婷婷在线| 91热视频| 97色婷| 激情五月天影院| 丁香五月AV在线| 秋霞网在线免费基地五月婷婷丁香| 欧美婷婷五月天综合| 色婷婷国产精品综合在线观看| 婷婷五月天六月丁香| 日本女va| 97影院一级片| 中文字幕人妻AV| 26UUU精品一区二区| 婷婷五月天亚洲图片| 久久伊人大香蕉| 久艹久| 成人精品视频99在线观看免费| 婷婷亚洲五月丁香综合在线| 免费观看高清无码| 国产精品涩涩涩视频网站| 久草大| av在线观看网站| 91综合视频丁香| 可以免费观看的AV| 五月天婷婷亚洲| 天天日日天天| www。五月天激情| 懂色av粉嫩AV蜜臀AV| 国产精品色色| 色五月成人| 色色色9| 丁香五月婷婷激情123| 久久精彩综合视频| 黄色aa观看aaguochan| 亚洲中文字幕在线观看| 五月婷婷激情网| 狠狠色噜噜狠狠| 婷婷五月综合中文字幕| 亚洲日本韩国| 久久久久9999| 综合大香蕉| 五月天成人网在线观看| A久网| 色狠狠综合网| 97色色色视屏| 中文字幕AV网址| 涩涩婷婷五月| 色综合偷拍| 亚洲电影在线观看| 欧美顶级少妇做爰HD| 天天操夜夜操| 97色碰| 99久久9| 丁香六月婷婷综合| 大香蕉伊人爱在线| 色99日韩| 婷婷伊人网| 欧美日韩AAAA| 五月婷婷激情中文字幕| 五月天社区| 婷婷五月天狠狠| 噜噜色com| 五月婷婷免费在线视频| 成人网址在线观看| 人妻精品一区二区三区| 五月天婷婷久色| 2014天天爽| 欧美综合五月丁香六月婷| 亚洲欧洲小视频9| 色婷婷很很丝袜| yazhoujiqingav| 激情99| 成人视频一区| 久久综合爱| 夜夜撸夜夜骑| 超碰国产在线| 久久免费高| 又大又粗九一在线| 日韩AV在线免费| 嫩草免费视频| 色五月欧美| www久久99| 五月花婷婷在线精品视频| 美女主播野战视步页| 婷婷第一页| 九九这里是免费的视频5| 色色日韩网| 五月婷婷免费| WWW免费视频碰碰碰碰| 开心五月深爱五月| 97日本操| 色色婷婷五月天| 99ER热精品视频| AV网址大全在| 亚洲综合激情五月久久| 久99久热只有精品国产99| 五月天激情www| 99日韩| 色日本颜射| 99久久视频| 玖玖在线资源视频| 五月伊人视频在线看| 99热免费在线| 婷婷亚洲综合| 婷婷丁香先锋资源网站| 成人精品一区二区三区四区五区| 九九AV在线| 色婷婷激情视频| 玖玖爱综合网| 91色综合网站在线| 亚洲热久| 五月丁综合在线观看| 天天综合色丁香| 成人无码髙潮喷水A片| 97久久五月丁香婷婷| 免费AV黄在线播放| 五月丁香六月色| 亚洲情综合五月天| 国产激情综合五月久久| 日本色色色| 伊人激情| 色色日本欧美| 五月婷婷色情| 婷婷久热| 色欲色天天香综合| 日日色综合| 七月婷婷色香综合网| 婷婷伊人网| 色婷婷五月在线| 97超碰免费超级在线观看| 9久久久| 天天综合天天玩夜夜玩天天玩夜夜玩| 色国产五月| 98色花堂98t.R| 五月丁香综缴情性爱| 电影《战争与艾拉》免费观看| 激情五月天综合图片小说网站| 精品一区二区三区木瓜| 99久久久久| WWW99热| 五月丁香六月在线| 五月天丁香婷婷久久九| 99er精品| 97av在线视频| 香蕉婷婷色五月| 伊人五月天在线| 伊人九九68| 婷婷丁香五月激情中文字幕版| www.wuyuetian啪啪| 都市激情蜜桃婷婷五月天| 五月丁香婷婷啪啪| 99久扒热| 99热99久久| www.婷婷,com| WWW.17C亚洲精品| 久99在线| www,99热| 天天透天天干| 狠狠狠色激情综合适合| 人妻中文av| 噜噜色婷婷| 色色色色色色色色色色色色色五月天| 六月婷婷天天操夜夜爽视频| 99乱视频| 怡红院成人AV| 色五月六月婷婷| 婷婷久久色五月婷婷久久久| 伍月婷丁香花全集| 五月丁香婷婷狠狠操| 色色哒五月婷婷六月丁香| 丁香婷婷AV| 婷婷六月网| 五月成人丁香av91| 久久99性爱| 色五月自偷自拍婷婷婷婷| 无码区婷婷五月花开| 狠狠综合色网| 婷婷五月激情欧美| 欧美一级色| 婷婷激情五月| 99色视| 九九av| 久久在线人妻| 日本在线wwww| 丝袜人妻| 日本在线免费中文com.| 99re8热精品免费视频| 五月丁香六月婷婷综合网站| 嫩草视频观看| 五月婷婷中文| 校园激情 亚洲| 人人97操| 综合激情视频| 综合久久五月| 青吴乐视频| 九色无码| ss五月天激情| 欧美日韩国产成人在线| 欧美色色色色色色| 亚洲啪啪精品| 亚洲操逼网| 五月天全国最大成人网| 丁香九月激情久久| 99热精品中文字幕| www.深爱激情| 性一交一乱一交A片久久四色| 成人视频在线免费播放| 五月天另类小说亚洲| 99欧美热| 色婷婷网| 九九色热视频| 欧美婷婷六月丁香综合色| 久久艹 五月天| 99re6久热只有精品6在线直播| 亚洲无码猫咪| 26uuu最新地址| 这里只有精品视频在线看| 99原创自拍视频在线观看| 久婷久婷| 天天透天天摸天天舔| 色九月婷婷综合| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 婷婷丁香六月激情综合| 97久久五月丁香婷婷| 五月婷婷六月丁香在线| 狠狠干2007| 婷婷月综合| 九九九激情综合| 久久HD| 色狠狠六月| 台湾无码A片一区二区| www.99在线| 天天日,天天射,天天舔| 国产噜一噜天天噜| www.色九月| 能看的av| 色5月婷婷| 婷婷开心激情| 91啪级电影| 亚洲AV第二区国产精品| 九九丁香社区欧美激情| 激情六月婷婷| 丁香婷婷色情| 色婷婷精品| 手机看片日日做夜夜| 色五月色五天色情网| 韩日AV片| www婷婷色| 久久99视频| 国产在线中文字幕| 久热中文字幕在线线观看| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 国产做爰视频免费播放| 丁香五月自拍| 六月婷婷激情| 色色网五月激情| 五月天久久婷婷婷| 梁铮版《蜘蛛女侠》在线 | 噜噜色五月| 色婷婷五月天无码视频| 69天堂99| 97碰精品| 一区二区无码视频| 开心色色五月天综合| 韩国真做片在线观看| 五月开心网| 天天干 夜夜爽| 久久久性爱视频| 在线观看av网站| 五月婷婷丁香六月| 欧美人妻一区二区| 婷婷五月天成人小说| 九九综合久久| wwwC0maV五月花| 婷婷丁香五月精品| 九九激情综合| 秋霞性爱AV| 九久9精品| 97人人超| 最新日本A片| 婷婷激情五月天7| 婷婷在线观看五月天在线视频| 精品国婬伦V无码久久久| 日本不卡高字幕在线2019| 91啪啪视频| 久久99热这里只有精品| 综合色色网| 天天综合色| 99原创自拍视频在线观看| 亚洲第一成人无码A片| 欧美日本免费一道免费视频| 色级停停| 丁香社92视频| 五月激情婷婷国产精品久久久久久| 99精品视频在线观看| 国产成人精品亚洲线观看| 亚洲网在线观看| 99热亚州综合| 123草逼网| 久久免费精品小视频| 欧美va亚洲va| 亚洲五月天婷婷综合| 婷婷五月天激情网站| www.色婷婷| 色玖玖| 色婷婷丁香五月| 伊人大香蕉爱聚| 久久综合婷婷五月| 天天性视频| 天天添天天摸天天天天做| 性天天中文网| 开心五月综合激情网| www色婷婷| 男女av免费看| 日本 欧美在线| 这里只有精品视频国产| 久久视频在线| 婷婷成人综合| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 久久久婷| 丁香五月亚洲综合丝袜| 五月天丁香婷婷社区| 久去色色| 日日噜狠狠色| 婷婷五月情| 午夜丁香久久久久久| 国产免费一区二区三州老师F1F1| 婷婷色基地在线看| 色五月激情视频在线综合| 深爱五月中文字幕| 玖玖综合色| 91久久网站| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | WWW.婷婷| 农村熟妇高潮精品A片| 久久五月婷婷丁香| 丁香五月色情| 色婷婷久久| 久久综合播放| 色噜综| 97人人射| 狠狠色噜噜狠狠| 亚洲色小说在线综合| 91狠狠色色丁香婷婷综合久久| 久久婷婷五月| 伊人网啪啪| 久久久久久久久久人妻| 精品一二三区久久AAA片| www.91婷婷| 99亚洲色| 99色综合| 日韩AV片| 亚洲激情婷婷| 影音先锋91在线资源站| 91久久婷婷| 五月婷婷开心网| 五月婷婷丁香综合,亚洲天堂| 99热国内精品| 天天爽夜夜操| 丁香五月婷婷香| 日逼免费视频| 国产精品扒开腿做爽爽爽A片唱戏| 天天操天天干天天射| 影音先锋xfplay资源男人网| 色婷婷五月在线| 激情内射人妻1区2区3区| 蜜乳9188| 色婷五月| 情色五月天网站| PORNY九色9l自拍视频成人| 97超级碰人人| er99免费视频在线| 九九av| 99亚洲精美视频在线观看| 婷婷综合网在线| 亚洲热久久| 五月丁香色色| 91综合色| 第四色网婷婷| 夜夜爽天天干| 天天综合色99| 99r这里| 大香焦A∨| 天天爱天天做天天爽| 国外亚洲成AV人片在线观看| 五月天激情国产综合婷婷婷就去爱| 婷婷舔| 五月婷婷六月激情| 99热成人精品| 丁香五月影院| 色亚洲视频| 八戒青柠影视剧在线观看| 97操碰| 99热在线只有精品| 丁香六月激情| 五月天堂色色| 99精色| 天堂网亚洲色图| 婷婷色五月色| 亚洲色五月婷婷| 亚洲激情五月天| 在线伦子99热| 成人在线网址| 亚洲色精彩| 五月婷丁香| 色播五月丁香婷婷| 国产婷婷色综合AV蜜臀AV | 久热婷婷| 激情视频网址| 天天爽天天干| 一区二区三区四区五区| 日韩少妇内射免费播放| 思思热久久阴99| 婷婷色网| 激情婷婷五六月天| 五月天丁香久久综合| 天天插综合| 五月天婷婷香蕉狠狠超碰综合| 欧美激情凹凸丁香网| 91seAV| 99人妻碰碰碰久久久久视| 久色网址| 成人中文网| 天天做天天爱天天要| 色五月大香蕉婷婷| 9久国产精品| 久鲁鲁色网| 性爱激情五月| 国产午夜精品一区二区| 开心五月婷婷五月| 久久性爱99国产| 欧美精品在线观看| 在线VA视频| 久热精彩视频98| 91黄操| 国产日批视频| av五月丁香婷婷网| 久久久com| 狠狠干青青草| 九九人人自拍| 性爱久久| 婷婷五月天视频亚洲| 五月婷婷啪啪| 天天肏视奸| 国产91视频| 狠狠狠夜夜夜| 六月丁香婷婷五月天| 婷婷丁香五月天激情四射| 日本视频99| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 91精品激情9| 婷婷久久五月天| 欧美在线骚货| 狠狠色大香蕉| 国产AV一区二区三区最新精品| 好好日激情五月天| 操日本三片99| 国产成人一区二区三区在线观看| 婷婷爱综合| 97成人在线视频精品| 婷婷在线播放| 国产精品色婷婷99久久精品| 成人五月天在线视频在线观看| 办公室少妇激情呻吟A片在线观看| 色五月开心五月激情五月| 99在线小视频| 99热在线观看| 爆乳熟妇一区二区三区爆乳照片| 亚洲AV无码成人精品区电影网| 人人综合久| 色色色色色爱| 丁香五月自拍| 亚洲a片免费观看| 99热这里有精品| 九九热免费视频| www开心激情网| 久去色色| 97色永久免费视频| 九月性爱网| 欧美 日韩 人妻 高清 中文| 五月激情网站| 99色免费观看全部| 夜夜噜夜夜奇| 99热99网| 久久久大香蕉| 色一情一乱一乱一区9| 超碰大香蕉网| 99热这里只有精品一区| 激情婷婷丁香五月天小说| 国产九九一区二区三区| 丁香五月婷婷五月基地| 白人荫道BBWBBB大荫道| 丁香婷婷深情五月亚洲| 五月婷婷深深爱| 五月天婷婷在线视频| 综合激情网五月激情| 超碰人妻在线| 天天操中文字幕| 九伊人网| 国产成人精品一区二三区熟女在线| 婷婷丁香在线播放| 婷婷丁香久久五月综合| 狠狠色综合精品视频在线| 人人操av| AV性爱网| 五月色情网| 91婷婷色五月| 色噜噜狠狠色综合网| 色婷婷91| 丁香花婷婷五月天| 婷婷五月天丁香久久| 九九精品大香蕉| 综合色、色综合| 国产午夜成人免费看片无遮挡| 99re这里只有精品首页| 色婷婷电影| 99自拍视频在线| 91热在线| 综合网色| 啊V视频在线观看| www99在线观看视频| 成人网在线视频| 色三级色三级| 天天搡日日搡aaaaⅩ| 91丨九色丨白浆秘| 中文字幕视频在线播放| 伊人久久五月天| www.久久爱| 丁香五月天堂| 99精品在线观看| 国产在线aaa片一区二区99| 天天做天天爽| 亚洲乱码日产精品BD| 五月婷A V在线| 五月色激情综合网| 99五月婷| 亚洲精品99| 五五月丁香花激情综合网| 草美女在线观看视频在线播放| 99九九玖玖| 成人av免费观看| 免费日韩99| www开心激情网| 久久五月天婷婷| 日韩无码成人电影| 五月天婷婷成人网| 六月丁香开心婷婷欧美| 97久久人人| 蜜臀av在线成人电影| 色综合九九| 欧洲第一久色| 99久在线精品| 三级毛片视频| 99人人干人人| 成人五月天在线视频在线观看| 综合亚洲色色| 欧美日韩aaaa| 色色色色色色色色综合网| 成人龟情网丁香五月| 91人人超碰在线| 中文字幕丁香五月| 大天天伊人| http:色情日本com| 99毛片| 亚洲avjiujiur91| 六月婷婷久久| 婷婷五月天基地| 成人免费120分钟啪啪| 日韩aⅴ视频| 五月色婷婷影院| 人妻五月天激情开心网| 天天天综合网| 久久精品人妻| 综合久久8| 色欲人妻综合aaaaaaaa网| 婷婷五月天资源| 婷婷五月天av| 人妻少妇色综合| 婷婷五月综合基地| 激情综合网丁香| 99热在线这里| 色婷婷狠狠| 人人操操| 日韩久久这里只有精品| 丁香五月婷婷亚洲综合精品| 欧美婷婷色| 色五月丁香五月| 日韩狠狠色婷婷| 九九色99| 国产三级在线播放| 婷婷激情五月天天天开心| 五月色丁香| 亚洲色图欧美色图日本视频| 91超碰在线观看| 国产另类综合| 五月综合激情网| 超级碰碰碰碰视频| 婷婷欧美色| 色五月天成人| 无码视频国内精品久久久| 久久婷婷视频| 爽天天天天天天天| 成人αV视频免费观看| 婷婷色导航| 免费亚洲婷婷| 97人人干视频| 包操45分钟网站| 丁香五月亚综合图片| 五月婷婷很很色| 五月丁香五月丁香| 日本久久婷| 日本97久久久精品| 99热只有精| 香蕉AV777XXX色综合一区| 婷婷激情伍月网| www.婷婷五月| 色五月丁香com| 四虎婷婷五月天| 九热视频| 综合狠狠伊人| 精品动漫 无码av| 色5月婷婷| 深夜婷婷 丁香| 亚洲丁香五月深爱五月| 九热视频在线精品15| 日本色色影片| 天天做天天双| 丁香五月婷婷基地| 久久婷婷成人视频| 五月天com| 久久丝丝热| 97色婷婷| 99色综合| 能看的AV| 99九九在线| 丁香五月婷婷影院|