powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU
authorChristophe Leroy <christophe.leroy@c-s.fr>
Thu, 31 Jan 2019 10:09:04 +0000 (10:09 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 11:31:40 +0000 (22:31 +1100)
Now that thread_info is similar to task_struct, its address is in r2
so CURRENT_THREAD_INFO() macro is useless. This patch removes it.

This patch also moves the 'tovirt(r2, r2)' down just before the
reactivation of MMU translation, so that we keep the physical address
of 'current' in r2 until then. It avoids a few calls to tophys().

At the same time, as the 'cpu' field is not anymore in thread_info,
TI_CPU is renamed TASK_CPU by this patch.

It also allows to get rid of a couple of
'#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE' as ACCOUNT_CPU_USER_ENTRY()
and ACCOUNT_CPU_USER_EXIT() are empty when
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not defined.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
[mpe: Fix a missed conversion of TI_CPU idle_6xx.S]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Makefile
arch/powerpc/include/asm/thread_info.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/epapr_hcalls.S
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/idle_6xx.S
arch/powerpc/kernel/idle_e500.S
arch/powerpc/kernel/misc_32.S
arch/powerpc/mm/hash_low_32.S
arch/powerpc/sysdev/6xx-suspend.S

index 53ffe935f3b0a594eda9e75c8d959d1cd50b86c0..7de49889bd5dc993864313f13cf61057ee05c52d 100644 (file)
@@ -431,7 +431,7 @@ ifdef CONFIG_SMP
 prepare: task_cpu_prepare
 
 task_cpu_prepare: prepare0
-       $(eval KBUILD_CFLAGS += -D_TASK_CPU=$(shell awk '{if ($$2 == "TI_CPU") print $$3;}' include/generated/asm-offsets.h))
+       $(eval KBUILD_CFLAGS += -D_TASK_CPU=$(shell awk '{if ($$2 == "TASK_CPU") print $$3;}' include/generated/asm-offsets.h))
 endif
 
 # Check toolchain versions:
index d91523c2c7d88cf24930fe1a31cc3c6191893312..c959b8d66cac5867c97047a76465759c5126b7fa 100644 (file)
@@ -19,8 +19,6 @@
 
 #ifdef CONFIG_PPC64
 #define CURRENT_THREAD_INFO(dest, sp)  stringify_in_c(ld dest, PACACURRENT(r13))
-#else
-#define CURRENT_THREAD_INFO(dest, sp)  stringify_in_c(mr dest, r2)
 #endif
 
 #ifndef __ASSEMBLY__
index 1ad0cbcc5f134a03a3f1b7a3086ab598853cdd02..8b688b19776ae3afe06dd72f4347d9ec5e87094b 100644 (file)
@@ -99,7 +99,7 @@ int main(void)
 #endif /* CONFIG_PPC64 */
        OFFSET(TASK_STACK, task_struct, stack);
 #ifdef CONFIG_SMP
-       OFFSET(TI_CPU, task_struct, cpu);
+       OFFSET(TASK_CPU, task_struct, cpu);
 #endif
 
 #ifdef CONFIG_LIVEPATCH
index 424e7265e7908fcfb2f42639ab24908829c5b0bb..96dce6a4b61edda95c5579289d5d7c777f3bb701 100644 (file)
@@ -151,7 +151,6 @@ transfer_to_handler:
        stw     r2,_XER(r11)
        mfspr   r12,SPRN_SPRG_THREAD
        addi    r2,r12,-THREAD
-       tovirt(r2,r2)                   /* set r2 to current */
        beq     2f                      /* if from user, fix up THREAD.regs */
        addi    r11,r1,STACK_FRAME_OVERHEAD
        stw     r11,PT_REGS(r12)
@@ -161,11 +160,7 @@ transfer_to_handler:
        lwz     r12,THREAD_DBCR0(r12)
        andis.  r12,r12,DBCR0_IDM@h
 #endif
-#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
-       CURRENT_THREAD_INFO(r9, r1)
-       tophys(r9, r9)
-       ACCOUNT_CPU_USER_ENTRY(r9, r11, r12)
-#endif
+       ACCOUNT_CPU_USER_ENTRY(r2, r11, r12)
 #if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
        beq+    3f
        /* From user and task is ptraced - load up global dbcr0 */
@@ -175,8 +170,7 @@ transfer_to_handler:
        tophys(r11,r11)
        addi    r11,r11,global_dbcr0@l
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r9,TI_CPU(r9)
+       lwz     r9,TASK_CPU(r2)
        slwi    r9,r9,3
        add     r11,r11,r9
 #endif
@@ -197,9 +191,7 @@ transfer_to_handler:
        ble-    stack_ovf               /* then the kernel stack overflowed */
 5:
 #if defined(CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500)
-       CURRENT_THREAD_INFO(r9, r1)
-       tophys(r9,r9)                   /* check local flags */
-       lwz     r12,TI_LOCAL_FLAGS(r9)
+       lwz     r12,TI_LOCAL_FLAGS(r2)
        mtcrf   0x01,r12
        bt-     31-TLF_NAPPING,4f
        bt-     31-TLF_SLEEPING,7f
@@ -208,6 +200,7 @@ transfer_to_handler:
 transfer_to_handler_cont:
 3:
        mflr    r9
+       tovirt(r2, r2)                  /* set r2 to current */
        lwz     r11,0(r9)               /* virtual address of handler */
        lwz     r9,4(r9)                /* where to go when done */
 #if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
@@ -271,11 +264,11 @@ reenable_mmu:                             /* re-enable mmu so we can */
 
 #if defined (CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500)
 4:     rlwinm  r12,r12,0,~_TLF_NAPPING
-       stw     r12,TI_LOCAL_FLAGS(r9)
+       stw     r12,TI_LOCAL_FLAGS(r2)
        b       power_save_ppc32_restore
 
 7:     rlwinm  r12,r12,0,~_TLF_SLEEPING
-       stw     r12,TI_LOCAL_FLAGS(r9)
+       stw     r12,TI_LOCAL_FLAGS(r2)
        lwz     r9,_MSR(r11)            /* if sleeping, clear MSR.EE */
        rlwinm  r9,r9,0,~MSR_EE
        lwz     r12,_LINK(r11)          /* and return to address in LR */
@@ -347,8 +340,7 @@ _GLOBAL(DoSyscall)
        mtmsr   r11
 1:
 #endif /* CONFIG_TRACE_IRQFLAGS */
-       CURRENT_THREAD_INFO(r10, r1)
-       lwz     r11,TI_FLAGS(r10)
+       lwz     r11,TI_FLAGS(r2)
        andi.   r11,r11,_TIF_SYSCALL_DOTRACE
        bne-    syscall_dotrace
 syscall_dotrace_cont:
@@ -381,13 +373,12 @@ ret_from_syscall:
        lwz     r3,GPR3(r1)
 #endif
        mr      r6,r3
-       CURRENT_THREAD_INFO(r12, r1)
        /* disable interrupts so current_thread_info()->flags can't change */
        LOAD_MSR_KERNEL(r10,MSR_KERNEL) /* doesn't include MSR_EE */
        /* Note: We don't bother telling lockdep about it */
        SYNC
        MTMSRD(r10)
-       lwz     r9,TI_FLAGS(r12)
+       lwz     r9,TI_FLAGS(r2)
        li      r8,-MAX_ERRNO
        andi.   r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
        bne-    syscall_exit_work
@@ -434,8 +425,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
        andi.   r4,r8,MSR_PR
        beq     3f
-       CURRENT_THREAD_INFO(r4, r1)
-       ACCOUNT_CPU_USER_EXIT(r4, r5, r7)
+       ACCOUNT_CPU_USER_EXIT(r2, r5, r7)
 3:
 #endif
        lwz     r4,_LINK(r1)
@@ -528,7 +518,7 @@ syscall_exit_work:
        /* Clear per-syscall TIF flags if any are set.  */
 
        li      r11,_TIF_PERSYSCALL_MASK
-       addi    r12,r12,TI_FLAGS
+       addi    r12,r2,TI_FLAGS
 3:     lwarx   r8,0,r12
        andc    r8,r8,r11
 #ifdef CONFIG_IBM405_ERR77
@@ -536,7 +526,6 @@ syscall_exit_work:
 #endif
        stwcx.  r8,0,r12
        bne-    3b
-       subi    r12,r12,TI_FLAGS
        
 4:     /* Anything which requires enabling interrupts? */
        andi.   r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP)
@@ -815,8 +804,7 @@ ret_from_except:
 
 user_exc_return:               /* r10 contains MSR_KERNEL here */
        /* Check current_thread_info()->flags */
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r9,TI_FLAGS(r9)
+       lwz     r9,TI_FLAGS(r2)
        andi.   r0,r9,_TIF_USER_WORK_MASK
        bne     do_work
 
@@ -828,18 +816,14 @@ restore_user:
        andis.  r10,r0,DBCR0_IDM@h
        bnel-   load_dbcr0
 #endif
-#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
-       CURRENT_THREAD_INFO(r9, r1)
-       ACCOUNT_CPU_USER_EXIT(r9, r10, r11)
-#endif
+       ACCOUNT_CPU_USER_EXIT(r2, r10, r11)
 
        b       restore
 
 /* N.B. the only way to get here is from the beq following ret_from_except. */
 resume_kernel:
        /* check current_thread_info, _TIF_EMULATE_STACK_STORE */
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r8,TI_FLAGS(r9)
+       lwz     r8,TI_FLAGS(r2)
        andis.  r0,r8,_TIF_EMULATE_STACK_STORE@h
        beq+    1f
 
@@ -865,7 +849,7 @@ resume_kernel:
 
        /* Clear _TIF_EMULATE_STACK_STORE flag */
        lis     r11,_TIF_EMULATE_STACK_STORE@h
-       addi    r5,r9,TI_FLAGS
+       addi    r5,r2,TI_FLAGS
 0:     lwarx   r8,0,r5
        andc    r8,r8,r11
 #ifdef CONFIG_IBM405_ERR77
@@ -877,7 +861,7 @@ resume_kernel:
 
 #ifdef CONFIG_PREEMPT
        /* check current_thread_info->preempt_count */
-       lwz     r0,TI_PREEMPT(r9)
+       lwz     r0,TI_PREEMPT(r2)
        cmpwi   0,r0,0          /* if non-zero, just restore regs and return */
        bne     restore
        andi.   r8,r8,_TIF_NEED_RESCHED
@@ -893,8 +877,7 @@ resume_kernel:
        bl      trace_hardirqs_off
 #endif
 1:     bl      preempt_schedule_irq
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r3,TI_FLAGS(r9)
+       lwz     r3,TI_FLAGS(r2)
        andi.   r0,r3,_TIF_NEED_RESCHED
        bne-    1b
 #ifdef CONFIG_TRACE_IRQFLAGS
@@ -1190,8 +1173,7 @@ load_dbcr0:
        lis     r11,global_dbcr0@ha
        addi    r11,r11,global_dbcr0@l
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r9,TI_CPU(r9)
+       lwz     r9,TASK_CPU(r2)
        slwi    r9,r9,3
        add     r11,r11,r9
 #endif
@@ -1231,8 +1213,7 @@ recheck:
        LOAD_MSR_KERNEL(r10,MSR_KERNEL)
        SYNC
        MTMSRD(r10)             /* disable interrupts */
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r9,TI_FLAGS(r9)
+       lwz     r9,TI_FLAGS(r2)
        andi.   r0,r9,_TIF_NEED_RESCHED
        bne-    do_resched
        andi.   r0,r9,_TIF_USER_WORK_MASK
