device can't be hot-removed from the guest
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Environment:
------------
Host OS (ia32/ia32e/IA64): ia32e
Guest OS (ia32/ia32e/IA64): ia32e
Guest OS Type (Linux/Windows): Linux(RHEL6u1)
kvm.git Commit: ff92e9b5571b34f
qemu-kvm Commit: aad3b517a1b8356
Host Kernel Version: 3.2.0-rc7
Hardware: Romley-EP, WSM-EP
Bug detailed description:
-------
Using the latest qemu-kvm and kvm upstream, PCI device can't be hot-removed from the guest.
I try to remove a VF, but the device can't be removed. The VF in guest still has IP, and its network is fine.
A normal NIC will have the same issue.
From my test, this should be a qemu-kvm bug.
kvm + qemu-kvm = result
ff92e9b5 + aad3b517 = bad
ff92e9b5 + fcfeed4a = good
some logs are attached.
Reproduce steps:
----------------
1. start up a host with kvm(commit: ff92e9b5) and use qmeu-kvm(
2. qemu-system-x86_64 -m 512 -smp 1 –hda /root/rhel6u1.img
3. ctrl+Alt+2 (switch to monitor)
4. device_add pci-assign,
5. ctrl+Alt+1
6. check the device can get IP
7. ctrl+Alt+2
8. device_del nic (try to detach the VF)
Current result:
----------------
Cannot hot-remove the device.
Expected result:
----------------
The device can be hot-removed.
fixed by the following commit.
commit 024a6fbdb9d8cbc 4d7f833b23db51c 9d1004bc47
Author: Anthony Liguori <email address hidden>
Date: Fri Jan 13 07:45:55 2012 -0600
qdev: fix device_del by refactoring reference counting
Commit 8eb0283 broken device_del by having too overzealous reference counting
checks. Move the reference count checks to qdev_free(), make sure to remove
the parent link on free, and decrement the reference count on property removal.