rpms/kernel/F-7 linux-2.6-irq-dont-mask-interrupts-_reversed_.patch, NONE, 1.1 kernel-2.6.spec, 1.3299, 1.3300

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Fri Jul 27 16:55:58 UTC 2007


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv14228

Modified Files:
	kernel-2.6.spec 
Added Files:
	linux-2.6-irq-dont-mask-interrupts-_reversed_.patch 
Log Message:
* Fri Jul 27 2007 Chuck Ebbert <cebbert at redhat.com>
- revert upstream "genirq: do not mask interrupts by default"


linux-2.6-irq-dont-mask-interrupts-_reversed_.patch:

--- NEW FILE linux-2.6-irq-dont-mask-interrupts-_reversed_.patch ---

# HG changeset patch
# User Ingo Molnar <mingo at elte.hu>
# Date 1171642440 28800
# Node ID d1b0c83033a40869b74878c5808b93f134a367de
# Parent 2585c4c9e72258a5d948969968316f07be5cbddb
[PATCH] genirq: do not mask interrupts by default

Never mask interrupts immediately upon request.  Disabling interrupts in
high-performance codepaths is rare, and on the other hand this change could
recover lost edges (or even other types of lost interrupts) by conservatively
only masking interrupts after they happen.  (NOTE: with this change the
highlevel irq-disable code still soft-disables this IRQ line - and if such an
interrupt happens then the IRQ flow handler keeps the IRQ masked.)

Mark i8529A controllers as 'never loses an edge'.

Signed-off-by: Ingo Molnar <mingo at elte.hu>
Cc: Thomas Gleixner <tglx at linutronix.de>
Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>

committer: Linus Torvalds <torvalds at woody.linux-foundation.org>

--- a/arch/i386/kernel/i8259.c	Fri Feb 16 08:14:00 2007 -0800
+++ b/arch/i386/kernel/i8259.c	Fri Feb 16 08:14:00 2007 -0800
@@ -41,6 +41,7 @@ static struct irq_chip i8259A_chip = {
 static struct irq_chip i8259A_chip = {
 	.name		= "XT-PIC",
 	.mask		= disable_8259A_irq,
+	.disable	= disable_8259A_irq,
 	.unmask		= enable_8259A_irq,
 	.mask_ack	= mask_and_ack_8259A,
 };
--- a/arch/x86_64/kernel/i8259.c	Fri Feb 16 08:14:00 2007 -0800
+++ b/arch/x86_64/kernel/i8259.c	Fri Feb 16 08:14:00 2007 -0800
@@ -103,6 +103,7 @@ static struct irq_chip i8259A_chip = {
 static struct irq_chip i8259A_chip = {
 	.name		= "XT-PIC",
 	.mask		= disable_8259A_irq,
+	.disable	= disable_8259A_irq,
 	.unmask		= enable_8259A_irq,
 	.mask_ack	= mask_and_ack_8259A,
 };
--- a/kernel/irq/chip.c	Fri Feb 16 08:14:00 2007 -0800
+++ b/kernel/irq/chip.c	Fri Feb 16 08:14:00 2007 -0800
@@ -230,10 +230,6 @@ static void default_enable(unsigned int 
  */
 static void default_disable(unsigned int irq)
 {
-	struct irq_desc *desc = irq_desc + irq;
-
-	if (!(desc->status & IRQ_DELAYED_DISABLE))
-		desc->chip->mask(irq);
 }
 
 /*
@@ -298,13 +294,18 @@ handle_simple_irq(unsigned int irq, stru
 
 	if (unlikely(desc->status & IRQ_INPROGRESS))
 		goto out_unlock;
-	desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
 	kstat_cpu(cpu).irqs[irq]++;
 
 	action = desc->action;
-	if (unlikely(!action || (desc->status & IRQ_DISABLED)))
+	if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
+		if (desc->chip->mask)
+			desc->chip->mask(irq);
+		desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
+		desc->status |= IRQ_PENDING;
 		goto out_unlock;
-
+	}
+
+	desc->status &= ~(IRQ_REPLAY | IRQ_WAITING | IRQ_PENDING);
 	desc->status |= IRQ_INPROGRESS;
 	spin_unlock(&desc->lock);
 
@@ -396,11 +397,13 @@ handle_fasteoi_irq(unsigned int irq, str
 
 	/*
 	 * If its disabled or no action available
-	 * keep it masked and get out of here
+	 * then mask it and get out of here:
 	 */
 	action = desc->action;
 	if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
 		desc->status |= IRQ_PENDING;
+		if (desc->chip->mask)
+			desc->chip->mask(irq);
 		goto out;
 	}
 



Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3299
retrieving revision 1.3300
diff -u -r1.3299 -r1.3300
--- kernel-2.6.spec	27 Jul 2007 15:10:45 -0000	1.3299
+++ kernel-2.6.spec	27 Jul 2007 16:55:26 -0000	1.3300
@@ -525,6 +525,7 @@
 Patch26: linux-2.6-utrace-ptrace-compat-avr32.patch
 #Patch20: nouveau-drm.patch
 Patch30: linux-2.6-sysrq-c.patch
+Patch35: linux-2.6-irq-dont-mask-interrupts-_reversed_.patch
 Patch40: linux-2.6-x86-tune-generic.patch
 Patch41: linux-2.6-x86-vga-vidfail.patch
 Patch42: linux-2.6-i386-hpet-check-if-the-counter-works.patch
@@ -1123,6 +1124,9 @@
 # enable sysrq-c on all kernels, not only kexec
 ApplyPatch linux-2.6-sysrq-c.patch
 
+# revert "genirq: do not mask interrupts by default"
+ApplyPatch linux-2.6-irq-dont-mask-interrupts-_reversed_.patch -R
+
 # Architecture patches
 # x86(-64)
 # Compile 686 kernels tuned for Pentium4.
@@ -2297,6 +2301,9 @@
 
 %changelog
 * Fri Jul 27 2007 Chuck Ebbert <cebbert at redhat.com>
+- revert upstream "genirq: do not mask interrupts by default"
+
+* Fri Jul 27 2007 Chuck Ebbert <cebbert at redhat.com>
 - fix DMI strings in HP notebook quirk for ALI controller
 
 * Fri Jul 27 2007 Chuck Ebbert <cebbert at redhat.com>




More information about the fedora-extras-commits mailing list