public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Reuben Farrelly <reuben-lkml@reub.net>
Cc: mingo@elte.hu, linux-kernel@vger.kernel.org, htejun@gmail.com,
	jeff@garzik.org, jbeulich@novell.com
Subject: Re: 2.6.17-rc5-mm2
Date: Thu, 1 Jun 2006 09:22:47 -0700	[thread overview]
Message-ID: <20060601092247.8ccc2c49.akpm@osdl.org> (raw)
In-Reply-To: <447ED6A2.5000107@reub.net>

On Thu, 01 Jun 2006 23:59:30 +1200
Reuben Farrelly <reuben-lkml@reub.net> wrote:

> Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP:
>   [<0000000000000000>]

Seems that a fix got lost.  Please add this:


From: Ingo Molnar <mingo@elte.hu>

This is a fixed up and cleaned up replacement for genirq-msi-fixes.patch,
which should solve the i386 4KSTACKS problem.  I also added Ben's idea of
pushing the __do_IRQ() check into generic_handle_irq().

I booted this with MSI enabled, but i only have MSI devices, not MSI-X
devices.  I'd still expect MSI-X to work now.

irqchip migration helper: call __do_IRQ() if a descriptor is attached to an
irqtype-style controller.  This also fixes MSI-X IRQ handling on i386 and
x86_64.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 arch/i386/kernel/irq.c |    5 +++++
 include/linux/irq.h    |   27 ++++++++++++++++-----------
 2 files changed, 21 insertions(+), 11 deletions(-)

diff -puN arch/i386/kernel/irq.c~genirq-msi-fixes-2 arch/i386/kernel/irq.c
--- devel/arch/i386/kernel/irq.c~genirq-msi-fixes-2	2006-06-01 09:21:52.000000000 -0700
+++ devel-akpm/arch/i386/kernel/irq.c	2006-06-01 09:21:52.000000000 -0700
@@ -77,6 +77,10 @@ fastcall unsigned int do_IRQ(struct pt_r
 	}
 #endif
 
+	if (!irq_desc[irq].handle_irq) {
+		__do_IRQ(irq, regs);
+		goto out_exit;
+	}
 #ifdef CONFIG_4KSTACKS
 
 	curctx = (union irq_ctx *) current_thread_info();
@@ -109,6 +113,7 @@ fastcall unsigned int do_IRQ(struct pt_r
 #endif
 		desc->handle_irq(irq, desc, regs);
 
+out_exit:
 	irq_exit();
 
 	return 1;
diff -puN include/linux/irq.h~genirq-msi-fixes-2 include/linux/irq.h
--- devel/include/linux/irq.h~genirq-msi-fixes-2	2006-06-01 09:21:52.000000000 -0700
+++ devel-akpm/include/linux/irq.h	2006-06-01 09:21:52.000000000 -0700
@@ -178,17 +178,6 @@ typedef struct irq_desc		irq_desc_t;
  */
 #include <asm/hw_irq.h>
 
-/*
- * Architectures call this to let the generic IRQ layer
- * handle an interrupt:
- */
-static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs)
-{
-	struct irq_desc *desc = irq_desc + irq;
-
-	desc->handle_irq(irq, desc, regs);
-}
-
 extern int setup_irq(unsigned int irq, struct irqaction *new);
 
 #ifdef CONFIG_GENERIC_HARDIRQS
@@ -326,6 +315,22 @@ handle_irq_name(void fastcall (*handle)(
  */
 extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
 
+/*
+ * Architectures call this to let the generic IRQ layer
+ * handle an interrupt. If the descriptor is attached to an
+ * irqchip-style controller then we call the ->handle_irq() handler,
+ * and it calls __do_IRQ() if it's attached to an irqtype-style controller.
+ */
+static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs)
+{
+	struct irq_desc *desc = irq_desc + irq;
+
+	if (likely(desc->handle_irq))
+		desc->handle_irq(irq, desc, regs);
+	else
+		__do_IRQ(irq, regs);
+}
+
 /* Handling of unhandled and spurious interrupts: */
 extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
 			   int action_ret, struct pt_regs *regs);
