Compartilhar via


Interface ACPI: Dados específicos do dispositivo (_DSD) para portas raiz PCIe

No Windows 10 (versão 1803), novos métodos de _DSD ACPI foram adicionados para permitir cenários de hot plug PCI e Modern Standby.

Suporte direcionado a DRIPS (Deepest Runtime Idle Platform State) em portas raiz PCIe

Esse objeto ACPI deve ser implementado no escopo ACPI de cada porta/slot raiz PCIe acessível ao usuário em sistemas habilitados para Modern Standby que são capazes de implementar a DFx (Estrutura de Gerenciamento de Energia Direcionada).

Name (_DSD, Package () {

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

            Package () {

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

Identificando portas raiz PCIe compatíveis com hot plug em D3

Esse objeto ACPI permite que o sistema operacional identifique e gerencie as portas raiz PCIe capazes de manipular eventos de hot plug enquanto no estado D3. Se esse objeto não for implementado em uma porta compatível com hot plug PCIe, o sistema não gerenciará essa porta se não tiver dispositivos PCIe filhos, fazendo com que o sistema consuma mais energia do que o necessário.

Esse objeto deve ser implementado em todas as portas raiz PCIe de hierarquias Thunderbolt, em sistemas compatíveis com Runtime D3 (RTD3), no escopo do dispositivo ACPI da porta raiz.

Name (_DSD, Package () {  

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

        Package () {  

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

                   }
        }
)

Identificar portas raiz PCIe expostas externamente

Esse objeto ACPI permite que o sistema operacional identifique hierarquias PCIe expostas externamente, como Thunderbolt. Esse objeto deve ser implementado no escopo do dispositivo ACPI da porta raiz.

Observação: Em sistemas com Windows 10, versão 1803, esse objeto só deve ser implementado em portas raiz PCIe de hierarquias Thunderbolt.

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

Identificar portas PCIe internas acessíveis aos usuários que exigem proteção DMA

Esse objeto ACPI permite que o sistema operacional identifique hierarquias PCIe internas que são facilmente acessíveis pelos usuários (como slots PCIe M.2 de laptop acessíveis por meio de uma trava) e exigem proteção pelo mecanismo de Proteção DMA do kernel do sistema operacional. Esse objeto deve ser implementado no escopo do dispositivo ACPI da porta raiz.

Principais itens a serem observados:

  • A proteção de portas PCI que usa esse objeto ACPI tem suporte apenas no Windows 10, versão 1903 e posterior.

  • A proteção contra DMA do kernel deve ser habilitada no BIOS/UEFI do sistema para que o sistema operacional analise o _DSD e aplique as proteções necessárias à porta PCI.

  • Os drivers de dispositivos conectados a essa porta DEVEM aceitar o remapeamento de DMA, caso contrário, o Windows 10 poderá impedir que esses dispositivos operem até que um usuário faça logon ou por tempo indefinido, dependendo da Política DMAGuard.

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

Identificar portas PCIe que aceitem a interface D3_COLD_AUX_POWER ECN

Esse objeto ACPI permite que o sistema operacional identifique portas PCIe compatíveis com a interface D3_COLD_AUX_POWER ECN, o que permite que os dispositivos PCIe solicitem da plataforma energia auxiliar adicional em D3, acima do padrão de 375mA @3.3V. Qualquer porta ou ponte PCI que defina esse DSD deve garantir que, ao reprogramar o valor de energia auxiliar negociado anteriormente, a operação seja bem-sucedida.

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

Mapear protocolos nativos (PCIe, DisplayPort) encapsulados por meio de roteadores de host USB4 para USB4

Esse objeto ACPI permite que o sistema operacional mapeie protocolos nativos, como PCIe e DisplayPort, encapsulados por meio de USB4 para o roteador host USB4 correto.

No exemplo a seguir, Device (DSB0) tem uma dependência de \_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#},
            }
        })
    }
}

Confira também

Habilitando o PCI Express Native Control no Windows

Proteção de DMA do kernel para Thunderbolt 3

Habilitando o remapeamento de DMA para drivers de dispositivo

Estrutura D3COLD_AUX_POWER_AND_TIMING_INTERFACE