Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > fc11cd6e1c513a17304da94a5390f3cd > files > 4578

kernel-2.6.18-194.11.1.el5.src.rpm

From: ddugger@redhat.com <ddugger@redhat.com>
Date: Fri, 26 Jun 2009 12:43:18 -0600
Subject: [xen] x86: fix IRQ problem on legacy hardware
Message-id: 20090626184318.GA31054@sobek.n0ano.com
O-Subject: Re: [RHEL5.4 PATCH V2] BZ 505491: Fix IRQ problem on legacy hardware
Bugzilla: 505491
RH-Acked-by: Rik van Riel <riel@redhat.com>
RH-Acked-by: Don Dutile <ddutile@redhat.com>
RH-Acked-by: Prarit Bhargava <prarit@redhat.com>
RH-Acked-by: Chris Lalancette <clalance@redhat.com>
RH-Acked-by: Justin M. Forbes <jforbes@redhat.com>

(Version 2 updated to fix booting problems on older platforms.)

Fix a problem when booting on legacy hardware.  When initializing the
irq->vector relationship during boot, do not try to auto-assign a vector for
legacy IRQ's, which have a fixed IRQ<->vector relationship.

Upstream status: Being submitted

Brew build: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=1864352

Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Signed-off-by: Don Dugger <donald.d.dugger@intel.com>
Tested-by: Chris Lalancette <clalance@redhat.com>

diff --git a/arch/x86/io_apic.c b/arch/x86/io_apic.c
index 87ca431..d625aeb 100644
--- a/arch/x86/io_apic.c
+++ b/arch/x86/io_apic.c
@@ -692,6 +692,10 @@ int assign_irq_vector(int irq)
 
     spin_lock(&vector_lock);
 
+    if ((irq != AUTO_ASSIGN) && (irq_to_vector(irq) > 0)) {
+        spin_unlock(&vector_lock);
+        return irq_to_vector(irq);
+    }
     if ((irq != AUTO_ASSIGN) && (IO_APIC_VECTOR(irq) > 0)) {
         spin_unlock(&vector_lock);
         return IO_APIC_VECTOR(irq);