Gerenciamento de Energia PCI e Drivers de Dispositivo

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

Drivers de dispositivo e gerenciamento de energia PCI

Essa discussão pressupõe que você esteja familiarizado com como os drivers do WDM (Modelo de Driver do Windows) lidam com eventos de gerenciamento de energia, conforme descrito no DDK atual do Windows. Em geral, as responsabilidades dos 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 registros PCI-PM para determinar os recursos do hardware. Quando o power IRPs solicita o estado de energia é alterado, o driver PCI grava nos registros de gerenciamento de energia PCI para definir o hardware para diferentes estados Dx.

    Quando um dispositivo está habilitado para ativação, o driver PCI grava em registros PCI-PM para permitir que o dispositivo dispare o PME (o ACPI também executará uma ação, consulte a próxima seção). Por fim, quando o ACPI determina que o barramento PCI está acordando 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 do 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 do dispositivo. Quando o driver do dispositivo recebe um POWER IRP solicitando uma alteração de estado de energia do dispositivo mais baixo, o driver do dispositivo é responsável por salvar qualquer contexto de dispositivo proprietário necessário para ativar posteriormente o dispositivo. Em alguns casos, pode não haver nada para salvar.

Os registros PCI-PM são estritamente o 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 do dispositivo é executar apenas ações proprietárias.

Integrando ACPI e PCI PM

Alguns dispositivos, particularmente dispositivos de vídeo de placa-mãe em portáteis, podem exigir o Gerenciamento de Energia PCI, bem como o ASL (Source Language Assembler) da ACPI para gerenciar completamente o dispositivo. Os registros do Gerenciamento de Energia PCI controlariam o estado interno de um dispositivo, como relógios internos e aviões de energia. A ASL controlaria o estado externo, como relógios externos e aviões de energia ou, no caso de controladores de vídeo, a ASL controlaria as luzes de fundo do 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, tratando naturalmente a integração do driver do dispositivo, do driver PCI e do driver ACPI (e asl). Os cenários a seguir mostram a ordem na qual os drivers são chamados para lidar com esses dispositivos.

Observação

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

Cenário 1: Desativar um dispositivo

  1. Driver de dispositivo: salva o estado do dispositivo proprietário.
  2. Driver PCI: salva Plug and Play configuração, desabilita o dispositivo (interrupções e BARs) e coloca o dispositivo em D3 usando registros PCI-PM.
  3. Driver ACPI: executa o código ASL (_PS3 e _OFF para recursos de energia que não estã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 qualquer recurso de energia necessário do OnNow) para controlar o estado externo ao chip.
  2. Driver PCI: coloca o dispositivo em D0 usando registros PCI-PM e restaura Plug and Play configuração (interrupções e BARs– eles 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 habilitar a ativação. Por exemplo, na ativação de rede de correspondência de padrões, é quando os padrões seriam programados no adaptador.
  2. Driver PCI: define os bits de ativação habilitados nos registros PCI PM para permitir que o dispositivo afirme o 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: Ativar

  1. Driver ACPI: ativa e verifica os bits de status gpe para eventos de ativação, desabilitando GPEs para definir bits de gpe status e executando qualquer _Lxx ou métodos _Exx associados a bits de GPE definidos. Em resposta a uma notificação de ativação no barramento PCI, o driver ACPI concluirá o WAIT_WAKE IRP do driver PCI para notificar o driver PCI de que ele está acordando o sistema.
  2. Driver PCI: verifica o espaço de configuração procurando dispositivos com um PME definido status bit. Para cada dispositivo, ele desabilita o PME e conclui a WAIT_WAKE IRP para que esse dispositivo informe ao driver que ele está afirmando ativação. O driver PCI interrompe a verificação de dispositivos de ativação quando faz uma passagem completa por todos os dispositivos PCI que não encontraram nenhum PME de declaração e quando o PME para de ser declarado.
  3. Driver de dispositivo: solicita que o dispositivo seja colocado em D0 (consulte o cenário 2) e define todos os registros proprietários no chip necessários para lidar com o evento de ativação.

Chamar para a ação no 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 do Gerenciamento de Energia PCI está disponível no site PCI-SIG.
  • Especificação de ACPI disponível em https://www.uefi.org/specifications. Esse link deixa o site Microsoft.com.
  • O compilador ACPICA (Arquitetura de Componentes do ACPI) pode ser encontrado em https://acpica.org/downloads/binary-tools.