Comment 8 for bug 1304107

Revision history for this message
Daniel Berrange (berrange) wrote :

Ok that log is interesting as it shows that Ubuntu have re-named the QEMU machine types

 ... -machine trusty,accel=tcg,usb=off ...

See 'trusty' is the machine type there instead of the more usual "pc-i440fx-1.6"

This unfortunately breaks the ability of libvirt to figure out what type of base board is used by the VM - it can't distinguish i440fx from q35. I'm guessing Ubuntu was probably inspired by the fact that we did a similar thing in RHEL-6, replacing 'pc' with 'rhel-6.1.0'.

The recommendation for distros who want to customize the machine types without breaking libvirt is to *not* replace the entire machine type name, but instead to just replace the upstream version number with a distro specific suffix.

eg change 'pc-i440fx-1.6' to be 'pc-i440fx-trusty'. That way libvirt can still see that this is an i440fx machine type and do the right thing with PCI address validation.

As a reference point, RHEL7 does this correctly now too, using 'pc-i440fx-rhel7.0.0' as machine type name.

Unfortunately there's nothing OpenStack Nova can do to workaround this. Either Ubuntu have to change their QEMU machine type name as illustrated, to maintain the right prefix, or they'll have to hack their libvirt build to cope with the bare name 'trusty' :-(