Compartilhar via


HvCallSetVpRegisters

A hiperchamada HvCallSetVpRegisters grava o estado de um processador virtual.

Interfase

HV_STATUS
HvCallSetVpRegisters(
   _In_ HV_PARTITION_ID PartitionId,
   _In_ HV_VP_INDEX VpIndex,
   _In_ HV_INPUT_VTL InputVtl,
   _Inout_ UINT32* RegisterCount,
   _In_reads_(*RegisterCount) const HV_REGISTER_NAME* RegisterNameList,
   _In_reads_(*RegisterCount) const HV_REGISTER_VALUE* RegisterValueList
   );

O estado é escrito como uma série de valores de registro, cada um correspondente a um nome de registro fornecido como entrada.

A verificação mínima de erros é executada quando um valor de registro é modificado. Em particular, o hipervisor validará que os bits reservados de um registro são definidos como zero, os bits que são definidos arquitetônicamente como sempre contendo um zero ou um são definidos adequadamente e os bits especificados além do tamanho arquitetônico do registro são zerados.

Essa chamada não pode ser usada para modificar o valor de um registro somente leitura.

Efeitos colaterais da modificação de um registro não são executados. Isso inclui a geração de exceções, sincronizações de pipeline, liberações de TLB e assim por diante.

Restrictions

  • O chamador deve ser o pai da partição especificada por PartitionId ou a partição especificada deve ser "self" e a partição deve ter o privilégio AccessVpRegisters.

Código de chamada

0x0051 (Rep)

Parâmetros de Entrada

Nome Offset Tamanho Informações fornecidas
PartitionId 0 8 Especifica a ID da partição.
VpIndex 8 4 Especifica o índice do processador virtual.
TargetVtl 12 1 especifica a VTL de destino.
RsvdZ 13 3

Elemento Input List

Nome Offset Tamanho Informações fornecidas
RegisterName 0 4 Especifica o nome de um registro a ser modificado.
RsvdZ 4 12
RegisterValue 16 16 Especifica o novo valor para o registro especificado.

Lista de Registro Antecipado (ARM64)

No ARM64, determinados registros podem ser definidos usando essa hiperchamada antes que o registro da ID do so convidado (HvRegisterGuestOsId) seja definido como um valor diferente de zero. Isso permite a inicialização antecipada de registros críticos do sistema durante o processo de inicialização.

Os seguintes registros têm permissão para serem definidos antes da identificação do so convidado:

Nome do Registro Description
HvRegisterGuestOsId Registro de identificação do sistema operacional convidado
HvArm64RegisterSyntheticVbarEl1 Registro de endereço base de vetor sintético para EL1
HvRegisterGuestCrashCtl Registro de controle de falha de convidado
HvRegisterGuestCrashP0 Parâmetro de falha de convidado 0
HvRegisterGuestCrashP1 Parâmetro de falha de convidado 1
HvRegisterGuestCrashP2 Parâmetro de falha de convidado 2
HvRegisterGuestCrashP3 Parâmetro de falha de convidado 3
HvRegisterGuestCrashP4 Parâmetro de falha de convidado 4

Todos os outros registros exigem que a ID do so convidado seja estabelecida (diferente de zero) antes que elas possam ser modificadas por meio dessa hiperchamada.

Nota: A configuração HvRegisterGuestOsId para um valor diferente de zero normalmente é a primeira etapa na sequência de inicialização do hipervisor, pois identifica o sistema operacional convidado para o hipervisor e permite o acesso ao conjunto de registros completo.

Consulte também

HV_REGISTER_NAME

HV_REGISTER_VALUE