Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A hiperchamada HvCallSetVpRegisters grava o estado de um processador virtual.
Interfaz
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 correspondendo a um nome de registro fornecido como entrada.
A verificação de erros mínimos é 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 arquitetonicamente definidos como sempre contendo um zero ou um são definidos apropriadamente e os bits especificados além do tamanho arquitetônico do registro são zerados.
Esta chamada não pode ser usada para modificar o valor de um registro somente leitura.
Os efeitos secundários da modificação de um registo não são realizados. Isso inclui a geração de exceções, sincronizações de pipeline, liberações de TLB e assim por diante.
Restrições
- 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 | Compensação | Tamanho | Informações Prestadas |
|---|---|---|---|
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 da lista de entrada
| Nome | Compensação | Tamanho | Informações Prestadas |
|---|---|---|---|
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 Registos Antecipados (ARM64)
No ARM64, certos registros podem ser definidos usando essa hiperchamada antes que o registro de ID do SO convidado (HvRegisterGuestOsId) seja definido como um valor diferente de zero. Isso permite a inicialização antecipada de registradores críticos do sistema durante o processo de inicialização.
Os seguintes registros podem ser definidos antes da identificação do SO convidado:
| Nome do Registo | Description |
|---|---|
HvRegisterGuestOsId |
Registo de identificação do sistema operativo convidado |
HvArm64RegisterSyntheticVbarEl1 |
Registro de endereço base vetorial sintético para EL1 |
HvRegisterGuestCrashCtl |
Registo de controlo de colisão de convidados |
HvRegisterGuestCrashP0 |
Parâmetro de falha do convidado 0 |
HvRegisterGuestCrashP1 |
Parâmetro de falha do convidado 1 |
HvRegisterGuestCrashP2 |
Parâmetro de falha do convidado 2 |
HvRegisterGuestCrashP3 |
Parâmetro de falha do convidado 3 |
HvRegisterGuestCrashP4 |
Parâmetro de falha do convidado 4 |
Todos os outros registos requerem que o ID do SO convidado seja estabelecido (diferente de zero) antes de poderem ser modificados através desta hiperchamada.
Observação: 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 completo de registros.