diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-04-01 09:55:27 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-04-01 09:55:27 +0100 |
commit | 2b6f2f6805276aaec45d83088c11eeb8d74bb195 (patch) | |
tree | 373c9f4f616bfdeffec5e780530c82e6d4ce1411 /xen/arch/x86/mpparse.c | |
parent | 3ccd588bf130739bf35ea34cbfa52d2e10db5b00 (diff) | |
download | xen-2b6f2f6805276aaec45d83088c11eeb8d74bb195.tar.gz xen-2b6f2f6805276aaec45d83088c11eeb8d74bb195.tar.bz2 xen-2b6f2f6805276aaec45d83088c11eeb8d74bb195.zip |
Allow all unused GSI to be configured via IO-APIC by new pv_ops dom0
Currently Xen disallows setting up any GSI < 16. This makes it
impossible by the kernel to use any PCI devices without ACPI override
but a mapping to this interrupts via IO-APIC.
The patch allows all unused interrupts to be setup via IO-APIC.
Signed-off-by: Bastian Blank <waldi@debian.org>
Diffstat (limited to 'xen/arch/x86/mpparse.c')
-rw-r--r-- | xen/arch/x86/mpparse.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c index 1917862cd3..95aff543f2 100644 --- a/xen/arch/x86/mpparse.c +++ b/xen/arch/x86/mpparse.c @@ -1103,6 +1103,7 @@ int mp_register_gsi (u32 gsi, int triggering, int polarity) int ioapic = -1; int ioapic_pin = 0; int idx, bit = 0; + /* * Mapping between Global System Interrups, which * represent all possible interrupts, and IRQs @@ -1126,6 +1127,9 @@ int mp_register_gsi (u32 gsi, int triggering, int polarity) if (ioapic_renumber_irq) gsi = ioapic_renumber_irq(ioapic, gsi); + if (!(irq_to_desc(gsi)->status & IRQ_DISABLED)) + return -EEXIST; + /* * Avoid pin reprogramming. PRTs typically include entries * with redundant pin->gsi mappings (but unique PCI devices); |