int main(void)
 {
   DEFINE(TSK_ACTIVE_MM,                offsetof(struct task_struct, active_mm));
-  DEFINE(TSK_CPU,              offsetof(struct task_struct, cpu));
   BLANK();
   DEFINE(TSK_TI_CPU,           offsetof(struct task_struct, thread_info.cpu));
   DEFINE(TSK_TI_FLAGS,         offsetof(struct task_struct, thread_info.flags));
 
        scs_load \tsk
 
        adr_l   \tmp1, __per_cpu_offset
-       ldr     w\tmp2, [\tsk, #TSK_CPU]
+       ldr     w\tmp2, [\tsk, #TSK_TI_CPU]
        ldr     \tmp1, [\tmp1, \tmp2, lsl #3]
        set_this_cpu_offset \tmp1
        .endm
 
 #endif /* CONFIG_PPC64 */
        OFFSET(TASK_STACK, task_struct, stack);
 #ifdef CONFIG_SMP
-       OFFSET(TASK_CPU, task_struct, cpu);
+       OFFSET(TASK_CPU, task_struct, thread_info.cpu);
 #endif
 
 #ifdef CONFIG_LIVEPATCH
 
        paca_ptrs[cpu]->kstack = (unsigned long)task_stack_page(idle) +
                                 THREAD_SIZE - STACK_FRAME_OVERHEAD;
 #endif
-       idle->cpu = cpu;
+       task_thread_info(idle)->cpu = cpu;
        secondary_current = current_set[cpu] = idle;
 }
 
 
 #ifdef CONFIG_SMP
        int                             on_cpu;
        struct __call_single_node       wake_entry;
-#ifdef CONFIG_THREAD_INFO_IN_TASK
-       /* Current CPU: */
-       unsigned int                    cpu;
-#endif
        unsigned int                    wakee_flips;
        unsigned long                   wakee_flip_decay_ts;
        struct task_struct              *last_wakee;
 extern unsigned long init_stack[THREAD_SIZE / sizeof(unsigned long)];
 
 #ifdef CONFIG_THREAD_INFO_IN_TASK
-static inline struct thread_info *task_thread_info(struct task_struct *task)
-{
-       return &task->thread_info;
-}
+# define task_thread_info(task)        (&(task)->thread_info)
 #elif !defined(__HAVE_THREAD_FUNCTIONS)
 # define task_thread_info(task)        ((struct thread_info *)(task)->stack)
 #endif
 
 static inline unsigned int task_cpu(const struct task_struct *p)
 {
-#ifdef CONFIG_THREAD_INFO_IN_TASK
-       return READ_ONCE(p->cpu);
-#else
        return READ_ONCE(task_thread_info(p)->cpu);
-#endif
 }
 
 extern void set_task_cpu(struct task_struct *p, unsigned int cpu);
 
         * per-task data have been completed by this moment.
         */
        smp_wmb();
-#ifdef CONFIG_THREAD_INFO_IN_TASK
-       WRITE_ONCE(p->cpu, cpu);
-#else
        WRITE_ONCE(task_thread_info(p)->cpu, cpu);
-#endif
        p->wake_cpu = cpu;
 #endif
 }