共用方式為


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 Windows DDK 的目前版本所述。

案例 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 停止判斷提示時,PCI 驅動程式會停止掃描喚醒裝置。
  3. 設備磁碟機:要求將裝置放在 D0 (請參閱案例 2) ,並在處理喚醒事件所需的晶片中設定任何專屬暫存器。

在 PCI 電源管理和設備磁碟機上呼叫動作