[PATCH] Remove most of the special cases for the debug IST stack
Remove most of the special cases for the debug IST stack. This is a follow on clean up patch, it requires the bug fix patch that adds orig_ist. Signed-off-by: Keith Owens <kaos@ocs.com.au> Signed-off-by: Andi Kleen <ak@suse.de>
This commit is contained in:
parent
575400d1b4
commit
f574164491
|
@ -237,28 +237,17 @@ void __cpuinit cpu_init (void)
|
|||
* set up and load the per-CPU TSS
|
||||
*/
|
||||
for (v = 0; v < N_EXCEPTION_STACKS; v++) {
|
||||
static const unsigned int order[N_EXCEPTION_STACKS] = {
|
||||
[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER,
|
||||
[DEBUG_STACK - 1] = DEBUG_STACK_ORDER
|
||||
};
|
||||
if (cpu) {
|
||||
static const unsigned int order[N_EXCEPTION_STACKS] = {
|
||||
[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER,
|
||||
[DEBUG_STACK - 1] = DEBUG_STACK_ORDER
|
||||
};
|
||||
|
||||
estacks = (char *)__get_free_pages(GFP_ATOMIC, order[v]);
|
||||
if (!estacks)
|
||||
panic("Cannot allocate exception stack %ld %d\n",
|
||||
v, cpu);
|
||||
}
|
||||
switch (v + 1) {
|
||||
#if DEBUG_STKSZ > EXCEPTION_STKSZ
|
||||
case DEBUG_STACK:
|
||||
cpu_pda(cpu)->debugstack = (unsigned long)estacks;
|
||||
estacks += DEBUG_STKSZ;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
estacks += EXCEPTION_STKSZ;
|
||||
break;
|
||||
}
|
||||
estacks += PAGE_SIZE << order[v];
|
||||
orig_ist->ist[v] = t->ist[v] = (unsigned long)estacks;
|
||||
}
|
||||
|
||||
|
|
|
@ -162,26 +162,7 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack,
|
|||
* 'stack' is in one of them:
|
||||
*/
|
||||
for (k = 0; k < N_EXCEPTION_STACKS; k++) {
|
||||
unsigned long end;
|
||||
|
||||
/*
|
||||
* set 'end' to the end of the exception stack.
|
||||
*/
|
||||
switch (k + 1) {
|
||||
/*
|
||||
* TODO: this block is not needed i think, because
|
||||
* setup64.c:cpu_init() sets up t->ist[DEBUG_STACK]
|
||||
* properly too.
|
||||
*/
|
||||
#if DEBUG_STKSZ > EXCEPTION_STKSZ
|
||||
case DEBUG_STACK:
|
||||
end = cpu_pda(cpu)->debugstack + DEBUG_STKSZ;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
end = per_cpu(orig_ist, cpu).ist[k];
|
||||
break;
|
||||
}
|
||||
unsigned long end = per_cpu(orig_ist, cpu).ist[k];
|
||||
/*
|
||||
* Is 'stack' above this exception frame's end?
|
||||
* If yes then skip to the next frame.
|
||||
|
|
|
@ -13,9 +13,6 @@ struct x8664_pda {
|
|||
unsigned long data_offset; /* Per cpu data offset from linker address */
|
||||
unsigned long kernelstack; /* top of kernel stack for current */
|
||||
unsigned long oldrsp; /* user rsp for system call */
|
||||
#if DEBUG_STKSZ > EXCEPTION_STKSZ
|
||||
unsigned long debugstack; /* #DB/#BP stack. */
|
||||
#endif
|
||||
int irqcount; /* Irq nesting counter. Starts with -1 */
|
||||
int cpunumber; /* Logical CPU number */
|
||||
char *irqstackptr; /* top of irqstack */
|
||||
|
|
Loading…
Reference in New Issue