Features/KVM Stable Guest ABI

= 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

 * Name: Mark McLoughlin

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  machine type posted and accepted for 0.11
 * QEMU patches posted to add the  machine type and alias it to
 * 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. ) and the   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  and   is installed
 * Install a guest using e.g.
 * Check the XML configuration of the guest using  and verify the   property of the   element is

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

 * Izik's patch (November 2007)
 * Markus's patch series (Jan 2009)
 * Markus's machine description format RFC (February 2009)
 * Markus's tenth iteration of his machine description patches (April 2009)
 * First thread where saveabi idea came up (May 2009)
 * Most recent discussion (June 2009)
 * Patch adding the pc-0-10 machine type
 * Gerd's patches to add the pc-0.11 machine type
 * Patches to add the  machine type and alias it to
 * libvirt patch
 * Notes on the potential solutions considered.

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

 * See Talk:Features/KVM Stable Guest ABI