|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] issue in unplug qemu PCI devices
On Fri, 12 Feb 2010, Zhai, Edwin wrote:
> IOEMU change set e7911109 uses Magic ioport (0x10) protocol for
> negotating with guest PV drivers during startup, and allowing PV drivers
> to disable hardware emulations thus preventing guest from seeing the
> same device through two paths.
>
> But when I tried PV drivers in xen upstream, this unplug logic never
> succeed. PV driver uses following io sequence to interact with
> platform_pci device in qemu:
> 1. inw 0x10
> 2. inb 0x12
> 3. outw(0x12, 0xbeef)
> 4. outl(0x10,0xdead)
>
> But I only saw 1&2 happened in xen io instruction
> emulation(x86_emulate), while 3&4 seemed to lost so the unplug will
> never happen.
>
> Are you aware of this issue? Or some suggestion for debugging?
>
> BTW, the unplug logic itself has some issues also:
> 1. Pass-through NICs are also unplugged, although them have different
> path with vnif and emulated NIC.
> 2. Unplug happens as long as inserting the xen_platform_pci module
> regardless of existence of PVed device in the config file. End user
> likely to unplug all the PCI device by accident.
> 3. Inserting xen_platform_pci module would unplug all the devices, which
> is not reasonable. E.g. end user only has vbd driver, but all NICs are
> also unplugged.
>
You are right, that is a bug and this patch should fix it.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
diff --git a/hw/pci.c b/hw/pci.c
index d7c516e..01eff8d 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -826,7 +826,8 @@ void pci_unplug_netifs(void)
dev = bus->devices[x];
if (dev &&
dev->config[0xa] == 0 &&
- dev->config[0xb] == 2) {
+ dev->config[0xb] == 2 &&
+ test_pci_slot(x >> 3) != 1) {
/* Found a netif. Remove it from the bus. Note that
we don't free it here, since there could still be
references to it floating around. There are only
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|