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

[Xen-users] HVM PCI Passthrough: Code 12: Undersized PCI MMIO region?


  • To: xen-users@xxxxxxxxxxxxx
  • From: Stephen Oberholtzer <stevie@xxxxxxxxx>
  • Date: Tue, 2 Dec 2014 22:08:35 -0500
  • Delivery-date: Wed, 03 Dec 2014 03:09:17 +0000
  • List-id: Xen user discussion <xen-users.lists.xen.org>

All,

Please bear with me.  I don't fully understand all of the mechanisms
involved here, so this message contains a large quantity of data,
including some links to even larger quantities of data.
The short version is: I think something isn't reserving enough (GPFN)
address space for MMIO.

I'm trying to do a three-part PCI passthrough to a HVM domU running Windows 8.1:
00:14.0, An xHCI (USB 3.0) controller
01:00.0, Function 0 of an ATI card (VGA controller, non-primary passthrough)
01:00.1, Function 1 of the same ATI card (HDMI audio)

The USB controller seems to work fine.  USB mouse/keyboard are
functional, and I plugged in a few Mass Storage devices and they work
fine.
The HDMI audio controller is harder to vet, because I don't have
anything that will process audio without an associated video stream.
However, I don't get any complains from the software.

For the the VGA controller (01:00.0), Windows reports "Code 12" and
complains about insufficient resources being available for the device.

I tried to gather all of the information I could on the memory layouts
involved, from three sources:
(1) From dom0 and Xen itself
(2) From domU running Windows, using a program called "SIV" (System
Information Viewer)
(3) From domU running Linux (by booting a Knoppix live DVD image)

---

Information from dom0:
http://www.klozoff.org/xen/dom0-xl-info.txt - 'xl info'
http://www.klozoff.org/xen/dom0-xl-dmesg.txt - 'xl dmesg'
http://www.klozoff.org/xen/dom0-proc_iomem.txt - 'cat /proc/iomem'
http://www.klozoff.org/xen/dom0-lspci-output.txt - 'lspci -vvv' for
the three devices I'm forwarding.

Information from domU (Windows):
http://www.klozoff.org/xen/domU-device-manager-info.txt - Text
transcribed from Windows' "Device Manager"
http://www.klozoff.org/xen/domU-siv-usb-controller-info.txt -
Information on 00:14.0 from SIV
http://www.klozoff.org/xen/domU-siv-video-card-info.txt - Information
on 01:00.0 from SIV
http://www.klozoff.org/xen/domU-siv-hdmi-audio-info.txt - Information
on 01:00.1 from SIV

Information from domU (Linux/Knoppix):
http://www.klozoff.org/xen/domU-knoppix-proc-iomem.txt - 'cat /proc/iomem'
http://www.klozoff.org/xen/domU-knoppix-lspci-output.txt - 'lspci
-vvv' for the three devices.


---

Of particular interest to me is domU-knoppix-lspci-output.txt, which
for the VGA controller, says:

    Region 0: Memory at <ignored> (64-bit, prefetchable)
    Region 2: Memory at f3040000 (64-bit, non-prefetchable) [size=256K]

In dom0, this showed as:

    Region 0: Memory at d0000000 (64-bit, prefetchable) [size=256M]
    Region 2: Memory at efc00000 (64-bit, non-prefetchable) [size=256K]


I looked closer by running the following script:

perl -lne '/^([0-9a-f]+)-([0-9a-f]+)/ && print $_, " (", ((hex($2) -
hex($1)) >> 20), " MB)"' /proc/iomem

In dom0, I see this:

00100000-99f53fff : System RAM (2462 MB)
bf200000-feafffff : PCI Bus 0000:00 (1016 MB)   <- Region 0 is in this range
100000000-83edfffff : System RAM (29677 MB)


In domU, I see this:
00100000-effecfff : System RAM (3838 MB)
f0000000-fbffffff : PCI Bus 0000:00 (191 MB)    <- Definitely not big
enough to hold the 256MB we need
100000000-20f7fffff : System RAM (4343 MB)

Now, I don't fully understand how this stuff all works, but here's
what appears to be happening: Xen isn't reserving enough contiguous
GPFN (virtual machine address space) for all of the devices on the
virtual PCI bus -- in particular, for what is probably a big honkin'
window into the card's onboard RAM.

So my two questions are:
(1) Is my guess correct?  Or at least close?
(2) What the heck do I do about it? I don't see any options in
xl.cfg(5) for specifying the size of the MMIO region for the virtual
PCI bus, or anything similar to that.


NOTE: If I assign 2048MB or less RAM to this VM, the VM crashes at
bootup, and has a nasty tendency to take the host with it (lockup).

-- 
-- Stevie-O
Real programmers use COPY CON PROGRAM.EXE

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxx
http://lists.xen.org/xen-users


 


Rackspace

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