Hi list,
I did some tests with passthrough of 2 PCIe devices to a Windows 7 HVM and both
failed to work.
# lspci
...
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High
Definition Audio (rev 05)
10:00.0 Network controller: Intel Corporation Centrino Advanced-N 6200 (rev 35)
...
In the qemu log I found the following messages:
register_real_device: Assigning real physical device 00:1b.0 ...
register_real_device: Enable MSI translation via per device option
register_real_device: Disable power management
pt_iomul_init: Error: pt_iomul_init: No such device: setup io multiplexing
failed! 0x0:0x1b.0x0
pt_register_regions: IO region registered (size=0x00004000 base_addr=0xf2720004)
pt_msi_setup: pt_msi_setup requested pirq = 0
pt_msi_setup: msi mapped with pirq 0
pci_intx: intx=1
register_real_device: Real physical device 00:1b.0 registered successfuly!
IRQ type = MSI-INTx
vcpu-set: watch node error.
xs_read(/local/domain/3/log-throttling): read error
qemu: ignoring not-understood drive `/local/domain/3/log-throttling''
medium change watch on `/local/domain/3/log-throttling'' - unknown
device, ignored
dm-command: hot insert pass-through pci dev
register_real_device: Assigning real physical device 10:00.0 ...
register_real_device: Enable MSI translation via per device option
register_real_device: Disable power management
pt_iomul_init: Error: pt_iomul_init: No such device: setup io multiplexing
failed! 0x10:0x0.0x0
pt_register_regions: IO region registered (size=0x00002000 base_addr=0xf2400004)
pt_msi_setup: pt_msi_setup requested pirq = 0
pt_msi_setup: msi mapped with pirq 0
pci_intx: intx=1
register_real_device: Real physical device 10:00.0 registered successfuly!
On the xen serial console I saw:
...
(XEN) [VT-D]io.c:327: d3: unbind: m_gsi=0 g_gsi=36 device=5 intx=0
(XEN) [VT-D]io.c:386: d3 unmap: m_irq=0 device=5 intx=0
(XEN) [VT-D]io.c:303: d3: bind: m_gsi=17 g_gsi=36 device=5 intx=0
(XEN) domctl.c:920:d0 pt_irq_create_bind failed!
(XEN) irq.c:1590: dom3: forcing unbind of pirq 0
In xen-4.0 (SLES11-SP1) all went fine.
I saw some added code in tools/ioemu-remote/hw/pt-msi.c function pt_msi_setup()
in xen-unstable:
    gvec = dev->msi->data & 0xFF;
    if (!gvec) {
        /* if gvec is 0, the guest is asking for a particular pirq that
         * is passed as dest_id */
        pirq = (dev->msi->addr_hi & 0xffffff00) |
               ((dev->msi->addr_lo >> MSI_TARGET_CPU_SHIFT) &
0xff);
        PT_LOG("pt_msi_setup requested pirq = %d\n", pirq);
    }
If I remove this code the device 00:1b.0 gets pirq 37 and 00:10.0 gets pirq 36.
Now at least device 00:10.0 (WLAN) works. The audio device is still another
problem.
Is this a already seen problem after all these msi discussions on the list?
Thanks!
Dietmar.
-- 
Company details: http://ts.fujitsu.com/imprint.html
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Sander Eikelenboom
2010-Dec-13  16:58 UTC
Re: [Xen-devel] Failure: passthrough of 2 PCIe devices
Hi Dietmar,
I can confirm i''m having the same issue, after outcommenting changeset
7420:d93b3cb4cebe from qemu-xen-unstable.hg makes it get a pirq other than 0
again.
Added some debug info as well:
    gvec = dev->msi->data & 0xFF;
