No edit summary |
(accepted by FESCo on 2010-02-02) |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 13: | Line 13: | ||
== Current status == | == Current status == | ||
* Targeted release: [[Releases/ | * Targeted release: [[Releases/13|Fedora 13]] | ||
* Last updated: | * Last updated: 2010-01-26 | ||
* Percentage of completion: | * Percentage of completion: 100% | ||
=== Completed === | === Completed === | ||
* | * New QEMU option -device permits specification of PCI device * address. It doesn't work for VGA devices, yet, but QEMU always assigns PCI device address 2 to the VGA. | ||
* libvirt uses this to keep PCI device addresses stable. | |||
== Detailed Description == | == Detailed Description == | ||
Line 36: | Line 30: | ||
A related problem is that of guest ABI changes between versions of QEMU. That is, updating to a newer version of QEMU may cause devices to change subtly (e.g. PCI class of a device or additional capabilities) which again may require Windows to be reactivated. See also [[Features/KVM Stable Guest ABI]]. | A related problem is that of guest ABI changes between versions of QEMU. That is, updating to a newer version of QEMU may cause devices to change subtly (e.g. PCI class of a device or additional capabilities) which again may require Windows to be reactivated. See also [[Features/KVM Stable Guest ABI]]. | ||
A number of solutions | A number of [[KVM_Stable_PCI_Addresses_Design_Notes|solutions]] were discussed upstream. In the end, it was decided to let QEMU allocate device addresses for new devices, then store them in the guest's XML configuration, and specify them on the command line when recreating the guest. This relies on an an improved <code>info pci</code> for querying the address, and the new <code>-device</code> for specifying it. | ||
In | |||
== Benefit to Fedora == | == Benefit to Fedora == | ||
Line 124: | Line 38: | ||
== Scope == | == Scope == | ||
Requires work on both QEMU and libvirt. No other Fedora packages would be affected. | |||
== How To Test == | == How To Test == | ||
Line 135: | Line 49: | ||
== User Experience == | == User Experience == | ||
It should be possible to add/remove devices without causing | It should be possible to add/remove devices without causing Windows guests to require reactivation. | ||
== Dependencies == | == Dependencies == | ||
The main dependency is | The main dependency is a mature <code>-device</code> in upstream QEMU. | ||
== Contingency Plan == | == Contingency Plan == | ||
Line 156: | Line 70: | ||
== Release Notes == | == Release Notes == | ||
KVM guests in Fedora | KVM guests in Fedora now have stable PCI addresses, reducing the chance that Windows guests will require reactivation as guest configuration is modified. | ||
== Comments and Discussion == | == Comments and Discussion == | ||
* See [[Talk:Features/ | * See [[Talk:Features/KVM_Stable_PCI_Addresses]] | ||
[[Category:FeatureAcceptedF13]] | |||
[[Category: | [[Category:Virtualization|KVM Stable PCI Addresses]] | ||
[[Category:F13_Virt_Features|KVM Stable PCI Addresses]] |
Latest revision as of 03:23, 4 February 2010
KVM Stable PCI Addresses
Summary
Allow devices in KVM guest virtual machines to retain the same PCI address allocations as other devices are added or removed from the guest configuration.
This is particularily important for Windows guests in order to prevent warnings or reactivation when device addresses change.
Owner
- Name: Markus Armbruster
Current status
- Targeted release: Fedora 13
- Last updated: 2010-01-26
- Percentage of completion: 100%
Completed
- New QEMU option -device permits specification of PCI device * address. It doesn't work for VGA devices, yet, but QEMU always assigns PCI device address 2 to the VGA.
- libvirt uses this to keep PCI device addresses stable.
Detailed Description
QEMU allocates PCI addresses to devices (mostly) in the order it creates the devices, which depends in part on the order they appear on the command line. Built-in PCI devices - like the IDE, USB and VGA controllers - are allocated first.
Windows will warn users when a device's PCI address is changed and may even require the Windows install to be reactivated. In order to prevent this, we should do what we can to ensure that the device does not move PCI between slots as devices are added or removed to/from the guest configuration.
A related problem is that of guest ABI changes between versions of QEMU. That is, updating to a newer version of QEMU may cause devices to change subtly (e.g. PCI class of a device or additional capabilities) which again may require Windows to be reactivated. See also Features/KVM Stable Guest ABI.
A number of solutions were discussed upstream. In the end, it was decided to let QEMU allocate device addresses for new devices, then store them in the guest's XML configuration, and specify them on the command line when recreating the guest. This relies on an an improved info pci
for querying the address, and the new -device
for specifying it.
Benefit to Fedora
This feature would remove a significant issue with Fedora's virtualization support of Windows.
Scope
Requires work on both QEMU and libvirt. No other Fedora packages would be affected.
How To Test
- Start a guest with two PCI NICs
- Note the PCI slot numbers of each NIC
- Remove the first NIC and re-start the guest
- Check that the slot number of the second NIC hasn't changed
User Experience
It should be possible to add/remove devices without causing Windows guests to require reactivation.
Dependencies
The main dependency is a mature -device
in upstream QEMU.
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)
Release Notes
KVM guests in Fedora now have stable PCI addresses, reducing the chance that Windows guests will require reactivation as guest configuration is modified.