A única maneira que encontrei para fazer isso funcionar é passar o parâmetro -no-kvm-irqchip para kvm. A maneira mais fácil de fazer isso no libvirt é criar um script wrapper (por exemplo, / usr / local / bin / kvmbsd)
#!/bin/sh
exec /usr/bin/kvm "$@" -no-kvm-irqchip
E altere a linha do emulador em sua configuração libvirt para apontar para o script wrapper.
/usr/local/bin/kvmbsd
Isso me permite desligar (mas não reinicializar - isso não parece ser implementado no libvirt / kvm ainda) meu vms baseado no FreeBSD.