Подскажите, как отключить tdp_mmu на Debian 5.15.39.
При проверке cat /sys/module/kvm/parameters/tdp_mmu выдает Y.
Старое оборудование и новое ядро 5.15
KVM: ошибка ввода, аппаратная ошибка 0x80000021
Предыстория
В ядре 5.15 реализация модуля управления памятью (MMU) с двумерной подкачкой (TDP) была активирована по умолчанию. Новая реализация снижает сложность сопоставления адреса виртуальной памяти гостевой ОС с адресом физической памяти хоста и повышает производительность, особенно во время миграции виртуальных машин с большим объемом памяти и большим количеством ядер процессора. Однако было показано, что новая функция TDP MMU вызывает регрессии на некоторых (в основном) старых аппаратных средствах, вероятно, из-за предположений о том, когда требуется резервный вариант, который не выполняется этим HW.
Проблема проявляется в виде сбоев компьютера с помощью kernel (dmesg) или journalctlзаписи в журнале, среди прочего, с такой строкой:
KVM: entry failed, hardware error 0x80000021
Обычно примерно в то же время из процесса QEMU также регистрируется сообщение об ошибке assert. Виртуальные машины Windows чаще всего затрагиваются в отчетах пользователей.
Не удалось точно определить затронутые модели, но, похоже, процессоры, выпущенные более 8 лет назад, скорее всего, вызывают проблему. Обратите внимание, что известны случаи, когда обновление до последней доступной прошивки (BIOS / EFI) и микрокода процессора исправляло регрессию. Таким образом, прежде чем пытаться использовать описанный ниже обходной путь, мы рекомендуем убедиться, что у вас установлена последняя версия микропрограммы и микрокода процессора.
Обходной путь: отключить tdp_mmu
Параметр tdp_mmuмодуля kvm можно использовать для принудительного отключения использования модуля двумерной подкачки (TDP) MMU.
Вы можете либо добавить этот параметр в командную строку ядра хоста PVEkvm.tdp_mmu=N, см. Этот раздел справочной документации.
В качестве альтернативы можно задать параметр модуля, используя конфигурацию modprobe, например:
echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# cat /sys/module/kvm/parameters/tdp_mmu
Y
root@Line-host:~# update-initramfs -k all -u
update-initramfs: Generating /boot/initrd.img-5.15.39-1-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.15.35-2-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.13.19-6-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.13.19-2-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
root@Line-host:~#