[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-users] qemu, pci_passthrough, Error: Should not read BAR through QEMU
Hello list,we have been stuck getting a custom uio driver to work using pci_passthrough, it runs into "Error: Should not read BAR through QEMU" https://github.com/qemu/qemu/blob/master/hw/xen/xen_pt.c#L434I am using Debian stretch (testing) with Xen 4.6 as Dom0 and Ubuntu 14.04 i386 as PVHM guest. The offending line seems to be iowrite32(0, info->mem[DPM_INDEX].internal_addr + DPM_HOST_INT_EN0); after it has been remapped like so info->mem[DPM_INDEX].internal_addr = ioremap_nocache( pci_resource_start(dev, bar), pci_resource_len(dev, bar)); I already tried to remap the resource using instead pci_iomap(dev, bar, pci_resource_len(dev, bar)); however, no luck. (not, bar == 0)The log output shows "internal_addr" at "0xF84C0000" - no matter if I use "ioremap_nocache" or "pci_iomap" I am not clear how this is supposed to work in PCI and Xen land: on the host/Dom0, output of "lspci -kvvvxs 06:00.0" is 06:00.0 Unassigned class [ff00]: <company/product name omitted>Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 16 Region 0: Memory at f7a00000 (32-bit, non-prefetchable) [size=64K] Kernel driver in use: pciback 00: cf 15 00 00 02 00 00 02 00 00 00 ff 00 15 00 00 10: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 on the guest/DomU, "lspci -kvvvxs 00:04.0" shows 00:04.0 Unassigned class [ff00]: <company/product name omitted> Physical Slot: 4Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 32 Region 0: Memory at f3000000 (32-bit, non-prefetchable) [size=64K] Kernel driver in use: netx 00: cf 15 00 00 02 00 00 02 00 00 00 ff 08 40 00 00 10: 00 00 00 f3 00 00 00 00 00 00 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00To me, this looks all reasonable, Xen/IOMMU seem to do the right thing an properly map the device into the guest with a new memory region. I am suspecting I am doing it wrong (iowrite32), when trying to write to the device. Is the a "correct" way of mapping such PCI io resources into the kernel driver code, so that it does not land in the QEMU trap "xen_pt_bar_write" Thanks!! Jürgen _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxx http://lists.xen.org/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |