Re: [RFC patch 5/5] genirq: make irq threading robust
[Posted October 8, 2008 by jake]
From: |
| Jon Masters <jonathan-AT-jonmasters.org> |
To: |
| Thomas Gleixner <tglx-AT-linutronix.de> |
Subject: |
| Re: [RFC patch 5/5] genirq: make irq threading robust |
Date: |
| Wed, 01 Oct 2008 20:52:31 -0400 |
Message-ID: |
| <1222908751.31183.79.camel@perihelion.int.jonmasters.org> |
Cc: |
| LKML <linux-kernel-AT-vger.kernel.org>,
Linus Torvalds <torvalds-AT-osdl.org>,
Andrew Morton <akpm-AT-linux-foundation.org>,
Ingo Molnar <mingo-AT-elte.hu>,
Arjan van de Veen <arjan-AT-infradead.org>,
Benjamin Herrenschmidt <benh-AT-kernel.crashing.org>,
Steven Rostedt <rostedt-AT-goodmis.org>,
Sven Dietrich <sdietrich-AT-suse.de> |
Archive‑link: | |
Article |
On Wed, 2008-10-01 at 23:02 +0000, Thomas Gleixner wrote:
> To make sure that a crashed irq thread does not cause more trouble
> when the irq code tries to wake up a gone thread or the device code
> calling free_irq and trying to kthread_stop the dead thread, we plug a
> pointer to irqaction into task_struct, which is evaluated in
> do_exit(). When the thread crashes the do_exit code marks the thread
> as DIED in irqaction->flags to prevent further wakeups from the
> interrupt handler code.
> @@ -1301,6 +1301,7 @@ struct task_struct {
> int latency_record_count;
> struct latency_record latency_record[LT_SAVECOUNT];
> #endif
> + struct irqaction *irqaction;
> };
Is that going to fly? For the vast majority of task_structs this is now
a wasted 4/8 bytes that won't be used.
Jon.