¿Faltan capacidades AESNI, RDRAND y RDSEED?

¿Faltan capacidades AESNI, RDRAND y RDSEED?

Tengo una máquina con un Core-i5 5200U. Es un procesador de 5ª generación, por lo que cuenta con AESNI, RDRAND y RDSEED. Es la razón por la que compré la máquina.

La máquina ejecuta Ubuntu Server 14.04.03. Ubuntu proporciona KVM y libvirt. Uno de los invitados es Debian 8.2 y Debian proporcionasoporte x32. X32 es diferente de X86 y X64; ver tambiénPuerto Debian x32en la wiki de Debian.

cuando me agarredmesgen el invitado Debian, veo que la arquitectura está habilitada:

$ 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

Dos de las tres características nativas de la CPU se enumeran en las capacidades del host Ubuntu, lo cual es algo sorprendente ya que esperaría ver AES antes que los demás:

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

Sin embargo, cuando gato/proc/cpuinfoEn el invitado Debian, faltan las tres características de la CPU que quiero probar en X32:

$ 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
...

he revisadoLibvirt identifica el procesador host como un modelo diferente de la documentación del hardware., pero no tengo claro qué debo hacer para habilitar las instrucciones que estoy intentando probar bajo la arquitectura.

¿Cómo puedo habilitar AESNI, RDRAND y RDSEED en la CPU en la VM Debian?


Aquí está el script que utilicé para crear la VM:

$ 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

Respuesta1

Debe especificar el "modelo" de CPU que libvirt/qemu utiliza para la VM.

La forma más sencilla es utilizar el modelo "host", que expondrá todos los indicadores compatibles con libvirt/qemu desde el host a la VM.

En la estrofa XML de libvirt:

<cpu mode='host-model'/>

Documento completo aquí:https://libvirt.org/formatdomain.html#elementsCPU

información relacionada