Messages in this thread | | | Date | Thu, 3 Jul 2008 13:39:25 +0200 | From | Ingo Molnar <> | Subject | Re: x86_64: tss_struct layout does not match comments !? |
| |
* Richard Kennedy <richard@rsk.demon.co.uk> wrote:
> Hi Ingo, > > the comments in the definition of tss_struct suggests is should be > cacheline aligned ( or 256 byte aligned ? ) :- > > |struct tss_struct { > |.... > | /* > | * Pad the TSS to be cacheline-aligned (size is 0x100): > | */ > | unsigned long __cacheline_filler[35]; > | /* > | * .. and then another 0x100 bytes for the emergency kernel stack: > | */ > | unsigned long stack[64]; > | > |} __attribute__((packed)); > > However on a 64 bit build the size of tss_struct is 9136, > cacheline_filler is 280 and stack size is 512 at offset 8624. > None of which are cacheline aligned. > > I'm guessing this isn't what was intended. > > do you know what the original intention was ? > > 1. struct tss_struct{...} __cacheline_aligned; > or just > 2. struct tss_struct { > ... > long stack[64] __cacheline_aligned; > }
#1 is the intent - because each CPU has a separate TSS. init_tss.stack is really just an emergency static stack we have in place for very early exceptions.
i think the __cacheline_filler could be removed safely. Mind sending a patch for that?
Ingo
| |