共用方式為


PCI 電源管理和設備驅動器

本文釐清了廠商對於符合PCI電源管理 (PCI-PM) 的硬體如何與作業系統中的設備驅動器互動,以及PCI-PM與ACPI整合方式的一些混淆。 如需詳細資訊,請參閱 https://www.uefi.org/specifications

設備驅動器和PCI電源管理

此討論假設您已熟悉 Windows 驅動程式模型 (WDM) 驅動程式如何處理電源管理事件,如目前的 Windows DDK 中所述。 一般而言,設備驅動器的責任如下:

  • 總線驅動程式:總線驅動程式負責列舉、設定及控制裝置。 針對PCI-PM,PCI驅動程式負責讀取PCI-PM快取器,以判斷硬體的功能。 當 POWER IRP 要求電源狀態變更時,PCI 驅動程式會寫入 PCI 電源管理快取器,以將硬體設定為不同的 Dx 狀態。

    當裝置啟用喚醒時,PCI 驅動程式會寫入PCI-PM緩存器,讓裝置引發 PME(ACPI 也會採取動作,請參閱下一節)。 最後,當 ACPI 判斷 PCI 總線喚醒系統時,PCI 驅動程式會掃描 PCI 設定空間,尋找哪個裝置判斷提示 PME、停用該裝置中的 PME,並通知驅動程式該裝置。

  • 設備驅動器:裝置的特定驅動程式負責儲存和還原裝置內容,以及要求電源狀態變更為裝置的原則擁有者。 當裝置驅動程式收到要求較低裝置電源狀態變更的 POWER IRP 時,設備驅動器會負責儲存稍後開啟裝置所需的任何專屬裝置內容。 在某些情況下,可能沒有什麼可儲存的。

PCI-PM 快取器嚴格是PCI驅動程式的網域--IHV的裝置驅動程式不需要存取任何這些快取器。 這樣做會導致系統無法可靠地運作。 設備驅動器的責任是只執行專屬動作。

整合 ACPI 和 PCI PM

某些裝置,尤其是可攜式的主機板視訊裝置,可能需要PCI電源管理,以及ACPI來源語言組合器(ASL)才能完全管理裝置。 PCI 電源管理緩存器會控制裝置的內部狀態,例如內部時鐘和電源平面。 ASL 會控制外部狀態,例如外部時鐘和電源平面,或在視訊控制器的情況下,ASL 會控制視訊反光燈。 請注意,ASL 和PCI-PM只能在主機板裝置上結合。

OnNow 架構是分層架構,自然會處理設備驅動器、PCI 驅動程式和 ACPI 驅動程式 (和 ASL) 的整合。 下列案例顯示呼叫驅動程式以處理這些裝置的順序。

注意

若要讓上述案例如所述運作,WDM 驅動程式必須正確轉送 POWER IRP,如目前版本的 Microsoft WDK 所述。

案例 1:關閉裝置

  1. 設備驅動器:儲存專屬裝置狀態。

  2. PCI 驅動程式:儲存 隨插即用 設定、停用裝置(中斷和 BAR),並使用PCI-PM 快取器將裝置放入 D3。

  3. ACPI 驅動程式:執行 ASL 程式代碼(_PS3,以及不再使用電源資源的_OFF),以控制晶片外部的狀態。

案例 2:PCI 電源管理和設備驅動器

  1. ACPI 驅動程式:針對任何 OnNow 所需的電源資源執行 ASL 程式代碼(_PS0和_ON),以控制晶片外部的狀態。

  2. PCI 驅動程式:使用PCI-PM緩存器將裝置置於 D0 中,並還原 隨插即用 設定(中斷和 BAR--這些可能與先前裝置開啟的內容不同)。

  3. 設備驅動器:還原裝置中的專屬內容。

案例 3:啟用喚醒

  1. 設備驅動器:在晶元中設定專屬緩存器,以啟用喚醒。 例如,在模式比對網路喚醒中,這是將模式程式設計到配接器時。

  2. PCI 驅動程式:設定PCI PM快取器中的喚醒啟用位,以允許裝置判斷提示 PME。

  3. ACPI 驅動程式:在與 PME 相關聯的晶片集中啟用 GPE(如根 PCI 總線下所列_PRW物件所述)。

案例 4:喚醒

  1. ACPI 驅動程式:喚醒並掃描 GPE 狀態位是否有喚醒事件、停用設定 GPE 狀態位的 GPE,以及執行與設定 GPE 位相關聯的任何_Lxx或_Exx方法。 為了回應PCI總線上的喚醒通知,ACPI 驅動程式會完成PCI驅動程式的 WAIT_WAKE IRP,以通知PCI驅動程式正在喚醒系統。

  2. PCI 驅動程式:掃描設定空間,尋找具有設定 PME 狀態位的任何裝置。 針對每個裝置,它會停用 PME 並完成該裝置WAIT_WAKE IRP,以通知驅動程式正在判斷喚醒。 PCI 驅動程式會在完成通過所有PCI裝置時停止掃描喚醒裝置,但找不到任何判斷提示 PME,且 PME 停止判斷提示時。

  3. 設備驅動器:要求裝置放在 D0 中(請參閱案例 2),並在處理喚醒事件所需的晶片中設定任何專屬緩存器。

PCI 電源管理和設備驅動器的呼叫動作