Fehlen Ihnen die AESNI-, RDRAND- und RDSEED-Funktionen?

Fehlen Ihnen die AESNI-, RDRAND- und RDSEED-Funktionen?

Ich habe eine Maschine mit einem Core-i5 5200U. Das ist ein Prozessor der 5. Generation, also hat er AESNI, RDRAND und RDSEED. Das ist der Grund, warum ich die Maschine gekauft habe.

Auf der Maschine läuft Ubuntu Server 14.04.03. Ubuntu stellt KVM und libvirt zur Verfügung. Einer der Gäste ist Debian 8.2, und Debian stelltX32-Unterstützung. X32 ist nicht dasselbe wie X86 und X64; siehe auchDebian x32-Portierungim Debian-Wiki.

Wenn ich grepdmesgAuf dem Debian-Gast sehe ich, dass die Architektur aktiviert ist:

$ dmesg | grep -i x32
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[    0.328179] Enabled x32 syscalls

Zwei der drei nativen CPU-Funktionen sind in den Fähigkeiten des Ubuntu-Hosts aufgeführt, was ziemlich überraschend ist, da ich erwartet hätte, AES vor den anderen zu sehen:

$ virsh capabilities | egrep "(aes|rdrand|rdseed)"
      <feature name='rdseed'/>
      <feature name='rdrand'/>

Wenn ich jedoch Katze/proc/cpuinfoUnter dem Debian-Gast fehlen die drei CPU-Funktionen, die ich unter X32 testen möchte:

$ cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 6
model name  : QEMU Virtual CPU version 2.0.0
...
flags       : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx
              fxsr sse sse2 syscall nx lm rep_good nopl pni vmx cx16 x2apic popcnt
              hypervisor lahf_lm abm tpr_shadow vnmi flexpriority ept
...

Ich habe überprüftLibvirt identifiziert den Hostprozessor als ein anderes Modell als die Hardwaredokumentation, aber mir ist nicht klar, was ich tun soll, um die Anweisungen zu aktivieren, die ich unter der Architektur testen möchte.

Wie kann ich AESNI, RDRAND und RDSEED auf der CPU in der Debian-VM aktivieren?


Hier ist das Skript, das ich zum Erstellen der VM verwendet habe:

$ cat mk-vm.sh
#!/bin/bash

NAME=Debian_8_x64
ISO_PATH=/opt/libvirt/images/debian-8.2.0-amd64-netinst.iso
DISK_PATH="/opt/libvirt/machines/$NAME/$NAME.img"

mkdir -p "/opt/libvirt/machines/$NAME"

virt-install \
  --connect qemu:///system \
  --virt-type kvm \
  --name "$NAME" \
  --ram 2048 \
  --disk path=$DISK_PATH,size=8 \
  --vnc \
  --cdrom $ISO_PATH \
  --livecd \
  --network network=host-bridge \
  --os-type linux

Antwort1

Sie müssen das CPU-„Modell“ angeben, das libvirt/qemu für die VM verwendet.

Am einfachsten geht das, indem man das „Host“-Modell verwendet, das alle von libvirt/qemu unterstützten Flags vom Host für die VM verfügbar macht.

In der libvirt XML-Strophe:

<cpu mode='host-model'/>

Vollständiges Dokument hier:https://libvirt.org/formatdomain.html#elementsCPU

verwandte Informationen