aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/mpparse.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-04-01 09:55:27 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-04-01 09:55:27 +0100
commit2b6f2f6805276aaec45d83088c11eeb8d74bb195 (patch)
tree373c9f4f616bfdeffec5e780530c82e6d4ce1411 /xen/arch/x86/mpparse.c
parent3ccd588bf130739bf35ea34cbfa52d2e10db5b00 (diff)
downloadxen-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.c4
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);