]> git.hungrycats.org Git - linux/commitdiff
ppc64: remove interrupt stacks which broke when the thread info stuff went in
authorAnton Blanchard <anton@samba.org>
Tue, 2 Sep 2003 19:22:20 +0000 (05:22 +1000)
committerAnton Blanchard <anton@samba.org>
Tue, 2 Sep 2003 19:22:20 +0000 (05:22 +1000)
arch/ppc64/kernel/asm-offsets.c
arch/ppc64/kernel/head.S
arch/ppc64/kernel/process.c
arch/ppc64/mm/init.c

index 1bc9b089757bd25831db1d207243f3c4ea5cf3ad..69c672faf9e62c714f50e95138aeeca9ec81a466 100644 (file)
@@ -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));
index df8d0c1dd8c029a657161a2105f4a4fa4d2b60c0..10e7a055a94c2e2ea65b6a1860acf25a264e35fe 100644 (file)
@@ -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:
index df5d9ffe60c59b5ef0371a2037ca689a7fd7b3d2..2731395337bfb21cab5fe9b5153de003e376f9bb 100644 (file)
@@ -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;
index d7003a1588cf12e29374907cd9fe219ec00a542d..cdd8886e3c0c11e5041fbf728538e3388df70c30 100644 (file)
@@ -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