From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastian Blank Subject: [PATCH] Allow all unused GSI to be configured via IO-APIC Date: Wed, 24 Mar 2010 12:17:36 +0100 Message-ID: <20100324111736.GA9327@wavehammer.waldi.eu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: Jeremy Fitzhardinge , Keir Fraser List-Id: xen-devel@lists.xenproject.org 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 diff -r 7b63f677f245 xen/arch/x86/mpparse.c --- a/xen/arch/x86/mpparse.c Thu Mar 18 11:03:07 2010 +0000 +++ b/xen/arch/x86/mpparse.c Wed Mar 24 12:13:11 2010 +0100 @@ -1103,6 +1103,7 @@ 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 @@ 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); diff -r 7b63f677f245 xen/arch/x86/physdev.c --- a/xen/arch/x86/physdev.c Thu Mar 18 11:03:07 2010 +0000 +++ b/xen/arch/x86/physdev.c Wed Mar 24 12:13:11 2010 +0100 @@ -476,12 +476,8 @@ ret = -EINVAL; if ( setup_gsi.gsi < 0 || setup_gsi.gsi >= nr_irqs_gsi ) break; - /* GSI < 16 has been setup by hypervisor */ - if ( setup_gsi.gsi >= 16 ) - ret = mp_register_gsi(setup_gsi.gsi, setup_gsi.triggering, + ret = mp_register_gsi(setup_gsi.gsi, setup_gsi.triggering, setup_gsi.polarity); - else - ret = -EEXIST; break; } default: -- Hailing frequencies open, Captain.