Recursos AESNI, RDRAND e RDSEED ausentes?

1

Eu tenho uma máquina com um Core-i5 5200U. É um processador de 5ª geração, por isso tem AESNI, RDRAND e RDSEED. É a razão pela qual eu comprei a máquina.

A máquina está executando o Ubuntu Server 14.04.03. O Ubuntu está fornecendo KVM e libvirt. Um dos convidados é o Debian 8.2, e o Debian oferece suporte ao X32 . X32 é diferente de X86 e X64; veja também porta x32 do Debian no wiki do Debian.

Quando eu grep dmesg no guest do Debian, eu vejo que a arquitetura 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

Dois dos três recursos nativos da CPU estão listados em recursos no host Ubuntu, o que é surpreendente, já que eu esperaria ver o AES antes dos outros:

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

No entanto, quando eu pinto /proc/cpuinfo sob o guest Debian, faltam os três recursos da CPU que eu quero testar no 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
...

Revisei Libvirt identifica o processador host como um modelo diferente da documentação do hardware , mas não está claro para mim o que devo fazer para ativar as instruções que estou tentando testar na arquitetura.

Como posso ativar o AESNI, RDRAND e RDSEED na CPU da máquina virtual Debian?

Aqui está o script que usei para criar a 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
    
por jww 30.01.2016 / 21:52

1 resposta

3

Você deve especificar a CPU "modelo" que o libvirt / qemu usa para a VM.

A maneira mais simples é usar o modelo "host", que irá expor todos os sinalizadores suportados pelo libvirt / qemu do host para a VM.

Na sub-rotina do libvirt XML:

<cpu mode='host-model'/>

Documento completo 'aqui: link

    
por 18.03.2016 / 16:06