Badari Pulavarty wrote:
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 ?
Sorry -- for x86_64, I can't say that I do know the last version
that worked. Maybe somebody else on the list that uses other
than Red Hat RHEL4 kernels does?
Dave