[Crash-utility] crash 4.0-2.8 fails on 2.6.14-rc5 (EM64T)

Dave Anderson anderson at redhat.com
Wed Oct 26 18:41:47 UTC 2005


Sorry I've generated some unnecesary confusion re: my comments
about the use of DEFINE_PER_CPU and DECLARE_PER_CPU.
That's what I get for trying to multi-task...

Stepping back, the init_tss array is defined in "arch/x86_64/kernel/init_task.c".

In 2.6.9, it's declared like so:

/*
 * per-CPU TSS segments. Threads are completely 'soft' on Linux,
 * no more per-task TSS's. The TSS size is kept cacheline-aligned
 * so they are allowed to end up in the .data.cacheline_aligned
 * section. Since TSS's are completely CPU-local, we want them
 * on exact cacheline boundaries, to eliminate cacheline ping-pong.
 */
DEFINE_PER_CPU(struct tss_struct, init_tss) ____cacheline_maxaligned_in_smp;

In 2.6.13, it's slightly different in that it is initialized to INIT_TSS:

/*
 * per-CPU TSS segments. Threads are completely 'soft' on Linux,
 * no more per-task TSS's. The TSS size is kept cacheline-aligned
 * so they are allowed to end up in the .data.cacheline_aligned
 * section. Since TSS's are completely CPU-local, we want them
 * on exact cacheline boundaries, to eliminate cacheline ping-pong.
 */
DEFINE_PER_CPU(struct tss_struct, init_tss) ____cacheline_maxaligned_in_smp = INIT_TSS;

Both kernels have the same DECLARE_PER_CPU in the
"x86_64/processor.h" header file:

DECLARE_PER_CPU(struct tss_struct,init_tss);

That being the case, and not seeing why the INIT_TSS initialization should
have anything to do with the problem at hand, I am officially stumped at
why the 2.6.14 kernel shows the problem with your patch.

Dave





More information about the Crash-utility mailing list