sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y
authorArd Biesheuvel <ardb@kernel.org>
Tue, 14 Sep 2021 12:10:33 +0000 (14:10 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Thu, 30 Sep 2021 14:13:10 +0000 (16:13 +0200)
commitbcf9033e5449bdcaa9bed46467a7141a8049dadb
tree41ddaa2e3be76b9277445e999bfe991a2eb1a7c2
parent227d735d889e0403f1659df6e2dece7633f380bc
sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y

THREAD_INFO_IN_TASK moved the CPU field out of thread_info, but this
causes some issues on architectures that define raw_smp_processor_id()
in terms of this field, due to the fact that #include'ing linux/sched.h
to get at struct task_struct is problematic in terms of circular
dependencies.

Given that thread_info and task_struct are the same data structure
anyway when THREAD_INFO_IN_TASK=y, let's move it back so that having
access to the type definition of struct thread_info is sufficient to
reference the CPU number of the current task.

Note that this requires THREAD_INFO_IN_TASK's definition of the
task_thread_info() helper to be updated, as task_cpu() takes a
pointer-to-const, whereas task_thread_info() (which is used to generate
lvalues as well), needs a non-const pointer. So make it a macro instead.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
arch/arm64/kernel/asm-offsets.c
arch/arm64/kernel/head.S
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/smp.c
include/linux/sched.h
kernel/sched/sched.h