>>> On 2/12/2010 at 12:14 PM, in message
<alpine.DEB.2.00.1002121606100.1147@kaball-desktop>, Stefano Stabellini
<stefano.stabellini@xxxxxxxxxxxxx> wrote:
> 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.
Looks like in 3&4 have the parameters reversed - the first parameter I think
should be the value and the second parameter should be the port.
Regards,
K. Y
>>
>> 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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|