index 52ca2471ee1a4355b8fa3063bcc5d27ba61a52a1..d252f4663a231eb7bec1cf21073f53cab0674e31 100644 (file)
 #ifndef CONFIG_PPC64
 /* epapr_ev_idle() was derived from e500_idle() */
 _GLOBAL(epapr_ev_idle)
-       CURRENT_THREAD_INFO(r3, r1)
-       PPC_LL  r4, TI_LOCAL_FLAGS(r3)  /* set napping bit */
+       PPC_LL  r4, TI_LOCAL_FLAGS(r2)  /* set napping bit */
        ori     r4, r4,_TLF_NAPPING     /* so when we take an exception */
-       PPC_STL r4, TI_LOCAL_FLAGS(r3)  /* it will return to our caller */
+       PPC_STL r4, TI_LOCAL_FLAGS(r2)  /* it will return to our caller */
 
        wrteei  1
 
index 4ed2a7c8e89b6573c3d5e75f09fdcb3b9918573b..1881127682e995f5c6c94eb3d90d00e2559f1582 100644 (file)
@@ -244,8 +244,7 @@ set_ivor:
        stwu    r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
 
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r22, r1)
-       stw     r24, TI_CPU(r22)
+       stw     r24, TASK_CPU(r2)
 #endif
 
        bl      early_init
@@ -719,7 +718,7 @@ finish_tlb_load:
 
        /* Get the next_tlbcam_idx percpu var */
 #ifdef CONFIG_SMP
-       lwz     r15, TI_CPU-THREAD(r12)
+       lwz     r15, TASK_CPU-THREAD(r12)
        lis     r14, __per_cpu_offset@h
        ori     r14, r14, __per_cpu_offset@l
        rlwinm  r15, r15, 2, 0, 29
index d9b6e7e0b5e31891df8133e161aa53cc8cd56a2b..c5e7f5bb2e662bbf431294b537e65e85f36ac45a 100644 (file)
@@ -136,10 +136,9 @@ BEGIN_FTR_SECTION
        DSSALL
        sync
 END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
-       CURRENT_THREAD_INFO(r9, r1)
-       lwz     r8,TI_LOCAL_FLAGS(r9)   /* set napping bit */
+       lwz     r8,TI_LOCAL_FLAGS(r2)   /* set napping bit */
        ori     r8,r8,_TLF_NAPPING      /* so when we take an exception */
-       stw     r8,TI_LOCAL_FLAGS(r9)   /* it will return to our caller */
+       stw     r8,TI_LOCAL_FLAGS(r2)   /* it will return to our caller */
        mfmsr   r7
        ori     r7,r7,MSR_EE
        oris    r7,r7,MSR_POW@h
@@ -159,9 +158,7 @@ _GLOBAL(power_save_ppc32_restore)
        stw     r9,_NIP(r11)            /* make it do a blr */
 
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r12, r1)
-       tophys(r12, r12)
-       lwz     r11,TI_CPU(r12)         /* get cpu number * 4 */
+       lwz     r11,TASK_CPU(r2)        /* get cpu number * 4 */
        slwi    r11,r11,2
 #else
        li      r11,0
index 583e55ac7d26319ab38205d801211625a5809dbd..69dfcd2ca0118d84e68a5218322b6575ea21a203 100644 (file)
        .text
 
 _GLOBAL(e500_idle)
-       CURRENT_THREAD_INFO(r3, r1)
-       lwz     r4,TI_LOCAL_FLAGS(r3)   /* set napping bit */
+       lwz     r4,TI_LOCAL_FLAGS(r2)   /* set napping bit */
        ori     r4,r4,_TLF_NAPPING      /* so when we take an exception */
-       stw     r4,TI_LOCAL_FLAGS(r3)   /* it will return to our caller */
+       stw     r4,TI_LOCAL_FLAGS(r2)   /* it will return to our caller */
 
 #ifdef CONFIG_PPC_E500MC
        wrteei  1
