ACPI-Schnittstelle: Gerätespezifische Daten (_DSD) für PCIe-Stammports

In Windows 10 (Version 1803) wurden neue ACPI-_DSD-Methoden hinzugefügt, um Moderne Standby- und PCI-Hot-Plug-Szenarien zu unterstützen.

Directed Deepest Runtime Idle Platform State (DRIPS)-Unterstützung für PCIe-Stammports

Dieses ACPI-Objekt muss im ACPI-Bereich jedes PCIe-Stammports bzw. -slots implementiert werden, auf den der Benutzer auf Modern Standby-fähigen Systemen zugreifen kann, die in der Lage sind, das Directed Power Management Framework (DFx) zu implementieren.

Name (_DSD, Package () {

          ToUUID("FDF06FAD-F744-4451-BB64-ECD792215B10"),

            Package () {

                Package (2) {"FundamentalDeviceResetTriggeredOnD3ToD0", 1},
            }
        }
)

Identifizieren von PCIe-Stammports, die Hot Plug in D3 unterstützen

Dieses ACPI-Objekt ermöglicht es dem Betriebssystem, PCIe-Root-Ports zu identifizieren und zu verwalten, die Hot-Plug-Ereignisse im D3-Zustand verarbeiten können. Wenn dieses Objekt nicht auf dem PCIe-Hot-Plug-fähigen Port implementiert ist, verwaltet das System diesen Port nicht, wenn es keine untergeordneten PCIe-Geräte hat, was dazu führt, dass das System mehr Strom verbraucht als erforderlich.

Dieses Objekt muss auf allen PCIe-Stammports von Thunderbolt-Hierarchien, auf RTD3-fähigen Systemen (Runtime D3) im AcpI-Gerätebereich Des Root Port implementiert werden.

Name (_DSD, Package () {  

        ToUUID("6211E2C0-58A3-4AF3-90E1-927A4E0C55A4"),  

        Package () {  

            Package (2) {"HotPlugSupportInD3", 1},  

                   }
        }
)

Identifizieren extern verfügbar gemachter PCIe-Stammports

Dieses ACPI-Objekt ermöglicht es dem Betriebssystem, extern verfügbar gemachte PCIe-Hierarchien wie Thunderbolt zu identifizieren. Dieses Objekt muss im ACPI-Gerätebereich des Stammports implementiert werden.

Hinweis: Auf Systemen, die mit Windows 10, Version 1803, geliefert werden, sollte dieses Objekt nur auf PCIe-Stammports von Thunderbolt-Hierarchien implementiert werden.

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
                   }
        }
)

Identifizieren interner PCIe-Ports, auf die Benutzer zugreifen können und DMA-Schutz erfordern

Dieses ACPI-Objekt ermöglicht es dem Betriebssystem, interne PCIe-Hierarchien zu identifizieren, die für Benutzer leicht zugänglich sind (z. B. Laptop M.2 PCIe-Slots, auf die über einen Latch zugegriffen werden kann) und die durch den DMA-Schutzmechanismus des Betriebssystemkerns geschützt werden müssen. Dieses Objekt muss im ACPI-Gerätebereich des Stammports implementiert werden.

Wichtige Punkte:

  • Der Schutz von PCI-Ports mit diesem ACPI-Objekt wird nur in Windows 10, Version 1903 und höher, unterstützt.

  • Kernel-DMA-Schutz muss im System-BIOS/UEFI aktiviert sein, damit das Betriebssystem die _DSD analysieren und die erforderlichen Schutzmaßnahmen auf den PCI-Port anwenden kann.

  • Treiber von Geräten, die mit diesem Port verbunden sind, MÜSSEN die DMA-Neuzuordnung unterstützen. Andernfalls kann Windows 10 den Betrieb dieser Geräte blockieren, bis sich ein Benutzer anmeldet oder unbegrenzt, je nach DMAGuard-Richtlinie.

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
                   }
        }
)

Identifizieren von PCIe-Ports, die D3_COLD_AUX_POWER ECN-Schnittstelle unterstützen

Dieses ACPI-Objekt ermöglicht es dem Betriebssystem, PCIe-Ports zu identifizieren, die D3_COLD_AUX_POWER ECN-Schnittstelle unterstützen, wodurch PCIe-Geräte von der Plattform zusätzliche Hilfsleistung in D3 anfordern können, die über dem Standard von 375 mA @3,3 V liegt. Jeder PCI-Port oder jede Brücke, die diese DSD definiert, muss garantieren, dass der Vorgang erfolgreich ausgeführt wird, wenn der zuvor ausgehandelte Hilfsleistungswert zurück programmiert wird.

Name (_DSD, Package () {
            ToUUID("6B4AD420-8FD3-4364-ACF8-EB94876FD9EB"),
            Package () {
            }
        }
)

Zuordnen nativer Protokolle (PCIe, DisplayPort), die über USB4 zu USB4-Hostroutern getunnelt werden

Dieses ACPI-Objekt ermöglicht es dem Betriebssystem, native Protokolle wie PCIe und DisplayPort zuzuordnen, die über USB4 zum richtigen USB4-Hostrouter getunnelt werden.

Im folgenden Beispiel Device (DSB0) hat eine Abhängigkeit von \_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#},
            }
        })
    }
}

Weitere Informationen

Aktivieren der nativen PCI Express-Steuerung in Windows

Kernel-DMA-Schutz für Thunderbolt 3

Aktivieren der DMA-Neuzuordnung für Gerätetreiber

D3COLD_AUX_POWER_AND_TIMING_INTERFACE-Struktur