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
返回資訊列表
日本系列_4页_777FP| www.五月婷婷久久.com| 日笨久久网| 六月丁香婷婷开心综合基地| 免费一区二区三区| 婷婷丁香五月网| 97香蕉人人在线观看| 无码色色色| 小色小蛇伊人婷婷色香五月| 婷婷久久综| 五月丁香久人妻中文| 人人干99| 思思热久在线观看视频| 久久五月丁香综合| 成人在线不卡| 久久久久久久久久久久久久人妻视频| 婷婷五月天A V| 中文字幕九九九九| 99热在线播放| 噜噜网免费视频| 69色婷婷| 五月激情视频| 曰日爽日日操| 亚洲AV日韩AV永久无码网站| 激情婷婷丁香| 国产色香蕉精品五夜婷| 久久久激情| 日韩成人AV在线播放| 久婷婷婷| 99热在线中文字幕| 婷婷久久五月天丁香| 婷婷婷婷婷婷婷五月丁香| 婷婷爱爱蜜臀天天操| 色色性爱视频| 综合在线丁香五月| 日韩色五月| 色婷网| 激情婷婷丁香色情五月天| 狠狠色丁香久久综合婷婷亚洲成人福利| 久久丁香五月| 91一起操| 国产亚洲99久久精品熟女| 第四色婷婷丁香五月| 青青999| 9热视频在线观看| 久热这里只有精品性色AV| 午夜精品久久久久久久爽| 人人爱人人摸人人澡| 九热免费视频| 婷婷成人五月天| 思思热久热| 激情综合在线观看| 99久久欧美| 国产 亚洲 在线| 五月丁香婷婷久久| 五月色色色| 99国产在线精品视频| 婷婷五月天免费视频| 丁香五月婷婷激情完整版| 五月婷婷婷| 九九色视频| 色婷婷婷婷| 日韩啪啪视频| 婷婷五月天欧美图片在线播放电驴| 91免费看片| 五月停亭六月,六月停亭的英语| 日日干夜夜撸夜夜骑| 久久五月天丁香| 成功精品影院| 欧美五月婷婷综合| 午夜丁香| 亚洲AV综合网| 久久综合首页| 日韩欧美婷婷丁| 影音先锋91| 综合一区二区三区| 国产激情久久久| 亚洲无码影音| 欧美在线视频99| 色五婷婷开心缴| 激情久久四色| 丁香五月色激情| 色播综合| 丁香五月天啪啪| 天天日夜夜帕| 色5月婷婷| 亚洲婷婷在线播放十月| 国产成人高清| 丁香五月综合首页| 9精品在线| 任你搞网站| 一级A片天天操夜夜操| 九一牛视频探花| 99热只有这里有精品| 99热免| 婷婷五月天影视网址| 国产免费一区二区三州老师F1F1| 在线99精品| 666555。COm毛片| 99免费在线| 久久玖玖综合| 超碰成人av| 丁香五月激情婷婷| 婷婷五月六月丁香综合| 五月综亚洲| 婷婷丁香社区网| 亚洲无aV在线中文字幕 | 超碰在线看| 精品99视频| 女人天堂 AV| 亚洲五月天天| 午夜性爱影视一区77| 婷婷成人网五月天| 热久国产| 99精品女人天堂| 99热只有| 搡BBBB搡BBB搡18| 香蕉网久久| 一本久久婷婷| 丁香六月啪| 2050人人操免费工开爱| 丁香五月婷婷啪| 色婷五月天综合网| 日本熟女内射| 色婷婷五月天视频网站| 白天AV月月| 丁香五月 综合| 丁香婷婷啪啪| 毛片网站谁有| 人人干天天操五月丁香| 国产片色| 色青青视频| 99久久婷婷| 亚洲综合激情五月久久| 91精品久久久久久77777| 亚洲人妻AV| 婷婷丁香18| 色婷婷小说网| 电影91久久久| 欧美久久久久久久久中文字幕| 亭亭丁香97| 操婷婷久久| 99re8热精品免费视频| 婷婷五月激情网| 双性美人被调教到喷水A片| 亚洲另类久久| 婷婷久久视频| 午夜日日| 五月天啪啪| 久久欧洲久久| 五月激情综合婷婷| 大香蕉婷婷五月| 日日鲁鲁夜夜爽爽| 天天做天天爱天天综合| 色色热| 2020日日干| 五月天婷婷色| 91无码视频| 99热在线只有精品| 超碰成人在线观看| 久久一级AV| 9l视频自拍九色9l视频在线观看| 亚洲正能量欧美| a毛片二逼wwwwwwwwww| 96精品国产综合久久久久久| 超碰二区| 丁香五月停停av| 26uuu色噜噜精品一区| 天天色综合综合| 視频福利乱色| 99男人天堂| 色五月激情基地| 91超碰在线观看| 玖玖视频福利| 九九精品在线网| 思思热99热| 六月丁香av| 婷婷五月天影院| 99年操人人爽| 亚洲性爱99| 99热亚洲| 淫视馆aV二区一区| 国产精品久久久60086| 狠狠xx| 五月丁香六月婷婷啪啪| 丁香五月激情啪啪| 男人的天堂av俄罗斯热| 伊人婷婷青青cao| 九九视频精品在线免费 | 操碰91| 人人色婷婷五月天| 欧美成人精品A片免费一区99| 色婷婷色99国产综合精品| 天天日天天爱天天噪| 97caop| 六月婷综合| 日本99在线视频| 日本本土色网第一区| 91操熟女| 久久五月天婷婷| 日韩欧美成人片| 97ai婷婷| www,8050,午夜三级| 在线VA视频| AVDV久久| 久久婷婷网址| 激情5月婷婷狠狠干| 五月婷婷激情四月| 99精品在线| 丁香五月天婷婷91| 999影院成人在线影院| 五月婷婷婷婷| 欧美精品啪啪| 天天摸天天舔| 五月停停大香蕉| 大香蕉婷婷五月天| 十一月婷婷激情四射| 精品无码久久久久久久久| 日韩操女| 五月丁香六月婷婷国产视频| 欧美成人精品A片免费一区99| 丁香久久九九99| 99视频这里有精品| 射久久丁香五月| 婷婷丁香视频在线观看免费| 97九色视频| 久99久视频精品| 噜噜色天天开心| 日本色婷婷| 99热亚洲| 热久久这里只有三级视频| 五月天婷婷丁香社区| 五月丁香啪啪啪啪| 欧美婷婷六月丁香综合色| 六月丁香激情网| 伊人综合网站| XXXX岛国| 亚洲精品大片| 色婷久久| 啪啪一区| 丁香婷婷五月激情| 97久久精品| 波多野结衣成人作品在线| 女人天堂av| 去干网av| 狠狠色丁香久久| 亚洲性爱日韩无码| 九九婷婷激情综合网| 免费视频舔| 婷婷五月激情欧美| 婷婷免费视频| 思思热99在线视频| 国产成人精品一区二三区熟女在线| 中文字幕av在线| 亚洲成人中心| 久久婷婷五月综合色奶水99啪| 国产VA亚洲VA96| 大香蕉伊人丁香五月| 激情婷婷五月黑人| 婷婷五月天久草在线| 2014天天爽| 九九视频在线观看| 99操99| 欧美婷婷日本| 狼人久草| 色五月天综合| 五月天网址在线刘玥| 婷婷丁香五月天欧美| 天天日天天干天天操| 五月天激情综合在线| 色情婷婷| 久热超碰| 99国产精品白浆在线观看免费 | 99亚洲大片精品永久在线观看| 九九热精品| 五月天狠狠色| 激情丁香九九五月综合网| 五月丁香综合中文| 人人操日| 久久综合热17c| 夜精品无码A片一区二区蜜桃| 五月天婷婷色紫薇阁| 日韩精品AV一区二区三区| 成人视频一区| 少妇做爰免费视看片| 激情网站综合五月天| 五月丁香本色在线观看| 九九热视频思思| 色噜噜狠狠色综合成人99| WWW免费视频碰碰碰碰| 99精品在这里| 日日日日操| 久久久性爱视频| 丁香综合久久| 久久草大香蕉| 五月婷婷co.m| 婷婷色偷拍| 综合大香蕉| 久婷婷五月综合欧美| 五月丁香婷婷激情| 就爱日五月天| 五月色丁香成人| 99热九九在线| 激情五月天视频| 无码少妇高潮喷水A片免费| 亚洲尤物在线| 不卡的AV网站| 91狠狠色色丁香婷婷综合久久| 婷婷五月天AV在线| 天天射影| 婷婷基地成人五月天| 天天日天天插| 婷婷五月天激情在线观看 | 五月婷婷综合激情网| 久久五月婷婷电影| 91高潮喷水久久久久久久久| 九九久久网| 超碰免费成人网站| 99九无网码| AAAA亚洲| 大天天伊人| 色色色999| 色色五月婷婷丁香| 欧美啪啪9| 日韩啪啪网| 五月天激情AV| 婷婷五月天受日本法律保护| 丁香花社区av| 丁香五月天色婷婷| 激情www| 第五婷婷伊人丁香色| 精品国产乱码久久久久夜深人妻 | 人人视频色| 婷婷伊人综合中文字幕| 天天日色情| 婷婷五月激情图片| 99综合婷婷五月| 熟美女麻豆| 国内外色色色色色成人视频| 丁香五月婷婷无码AV| 在线理论片| 这里只有精品视频一区| yellow视频在线观看91| 成人久碰| 全部老头和老太XXXXX| 99热66| 丁香婷五月天| 色区久久| 综合狠狠干| 日本va网站| 成人VAV视频在线观看| 91久久99久久91熟女精品| 可以免费看AV网站| 在线VA视频| 婷婷丁香五月天影院 | 狠狠草综合网| 久久国产性爱A V| 青996青| 国产又粗又大又爽又黄| 日韩无码专区| 久久性爱视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 成年人最刺激的综合网| 国产肥白大熟妇BBBB视频| 日韩啪啪视品| 国产乱妇无乱码大黄AA片| 成人免费在线电影| 逼里香不卡| 五月色 亚洲| 91色五月| 国产白丝在线一区| 中文久久婷婷| 狠狠久久婷| 逼特逼在线免费播放| 久草热在线视频| 婷婷 丁香 精品| 久久婷婷五月草视频| 色五月激情问网站| 五月丁香六月在线欧美| www.99热视频| 九九自拍网| 中文av在线观看| 丁香五月之久操视频| 亚洲成人在线播放| 97干在线视频| 成人婷99最新| 狠狠色狠狠| 五月丁香婷庭在线| 五月综合精品| 久久久精品色色色| 超级97碰碰| 九久久九精品视频| 99惹 精品在线| 老师的粉嫩小又紧水又多A片视频| 丁香婷婷深情五月亚洲| 99久热在线精品| 99亚洲视频| 五月婷婷免费在线视频| 日本色五月婷婷| 深爱激情综合网| 玖玖资源站中文| 亚洲人人操BD| 逼里香不卡| 丁香美女主播视频在线观看 | 99久久综合网| 五月丁香婷婷色色| 国产超碰在线| 99热9| 丁香五月激情综合| 狠狠综合网| 亚洲国产精品二二三三区| 五月天婷婷影院影院观看| 亚洲成人黄色网| 99热这里只有精品最新地址获取| 九九色综合视频| 婷婷五月天日本无码| 五月开行婷婷色五月| 色色 9| 五月天激情.com| 亚洲色亚洲精品| 国产精品VA在线| 九九热这里只有精品6| 国产毛片精品一区二区色欲黄A片| 99综合视频| 九九热re99re6在线精品| 婷婷久久精品| 99爱在线精品视频免费观看| 无码99| 日本强伦片中文字幕免费看| 热久91| 9视频1在线| 综合 蜜月 婷婷| 91精品综合久久婷婷九色| 色~性~乱~伦~噜| 婷婷五月天中文字幕.| 婷婷五月天成人动漫| 婷婷婷五月天最新综合你懂的| 中文字幕高清av| 日日操夜夜擼| 久久精品五月| 丁香五月亚洲激情婷婷射| 九九热九九| 98毛片| 天天夜天天色天天| WWW.99视频| 五月天社区| 国产精品国产成人国产三级| 中文字幕av网站| 97色啪| 六月丁香视频网站| 久热网在线视频| 五月丁香激情婷婷| 国产精品成人AV在线观看春天| 亚洲第一综合| 丁香五月天大香蕉啪啪| 91在线日| 五月天激情婷婷丁香| 日本熟女二区| 婷婷亚洲综合| 成人免费网站免费看| 国产精品久久..4399| 99热国产这里只有| 99视频在线| 99精在线| 日韩在线看AV| 99九九精品视频| 另类婷婷丁香| 久久艹99| 99五月香婷婷丁香在线视频| 久久六月天| 夜夜骑操AV| 天天干天干| 丁香五月影院| www.五月丁香| aaaaa不卡| 色婷婷狠狠干芒果TV| 久草大| 久cao香蕉影院| 五月伊人网| 丁香网五月天激情| 五月天大香蕉| 天啪色| 日本婷婷丁香五月| 伊人狠狠丁香婷婷综合尤物| 97超级碰人人| 69堂午夜视频最新地址| 99热国产精品| 色欲日日躁| √天堂资源在线人妻熟女| 五月丁香成人网| 欧美色色色色色色| 99成人小视频| 中文字幕在线日亚洲9| 综合福利网| 色综天天综合| 在线观看av网站| 五月精品99综合| 综合五月草| 婷婷的色色五月天| 在线色婷婷| 久久久人妻久久久| 99视频35精品视频在线观看| 激情五月婷色| 日本va视频| 五月丁香激情啪啪| 991自拍视频| 亚洲婷婷视频| 天天拍久久| 激情综合在线观看| 色五月大| 五月天成人小说| 久久久五月婷婷| 深爱激情小说五月婷婷| 久久99看免费| 99精品国产热久久91色欲| 99在线小视频| 国产AV一区二区三区日韩| 色婷婷丁香五月天| 91九色|疯狂|高潮|对白|| 91热在线观看视频| 99青青草| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99国产精品久久久久久久久久久 | www.99热| 色哟哟精品| 综合色激情| 婷婷五月色播天| 激情丁香六月| 久久99激情| 亚洲另类毛片| 国产精品久久7777777精品无码| 亚洲无AV在线中文字幕| 色五月天中文字幕| 少妇性按摩无码中文A片| 五月丁香啪啪网| 色五月婷婷操逼| 99热这里有精品24| 亚洲欧洲另类图片| 午夜美女人啪最红院| 婷婷色六月| 成人看片网站| 婷婷五月天久久久| 亚洲视频在线观看99| 色婷五月天| 91久久久久久久| 色综合久久88色综合天天99| 超碰人人艹| 亚洲成人一区| 天天日天天做天天舔| 国产精品久久..4399| 啪啪99| 色婷婷综合久久久久| 六月婷婷综合激情| 五月丁香婷婷综合网| 六月色 亚洲| 色J香五月天| 狠狠色噜噜狠狠亚洲A∨| 综合五月网| 天色综合网| 欧洲一区二区| 欧美色图45678| 男女99免费视频| 91久久久久久| 五月天激情国产综合婷婷婷| 亚洲激情淫网| 激情综合丁香六| 色婷丨日丨天丨综合久久| 七七婷婷综合| 婷婷五月天在婷| 色综合丁香| 九九在线91| 日韩免费乱轮网站| 亚洲性爱AV在线| 日日干夜夜撸夜夜骑| 色五月婷婷777| 97婷婷五月| 日本一区二区三区精品视频| 91青娱乐青青草| 97干在线| 熟女人妻一区二区三区免费看| 色色亚卅| 美女被操一区二区| 六月婷婷啪啪| 狠狠色狠狠爱| 激情五月天婷婷丁香 | 婷婷久久六月费| 亚洲无码免费看| 淫视馆AV在线| 欧美日韩大黄| 黄色片久久| 夜夜操狠狠操| 日韩久热| www.AV在线| 98色丁香五月婷婷综合网| 99热线观看9| 深爱激情五月天色婷婷| 五月天色丁香| 欧美内射AA| 97人人看一| 99熟女啪啪视频| 黄色五月婷婷| 色婷婷丁香综合中文字幕| 激情99| 性欧美大战久久久久久久83| 五月天色社区| 久久刺激网| 一区二区三区四区五区| 激情五月天情色| 在线播放中文字幕| 日日爱699| 久热婷婷| 狠狠色婷婷综合开心影视| 五月婷网| 五月激情婷婷开心| 另类视频综合| 亚洲永远av在线播放| 激情综合色网| 婷婷深爱五月丁香网| 亚洲综合无码| 亚洲AV久久久久久久久久久久久久久久 | 五月婷成人网| 9月色婷婷| 欧美成人一区二区三区在线视频| 狼友超碰| 色色色欧美色色| 久久精品视频99| 久婷狼色诱惑在线| www激情| 婷婷射丁香| 九九热在线观看6| 4438全国最大视频成人网站在线观看 | 99九九综合久久九九| 他改变了拜占庭| 亚洲激情| 亚洲日韩久久婷婷伊人| 激情五月天婷婷五月天| 日本婷色| 五月婷婷激情中心| 丁香无五月网| 91视频久久久| 五月四色激情| 婷婷99狠狠躁天天躁| 亚洲黄色精品| 色五月激情婷婷| 五月花成人网| 影音先锋毛片网站| 99啪视频在线观看| 日本片日本片祼观看网站在线看中文版网页在线看| 囯产精品久久欠久久久久久九大| 99热这里只有精品50| 丁香六月AV| 色综合中文| 九九热99在线视频| 香蕉久久av一区二区三区 | 深爱婷婷色| 精品人人操| 99热爆在线| 九月丁香| 丁香九月婷| 丁香涩涩五月天| 久久9热| 天天弄天天操| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 五月天丁香婷| aaa日韩| 久久五月丁香激情综合| 综合网色| 丁香六月久久| 玖玖综合网| 久久这里只有精彩| 91色综合久久| 97色射| 中字幕视频在线永久在线观看免费 | 干亚洲天堂| 偷偷操99| 久久综合图片| av操B网站| 国产成人精品一区二三区熟女在线 | 色色性爱视频| 五月丁香中文| 日日操夜夜撸| 五月婷六月天| 天天日天天干天天插天天射| 五月丁香六月综合激情网| 很很干五月天| 九九热在这里只有精品| 小视频一区 | 五月色丁香综合| 99re思思| 亚洲视频操| 日本在线wwww| 91九色中文| 人妻视频在线| 婷婷色九月| 婷婷五月色图| 婷婷五月激情图片| 五月婷色色| 色欲五月婷婷| 激情婷婷丁香五月天| 亚韩在线视频| 99re99热| 久久久WWW| 91丨九色丨东北熟女| 久婷婷五月综合欧美| 婷婷久久精品| 性日本激情| 九九视频精品这里只有| 天天cha成人综合网| 99r这里| z色五月播播久久| 91视频精品99| 色婷婷六月天| 日日夜夜干| 色五月激情五月| 色色丁香婷婷五月天| 狠狠色丁香婷婷| 超碰中文字幕在线| 99热主页日本| 亚洲视频色色| 久久 这里只有精品1| 另类小说婷婷色| 午夜五月天| 激情五月,色播五月| 思思热精品在线观看| 丁香五月天社区| 色婷婷五月天偷拍| 超碰久热| 影音先锋91视频| 亚洲成人AV在线播放| 99精品久久久| 激情五月丁香色婷婷| 丁香六月天堂| 人妻精品在线| 91丨九色丨老农村| A片天天| 大香蕉Av在线| 婷婷五月激情四月综合| 日韩综合大黄| 亚洲永久免费| 色婷婷小说网| 激情六月婷婷| 草榴成人影片| 国产超碰在线| 五月天久久综合婷婷丁香| 影音先锋一区| 亚洲成人在线观看av| 婷婷内射视频在线| 天天做天天要天天爽| 噜啊噜在线| 色色激情| 色五月中文字幕| 丁香五月 综合| 99精品亚洲| 欧美久热| 99综合熟女| 日本久久网| 亚洲AV色婷婷人禽五月天| 久久婷婷六月综合| 久久久9久| 99九九在线观看免费| 啪啪啪五月天| 久操人妻| 怡春院天天干| 99热 在线观看| 操操操Av| 操一区| 三日本无码| 成人噜噜网| 成年人丁香五月| 国产成人一区二区三区在线观看| 亚洲色图五月丁香| 26uuu欧美激情另类| 色色色色色色网站| www.刺激色网站www.| 婷婷5月开心6月| 色九九综合| 月色色综合婷婷网| 99re这里有精品手机在线| 激情五月婷婷网| 亚洲成人中心| 玖玖资源站蜜臀| 五月婷婷六月丁香综合在线| 碰97久久| 婷婷基地爱| 色色婷婷五月天| 久久久久久久久99精品| 成人丁香五月天| 人人插操| 婷婷五月蜜桃成人桃色丁香| 亚洲AV人人操| 综合www色| 丁香五月23111| 日韩成人精品中文字幕| 超碰99久久| 丁香五月天成人| 99网| 九九aV| 99精品网| 色五月婷婷777| 超碰在线国产| 婷婷综合色五月天| 91啪啪视频| 六月婷婷香蕉| 五月丁香五月综合欧美| 日本强伦片中文字幕免费看| 91色涩| 99这里热| 久久久久久99日本| 国产淫熟妇| 久99热| 99热这里只有99| 日本色婷婷| 99在线免费观看| 色婷婷亚洲综合av| 六月丁香好婷婷| 婷婷综合丁香| 婷婷日日天天| 久久久一级AAA| 激情com| 人人草人人舔| AV伊人青草丁香六月| 五月亭亭开心网| 五月婷婷色色网址| 婷婷狠狠操| 日本毛片内射| 婷婷色操| 久久激情五月天| 精品99在线| 五月婷激情影院| 五月婷婷基地| 婷婷激情五月| 久久久婷婷婷| 婷婷性爱| 丁香五月天激情网址| 日良久久| 这里只有精品视频222| 丁香九月婷婷综合| 九九黄色网| 丁香五月天网站| 大香蕉伊人久久| www.五月婷婷.com| 九月婷婷| 丁香婷婷啪啪| 欧美va视频不用播放器的va视频网| 五月婷婷在线免费观看| 激情深愛五月視頻| 97色色色色色| 影音先锋男人资源站一区二区| 婷婷五月天av| 色九区| www.yw尤物| 热久久国产视频| 免费日本aⅴ中文字幕| 色色色色热| 狠狠狠狠狠狠色| 婷婷五月天成人网| 日本www免费九九| 久久A V无码视频| 激情婷婷99| 五月婷在线观看| 亚洲婷婷丁香五月亚洲| 色停停香蕉视频| 五月婷婷综合热| 久久久久久久久久久久久9| 五月婷婷丁香网| 熟女91九色| 久久激情综合| 色婷婷九月| 在线观看亚洲视频影院| www.婷婷六月天| 中文字幕久久一区二区三区| 久久3级片| 色婷婷久久| 1区2区视频| 99自拍视频在线| 五月丁香六月婷婷不卡免费无码| 九九成年视频| 天天拍天天操| 热99精品视频在线观看| 超级碰碰99| 97精品欧美91久久久久久久| 婷婷色五月久久| WWW久| 丁香婷婷大香蕉| 亚洲第一精品成人999久久精品| 激情婷婷丁香五月天| 五月天婷婷久久| 国产精品久久久海的味道| 激情婷婷| 婷婷中文综合网| 日韩成人AV在线| 五月婷婷色吧!| 婷婷内射视频在线| 日韩黄色中文字幕| 五月天丁香成人社| 婷婷五月精品在线| 人人九色| 婷婷五月在线影院| 国产熟女一区二区三区五月婷| 五月情综合| 991精品在线视频| 粉嫩AV久久一区二区三区| 91九色无码日韩| 99热这里只有精品99| 六月婷婷综合| 丁香六月高清视频| 久久婷婷综| 激情综合网激情五月丁香五月俺也去| 9l视频自拍九色9l视频自拍九色9l社区 | 99色视频在线观看| 中美日韩成人在线| 综合色五月| 超碰人人插| 九九色综合九九色| 开心五月深爱婷婷| 欧美va视频不用播放器的va视频网| 国产首页在线| 色www久视频| 97碰啪啪| 亚洲AV久久久久久久久久久久久久久久| 欧美丁香五月97色| www一区二区三区| 六月亚洲婷婷6月中文字幕| 亚洲成人在线观看网址| 91欧美| 中文av网站| 丁香五月23111| 99亚洲综合| 久久久91| 亚洲操B视频| 七七婷婷综合| 日日夜夜干| 国产avapp 网| 婷婷六月丁香欧美视频在线| 色综合播放| 又大又粗九一在线| 日本三级第一页| 大香蕉伊人99| 超碰99成人在线| .精品久久久麻豆国产精品| 狠狠干狠狠色| 99爽视频| 九九色热| 天天色综网| 五月丁香激情婷婷综合| 天天草天天爱| 国产超碰在线| 久久色情| 九九色天堂| 婷婷综合五月天激情| www.婷婷六月天| 婷婷网五月天| 99开心五月五月丁香激情| 激情五月四色| 激情婷婷丁香五月天| 黄色录像网点| 狠狠色噜噜狠狠色噜噜噜999| 午夜九九电影| 99久在线精品99re8热| 五月婷婷|欧美| WWW、日本色丁香、co m| 综合五月丁香六月婷婷| 91在线资源| 天天射夜夜骑| 色狠狠婷婷| 99自拍视频网站| 五月丁香色婷婷伊人| 五月天成人免费视频| 蜜乳av一级av| caopeng97日韩| 91狠狠综合久久| 色婷婷五月开心六月综合| 久久综合丁香| 99精品自拍视频| 激情啪啪五月| 五月婷中文字幕| 成人综合视频在线| 婷婷激情伍月网| 色六月天| 99久久婷婷国产综合精品草原| 九九av| 99热九九在线| 丁香五月另类小说在线阅读| 天天 日综合| 五月婷婷在线视频免费观看| 99亚洲天堂| 新久久五月天激情| 美女天天艹人人爽| 激情播丁香| 欧美综合激情五月丁香| 狠狠干激情五月| 成人狠狠成人狠狠成人狠狠成人狠狠| 26UUU精品一区二区c〇m| 丁香激情婷婷网| av五月天婷婷丁香| 99热66| 久热9| 激情久久四色| 久久99精品久久久久久噜噜| 97久久草草超级碰碰碰| 日本va欧美va欧美va精品| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 91视频一起草| 五月丁香综合激情| www.婷婷五月天| WWW.桔色成人.COM| 99热在线观看成人| 欧美啪啪网| 久久伦乱| 96人人操人人操人人| 色青青五月| 九九免费精品| 久99久热| 天天日天天操心| 久久久久久久久久久-久五月天婷婷| 碰超亚洲| 五月丁香色婷婷色| 九九黄色网| 日韩六十路91性交电影| 丁香六月五月天| 日本欧美国产| 国产精品第一国产精品| www99精品在线观看| 丁香五月婷婷Av| 开心六月丁香五月婷婷| 丁香五月天五码婷婷| 色色亚洲视频| 婷婷五月综合激情| 日韩一级一片内射视频4K| 婷婷综合久久| 天天干天天爽| 久久婷婷五| 久操大香蕉| 98永久精品| 热99这里只是精品| 丁香涩涩五月天| 婷婷五月草| 这里只有精品视频免费在线观看| 九九婷婷五月天| 久久免费操| 亚洲五月婷婷在线| 天天爽夜夜爽夜夜爽精品视频| 久久五月综合| 碰超亚洲| 久久99婷婷| 五月WWW| 成人网站在线观看视频| 丁香五月欧美婷婷综合| 婷婷不卡基地| 色吧五月| 久久人妻视步| 五月天婷婷社区| 影院久久久| 色婷婷狠狠| 色激情五月| 五月天激情小说| 91综合在线观看首页| 思思久久99热| 五月丁香六月婷婷网| 婷婷激情综合| www. 五月. com| 日韩成人中文字幕| 日日操天天| 99综合网| 日本三级毛片| 婷婷四色五月| 久9热在线视频| 热99.com婷婷| 青青热久久综合| 狠狠爱婷婷爱| 丁香九月色| 丁香五月婷婷六月婷婷| 丁香五月天论坛| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 人妻AV在线| 婷婷射图| 五月天激情www| 无码AV免费精品一区二区三区 | 丁香五月区| www.yw尤物| 日本一级一片免费视频| 日日夜夜天天爽| 色婷婷电影网| 青青999| 天天操天天操| 深爱激情五月网| 色欲影香| 国产日韩亚洲欧美在线观看| 国产精品日本一区二区在线播放| 97色热| 国产激情综合五月久久| 亚洲第一成人无码A片| 99在线观看亚洲| 激情综合99| 99视频在线看| 色亭亭九月| 翔田千里无码| 天天插天天干| 成人在线网址| 久久99精品久久久久久噜噜| 五月婷综合| 五月丁香六月婷婷亚洲| 国产精品涩涩涩视频网站| 欧洲亚洲免费视频9| 色五月婷婷五月天| 在线日韩av| 米奇影视五月天| 少妇被下春药玩弄A片| 在线另类| 丁香六月色婷婷| 亚洲天99| A在线观看| 五月丁香毛片| 99免费热视频| 西西4r午夜剧场| 久久久五月婷婷| 久久久一级AAA| 狠狠色无码| 成人做爰高潮A片免费视频| 18av天堂| 五月丁香激情啪啪| 天天摸天天舔在线视频| 婷婷五月激情丁香| 成人在线不卡| 九九九九国产| 欧洲亚洲免费视频9| 丁香五月欧美激情| 婷婷99中文字幕| 九九热精品在线| 九九热在线99| 色婷婷A| 91操片| 久久久18| 日本久久爽| 猫咪伊人久久| 九月影院義母在线播放| 欧美99热| 色很很96| 自拍偷窥99热| 99热这里| 婷婷五月天久久| 亚洲激情淫网| 成人午夜视频精品一区| 色久五月| 丁香情色五月| 丁香婷婷婷五月| 大香蕉九九操| 久婷婷婷| 色情五月天视频网| 亚洲天天操| 婷婷五月天成人动漫 | 色五天综合| 99热精地址| 日本97人人| 这里只有精品视频在线| 婷婷五月丁香花综合| 97碰在线视频| 第2色五月婷| 五月天另类激情在线| 五月丁香日本在线视频观看| 久久久99精品免费观看| 人人视频色| 99热全是精品| 超碰9| 这里只有精品视频222| 激情五月天丁香| 久久成人精品视频| 欲求不满的人妻| 丁香五月色激情| 天天 日综合| 五月天婷婷综合色| 日日操,夜夜爽| 国产,欧美,学生妹,视频| 五月丁香亭亭成人电影| 婷婷六月天| 丁香五月天啪啪a日本| 热九九精品| 丁香五月天激情综合网| 九色在线五月婷婷网址| 婷婷开心激情五月激情网| 婷婷玖玖五月天| 99这里只有精品|v| 色~性~乱~伦~噜| 国产在线aaa片一区二区99| 97好吊操| 日本久久爽| 五月天精品| 色婷婷成人| av操逼网| 日本久久人| 精品网站99| 99久久喉9| 99九九在线精品热动漫| 狠狠色婷婷在线| 四虎99热在线观看网站| 五月丁香六月婷婷成人电影| 亚洲网站在线鸭子av| 国产一级黄色影片,| 成人综合AV| 韩国情人在线电视剧免费观看高清版全集| 九色亚洲| 久久综合九九| 狠狠色噜噜狠狠狠888了| 欧美久人人| 玖玖婷婷五月天| 99爱在线| 99思思| 久热这里只有精品99re,久热这里只有精品7| 欧美婷婷综合网| 色色色网站| 丁香五月婷婷激情中文| 日韩人妻在线观看| 欧美A级成人婬片免费看理论| 丁香激情五月| 99色视频在线观看| 开心五月婷婷综合在线精品素人| 伊人久久婷婷| 四色AVwww| 五月丁香怕啪啪| 色色婷婷丁香五月天| 五月天婷婷基地| 99精品综合视频| 新99思思视频| 久久精品综合色| 大地9中文在线观看免费高清| 婷婷五月天成人| 亚洲性爱99在线| 五月丁香啪啪啪啪| 国产在线网址1| 亚洲精品亚洲人成人网| 婷婷夜夜操| 激情综合4月| 婷婷五月天丁香社区| 婷婷狠狠久久| 国产AV一区二区三区最新精品| 91久久电影| www久热com| 超碰人人操人人干| 色爱爱综合网| 久久综合婷婷| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 久色激情| 五月天色区| 26uuuu精品一区二区| 色五月婷婷综合| 激情五月婷婷她| 亚洲电影在线观看| 五月婷婷五月| 激情色情五月天| 亚洲激情图文小说| 久久作爱| 久re在线| 97日韩无套内| 伊人婷婷五月天| EEUSS鲁片一区二区三区| 一级A片天天操夜夜操| AV九九| 丁香六月狠狠干| 一区二区aV电影免费看| co超碰在线观看| 九九热精品在线| 五月丁香六月婷婷久久肏| 色情五月停停丁香| 天天爽人人爽| 热久久思思热思思| 激情网第九色|