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

ARTICLE DETAIL

資訊詳情

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

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

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