HvCallSetVpRegisters
L’hypercall HvCallSetVpRegisters écrit l’état d’un processeur virtuel.
Interface
HV_STATUS
HvCallSetVpRegisters(
_In_ HV_PARTITION_ID PartitionId,
_In_ HV_VP_INDEX VpIndex,
_In_ HV_INPUT_VTL InputVtl,
_Inout_ PUINT32 RegisterCount,
_In_reads(RegisterCount) PCHV_REGISTER_NAME RegisterNameList,
_In_reads(RegisterCount) PCHV_REGISTER_VALUE RegisterValueList
);
L’état est écrit sous la forme d’une série de valeurs de registre, chacune correspondant à un nom de registre fourni en tant qu’entrée.
Une vérification minimale des erreurs est effectuée lorsqu’une valeur de registre est modifiée. En particulier, l’hyperviseur vérifie que les bits réservés d’un registre sont définis sur zéro, que les bits définis sur le plan architectural comme contenant toujours un zéro ou un sont définis de manière appropriée, et que les bits spécifiés au-delà de la taille architecturale du registre sont définis à zéro.
Cet appel ne peut pas être utilisé pour modifier la valeur d’un registre en lecture seule.
Les effets secondaires de la modification d’un registre ne sont pas effectués. Cela inclut la génération d’exceptions, les synchronisations de pipeline, les vidages TLB, etc.
Restrictions
- L’appelant doit être le parent de la partition spécifiée par PartitionId, ou la partition spécifiée doit être « auto » et la partition doit avoir le privilège AccessVpRegisters.
Code d’appel
0x0051
(Rep)
Paramètres d’entrée
Nom | Offset | Taille | Informations fournies |
---|---|---|---|
PartitionId |
0 | 8 | Spécifie l’ID de partition. |
VpIndex |
8 | 4 | Spécifie l’index du processeur virtuel. |
TargetVtl |
12 | 1 | spécifie la durée de vie VTL cible. |
RsvdZ | 13 | 3 |
Élément de liste d’entrée
Nom | Offset | Taille | Informations fournies |
---|---|---|---|
RegisterName |
0 | 4 | Spécifie le nom d’un registre à modifier. |
RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | Spécifie la nouvelle valeur pour le registre spécifié. |