_


  reply	other threads:[~2006-06-01 16:20 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-01  8:48 2.6.17-rc5-mm2 Andrew Morton
2006-06-01  9:30 ` 2.6.17-rc5-mm2 Mike Galbraith
2006-06-01  9:45   ` 2.6.17-rc5-mm2 Jens Axboe
2006-06-01  9:48   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01  9:34 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01  9:56   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 10:11     ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 10:33       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 10:53         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:25           ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 11:59             ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 16:22               ` Andrew Morton [this message]
2006-06-01 22:15                 ` 2.6.17-rc5-mm2 Reuben Farrelly
2006-06-01 12:20           ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-01 16:19             ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 18:34               ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  6:54             ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02  7:09               ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02  7:22                 ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  7:21                   ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02  7:13               ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  7:37             ` 2.6.17-rc5-mm2 Jan Beulich
2006-06-02  7:51               ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 20:53                 ` 2.6.17-rc5-mm2 Daniel Jacobowitz
2006-06-01 10:23     ` 2.6.17-rc5-mm2 Jeff Garzik
2006-06-01 11:42 ` 2.6.17-rc5-mm2 another compile error Helge Hafting
2006-06-01 16:29   ` Andrew Morton
2006-06-21 12:07     ` Adrian Bunk
2006-06-01 11:54 ` 2.6.17-rc5-mm2 stack unwind compile failure Helge Hafting
2006-06-01 16:30   ` Andrew Morton
2006-06-01 12:35 ` 2.6.17-rc5-mm2 md cause BUGs, and readahead speedup Helge Hafting
2006-06-01 12:54   ` Arjan van de Ven
2006-06-01 13:03 ` 2.6.17-rc5-mm2 link issues on s390 Cedric Le Goater
2006-06-01 13:28   ` Martin Schwidefsky
2006-06-01 13:53     ` Cedric Le Goater
2006-06-08  7:28       ` Heiko Carstens
2006-06-08  9:13         ` Cedric Le Goater
2006-06-08 11:02           ` Heiko Carstens
2006-06-08 12:45             ` Cedric Le Goater
2006-06-09  7:58               ` Heiko Carstens
2006-06-01 15:35 ` 2.6.17-rc5-mm2 Jiri Slaby
2006-06-01 15:49   ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 16:35     ` 2.6.17-rc5-mm2 Ben Collins
2006-06-05 11:28       ` [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context Stefan Richter
2006-06-05 11:31         ` [PATCH 2.6.17-rc5-mm3] ieee1394: adjust code formatting in highlevel.c Stefan Richter
2006-06-05 12:07         ` [PATCH 2.6.17-rc5-mm3] ieee1394: hl_irqs_lock is taken in hardware interrupt context Stefan Richter
2006-06-01 15:51 ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:20   ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:35     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:36       ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 19:04     ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 22:30       ` 2.6.17-rc5-mm2 Michal Piotrowski
2006-06-01 17:22   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 17:27     ` 2.6.17-rc5-mm2 Arjan van de Ven
2006-06-01 17:40       ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 19:31         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-01 21:51 ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 21:52   ` 2.6.17-rc5-mm2 Jesper Juhl
2006-06-01 22:25   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:40     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-01 22:32   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-01 22:52     ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  0:07       ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  0:28         ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  0:43           ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  0:58 ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02  1:38   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  6:02     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 13:14     ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 14:20       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 18:01         ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:06           ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 20:53           ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 22:33             ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-03  7:13               ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 14:41                 ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-03 21:10                   ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04  2:29                     ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-04  8:33                       ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-04  7:57                     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 15:51       ` 2.6.17-rc5-mm2 Alan Cox
2006-06-02 18:21         ` 2.6.17-rc5-mm2 Barry K. Nathan
2006-06-02 18:25       ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02  3:23 ` 2.6.17-rc5-mm2 KAMEZAWA Hiroyuki
2006-06-02  5:06   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-02 10:09 ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 11:10   ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:17     ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 11:34       ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 14:13         ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 14:46           ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 15:10             ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 19:49             ` 2.6.17-rc5-mm2 Ingo Molnar
2006-06-02 20:09               ` 2.6.17-rc5-mm2 Paolo Ornati
2006-06-02 18:38 ` 2.6.17-rc5-mm2 Mel Gorman
2006-06-02 18:59   ` 2.6.17-rc5-mm2 Andrew Morton
2006-06-03 15:29     ` 2.6.17-rc5-mm2 Mel Gorman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060601092247.8ccc2c49.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=htejun@gmail.com \
    --cc=jbeulich@novell.com \
    --cc=jeff@garzik.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=reuben-lkml@reub.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox