summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-02-16 13:43:04 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-02-18 09:26:37 -0500
commit55cb8cd45e0600df1473489518d7f12ce1bbe973 (patch)
tree10e0d7301cca3b6511018703a4c1cb7f4645cb36
parent1d4610527bc71d3f9eea520fc51a02d54f79dcd0 (diff)
downloadlinux-55cb8cd45e0600df1473489518d7f12ce1bbe973.tar.gz
linux-55cb8cd45e0600df1473489518d7f12ce1bbe973.tar.bz2
linux-55cb8cd45e0600df1473489518d7f12ce1bbe973.zip
pci/xen: Use xen_allocate_pirq_msi instead of xen_allocate_pirq
xen_allocate_pirq -> xen_map_pirq_gsi -> PHYSDEVOP_alloc_irq_vector IFF xen_initial_domain() in addition to the kernel side book-keeping side of things (set chip and handler, update irq_info etc) whereas xen_allocate_pirq_msi just does the kernel book keeping. Also xen_allocate_pirq allocates an IRQ in the 1-1 GSI space whereas xen_allocate_pirq_msi allocates a dynamic one in the >GSI IRQ space. All of this is uneccessary as this code path is only executed when we run as a domU PV guest with an MSI/MSI-X PCI card passed in. Hence we can jump straight to allocating an dynamic IRQ (and binding it to the proper PIRQ) and skip the rest. In short: this change is a cosmetic one. Reviewed-by: Ian Campbell <Ian.Campbell@citrix.com> Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
-rw-r--r--arch/x86/pci/xen.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c
index 25cd4a07d09f..6432f751ee4f 100644
--- a/arch/x86/pci/xen.c
+++ b/arch/x86/pci/xen.c
@@ -157,14 +157,14 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
goto error;
i = 0;
list_for_each_entry(msidesc, &dev->msi_list, list) {
- irq = xen_allocate_pirq(v[i], 0, /* not sharable */
+ xen_allocate_pirq_msi(
(type == PCI_CAP_ID_MSIX) ?
- "pcifront-msi-x" : "pcifront-msi");
+ "pcifront-msi-x" : "pcifront-msi",
+ &irq, &v[i], XEN_ALLOC_IRQ);
if (irq < 0) {
ret = -1;
goto free;
}
-
ret = set_irq_msi(irq, msidesc);
if (ret)
goto error_while;