Partilhar via


Partições

O hipervisor suporta isolamento em termos de partição. Uma partição é uma unidade lógica de isolamento, suportada pelo hipervisor, na qual os sistemas operacionais são executados.

Flags 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 registos sintéticos ou hiperchamadas.

Em plataformas x64, uma partição pode consultar os seus privilégios através do CPUID Leaf (0x40000003) "Identificação de Funcionalidades do Hipervisor".

Nas plataformas ARM64, uma partição pode consultar os seus privilégios através do registo HvRegisterPrivilegesAndFeaturesInfo usando os registos HvCallGetVp.

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

Iluminação da Quebra da Partição

O hipervisor oferece às partições para convidados uma funcionalidade de iluminação contra falhas. Esta interface permite ao sistema operativo que corre numa partição convidada a opção de fornecer informações forenses sobre condições fatais do sistema operativo ao hipervisor como parte do seu procedimento de crash dump. As opções incluem preservar o conteúdo dos registos dos parâmetros de falha de convidados e especificar uma mensagem de falha. O hipervisor disponibiliza então esta informação à partição raiz para registo. Este mecanismo permite ao administrador do host de virtualização recolher informações sobre o evento de falha do sistema operativo convidado sem precisar de inspecionar o armazenamento persistente associado à partição convidada para informações de dump de falhas ou de despejo do núcleo que possam estar armazenadas pelo sistema operativo convidado que falha.

Nas plataformas x64, a disponibilidade deste mecanismo é indicada através CPUID.0x40000003.EDX:10do flag GuestCrashMsrsAvailable. Nas plataformas ARM64, a disponibilidade é indicada no bit 105 de HvRegisterPrivilegesAndFeaturesInfo. Consulte a descoberta de funcionalidades para mais detalhes.

Interface de Iluminação por Crash de Convidados

Em plataformas x64, a interface de iluminação de crash para convidados é fornecida através de seis MSRs sintéticos, 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 falhas de convidados é fornecida através de seis registos sintéticos acedidos através de registos HvCallGetVp e HvCallSetVpRegisters:

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

Registo de Controlo de Acidentes de Visitantes

O registo de controlo de falhas de convidados (HV_X64_MSR_CRASH_CTL em x64, HvRegisterGuestCrashCtl em ARM64) pode ser usado por partições convidadas para determinar as capacidades de falha de convidados do hipervisor e para invocar a ação especificada a tomar. A estrutura de dados HV_CRASH_CTL_REG_CONTENTS define o conteúdo do registo.

Determinação das Capacidades de Falha dos Convidados

Para determinar as capacidades de falha de convidados, as partições de convidados podem ler o registo de controlo de falhas de convidados. É reportado o conjunto de ações e capacidades suportadas pelo hipervisor.

Invocação de Capacidades de Crash de Convidados

Para invocar uma ação de crash de convidado suportada no hipervisor, uma partição de convidados escreve no registo de controlo de falhas de convidados, especificando a ação desejada. São suportadas duas variações: CrashNotify isoladamente e CrashMessage em combinação com CrashNotify. Para cada ocorrência de crash de convidado, deve ser realizada no máximo uma única escrita no registo de controlo de falhas de convidados, especificando uma das duas variações.

Ação de Acidente de Convidados Description
CrashMessage Esta ação é usada em combinação com o CrashNotify para especificar uma mensagem de falha para o hipervisor. Quando selecionados, os valores de P3 e P4 são tratados como a localização e o tamanho da mensagem. O registo P3 contém o endereço físico convidado da mensagem, e o registo P4 contém o comprimento em bytes da mensagem (máximo de 4096 bytes).
CrashNotify Esta ação indica ao hipervisor que a partição de convidados completou a escrita dos dados desejados nos registos de parâmetros de falha de convidados (ou seja, de P0 a P4), e que o hipervisor deve proceder a registar o conteúdo desses registos.