JS Ext

Tuesday, June 4, 2013

Xen PCI Passthrough stopped working

Somehow, after my Monday morning reboot, all PCI Passthrough stopped functioning.  The PCI devices still show up on xl pci-assignable-list.  When I start the VM (without the VGA Passthrough), the PCI-E USB card does show up, but it is listed as not functioning.  That is why the VM with the VGA card is blue screening.  The card is visible, just not functional.  Given that the USB card no longer works, I'm assuming it is not related to the VGA card.  At this point, I'm wondering if something happened to the motherboard.

When I start the VM, here is what I get:

dom0 ~ # xl create /etc/xen/dom1
Parsing config from /etc/xen/dom1
xc: info: VIRTUAL MEMORY ARRANGEMENT:
  Loader:        0000000000100000->000000000019dd88
  TOTAL:         0000000000000000->000000007f800000
  ENTRY ADDRESS: 0000000000100000
xc: info: PHYSICAL MEMORY ALLOCATION:
  4KB PAGES: 0x0000000000000200
  2MB PAGES: 0x00000000000003fb
  1GB PAGES: 0x0000000000000000
libxl: error: libxl_pci.c:960:do_pci_add: xc_assign_device failed
libxl: error: libxl_pci.c:960:do_pci_add: xc_assign_device failed
Daemon running with PID 19919
dom0 ~ # 

When I run xl dmesg, I see a bunch of these lines:

(XEN) traps.c:2595:d0 Domain attempted WRMSR 00000000c0000408 from 0xc000000001000000 to 0xc008000001000000.
(XEN) pt_irq_create_bind failed (-3) for dom1

Here is what the 2 cards look like in Device Manager:

Here is the relevant log entries from qemu-dm-dom1.log:

dm-command: hot insert pass-through pci dev 
register_real_device: Assigning real physical device 02:00.0 ...
register_real_device: Disable 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: 0x2:0x0.0x0
pt_register_regions: IO region registered (size=0x00002000 base_addr=0xfe900004)
pt_msix_init: get MSI-X table bar base fe900000
pt_msix_init: table_off = 1000, total_entries = 8
pt_msix_init: mapping physical MSI-X table to 7f3166ea9000
pci_intx: intx=1
register_real_device: Error: Binding of interrupt failed! rc=-1
register_real_device: Real physical device 02:00.0 registered successfuly!
IRQ type = INTx
dm-command: hot insert pass-through pci dev 
register_real_device: Assigning real physical device 03:00.0 ...
register_real_device: Disable 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: 0x3:0x0.0x0
pt_register_regions: IO region registered (size=0x00002000 base_addr=0xfe800004)
pt_msix_init: get MSI-X table bar base fe800000
pt_msix_init: table_off = 1000, total_entries = 8
pt_msix_init: mapping physical MSI-X table to 7f3166ea8000
pci_intx: intx=1
register_real_device: Error: Binding of interrupt failed! rc=-1
register_real_device: Real physical device 03:00.0 registered successfuly!
IRQ type = INTx


I verified that IOMMU is enabled in the BIOS.  This setup has worked for about 18 months now.  I don't know what changed that caused it to start failing all of a sudden.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.