diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-07-06 14:48:22 (GMT) |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-07-11 17:19:28 (GMT) |
commit | 30bd35edfd5c82147bdcf0540c6bd3cf92d101f8 (patch) | |
tree | 79796537057298a13cf7861c096f77f833fcc605 /arch/x86 | |
parent | d92edd814e3c9d9105de55b14c8958b1f8f20269 (diff) | |
download | linux-30bd35edfd5c82147bdcf0540c6bd3cf92d101f8.tar.xz |
xen/pci: In xen_register_pirq bind the GSI to the IRQ after the hypercall.
Not before .. also that code segment starts looking like the HVM one.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/pci/xen.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c index 7ee39cc..6b7d849 100644 --- a/arch/x86/pci/xen.c +++ b/arch/x86/pci/xen.c @@ -112,26 +112,10 @@ static int xen_register_pirq(u32 gsi, int gsi_override, int triggering) if (!xen_pv_domain()) return -1; - if (triggering == ACPI_EDGE_SENSITIVE) { - shareable = 0; - name = "ioapic-edge"; - } else { - shareable = 1; - name = "ioapic-level"; - } pirq = xen_allocate_pirq_gsi(gsi); if (pirq < 0) goto out; - if (gsi_override >= 0) - irq = xen_bind_pirq_gsi_to_irq(gsi_override, pirq, shareable, name); - else - irq = xen_bind_pirq_gsi_to_irq(gsi, pirq, shareable, name); - if (irq < 0) - goto out; - - printk(KERN_DEBUG "xen: --> pirq=%d -> irq=%d (gsi=%d)\n", pirq, irq, gsi); - map_irq.domid = DOMID_SELF; map_irq.type = MAP_PIRQ_TYPE_GSI; map_irq.index = gsi; @@ -143,6 +127,22 @@ static int xen_register_pirq(u32 gsi, int gsi_override, int triggering) return -1; } + if (triggering == ACPI_EDGE_SENSITIVE) { + shareable = 0; + name = "ioapic-edge"; + } else { + shareable = 1; + name = "ioapic-level"; + } + + if (gsi_override >= 0) + gsi = gsi_override; + + irq = xen_bind_pirq_gsi_to_irq(gsi, pirq, shareable, name); + if (irq < 0) + goto out; + + printk(KERN_DEBUG "xen: --> pirq=%d -> irq=%d (gsi=%d)\n", pirq, irq, gsi); out: return irq; } |