Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.