Как определить, существует ли регистр для конкретной модели - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь проверить, ясен ли бит в IA32_VMX_EPT_VPID_CAP (48CH), но в некоторых случаях я работаю с аппаратным обеспечением, которое не имеет самого MSR (q9300), и получаю ошибку segfault.Мне было интересно, если есть инструкция или «хороший» способ проверить, существует ли MSR в первую очередь.Я знаю, что мог бы справиться с segfault или проверить модель ЦП и сравнить ее с подготовленной таблицей, в которой указано, какой ЦП имеет MSR, но эти решения кажутся мне немного беспорядочными.Я посмотрел на Intel Manuel, но я не нашел никаких ссылок на способ проверить это.Есть соглашение или более правильный путь, чем пути, упомянутые выше?

1 Ответ

0 голосов
/ 30 сентября 2018

Из раздела 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)
...