V-comp

Последовательные асинхронные порты
в терминальных и платежных системах

 
 
 












Идентификация ресурсов Intel VMX

Перед включением режима VMX, программа должна проверить наличие его поддержки процессором и прочитать ряд параметров, характеризующих функционирование виртуальной машины. Выполнив функцию 1 инструкции CPUID, мы можем получить в регистрах EDX и ECX битовую карту, в которой каждый бит индицирует поддержку процессором определенной технологии: 0=не поддерживается, 1=поддерживается (CPU Feature Flags). Технологии VMX соответствует бит 5 регистра ECX. Подробности в [6]. Если VMX поддерживается, можно переходить к чтению параметров виртуальной машины. Для этого существует группа Model-Specific регистров (MSR), называемая VMX Capability MSR. Эти регистры имеют статус Read Only и доступны по адресам 480h-490h в пространстве MSR. Напомним, что для чтения MSR используется инструкция RDMSR, которая принимает адрес MSR в регистре ECX и возвращает 64-битное значение, прочитанное из заданного MSR в регистрах EDX (старшие биты) и EAX (младшие биты).

Группа VMX Capability MSR содержит следующие регистры:

IA32_VMX_BASIC MSR (адрес 480h)

Содержит номер ревизии VMX, значение размера регионов VMXON и VMCS, и другие параметры.

IA32_VMX_PINBASED_CTLS MSR (адрес 481h)
IA32_VMX_TRUE_PINBASED_CTLS MSR (адрес 48Dh)

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

IA32_VMX_PROCBASED_CTLS MSR (адрес 482h)
IA32_VMX_TRUE_PROCBASED_CTLS MSR (адрес 48Eh)
IA32_VMX_PROCBASED_CTLS2 MSR (адрес 48Bh)

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

IA32_VMX_EXIT_CTLS MSR (адрес 483h)
IA32_VMX_TRUE_EXIT_CTLS MSR (адрес 48Fh)

Содержат битовые карты, отражающие поддержку процессором ряда опций, управляющих операцией VM Exit (завершение выполнения "гостевой" программы и возврат в супервизор).

IA32_VMX_ENTRY_CTLS MSR (адрес 484h)
IA32_VMX_TRUE_ENTRY_CTLS MSR (адрес 490h)

Содержат битовые карты, отражающие поддержку процессором ряда опций, управляющих операцией VM Entry (передача управления из супервизора в "гостевую" программу).

IA32_VMX_MISC MSR (адрес 485h)

Содержит параметры, отражающие поддержку процессором ряда функций, управляющих контекстом виртуальной машины.

IA32_VMX_CR0_FIXED0 MSR (адрес 486h)
IA32_VMX_CR0_FIXED1 MSR (адрес 487h)

Эти регистры побитно соответствуют системному регистру управления CR0 и отражают ограничения, накладываемые на его содержимое при переходе в режим VMX. Для каждого бита регистра CR0 они определяют допустимые значения этого бита. При этом может быть 3 варианта: бит должен быть в "0", бит должен быть в "1" или оба значения "0" и "1" допустимы.

IA32_VMX_CR4_FIXED0 MSR (адрес 488h)
IA32_VMX_CR4_FIXED1 MSR (адрес 489h)

Эти регистры побитно соответствуют системному регистру управления CR4 и отражают ограничения, накладываемые на его содержимое при переходе в режим VMX. См. комментарий в предыдущем пункте.

IA32_VMX_VMCS_ENUM MSR (адрес 48Ah)

Содержит максимальное значение индекса, используемое при адресации полей блока VMCS.

IA32_VMX_EPT_VPID_CAP MSR (адрес 48Ch)

Содержит параметры, отражающие поддержку процессором режимов EPT (Extended Page Tables) и VPID (Virtual Processor Identifier). Для управления режимом VMX также используются IA32_FEATURE_CONTROL MSR (адрес 3Ah) и бит CR4.VMXE (бит 13).

Регионы VMXON и VMCS


Рейтинг@Mail.ru

Copyright 2010 V-comp