mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
Merge tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull thread_info update to move 'cpu' back from task_struct from Kees Cook: "Cross-architecture update to move task_struct::cpu back into thread_info on arm64, x86, s390, powerpc, and riscv. All Acked by arch maintainers. Quoting Ard Biesheuvel: 'Move task_struct::cpu back into thread_info Keeping CPU in task_struct is problematic for architectures that define raw_smp_processor_id() in terms of this field, as it requires linux/sched.h to be included, which causes a lot of pain in terms of circular dependencies (aka 'header soup') This series moves it back into thread_info (where it came from) for all architectures that enable THREAD_INFO_IN_TASK, addressing the header soup issue as well as some pointless differences in the implementations of task_cpu() and set_task_cpu()'" * tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: riscv: rely on core code to keep thread_info::cpu updated powerpc: smp: remove hack to obtain offset of task_struct::cpu sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y powerpc: add CPU field to struct thread_info s390: add CPU field to struct thread_info x86: add CPU field to struct thread_info arm64: add CPU field to struct thread_info
This commit is contained in:
@@ -750,10 +750,6 @@ struct task_struct {
|
||||
#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;
|
||||
@@ -1886,10 +1882,7 @@ extern struct thread_info init_thread_info;
|
||||
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
|
||||
@@ -2133,11 +2126,7 @@ static __always_inline bool need_resched(void)
|
||||
|
||||
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);
|
||||
|
Reference in New Issue
Block a user