Re: [PATCH] i386: per-CPU double fault TSS and stack

Andi Kleen
2007-09-03T12:53:34Z

> It costs 4.xx k space per CPU - perhaps a constraint for embedded?

Not a major one.

> >In fact I would prefer to just eliminate CONFIG_DOUBLEFAULT (imho
> >it always a bad idea because the amount of code it saves is miniscule)
> > instead of adding such a ifdef maze.
>
> It's configurable for embedded only anyway, and I think there's some value
> in allowing it to be configured off for that environment.
>

With less ifdefs then please.

>
> >> + BUG_ON(page_count(page));
> >> + init_page_count(page);
> >> + free_pages(stack, j);
> >> + stack += (PAGE_SIZE << j);
> >
> >In 2.4-aa I added a alloc_pages_exact() for this. I don't think such games
> > should be played outside page_alloc.c. I would recommend to readd
> > alloc_pages_exact() and then use it.
>
> Will need to track that patch down.

http://www.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.23aa3/00_module-gfp-7
But it'll need quite some changes for 2.6 anyways.

> >> -#define DOUBLEFAULT_STACKSIZE (1024)
> >> -static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
> >> -#define STACK_START (unsigned
> >> long)(doublefault_stack+DOUBLEFAULT_STACKSIZE) +extern unsigned long
> >> max_low_pfn;
> >
> >No externs in .c
>
> The question is - is it acceptable to declare max_low_pfn in any header?

Sure, why not?

-Andi