[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |