Oops :-) Good point.
> > +#define for_all_cpus(i) for((i)=0;(i)<smp_num_cpus;(i)++)
>
> you must use "cpu_logical_map()", eg get_irq_list() in
> linux/arch/i386/kernel/irq.c does that.
I have never seen a motherboard where they are not continuous.
But I'll fix it.
>
> >
> > + if (smp_call_function(getstack, sps, 1, 1) < 0)
> > + printk("smp_call_function failed\n");
> > + else {
>
> I should really fix smp_call_function(): have you checked the actual
> implementation:
> it uses a semaphore, ie panic() waits for a semaphore before stopping
> the kernel...
That is why it is careful to dump the local CPU first, so even when
smp_call_function fails it gets at least the same information as before.
Also panic normally does not call kbacktrace anyways.
-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/