WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH More PCIFront]

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH More PCIFront]
From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Date: Mon, 9 Nov 2009 16:17:30 -0500
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Delivery-date: Mon, 09 Nov 2009 13:25:40 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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