|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-devel
[Xen-devel] [PATCH More PCIFront] 
| This set of patches makes the Xen PCI frontend driver work
with MSI and MSI-X interrupts. In essence I've split the patches
in two camps: enabling MSI/MSI-X and disabling. I've also sprinkled
some other fixes amongst them.
The first patch is .. umm, one I already posted, but figured it might
be easier for Jeremy to ingest this whole e-mail thread than hunt a
specific one down:
 [PATCH 1/9] Fix compile error: error: too many arguments to function 
'pci_frontend_enable_msi'
The next one removes the first implementation I did for turning MSI on:
 [PATCH 2/9] Revert "To enable MSI devices in a non-privileged PV domain use 
pci_frontend_enable_msi."
And the next three make it possible to have MSI/MSI-X enabled with a more
general approach:
 [PATCH 3/9] Alter 'xen_create_msi_irq' to respect an PIRQ override when in 
non-privileged PV mode.
 [PATCH 4/9] Have pci_frontend_enable_[msi|msix] save PIRQ values in a int 
array.
 [PATCH 5/9] Pass PIRQ values obtained from pci_frontend_enable_[msi|msix] in 
xen_create_msi_irq.
A tiny little fix to make it more obvious which device is failing in the field:
 [PATCH 6/9] In xen-pcifront.c updated printk(KERN_ERR ... to dev_err macro.
And the next three for disabling MSI/MSI-X support:
 [PATCH 7/9] Copy-n-paste arch_teardown_msi_irqs from msi.c to io_apic.c.
 [PATCH 8/9] Provide a 'xen_teardown_msi_dev' function to be called by 
'arch_teardown_msi_irqs'.
 [PATCH 9/9] In pci_frontend_disable_msi do not alter the dev->irq.
With that, I've gotten MSI to work properly. MSI-X _should_ work as well, but
I do not have the hardware on hand to test this yet.
There is one issue for guest domains:
 - 4GB or more hangs it. When running xenctx it looks to be stuck in:
  [<ffffffff816b9043>] panic+0x1c0 
  [<ffffffff81013335>] xen_swiotlb_fixup+0x123 
  A bit of instrumentation shows tat xen_create_continugous_region fails:
        xen_swiotlb_fixup: messed up: ffff880020000000, size: 67108864, rc:-12
  So you don't even get:
 PCI: Warning: Cannot find a gap in the 32bit address range
 PCI: Unassigned devices with 32bit resource registers may break!
And for dom0:
 - No support yet for 'reassign_device' which page aligns the BARs
   on PCI devices.
 - Haven't tested FLR or PCI AER.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 | 
 
| <Prev in Thread] | Current Thread | [Next in Thread> |  | 
[Xen-devel] [PATCH More PCIFront],
Konrad Rzeszutek Wilk <=
 |  |  | 
  
    |  |  |