Partilhar via


Gerenciamento de energia PCI e drivers de dispositivo

Este artigo esclarece algumas confusões que os fornecedores experimentaram sobre como o hardware que está em conformidade com o PCI Power Management (PCI-PM) interage com drivers de dispositivo no sistema operacional e sobre como o PCI-PM se integra à ACPI. Para obter mais informações, veja https://www.uefi.org/specifications

Drivers de dispositivo e gerenciamento de energia PCI

Esta discussão pressupõe que você esteja familiarizado com como os drivers WDM (Modelo de Driver do Windows) manipulam eventos de gerenciamento de energia, conforme descrito no DDK atual do Windows. Em geral, as responsabilidades pelos drivers de dispositivo são as seguintes:

  • Motoristas de ônibus: os motoristas de ônibus são responsáveis por enumerar, configurar e controlar dispositivos. Para PCI-PM, o driver PCI é responsável por ler os registradores PCI-PM para determinar os recursos do hardware. Quando os IRPs POWER solicitam alterações de estado de energia, o driver PCI grava nos registradores de gerenciamento de energia PCI para definir o hardware para diferentes estados Dx.

    Quando um dispositivo é ativado para ativação, o driver PCI grava nos registradores PCI-PM para permitir que o dispositivo dispare PME (ACPI também executará uma ação, consulte a próxima seção). Finalmente, quando a ACPI determina que o barramento PCI está ativando o sistema, o driver PCI verifica o espaço de configuração PCI procurando qual dispositivo está afirmando PME, desabilita o PME nesse dispositivo e notifica o driver para esse dispositivo.

  • Driver de dispositivo: o driver específico para o dispositivo é responsável por salvar e restaurar o contexto do dispositivo e solicitar alterações de estado de energia como o proprietário da política para o dispositivo. Quando o driver de dispositivo recebe um IRP POWER solicitando uma alteração de estado de energia de dispositivo mais baixa, o driver de dispositivo é responsável por salvar qualquer contexto de dispositivo proprietário necessário para ligar o dispositivo posteriormente. Em alguns casos, pode não haver nada para salvar.

Os registradores PCI-PM são estritamente do domínio do driver PCI - o driver de dispositivo do IHV não precisa acessar nenhum desses registros. Isso faria com que o sistema não funcionasse de forma confiável. A responsabilidade do driver de dispositivo é executar apenas ações proprietárias.

Integrando ACPI e PCI PM

Alguns dispositivos, particularmente dispositivos de vídeo da placa-mãe em portáteis, podem exigir o PCI Power Management, bem como o ACPI Source Language Assembler (ASL) para gerenciar completamente o dispositivo. Os registradores PCI Power Management controlariam o estado interno de um dispositivo, como relógios internos e planos de energia. A ASL controlaria o estado externo, como relógios externos e planos de potência, ou, no caso de controladores de vídeo, a ASL controlaria as luzes de fundo de vídeo. Observe que ASL e PCI-PM só podem ser combinados em dispositivos de placa-mãe.

A arquitetura OnNow é uma arquitetura em camadas, lidando com a integração do driver de dispositivo, driver PCI e driver ACPI (e ASL) naturalmente. Os cenários a seguir mostram a ordem em que os drivers são chamados para manipular esses dispositivos.

Observação

Para que os cenários acima funcionem conforme descrito, um driver WDM deve encaminhar IRPs POWER corretamente, conforme descrito na versão atual do Microsoft WDK.

Cenário 1: Desligando um dispositivo

  1. Driver de dispositivo: Salva o estado proprietário do dispositivo.

  2. Driver PCI: Salva a configuração Plug and Play, desativa o dispositivo (interrupções e BARs) e coloca o dispositivo em D3 usando registradores PCI-PM.

  3. Driver ACPI: Executa código ASL (_PS3 e _OFF para recursos de energia não mais em uso) para controlar o estado externo ao chip.

Cenário 2: Gerenciamento de energia PCI e drivers de dispositivo

  1. Driver ACPI: Executa o código ASL (_PS0 e _ON para quaisquer recursos de energia necessários do OnNow) para controlar o estado externo ao chip.

  2. Driver PCI: Coloca o dispositivo em D0 usando registradores PCI-PM e restaura a configuração Plug and Play (interrupções e BARs - estas podem ser diferentes do que o dispositivo estava anteriormente).

  3. Driver de dispositivo: restaura o contexto proprietário no dispositivo.

Cenário 3: Habilitando a ativação

  1. Driver de dispositivo: Define registros proprietários no chip para ativar o despertar. Por exemplo, na ativação de rede de correspondência de padrão, é quando os padrões seriam programados no adaptador.

  2. Driver PCI: Define os bits de ativação de ativação nos registradores PCI PM para permitir que o dispositivo declare PME.

  3. Driver ACPI: Habilita o GPE no conjunto de chips associado ao PME (conforme descrito pelo objeto _PRW listado no barramento PCI raiz).

Cenário 4: Despertar

  1. Driver ACPI: ativa e verifica os bits de status GPE em busca de eventos de ativação, desabilitando GPEs para definir bits de status GPE e executando quaisquer métodos _Lxx ou _Exx associados a bits GPE definidos. Em resposta a uma notificação de ativação no barramento PCI, o driver ACPI concluirá o IRP do WAIT_WAKE do driver PCI para notificar o driver PCI de que ele está ativando o sistema.

  2. Driver PCI: Verifica o espaço de configuração procurando por quaisquer dispositivos com um bit de status PME definido. Para cada dispositivo, ele desativa o PME e preenche o IRP WAIT_WAKE para que o dispositivo informe ao motorista que ele está afirmando despertar. O driver PCI pára de varredura para dispositivos de despertar quando ele fez uma passagem completa através de todos os dispositivos PCI não tendo encontrado nenhuma afirmação PME e quando PME pára de ser afirmado.

  3. Driver de dispositivo: solicita que o dispositivo seja colocado em D0 (consulte o cenário 2) e define quaisquer registros proprietários no chip necessários para lidar com o evento de despertar.

Chamada para ação sobre gerenciamento de energia PCI e drivers de dispositivo

  • Integre os recursos ACPI e PCI-PM em seus dispositivos, conforme descrito neste artigo.

  • A especificação PCI Power Management está disponível no site PCI-SIG.

  • Especificação ACPI disponível em https://www.uefi.org/specifications. Este link sai do site Microsoft.com.

  • O compilador ACPI Component Architecture (ACPICA) pode ser encontrado em https://acpica.org/downloads/binary-tools.