Перегородки

Гипервизор поддерживает изоляцию с точки зрения секции. Секция — это логическая единица изоляции, поддерживаемая гипервизором, в которой выполняются операционные системы.

Флаги привилегий секции

Каждый раздел имеет набор привилегий, назначенных гипервизором. Привилегии управляют доступом к искусственным регистрам или гиперкалилям.

На платформах x64 секция может запрашивать свои привилегии с помощью конечной страницы ЦПID (0x40000003).

На платформах ARM64 секция может запрашивать свои привилегии с помощью регистрации HvRegisterPrivilegesAndFeaturesInfo с помощью HvCallGetVpRegisters.

Описание всех привилегий см. в HV_PARTITION_PRIVILEGE_MASK .

Сбой секции

Гипервизор предоставляет гостевые секции с средством аварийного просвещения. Этот интерфейс позволяет операционной системе, работающей в гостевой секции, предоставлять криминалистическую информацию о неустранимых условиях ОС гипервизору в рамках процедуры аварийного дампа. Параметры включают сохранение содержимого регистров параметра аварийного сбоя гостя и указание сообщения о сбое. Затем гипервизор предоставляет эти сведения корневой секции для ведения журнала. Этот механизм позволяет администратору узла виртуализации собирать сведения о событии сбоя гостевой ОС без необходимости проверять постоянное хранилище, подключенное к гостевой секции для аварийного дампа или основного дампа, которые могут храниться там сбоем гостевой ОС.

На платформах x64 доступность этого механизма указывается с помощью CPUID.0x40000003.EDX:10флага GuestCrashMsrsAvailable. На платформах ARM64 доступность указывается в бите 105 hvRegisterPrivilegesAndFeaturesInfo. Дополнительные сведения см. в статье об обнаружении признаков .

Интерфейс просвещений гостевой аварии

На платформах x64 интерфейс просвещений гостевых сбоев предоставляется через шесть синтетических MSR, как описано ниже.

#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

На платформах ARM64 интерфейс просвещений гостевых сбоев предоставляется через шесть искусственных регистров, доступ к которые осуществляется через HvCallGetVpRegisters и HvCallSetVpRegisters:

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

Регистрация гостевого аварийного сбоя

Регистр гостевого аварийного восстановления (HV_X64_MSR_CRASH_CTL на x64, HvRegisterGuestCrashCtl на ARM64) может использоваться гостевыми секциями для определения возможностей гостевого сбоя гипервизора и вызова указанных действий для выполнения. Структура данных HV_CRASH_CTL_REG_CONTENTS определяет содержимое регистра.

Определение возможностей аварийного сбоя гостей

Чтобы определить возможности аварийного сбоя гостя, гостевые секции могут считывать регистр гостевого аварийного управления. Сообщается поддерживаемый набор действий и возможностей, поддерживаемых гипервизором.

Вызов возможностей аварийного сбоя гостевой системы

Чтобы вызвать поддерживаемое действие аварийного сбоя с гипервизором, гостевой раздел записывается в регистр гостевого аварийного управления, указывая требуемое действие. Поддерживаются два варианта: CrashNotify самостоятельно и CrashMessage в сочетании с CrashNotify. Для каждого вхождения аварийного сбоя гостя необходимо выполнить по крайней мере одну запись в регистр гостевого элемента управления аварийного сбоя, указав один из двух вариантов.

Действие аварийного сбоя гостя Description
CrashMessage Это действие используется в сочетании с CrashNotify для указания сообщения о сбое гипервизора. При выборе значения P3 и P4 обрабатываются как расположение и размер сообщения. Регистр P3 содержит гостевой физический адрес сообщения, а регистр P4 содержит длину в байтах сообщения (не более 4096 байт).
CrashNotify Это действие указывает гипервизору, что гостевая секция завершила запись нужных данных в регистры параметров аварийного сбоя гостя (т. е. P0 thru P4), а гипервизор должен продолжить ведение журнала содержимого этих регистров.