diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/ppc64/kernel/asm-offsets.c | 2 | ||||
| -rw-r--r-- | arch/ppc64/kernel/head.S | 68 | ||||
| -rw-r--r-- | arch/ppc64/kernel/process.c | 40 | ||||
| -rw-r--r-- | arch/ppc64/mm/init.c | 5 |
4 files changed, 0 insertions, 115 deletions
diff --git a/arch/ppc64/kernel/asm-offsets.c b/arch/ppc64/kernel/asm-offsets.c index 1bc9b089757b..69c672faf9e6 100644 --- a/arch/ppc64/kernel/asm-offsets.c +++ b/arch/ppc64/kernel/asm-offsets.c @@ -83,9 +83,7 @@ int main(void) DEFINE(PACALPQUEUE, offsetof(struct paca_struct, lpQueuePtr)); DEFINE(PACATOC, offsetof(struct paca_struct, xTOC)); DEFINE(PACAEXCSP, offsetof(struct paca_struct, exception_sp)); - DEFINE(PACAHRDWINTSTACK, offsetof(struct paca_struct, xHrdIntStack)); DEFINE(PACAPROCENABLED, offsetof(struct paca_struct, xProcEnabled)); - DEFINE(PACAHRDWINTCOUNT, offsetof(struct paca_struct, xHrdIntCount)); DEFINE(PACADEFAULTDECR, offsetof(struct paca_struct, default_decr)); DEFINE(PACAPROFENABLED, offsetof(struct paca_struct, prof_enabled)); DEFINE(PACAPROFLEN, offsetof(struct paca_struct, prof_len)); diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S index df8d0c1dd8c0..10e7a055a94c 100644 --- a/arch/ppc64/kernel/head.S +++ b/arch/ppc64/kernel/head.S @@ -705,61 +705,9 @@ HardwareInterrupt_entry: li r20,0 li r6,0x500 bl .save_remaining_regs - /* Determine if need to run do_irq on a hardware interrupt stack */ - /* The first invocation of do_irq will occur on the kernel */ - /* stack in the current stack */ - /* All other invocations of do_irq will run on the hardware */ - /* interrupt stack associated with the PACA of the current */ - /* processor. */ - /* */ - /* The call to do_irq will preserve the value of r14 - r31 */ - /* */ -/* - * XXX turn off interrupt stacks until the thread_info stuff is fixed. - * Otherwise we end up setting need_resched etc bits in the interrupt - * stack and they never get seen when we return to the process stack - Anton - */ -#if 0 - lbz r21,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmpi 0,r21,1 /* */ - addi r21,r21,1 /* incr hardware interrupt cnt*/ - stb r21,PACAHRDWINTCOUNT(r13) /* */ - bne 2f /* */ - - mr r14,r1 /* preserve current r1 */ - ld r1,PACAHRDWINTSTACK(r13) /* */ - std r14,0(r1) /* set the back chain */ bl .do_IRQ - lbz r22,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmp 0,r22,r21 /* debug test */ - bne 3f - subi r21,r21,1 - stb r21,PACAHRDWINTCOUNT(r13) /* */ - mr r1,r14 /* */ - b .ret_from_except -#endif - -2: - bl .do_IRQ - -#if 0 - lbz r22,PACAHRDWINTCOUNT(r13) /* get hardware interrupt cnt */ - cmp 0,r22,r21 /* debug test */ - bne 3f /* */ - subi r21,r21,1 /* decr hardware interrupt cnt*/ - stb r21,PACAHRDWINTCOUNT(r13) /* */ -#endif - b .ret_from_except -3: - /* error - counts out of sync */ -#ifdef CONFIG_XMON - bl .xmon -#endif -4: b 4b - - .globl Alignment_common Alignment_common: EXCEPTION_PROLOG_COMMON @@ -1845,18 +1793,6 @@ _STATIC(start_here_common) li r5,0 std r0,PACAKSAVE(r13) - /* ptr to hardware interrupt stack for boot processor */ - LOADADDR(r3, hardware_int_paca0) - li r5,PAGE_SIZE - sldi r5,r5,3 - subi r5,r5,STACK_FRAME_OVERHEAD - - add r3,r3,r5 - std r3,PACAHRDWINTSTACK(r13) - - li r3,0 - stb r3,PACAHRDWINTCOUNT(r13) - /* Restore the parms passed in from the bootloader. */ mr r3,r31 mr r4,r30 @@ -1978,10 +1914,6 @@ swapper_pg_dir: ioremap_dir: .space 4096 - .globl hardware_int_paca0 -hardware_int_paca0: - .space 8*PAGE_SIZE - /* 1 page segment table per cpu (max 48, cpu0 allocated at STAB0_PHYS_ADDR) */ .globl stab_array stab_array: diff --git a/arch/ppc64/kernel/process.c b/arch/ppc64/kernel/process.c index df5d9ffe60c5..2731395337bf 100644 --- a/arch/ppc64/kernel/process.c +++ b/arch/ppc64/kernel/process.c @@ -385,46 +385,6 @@ out: return error; } -void initialize_paca_hardware_interrupt_stack(void) -{ - int i; - unsigned long stack; - unsigned long end_of_stack =0; - - for (i=1; i < NR_CPUS; i++) { - if (!cpu_possible(i)) - continue; - /* Carve out storage for the hardware interrupt stack */ - stack = __get_free_pages(GFP_ATOMIC, get_order(8*PAGE_SIZE)); - - if ( !stack ) { - printk("ERROR, cannot find space for hardware stack.\n"); - panic(" no hardware stack "); - } - - - /* Store the stack value in the PACA for the processor */ - paca[i].xHrdIntStack = stack + (8*PAGE_SIZE) - STACK_FRAME_OVERHEAD; - paca[i].xHrdIntCount = 0; - - } - - /* - * __get_free_pages() might give us a page > KERNBASE+256M which - * is mapped with large ptes so we can't set up the guard page. - */ - if (cur_cpu_spec->cpu_features & CPU_FTR_16M_PAGE) - return; - - for (i=0; i < NR_CPUS; i++) { - if (!cpu_possible(i)) - continue; - /* set page at the top of stack to be protected - prevent overflow */ - end_of_stack = paca[i].xHrdIntStack - (8*PAGE_SIZE - STACK_FRAME_OVERHEAD); - ppc_md.hpte_updateboltedpp(PP_RXRX,end_of_stack); - } -} - char *ppc_find_proc_name(unsigned *p, char *buf, unsigned buflen) { unsigned long tb_flags; diff --git a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c index d7003a1588cf..cdd8886e3c0c 100644 --- a/arch/ppc64/mm/init.c +++ b/arch/ppc64/mm/init.c @@ -540,8 +540,6 @@ static int __init setup_kcore(void) } module_init(setup_kcore); -void initialize_paca_hardware_interrupt_stack(void); - void __init mem_init(void) { #ifndef CONFIG_DISCONTIGMEM @@ -608,9 +606,6 @@ void __init mem_init(void) #endif mem_init_done = 1; - /* set the last page of each hardware interrupt stack to be protected */ - initialize_paca_hardware_interrupt_stack(); - #ifdef CONFIG_PPC_ISERIES create_virtual_bus_tce_table(); #endif |
