Compartilhar via


Partitions

O hipervisor dá suporte ao isolamento em termos de partição. Uma partição é uma unidade lógica de isolamento, com suporte do hipervisor, na qual os sistemas operacionais são executados.

Sinalizadores de privilégio de partição

Cada partição tem um conjunto de privilégios atribuídos pelo hipervisor. Os privilégios controlam o acesso a registros sintéticos ou hiperchamamentos.

Em plataformas x64, uma partição pode consultar seus privilégios por meio da Folha de CPUID (0x40000003) de "Identificação de Recursos do Hipervisor".

Em plataformas ARM64, uma partição pode consultar seus privilégios por meio do registro HvRegisterPrivilegesAndFeaturesInfo usando HvCallGetVpRegisters.

Consulte HV_PARTITION_PRIVILEGE_MASK para obter uma descrição de todos os privilégios.

Iluminação de falha de partição

O hipervisor fornece partições de convidado com uma instalação de iluminação de falha. Essa interface permite que o sistema operacional em execução em uma partição de convidado a opção de fornecer informações forenses sobre condições fatais do sistema operacional para o hipervisor como parte de seu procedimento de despejo de memória. As opções incluem preservar o conteúdo dos registros de parâmetro de falha de convidado e especificar uma mensagem de falha. Em seguida, o hipervisor disponibiliza essas informações para a partição raiz para registro em log. Esse mecanismo permite que o administrador do host de virtualização colete informações sobre o evento de falha do sistema operacional convidado sem a necessidade de inspecionar o armazenamento persistente anexado à partição de convidado para obter informações de despejo de memória ou despejo de núcleo que podem ser armazenadas lá pelo sistema operacional convidado em falha.

Em plataformas x64, a disponibilidade desse mecanismo é indicada por meio CPUID.0x40000003.EDX:10do sinalizador GuestCrashMsrsAvailable. Em plataformas ARM64, a disponibilidade é indicada no bit 105 de HvRegisterPrivilegesAndFeaturesInfo. Consulte a descoberta de recursos para obter detalhes.

Interface de iluminação de falha de convidado

Em plataformas x64, a interface de iluminação de falha de convidado é fornecida por meio de seis MSRs sintéticas, conforme definido abaixo.

#define HV_X64_MSR_CRASH_P0 0x40000100
#define HV_X64_MSR_CRASH_P1 0x40000101
#define HV_X64_MSR_CRASH_P2 0x40000102
#define HV_X64_MSR_CRASH_P3 0x40000103
#define HV_X64_MSR_CRASH_P4 0x40000104
#define HV_X64_MSR_CRASH_CTL 0x40000105

Nas plataformas ARM64, a interface de iluminação de falha de convidado é fornecida por meio de seis registros sintéticos acessados por meio de HvCallGetVpRegisters e HvCallSetVpRegisters:

  • HvRegisterGuestCrashP0
  • HvRegisterGuestCrashP1
  • HvRegisterGuestCrashP2
  • HvRegisterGuestCrashP3
  • HvRegisterGuestCrashP4
  • HvRegisterGuestCrashCtl

Registro de controle de falha de convidado

O registro de controle de falha de convidado (HV_X64_MSR_CRASH_CTL em x64, HvRegisterGuestCrashCtl no ARM64) pode ser usado por partições de convidado para determinar os recursos de falha de convidado do hipervisor e para invocar a ação especificada a ser executada. A estrutura de dados HV_CRASH_CTL_REG_CONTENTS define o conteúdo do registro.

Determinando recursos de falha de convidado

Para determinar os recursos de falha de convidado, as partições de convidado podem ler o registro de controle de falha do convidado. O conjunto de ações e recursos com suporte com suporte pelo hipervisor é relatado.

Invocando recursos de falha de convidado

Para invocar uma ação de falha de convidado do hipervisor com suporte, uma partição de convidado grava no registro de controle de falha do convidado, especificando a ação desejada. Há suporte para duas variações: CrashNotify por si só e CrashMessage em combinação com CrashNotify. Para cada ocorrência de uma falha de convidado, no máximo uma única gravação no registro de controle de falha de convidado deve ser executada, especificando uma das duas variações.

Ação de falha de convidado Description
CrashMessage Essa ação é usada em combinação com CrashNotify para especificar uma mensagem de falha para o hipervisor. Quando selecionado, os valores de P3 e P4 são tratados como o local e o tamanho da mensagem. O registro P3 contém o endereço físico convidado da mensagem e o registro P4 contém o comprimento em bytes da mensagem (máximo de 4096 bytes).
CrashNotify Essa ação indica ao hipervisor que a partição de convidado concluiu a gravação dos dados desejados nos registros de parâmetro de falha de convidado (ou seja, P0 a P4) e o hipervisor deve continuar registrando o conteúdo desses registros.