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