Re: ACPI: Uninitialized spinlocks & Unable to dump stack

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kenji Kaneshige wrote:
> 
> 2007-07-31 (火) の 22:48 -0700 に Christoph Lameter さんは書きました:
> > With todays git I get (sn2_defconfig w/ spinlock debuggin):
> 
> (snip.)
> 
> > ACPI: Error parsing MADT - no IOSAPIC entries
> > register_intr: No IOSAPIC for GSI 52
> > BUG: spinlock bad magic on CPU#0, swapper/0
> >  lock: a000000100bf66d0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 
> > 0
> > unwind: cannot stack reg state!
> > 
> > Call Trace:
> >  [<a000000100013900>] show_stack+0x40/0xa0
> 
> (snip.)
> 
> Hi,
> 
> I don't know why no IOSAPIC entries was found on your system.
> But I think the cause of this stack trace is a bug in the code
> path of interrupt registering failure. Here is a patch to fix
> this bug. Could you try that?

The good news is you patch gets rid of the spinlock BUG.
The bad news is the kernel boot on SN2 still hangs in udevsettle.

 
> Thanks,
> Kenji Kaneshige
> 
> ---
> 
> Fix wrong access to irq_desc[] in iosapic_register_intr().
> 
> Signed-off-by: Kenji Kaneshige <kaneshige.kenji@xxxxxxxxxxxxxx>
> 
> ---
>  arch/ia64/kernel/iosapic.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> Index: linux-2.6.23-rc1/arch/ia64/kernel/iosapic.c
> ===================================================================
> --- linux-2.6.23-rc1.orig/arch/ia64/kernel/iosapic.c
> +++ linux-2.6.23-rc1/arch/ia64/kernel/iosapic.c
> @@ -794,8 +794,9 @@ iosapic_register_intr (unsigned int gsi,
>  	err = register_intr(gsi, irq, IOSAPIC_LOWEST_PRIORITY,
>  			    polarity, trigger);
>  	if (err < 0) {
> +		spin_unlock(&irq_desc[irq].lock);
>  		irq = err;
> -		goto unlock_all;
> +		goto unlock_iosapic_lock;
>  	}
>  
>  	/*
> @@ -811,7 +812,7 @@ iosapic_register_intr (unsigned int gsi,
>  	       gsi, (trigger == IOSAPIC_EDGE ? "edge" : "level"),
>  	       (polarity == IOSAPIC_POL_HIGH ? "high" : "low"),
>  	       cpu_logical_id(dest), dest, irq_to_vector(irq));
> - unlock_all:
> +
>  	spin_unlock(&irq_desc[irq].lock);
>   unlock_iosapic_lock:
>  	spin_unlock_irqrestore(&iosapic_lock, flags);
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


-- 
Russ Anderson, OS RAS/Partitioning Project Lead  
SGI - Silicon Graphics Inc          rja@xxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux