Как определить, существует ли регистр для конкретной модели
Я пытаюсь проверить, ясен ли бит в IA32_VMX_EPT_VPID_CAP (48CH), но в некоторых случаях я работаю с аппаратным обеспечением, которое не имеет самого MSR (q9300), и получаю ошибку сегмента. Мне было интересно, если есть инструкция или "хороший" способ проверить, существует ли MSR в первую очередь. Я знаю, что мог бы справиться с segfault или проверить модель процессора и сравнить ее с подготовленной таблицей, в которой процессор имеет msr, но эти решения кажутся мне немного беспорядочными. Я просмотрел Intel Manuel, но не нашел никаких ссылок на способ проверить это. Есть соглашение или более правильный путь, чем пути, упомянутые выше?
1 ответ
Из раздела A.10 Intel SDM:
MSR IA32_VMX_EPT_VPID_CAP существует на процессорах, которые поддерживают EPT или VPID.
Поэтому вы должны проверить следующее:
- бит 63 MSR IA32_VMX_PROCBASED_CTLS равен 1 (поддержка вторичных элементов управления)
- и бит 33 или бит 37 MSR IA32_VMX_PROCBASED_CTLS2 равен 1 (поддержка EPT или VPID)