+    PT_LOG("SEIK: %s 0x%02lX %d 
\n",__FUNCTION__,dev->msi->data,gvec);
+    PT_LOG("SEIK: %s 0x%02lX 0x%02lX 
\n",__FUNCTION__,dev->msi->addr_hi,dev->msi->addr_lo);
-    if (!gvec) {
+    if (0) {
This results in:
dm-command: hot insert pass-through pci dev
register_real_device: Assigning real physical device 05:00.0 ...
register_real_device: Enable MSI translation via per device option
register_real_device: Disable power management
pt_iomul_init: Error: pt_iomul_init can''t open file /dev/xen/pci_iomul:
No such file or directory: 0x5:0x0.0x0
pt_register_regions: IO region registered (size=0x10000000 base_addr=0xb000000c)
pt_register_regions: IO region registered (size=0x00010000 base_addr=0xf9be0004)
pt_register_regions: IO region registered (size=0x00000100 base_addr=0x0000b001)
pt_register_regions: Expansion ROM registered (size=0x00020000
base_addr=0xf9bc0000)
pt_msi_setup: SEIK: pt_msi_setup 0x00 0
pt_msi_setup: SEIK: pt_msi_setup 0x00 0x00
pt_msi_setup: msi mapped with pirq 57
pci_intx: intx=1
register_real_device: Real physical device 05:00.0 registered successfuly!
IRQ type = MSI-INTx
--
Sander
> Hi list,
> I did some tests with passthrough of 2 PCIe devices to a Windows 7 HVM and
both
> failed to work.
> # lspci
> ...
> 00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High
Definition Audio (rev 05)
> 10:00.0 Network controller: Intel Corporation Centrino Advanced-N 6200 (rev
35)
> ...
> In the qemu log I found the following messages:
> register_real_device: Assigning real physical device 00:1b.0 ...
> register_real_device: Enable MSI translation via per device option
> register_real_device: Disable power management
> pt_iomul_init: Error: pt_iomul_init: No such device: setup io multiplexing
failed! 0x0:0x1b.0x0
> pt_register_regions: IO region registered (size=0x00004000
base_addr=0xf2720004)
> pt_msi_setup: pt_msi_setup requested pirq = 0
> pt_msi_setup: msi mapped with pirq 0
> pci_intx: intx=1
> register_real_device: Real physical device 00:1b.0 registered successfuly!
> IRQ type = MSI-INTx
> vcpu-set: watch node error.
> xs_read(/local/domain/3/log-throttling): read error
> qemu: ignoring not-understood drive
`/local/domain/3/log-throttling''
> medium change watch on `/local/domain/3/log-throttling'' - unknown
device, ignored
> dm-command: hot insert pass-through pci dev
> register_real_device: Assigning real physical device 10:00.0 ...
> register_real_device: Enable MSI translation via per device option
> register_real_device: Disable power management
> pt_iomul_init: Error: pt_iomul_init: No such device: setup io multiplexing
failed! 0x10:0x0.0x0
> pt_register_regions: IO region registered (size=0x00002000
base_addr=0xf2400004)
> pt_msi_setup: pt_msi_setup requested pirq = 0
> pt_msi_setup: msi mapped with pirq 0
> pci_intx: intx=1
> register_real_device: Real physical device 10:00.0 registered successfuly!
> On the xen serial console I saw:
> ...
> (XEN) [VT-D]io.c:327: d3: unbind: m_gsi=0 g_gsi=36 device=5 intx=0
> (XEN) [VT-D]io.c:386: d3 unmap: m_irq=0 device=5 intx=0
> (XEN) [VT-D]io.c:303: d3: bind: m_gsi=17 g_gsi=36 device=5 intx=0
> (XEN) domctl.c:920:d0 pt_irq_create_bind failed!
> (XEN) irq.c:1590: dom3: forcing unbind of pirq 0
> In xen-4.0 (SLES11-SP1) all went fine.
> I saw some added code in tools/ioemu-remote/hw/pt-msi.c function
pt_msi_setup()
> in xen-unstable:
>     gvec = dev->msi->data & 0xFF;
>     if (!gvec) {
>         /* if gvec is 0, the guest is asking for a particular pirq that
>          * is passed as dest_id */
>         pirq = (dev->msi->addr_hi & 0xffffff00) |
>                ((dev->msi->addr_lo >> MSI_TARGET_CPU_SHIFT)
& 0xff);
>         PT_LOG("pt_msi_setup requested pirq = %d\n", pirq);
>     }
> If I remove this code the device 00:1b.0 gets pirq 37 and 00:10.0 gets pirq
36.
> Now at least device 00:10.0 (WLAN) works. The audio device is still another
problem.
> Is this a already seen problem after all these msi discussions on the list?
> Thanks!
> Dietmar.
-- 
Best regards,
 Sander                            mailto:linux@eikelenboom.it
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Konrad Rzeszutek Wilk
2010-Dec-14  15:44 UTC
Re: [Xen-devel] Failure: passthrough of 2 PCIe devices - regression of "QEMU passthrough: support PV on HVM MSI remapping"
> (XEN) [VT-D]io.c:327: d3: unbind: m_gsi=0 g_gsi=36 device=5 intx=0 > (XEN) [VT-D]io.c:386: d3 unmap: m_irq=0 device=5 intx=0 > (XEN) [VT-D]io.c:303: d3: bind: m_gsi=17 g_gsi=36 device=5 intx=0 > (XEN) domctl.c:920:d0 pt_irq_create_bind failed! > (XEN) irq.c:1590: dom3: forcing unbind of pirq 0 > > In xen-4.0 (SLES11-SP1) all went fine. > I saw some added code in tools/ioemu-remote/hw/pt-msi.c function pt_msi_setup() > in xen-unstable:Hmmm, that is Stefano''s code (git log -p hw/pt-msi.c) Lets ask him.> > gvec = dev->msi->data & 0xFF; > if (!gvec) { > /* if gvec is 0, the guest is asking for a particular pirq that > * is passed as dest_id */ > pirq = (dev->msi->addr_hi & 0xffffff00) | > ((dev->msi->addr_lo >> MSI_TARGET_CPU_SHIFT) & 0xff); > PT_LOG("pt_msi_setup requested pirq = %d\n", pirq); > } > > If I remove this code the device 00:1b.0 gets pirq 37 and 00:10.0 gets pirq 36. > Now at least device 00:10.0 (WLAN) works. The audio device is still another problem. > > Is this a already seen problem after all these msi discussions on the list? > Thanks! > > Dietmar. > > > -- > Company details: http://ts.fujitsu.com/imprint.html> _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel