On Wed, 2005-10-26 at 14:41 -0400, Dave Anderson wrote: > 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. Okay, I thought so too. I will take a closer look at it and let you know what I find. I am tempted to go back to 2.6.10 and see if crash works. Do you know the last known good kernel release for crash to work ? Thanks, Badari