In-Reply-To: <[email protected]>
On Sun, 6 Aug 2006 08:05:06 +0200, Andi Kleen wrote:
> Hmm, actually I applied it but then I had doubts it actually
> works -- I think you don't need _stext but the code before
> the first call in head. Since head.S doesn't do a call
> that's probably start_kernel
But head.S does do a call (on i386 but not x86_64 AFAICT):
| #ifdef CONFIG_SMP
| movb ready, %cl
| movb $1, ready
| cmpb $0,%cl
| je 1f # the first CPU calls start_kernel
| # all other CPUs call initialize_secondary
| call initialize_secondary
| jmp L6
| 1:
| #endif /* CONFIG_SMP */
| call start_kernel
| L6:
| jmp L6 # main should never return here, but
| # just in case, we know what happens.
And the backtraces I saw ended up at L6:
| DWARF2 unwinder stuck at 0xc0100210
System.map on i386 SMP says:
| c0100210 t L6
--
Chuck
> And the backtraces I saw ended up at L6:
>
> | DWARF2 unwinder stuck at 0xc0100210
>
> System.map on i386 SMP says:
>
> | c0100210 t L6
Yes that's the problem. If you check for <= stext/_stext then the unwinder
won't catch the L6 (which is above it) and report a "stuck" again
-Andi