Partager via


Partitions

L’hyperviseur prend en charge l’isolation en termes de partition. Une partition est une unité logique d’isolation, prise en charge par l’hyperviseur, dans laquelle les systèmes d’exploitation s’exécutent.

Indicateurs de privilèges de partition

Chaque partition a un ensemble de privilèges attribués par l’hyperviseur. Les privilèges contrôlent l’accès aux registres synthétiques ou aux hypercalls.

Sur les plateformes x64, une partition peut interroger ses privilèges via la feuille CPUID (0x40000003) « Identification des fonctionnalités d’hyperviseur ».

Sur les plateformes ARM64, une partition peut interroger ses privilèges via le registre HvRegisterPrivilegesAndFeaturesInfo à l’aide de HvCallGetVpRegisters.

Consultez HV_PARTITION_PRIVILEGE_MASK pour obtenir une description de tous les privilèges.

Éclairage sur incident de partition

L’hyperviseur fournit des partitions d’invité avec une installation d’éclairage sur incident. Cette interface permet au système d’exploitation s’exécutant dans une partition invitée de fournir des informations d’investigation sur les conditions irrécupérables du système d’exploitation à l’hyperviseur dans le cadre de sa procédure de vidage sur incident. Les options incluent la préservation du contenu des registres de paramètres d’incident invité et la spécification d’un message d’incident. L’hyperviseur met ensuite ces informations à la disposition de la partition racine pour la journalisation. Ce mécanisme permet à l’administrateur hôte de virtualisation de collecter des informations sur l’événement d’incident du système d’exploitation invité sans avoir à inspecter le stockage persistant attaché à la partition invité pour les informations de vidage sur incident ou de vidage principal qui peuvent être stockées là par le système d’exploitation invité en panne.

Sur les plateformes x64, la disponibilité de ce mécanisme est indiquée via CPUID.0x40000003.EDX:10l’indicateur GuestCrashMsrsAvailable. Sur les plateformes ARM64, la disponibilité est indiquée dans le bit 105 de HvRegisterPrivilegesAndFeaturesInfo. Pour plus d’informations, reportez-vous à la découverte de fonctionnalités .

Interface d’éclairage sur incident invité

Sur les plateformes x64, l’interface d’éclairage sur incident invité est fournie via six MSR synthétiques, comme défini ci-dessous.

#define HV_X64_MSR_CRASH_P0 0x40000100
#define HV_X64_MSR_CRASH_P1 0x40000101
#define HV_X64_MSR_CRASH_P2 0x40000102
#define HV_X64_MSR_CRASH_P3 0x40000103
#define HV_X64_MSR_CRASH_P4 0x40000104
#define HV_X64_MSR_CRASH_CTL 0x40000105

Sur les plateformes ARM64, l’interface d’éclairage sur incident invité est fournie via six registres synthétiques accessibles via HvCallGetVpRegisters et HvCallSetVpRegisters :

  • HvRegisterGuestCrashP0
  • HvRegisterGuestCrashP1
  • HvRegisterGuestCrashP2
  • HvRegisterGuestCrashP3
  • HvRegisterGuestCrashP4
  • HvRegisterGuestCrashCtl

Registre du contrôle d’incident invité

Le registre du contrôle d’incident invité (HV_X64_MSR_CRASH_CTL sur x64, HvRegisterGuestCrashCtl sur ARM64) peut être utilisé par les partitions invitées pour déterminer les fonctionnalités d’incident invité de l’hyperviseur et appeler l’action spécifiée à entreprendre. La structure de données HV_CRASH_CTL_REG_CONTENTS définit le contenu du registre.

Détermination des fonctionnalités d’incident invité

Pour déterminer les fonctionnalités d’incident invité, les partitions invitées peuvent lire le registre du contrôle d’incident invité. L’ensemble d’actions et de fonctionnalités pris en charge par l’hyperviseur est signalé.

Appel des fonctionnalités d’incident invité

Pour appeler une action d’incident invité hyperviseur prise en charge, une partition invitée écrit dans le registre du contrôle d’incident invité, en spécifiant l’action souhaitée. Deux variantes sont prises en charge : CrashNotify par lui-même, et CrashMessage en combinaison avec CrashNotify. Pour chaque occurrence d’un incident invité, au plus une seule écriture dans le registre du contrôle d’incident invité doit être effectuée, en spécifiant l’une des deux variantes.

Action d’incident invité Descriptif
CrashMessage Cette action est utilisée en combinaison avec CrashNotify pour spécifier un message d’incident sur l’hyperviseur. Lorsque cette option est sélectionnée, les valeurs de P3 et P4 sont traitées comme l’emplacement et la taille du message. Le registre P3 contient l’adresse physique invité du message, et le registre P4 contient la longueur en octets du message (maximum de 4 096 octets).
CrashNotify Cette action indique à l’hyperviseur que la partition invitée a terminé d’écrire les données souhaitées dans les registres de paramètres d’incident invité (p0 thru P4) et que l’hyperviseur doit poursuivre la journalisation du contenu de ces registres.