@@ -88,8 +87,7 @@ _GLOBAL(power_save_ppc32_restore)
        stw     r9,_NIP(r11)            /* make it do a blr */
 
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r12, r1)
-       lwz     r11,TI_CPU(r12)         /* get cpu number * 4 */
+       lwz     r11,TASK_CPU(r2)                /* get cpu number * 4 */
        slwi    r11,r11,2
 #else
        li      r11,0
index 6f6127c3760cb08a5df0541c7ad11d07b4f0b370..0dda4f8e3d7a2c5d9017f28e2cdc269e25ba876b 100644 (file)
@@ -183,8 +183,7 @@ _GLOBAL(low_choose_750fx_pll)
 
 #ifdef CONFIG_SMP
        /* Store new HID1 image */
-       CURRENT_THREAD_INFO(r6, r1)
-       lwz     r6,TI_CPU(r6)
+       lwz     r6,TASK_CPU(r2)
        slwi    r6,r6,2
 #else
        li      r6, 0
index d94fef524ef50342951c512ed02b8a300f28655d..1f13494efb2bfa9b50996ce6fda0711b9e933008 100644 (file)
@@ -183,8 +183,7 @@ _GLOBAL(add_hash_page)
        add     r3,r3,r0                /* note create_hpte trims to 24 bits */
 
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r8, r1)     /* use cpu number to make tag */
-       lwz     r8,TI_CPU(r8)           /* to go in mmu_hash_lock */
+       lwz     r8,TASK_CPU(r2)         /* to go in mmu_hash_lock */
        oris    r8,r8,12
 #endif /* CONFIG_SMP */
 
@@ -540,9 +539,7 @@ _GLOBAL(flush_hash_pages)
 #ifdef CONFIG_SMP
        lis     r9, (mmu_hash_lock - PAGE_OFFSET)@ha
        addi    r9, r9, (mmu_hash_lock - PAGE_OFFSET)@l
-       CURRENT_THREAD_INFO(r8, r1)
-       tophys(r8, r8)
-       lwz     r8,TI_CPU(r8)
+       lwz     r8,TASK_CPU(r2)
        oris    r8,r8,9
 10:    lwarx   r0,0,r9
        cmpi    0,r0,0
@@ -637,8 +634,7 @@ EXPORT_SYMBOL(flush_hash_pages)
  */
 _GLOBAL(_tlbie)
 #ifdef CONFIG_SMP
-       CURRENT_THREAD_INFO(r8, r1)
-       lwz     r8,TI_CPU(r8)
+       lwz     r8,TASK_CPU(r2)
        oris    r8,r8,11
        mfmsr   r10
        SYNC
@@ -675,8 +671,7 @@ _GLOBAL(_tlbie)
  */
 _GLOBAL(_tlbia)
 #if defined(CONFIG_SMP)
-       CURRENT_THREAD_INFO(r8, r1)
-       lwz     r8,TI_CPU(r8)
+       lwz     r8,TASK_CPU(r2)
        oris    r8,r8,10
        mfmsr   r10
        SYNC
index cf48e9cb257596698a65f88877e85a3bb33c1f8c..6c4aec25c4ba868ca05dbcf5d2848b9761ab4004 100644 (file)
@@ -29,10 +29,9 @@ _GLOBAL(mpc6xx_enter_standby)
        ori     r5, r5, ret_from_standby@l
        mtlr    r5
 
-       CURRENT_THREAD_INFO(r5, r1)
-       lwz     r6, TI_LOCAL_FLAGS(r5)
+       lwz     r6, TI_LOCAL_FLAGS(r2)
        ori     r6, r6, _TLF_SLEEPING
-       stw     r6, TI_LOCAL_FLAGS(r5)
+       stw     r6, TI_LOCAL_FLAGS(r2)
 
        mfmsr   r5
        ori     r5, r5, MSR_EE