From Fedora Project Wiki

KVM Stable Guest ABI

Summary

Allow guest virtual machines to be presented with the same ABI across QEMU upgrades.

The idea is that the hardware profile of the virtual machine should not change when QEMU is upgraded.

This is particularly important for Windows guests where a guest ABI change may require Windows installs to be reactivated.

See also Features/KVM Stable PCI Addresses.

Owner

Current status

  • Targeted release: Fedora 12
  • Last updated: 2009-08-05
  • Percentage of completion: 100%

Completed

  • Settled on a solution.
  • QEMU patches to add the pc-0.10 machine type posted and accepted for 0.11
  • QEMU patches posted to add the pc-0.11 machine type and alias it to pc
  • libvirt patch posted to make it canonicalize QEMU machine types when the guest is first created
  • Ensure the remaining patches for libvirt and QEMU are accepted and included in Fedora 12
  • Testing

Detailed Description

KVM guests are presented with an emulated hardware platform that includes (e.g. a CPU model, APIC, PIT, ACPI tables, IDE/USB/VGA controllers, NICs etc.). When QEMU is updated to a new version, some aspects of this platform may change as new hardware capabilities are added to that platform.

From the guest OS point of view, this is equivalent to updating a physical hardware platform and may, in the case of Windows, require the OS install to be activated. To avoid such issues, guest machines should transparently continue to run on their original platform, even when QEMU is upgraded.

A number of solutions were discussed upstream. In the end, it was decided that each release should add a new machine type (e.g. qemu -M pc-0.11) and the pc machine type should be an alias for the latest. This allows libvirt to determine what the latest machine type is when the guest is created and use that machine type in future.

Benefit to Fedora

This feature would remove a significant issue with Fedora's virtualization support of Windows.

Scope

The work required is limited to QEMU and libvirt. No other Fedora packages would be affected.

How To Test

  • Ensure that libvirt >= 0.7.0-1 and qemu-kvm >= 2:0.10.91-0.4.rc1 is installed
  • Install a guest using e.g. virt-install
  • Check the XML configuration of the guest using virsh dumpxml and verify the machine property of the <os><type> element is pc-0.11

User Experience

It should be possible to upgrade QEMU without causing Window's guests to require reactivation.

Dependencies

The main dependency is agreeing upstream on the QEMU part of the solution.

Contingency Plan

No contingency plan required; if one of the solutions is not implemented, the feature will not be available and nothing else will be affected.

Documentation

Release Notes

KVM guests in Fedora 12 now have a stable ABI, reducing the chance that Windows guests will require reactivation when QEMU is upgraded in future.

Comments and Discussion