ACPIインターフェイス: PCIeルート ポートのデバイス固有データ (_DSD)
Windows 10 (バージョン1803) では、モダン スタンバイとPCIホット プラグのシナリオをサポートするために、新しいACPI _DSDメソッドが追加されました。
PCIeルート ポートでのDirected Deepest Runtime Idle Platform State(DRIPS)のサポート
この ACPI オブジェクトは、Directed Power Management Framework (DFx) を実装できる最新のスタンバイ対応システムでユーザーがアクセスできるすべての PCIe ルート ポート/スロットの ACPI スコープに実装する必要があります。
Name (_DSD, Package () {
ToUUID("FDF06FAD-F744-4451-BB64-ECD792215B10"),
Package () {
Package (2) {"FundamentalDeviceResetTriggeredOnD3ToD0", 1},
}
}
)
D3 状態でホット プラグをサポートする PCIe ルート ポートの識別
この ACPI オブジェクトを使用すると、オペレーティング システムは、D3 状態の間にホット プラグ イベントを処理できる PCIe ルート ポートを識別して電源管理できます。 このオブジェクトが PCIe ホット プラグ対応ポートに実装されていない場合に、子 PCIe デバイスがなければ、このポートの電源管理がシステムによって行われず、システムが必要以上に電力を消費することになります。
このオブジェクトは、Thunderbolt 階層のすべての PCIe ルート ポート (ランタイム D3 (RTD3) 対応システムのルート ポート ACPI デバイス スコープで実装する必要があります。
Name (_DSD, Package () {
ToUUID("6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"),
Package () {
Package (2) {"HotPlugSupportInD3", 1},
}
}
)
外部に公開されている PCIe ルート ポートの識別
この ACPI オブジェクトを使用すると、オペレーティング システムは、Thunderbolt などの外部に公開されている PCIe 階層を識別できます。 このオブジェクトは、ルート ポート ACPI デバイス スコープに実装する必要があります。
注: Windows 10 バージョン 1803 に付属するシステムでは、このオブジェクトは Thunderbolt 階層の PCIe ルート ポートにのみ実装する必要があります。
Name (_DSD, Package () {
ToUUID("EFCC06CC-73AC-4BC3-BFF0-76143807C389"),
Package () {
Package (2) {"ExternalFacingPort", 1}, // Property 1: This is an externally facing port/hierarchy
Package (2) {"UID", 0}, // Property 2: UID of the externally facing port on platform, range is: 0, 1, …, n-1
}
}
)
ユーザーがアクセスでき、DMA による保護を必要とする内部 PCIe ポートの特定
この ACPI オブジェクトを使用すると、オペレーティング システムは、ユーザーが簡単にアクセスできる内部 PCIe 階層 (ラッチを使用してアクセスできる Laptop M.2 PCIe スロットなど) を識別し、OS カーネル DMA 保護 メカニズムによる保護を必要とします。 このオブジェクトは、ルート ポート ACPI デバイス スコープに実装する必要があります。
重要な注意事項:
この ACPI オブジェクトを使用した PCI ポートの保護は、Windows 10 バージョン 1903 以降でのみサポートされています。
OS が_DSDを解析し、PCI ポートに必要な保護を適用するには、システム BIOS/UEFI でカーネル DMA 保護を有効にする必要があります。
このポートに接続されているデバイスのドライバーは、DMA 再マッピングをサポートする必要があります。そうしないと、DMAGuard ポリシーに応じて、ユーザーがログインするまで、または無期限に Windows 10 によってこれらのデバイスの動作がブロックされる可能性があります。
Name (_DSD, Package () {
ToUUID("70D24161-6DD5-4C9E-8070-705531292865"),
Package () {
Package (2) {"DmaProperty", 1}, // Property 1: This port needs to be protected by the OS
Package (2) {"UID", 0}, // Property 2: UID of the PCIe port on platform, range is: 0, 1, …, n-1
}
}
)
D3_COLD_AUX_POWER ECN インターフェイスをサポートする PCIe ポートの識別
この ACPI オブジェクトを使用すると、オペレーティング システムは、D3_COLD_AUX_POWER ECN インターフェイスをサポートする PCIe ポートを識別できます。これにより PCIe デバイスは、D3 で既定の 375 mA @3.3V を越える追加の補助電源をプラットフォームに要求できます。 この DSD を定義する PCI ポートまたはブリッジは、以前にネゴシエートされた補助電源値をプログラミングするときに、操作が成功することを保証する必要があります 。
Name (_DSD, Package () {
ToUUID("6B4AD420-8FD3-4364-ACF8-EB94876FD9EB"),
Package () {
}
}
)
USB4 経由でトンネリングされたネイティブ プロトコル (PCIe、DisplayPort) を USB4 ホスト ルーターにマップする
この ACPI オブジェクトを使用すると、オペレーティング システムは、USB4 経由でトンネリングされた PCIe や DisplayPort などのネイティブ プロトコルを正しい USB4 ホスト ルーターにマップできます。
次の例では、 Device (DSB0)
依存関係 \_SB.PCI0.NHI0
があります。
Scope (\_SB.PCI0)
{
Device (NHI0) { } //Host interface instance which has dependency on \_SB.PCI0.NHI0
Device (DSB0) //Tunneled PCIe port instance
{
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID
Package () {
Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
Package () { "usb4-port-number", PortInstance#},
}
})
}
Device (…) //Extend to DP and USB tunneled ports, as needed
{
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID
Package () {
Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
Package () { "usb4-port-number", PortInstance#},
}
})
}
}
関連項目
Windows での PCI Express ネイティブ コントロールの有効化