Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La hiperllamada HvCallSetVpRegisters escribe el estado de un procesador 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
);
El estado se escribe como una serie de valores de registro, cada uno correspondiente a un nombre de registro proporcionado como entrada.
La comprobación mínima de errores se realiza cuando se modifica un valor de registro. En concreto, el hipervisor validará que los bits reservados de un registro se establecen en cero, los bits que se definen de forma arquitectónica como siempre que contienen un cero o uno se establecen adecuadamente, y los bits especificados más allá del tamaño arquitectónico del registro son ceros.
Esta llamada no se puede usar para modificar el valor de un registro de solo lectura.
No se realizan efectos secundarios de modificar un registro. Esto incluye la generación de excepciones, sincronizaciones de canalización, vaciados de TLB, etc.
Restrictions
- El autor de la llamada debe ser el elemento primario de la partición especificada por PartitionId o la partición especificada debe ser "self" y la partición debe tener el privilegio AccessVpRegisters.
Código de llamada
0x0051 (Rep)
Parámetros de entrada
| Nombre | Desplazar | Tamaño | Información proporcionada |
|---|---|---|---|
PartitionId |
0 | 8 | Especifica el identificador de partición. |
VpIndex |
8 | 4 | Especifica el índice del procesador virtual. |
TargetVtl |
12 | 1 | especifica el VTL de destino. |
| RsvdZ | 13 | 3 |
Elemento Input List
| Nombre | Desplazar | Tamaño | Información proporcionada |
|---|---|---|---|
RegisterName |
0 | 4 | Especifica el nombre de un registro que se va a modificar. |
| RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | Especifica el nuevo valor para el registro especificado. |
Lista de registros anticipados (ARM64)
En ARM64, se pueden establecer determinados registros mediante esta hiperllamada antes de que el registro de identificador de sistema operativo invitado (HvRegisterGuestOsId) esté establecido en un valor distinto de cero. Esto permite la inicialización temprana de registros críticos del sistema durante el proceso de arranque.
Se permiten establecer los registros siguientes antes de la identificación del sistema operativo invitado:
| Nombre del registro | Description |
|---|---|
HvRegisterGuestOsId |
Registro de identificación del sistema operativo invitado |
HvArm64RegisterSyntheticVbarEl1 |
Registro de direcciones base de vectores sintéticos para EL1 |
HvRegisterGuestCrashCtl |
Registro del control de bloqueo de invitado |
HvRegisterGuestCrashP0 |
Parámetro de bloqueo de invitado 0 |
HvRegisterGuestCrashP1 |
Parámetro de bloqueo de invitado 1 |
HvRegisterGuestCrashP2 |
Parámetro de bloqueo de invitado 2 |
HvRegisterGuestCrashP3 |
Parámetro de bloqueo de invitado 3 |
HvRegisterGuestCrashP4 |
Parámetro de bloqueo de invitado 4 |
Todos los demás registros requieren que se establezca el identificador del sistema operativo invitado (distinto de cero) antes de que se puedan modificar a través de esta hiperllamada.
Nota: Establecer HvRegisterGuestOsId en un valor distinto de cero suele ser el primer paso de la secuencia de inicialización del hipervisor, ya que identifica el sistema operativo invitado al hipervisor y permite el acceso al conjunto de registros completo.