All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sparseirq: fix hang with !SPARSE_IRQ
       [not found] <20081225020853.GI26490@linux-os.sc.intel.com>
@ 2008-12-27  6:38 ` Yinghai Lu
  2008-12-27  8:41   ` Ingo Molnar
  0 siblings, 1 reply; 2+ messages in thread
From: Yinghai Lu @ 2008-12-27  6:38 UTC (permalink / raw)
  To: Suresh Siddha, mingo, Thomas Gleixner, H. Peter Anvin,
	Andrew Morton
  Cc: venkatesh.pallipadi, linux-kernel@vger.kernel.org

Impact: fix hang

Suresh report his two sockets system only works with SPARSE_IRQ enable
it turns out we miss the setting desc->irq

so provide early_irq_init() even !SPARSE_IRQ to set desc->irq

Reported by: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>

---
 init/main.c         |    6 ------
 kernel/irq/handle.c |   15 +++++++++++++++
 2 files changed, 15 insertions(+), 6 deletions(-)

Index: linux-2.6/kernel/irq/handle.c
===================================================================
--- linux-2.6.orig/kernel/irq/handle.c
+++ linux-2.6/kernel/irq/handle.c
@@ -218,6 +218,21 @@ struct irq_desc irq_desc[NR_IRQS] __cach
 	}
 };
 
+void __init early_irq_init(void)
+{
+	struct irq_desc *desc;
+	int count;
+	int i;
+
+	desc = irq_desc;
+	count = ARRAY_SIZE(irq_desc);
+
+	for (i = 0; i < count; i++)
+		desc[i].irq = i;
+
+	arch_early_irq_init();
+}
+
 struct irq_desc *irq_to_desc(unsigned int irq)
 {
 	return (irq < NR_IRQS) ? irq_desc + irq : NULL;
Index: linux-2.6/init/main.c
===================================================================
--- linux-2.6.orig/init/main.c
+++ linux-2.6/init/main.c
@@ -549,15 +549,9 @@ void __init __weak thread_info_cache_ini
 	barrier();
 }
 
-void __init __weak arch_early_irq_init(void)
-{
-	barrier();
-}
-
 void __init __weak early_irq_init(void)
 {
 	barrier();
-	arch_early_irq_init();
 }
 
 asmlinkage void __init start_kernel(void)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] sparseirq: fix hang with !SPARSE_IRQ
  2008-12-27  6:38 ` [PATCH] sparseirq: fix hang with !SPARSE_IRQ Yinghai Lu
@ 2008-12-27  8:41   ` Ingo Molnar
  0 siblings, 0 replies; 2+ messages in thread
From: Ingo Molnar @ 2008-12-27  8:41 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Suresh Siddha, Thomas Gleixner, H. Peter Anvin, Andrew Morton,
	venkatesh.pallipadi, linux-kernel@vger.kernel.org


* Yinghai Lu <yinghai@kernel.org> wrote:

> Impact: fix hang
> 
> Suresh report his two sockets system only works with SPARSE_IRQ enable
> it turns out we miss the setting desc->irq
> 
> so provide early_irq_init() even !SPARSE_IRQ to set desc->irq
> 
> Reported by: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> 
> ---
>  init/main.c         |    6 ------
>  kernel/irq/handle.c |   15 +++++++++++++++
>  2 files changed, 15 insertions(+), 6 deletions(-)

applied to tip/irq/sparseirq - thanks Yinghai. This fixed a testsystem of 
mine as well that showed weird hangs with !sparseirq.

	Ingo

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-12-27  8:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20081225020853.GI26490@linux-os.sc.intel.com>
2008-12-27  6:38 ` [PATCH] sparseirq: fix hang with !SPARSE_IRQ Yinghai Lu
2008-12-27  8:41   ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.