ARM: 9158/1: leave it to core code to manage thread_info::cpu
authorArd Biesheuvel <ardb@kernel.org>
Mon, 15 Nov 2021 07:57:12 +0000 (08:57 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 17 Dec 2021 11:34:31 +0000 (11:34 +0000)
Since commit bcf9033e5449 ("sched: move CPU field back into thread_info
if THREAD_INFO_IN_TASK=y"), the CPU field in thread_info went back to
being managed by the core code, so we no longer have to keep it in sync
in arch code.

While at it, mark THREAD_INFO_IN_TASK as done for ARM in the
documentation.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Documentation/features/core/thread-info-in-task/arch-support.txt
arch/arm/include/asm/switch_to.h
arch/arm/kernel/smp.c

index 3361e86..bc74d8b 100644 (file)
@@ -8,7 +8,7 @@
     -----------------------
     |       alpha: | TODO |
     |         arc: | TODO |
-    |         arm: | TODO |
+    |         arm: |  ok  |
     |       arm64: |  ok  |
     |        csky: | TODO |
     |       h8300: | TODO |
index b55c7b2..61e4a3c 100644 (file)
  */
 extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *);
 
-static inline void set_ti_cpu(struct task_struct *p)
-{
-#ifdef CONFIG_THREAD_INFO_IN_TASK
-       /*
-        * The core code no longer maintains the thread_info::cpu field once
-        * CONFIG_THREAD_INFO_IN_TASK is in effect, but we rely on it for
-        * raw_smp_processor_id(), which cannot access struct task_struct*
-        * directly for reasons of circular #inclusion hell.
-        */
-       task_thread_info(p)->cpu = task_cpu(p);
-#endif
-}
-
 #define switch_to(prev,next,last)                                      \
 do {                                                                   \
        __complete_pending_tlbi();                                      \
-       set_ti_cpu(next);                                               \
        if (IS_ENABLED(CONFIG_CURRENT_POINTER_IN_TPIDRURO))             \
                __this_cpu_write(__entry_task, next);                   \
        last = __switch_to(prev,task_thread_info(prev), task_thread_info(next));        \
index cde5b6d..97ee6b1 100644 (file)
@@ -154,9 +154,6 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
        secondary_data.swapper_pg_dir = get_arch_pgd(swapper_pg_dir);
 #endif
        secondary_data.task = idle;
-       if (IS_ENABLED(CONFIG_THREAD_INFO_IN_TASK))
-               task_thread_info(idle)->cpu = cpu;
-
        sync_cache_w(&secondary_data);
 
        /*