Как установить регистр процессора EDX в libvirt / qemu?

452
Ben

Мне нужно установить регистр EDX процессора в libvirt согласно: https://support.microsoft.com/en-gb/help/2902739/stop-error-0x109-critical-structure-corruption-on-a-vmware-virtual -mac однако я не могу найти опцию ни для libvirt vm xml, ни в файле на/usr/share/libvirt/cpu_map.xml

Любая помощь приветствуется.

0
Я искренне сомневаюсь, что вам нужно установить регистр EDX. Исправление, описанное на этой веб-странице, относится к VMware, работающему в Windows. Это не имеет ничего общего с QEMU. Jamie Hanrahan 6 лет назад 0
Ну, это, похоже, вызывает ту же ошибку BSOD, что и указанное исправление. странный Ben 6 лет назад 0
Хорошо, но CRITICAL_STRUCTURE_CORRUPTION может ссылаться на любую из примерно тысячи различных структур данных. Это также не относится к виртуальным машинам. Если вы просмотрите https://en.wikipedia.org/wiki/CPUID#EAX.3D80000001h:_Extended_Processor_Info_and_Feature_Bits, вы увидите, что (при обычном порядке следования битов) эта процедура заставляет CPUID, видимый гостевыми ОС, сообщать, что инструкция RDTSCP (счетчик меток времени чтения и идентификатор процессора) недоступна. Если у вас нет причин полагать, что ваш BSOD как-то связан с этой инструкцией, описанное исправление неприменимо. Jamie Hanrahan 6 лет назад 0

1 ответ на вопрос

0
DanielB

Даже если вы видите одно и то же сообщение об ошибке на синем экране, я довольно скептически отношусь к тому, что описанное WRT VMWare исправление применимо к KVM. В статье поддержки говорится о конкретной ошибке в конкретной версии VMWare, которая вряд ли будет присутствовать в KVM. Более вероятно, что есть другая проблема, вызывающая тот же конечный результат.

Тем не менее, если вы действительно хотите попробовать это, IIUC, значение VMware ----:0---:----:----:----:----:----:----представляется двоичной строкой для значения регистра EDX. Это соответствует шестнадцатеричному коду 0x8000000. В соответствии с базой данных сопоставления идентификаторов ЦП libvirt, это должно относиться к функции rdtscp

<feature name='rdtscp'> <cpuid eax_in='0x80000001' edx='0x08000000'/> </feature> 

Включена ли эта функция для вашего гостя или нет, зависит от того, <cpu>настроена ли какая-либо модель в вашем гостевом XML. Предполагая, что у вас настроена модель процессора, вы можете отключить эту функцию следующим образом:

<cpu> ... <feature name="rdtscp" policy="disable"/> ...  </cpu> 

Для получения дополнительной информации см. Https://libvirt.org/formatdomain.html#elementsCPU.