it-swarm.com.de

Prüfen Sie, ob VT-D/IOMMU im BIOS/UEFI aktiviert wurde

Um zu überprüfen, ob der VT-X von Intel oder AMD-V von AMD im BIOS/UEFI aktiviert ist, verwende ich:

if systool -m kvm_AMD -v &> /dev/null || systool -m kvm_intel -v &> /dev/null ; then
    echo "AMD-V / VT-X is enabled in the BIOS/UEFI."
else
    echo "AMD-V / VT-X is not enabled in the BIOS/UEFI"
fi

Ich konnte keinen Weg finden, um zu überprüfen, ob Intels VT-D oder AMDs IOMMU im BIOS/UEFI aktiviert sind. 

Ich brauche einen Weg, um festzustellen, ob es aktiviert ist oder nicht, ohne dass die Iommu-Kernel-Parameter festgelegt sind (iommu=1, AMD_iommu=on, intel_iommu=on).

Eine Idee, die ich hatte, war rdmsr, aber ich bin mir nicht sicher, ob das funktionieren würde. Anstelle von systool wollte ich anfangs Sudo rdmsr 0x3A verwenden, aber es funktionierte nicht für mich. Es berichtet immer:

rdmsr: CPU 0 cannot read MSR 0x0000003a

rdmsr ist Teil von msr-tools btw. Um verwendet zu werden, muss zuerst das msr kenel-Modul (Sudo modprobe msr) geladen werden.

Angeblich hätte Sudo rdmsr 0x3A3 oder 5 zurückgeben sollen, um anzuzeigen, dass VT-X/AMD-V aktiviert ist ...

2
Forivin

Wenn VT-d aktiviert ist, konfiguriert Linux zum Startzeitpunkt DMA Remapping. Der einfachste Weg, dies zu finden, besteht darin, DMAR-Einträge in dmesg zu suchen. Wenn Sie keine Fehler sehen, ist VT-d aktiviert.

Zum Beispiel:

[[email protected] ~]# dmesg | grep DMAR
[    0.000000] ACPI: DMAR 0x00000000BBECB000 0000A8 (v01 LENOVO TP-R0D   00000930 PTEC 00000002)
[    0.001000] DMAR: Host address width 39
[    0.001000] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.001000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[    0.001000] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.001000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[    0.001000] DMAR: RMRR base: 0x000000bbdd8000 end: 0x000000bbdf7fff
[    0.001000] DMAR: RMRR base: 0x000000bd000000 end: 0x000000bf7fffff
[    0.001000] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.001000] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.001000] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.002000] DMAR-IR: Enabled IRQ remapping in x2apic mode

Ein weiteres Beispiel mit x2apic opt out:

[[email protected] ~]# dmesg | grep DMAR
[    0.000000] ACPI: DMAR 0000000079a20300 000C4 (v01 SUPERM SMCI--MB 00000001 INTL 20091013)
[    0.106389] DMAR: Host address width 46
[    0.106392] DMAR: DRHD base: 0x000000fbffc000 flags: 0x1
[    0.106400] DMAR: dmar0: reg_base_addr fbffc000 ver 1:0 cap 8d2078c106f0466 ecap f020de
[    0.106402] DMAR: RMRR base: 0x0000007bb24000 end: 0x0000007bb32fff
[    0.106404] DMAR: ATSR flags: 0x0
[    0.106407] DMAR: RHSA base: 0x000000fbffc000 proximity domain: 0x0
[    0.106409] DMAR-IR: IOAPIC id 8 under DRHD base  0xfbffc000 IOMMU 0
[    0.106411] DMAR-IR: HPET id 0 under DRHD base 0xfbffc000
[    0.106413] DMAR-IR: x2apic is disabled because BIOS sets x2apic opt out bit.
[    0.106414] DMAR-IR: Use 'intremap=no_x2apic_optout' to override the BIOS setting.
[    0.106591] DMAR-IR: Enabled IRQ remapping in xapic mode

Auf jeden Fall suchen Sie nach dieser letzten Zeile, DMAR-IR: Enabled IRQ remapping in <whichever> mode.

Auf einem System, bei dem VT-d deaktiviert ist, wird entweder eine Fehlermeldung oder gar keine angezeigt.

[[email protected] ~]# dmesg | grep DMAR
[[email protected] ~]#
3
Michael Hampton

Aufbauend auf der Antwort von Jo-Erlend Schinstad:

Installieren Sie den CPU-Checker

$ Sudo apt-get update
$ Sudo apt-get install cpu-checker

Dann überprüfe:

$ kvm-ok

Wenn die CPU aktiviert ist, sollte Folgendes angezeigt werden:

INFO: /dev/kvm exists
KVM acceleration can be used

Ansonsten sehen Sie vielleicht etwas wie:

INFO: /dev/kvm does not exist
HINT:   Sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
INFO: KVM (vmx) is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
      and then hard poweroff/poweron your system
KVM acceleration can NOT be used
1
Ehsan Tadayon

Ich habe gerade einen anderen Weg gefunden, der scheinbar funktioniert, auch wenn die Kernel-Parameter von iommu nicht eingestellt wurden:

if compgen -G "/sys/kernel/iommu_groups/*/devices/*" > /dev/null; then
    echo "AMD's IOMMU / Intel's VT-D is enabled in the BIOS/UEFI."
else
    echo "AMD's IOMMU / Intel's VT-D is not enabled in the BIOS/UEFI"
fi
0
Forivin