powerpc: Only use task_struct 'cpu' field on SMP
authorChristophe Leroy <christophe.leroy@c-s.fr>
Thu, 31 Jan 2019 10:08:50 +0000 (10:08 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 11:31:39 +0000 (22:31 +1100)
When moving to CONFIG_THREAD_INFO_IN_TASK, the thread_info 'cpu' field
gets moved into task_struct and only defined when CONFIG_SMP is set.

This patch ensures that TI_CPU is only used when CONFIG_SMP is set and
that task_struct 'cpu' field is not used directly out of SMP code.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/misc_32.S
arch/powerpc/xmon/xmon.c

index 2386ce2..2c21e86 100644 (file)
@@ -243,8 +243,10 @@ set_ivor:
        li      r0,0
        stwu    r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
 
+#ifdef CONFIG_SMP
        CURRENT_THREAD_INFO(r22, r1)
        stw     r24, TI_CPU(r22)
+#endif
 
        bl      early_init
 
index 57d2ffb..02b8cdd 100644 (file)
@@ -183,10 +183,14 @@ _GLOBAL(low_choose_750fx_pll)
        or      r4,r4,r5
        mtspr   SPRN_HID1,r4
 
+#ifdef CONFIG_SMP
        /* Store new HID1 image */
        CURRENT_THREAD_INFO(r6, r1)
        lwz     r6,TI_CPU(r6)
        slwi    r6,r6,2
+#else
+       li      r6, 0
+#endif
        addis   r6,r6,nap_save_hid1@ha
        stw     r4,nap_save_hid1@l(r6)
 
index 757b849..a0f44f9 100644 (file)
@@ -2997,7 +2997,7 @@ static void show_task(struct task_struct *tsk)
        printf("%px %016lx %6d %6d %c %2d %s\n", tsk,
                tsk->thread.ksp,
                tsk->pid, rcu_dereference(tsk->parent)->pid,
-               state, task_thread_info(tsk)->cpu,
+               state, task_cpu(tsk),
                tsk->comm);
 }