[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.