Pull scheduler updates from Ingo Molnar: - Updates to scheduler metrics: - PELT fixes & enhancements - PSI fixes & enhancements - Refactor cpu_util_without() - Updates to instrumentation/debugging: - Remove sched_trace_*() helper functions - can be done via debug info - Fix double update_rq_clock() warnings - Introduce & use "preemption model accessors" to simplify some of the Kconfig complexity. - Make softirq handling RT-safe. - Misc smaller fixes & cleanups. * tag 'sched-core-2022-05-23' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: topology: Remove unused cpu_cluster_mask() sched: Reverse sched_class layout sched/deadline: Remove superfluous rq clock update in push_dl_task() sched/core: Avoid obvious double update_rq_clock warning smp: Make softirq handling RT safe in flush_smp_call_function_queue() smp: Rename flush_smp_call_function_from_idle() sched: Fix missing prototype warnings sched/fair: Remove cfs_rq_tg_path() sched/fair: Remove sched_trace_*() helper functions sched/fair: Refactor cpu_util_without() sched/fair: Revise comment about lb decision matrix sched/psi: report zeroes for CPU full at the system level sched/fair: Delete useless condition in tg_unthrottle_up() sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq sched/fair: Move calculate of avg_load to a better location mailmap: Update my email address to @redhat.com MAINTAINERS: Add myself as scheduler topology reviewer psi: Fix trigger being fired unexpectedly at initial ftrace: Use preemption model accessors for trace header printout kcsan: Use preemption model accessors
Showing the changes to include (4 of 23 files). Show all
Unified · Split
| @@ -126,13 +126,13 @@ · 125 unmodified lines | ||
| 126 | 126 | */ |
| 127 | 127 | #define SCHED_DATA \ |
| 128 | 128 | STRUCT_ALIGN(); \ |
| 129 | − __begin_sched_classes = .; \ | |
| 130 | − *(__idle_sched_class) \ | |
| 131 | − *(__fair_sched_class) \ | |
| 132 | − *(__rt_sched_class) \ | |
| 133 | − *(__dl_sched_class) \ | |
| 129 | + __sched_class_highest = .; \ | |
| 134 | 130 | *(__stop_sched_class) \ |
| 135 | − __end_sched_classes = .; | |
| 131 | + *(__dl_sched_class) \ | |
| 132 | + *(__rt_sched_class) \ | |
| 133 | + *(__fair_sched_class) \ | |
| 134 | + *(__idle_sched_class) \ | |
| 135 | + __sched_class_lowest = .; | |
| 136 | 136 | |
| 137 | 137 | /* The actual configuration determine if the init/exit sections |
| 138 | 138 | * are handled as text/data or they can be discarded (which |
| @@ -589,6 +589,15 @@ struct softirq_action · 588 unmodified lines | ||
| 589 | 589 | asmlinkage void do_softirq(void); |
| 590 | 590 | asmlinkage void __do_softirq(void); |
| 591 | 591 | |
| 592 | +#ifdef CONFIG_PREEMPT_RT | |
| 593 | +extern void do_softirq_post_smp_call_flush(unsigned int was_pending); | |
| 594 | +#else | |
| 595 | +static inline void do_softirq_post_smp_call_flush(unsigned int unused) | |
| 596 | +{ | |
| 597 | + do_softirq(); | |
| 598 | +} | |
| 599 | +#endif | |
| 600 | + | |
| 592 | 601 | extern void open_softirq(int nr, void (*action)(struct softirq_action *)); |
| 593 | 602 | extern void softirq_init(void); |
| 594 | 603 | extern void __raise_softirq_irqoff(unsigned int nr); |
| @@ -2382,20 +2382,6 @@ static inline void rseq_syscall(struct pt_regs *regs) · 2381 unmodified lines | ||
| 2382 | 2382 | |
| 2383 | 2383 | #endif |
| 2384 | 2384 | |
| 2385 | −const struct sched_avg *sched_trace_cfs_rq_avg(struct cfs_rq *cfs_rq); | |
| 2386 | −char *sched_trace_cfs_rq_path(struct cfs_rq *cfs_rq, char *str, int len); | |
| 2387 | −int sched_trace_cfs_rq_cpu(struct cfs_rq *cfs_rq); | |
| 2388 | − | |
| 2389 | −const struct sched_avg *sched_trace_rq_avg_rt(struct rq *rq); | |
| 2390 | −const struct sched_avg *sched_trace_rq_avg_dl(struct rq *rq); | |
| 2391 | −const struct sched_avg *sched_trace_rq_avg_irq(struct rq *rq); | |
| 2392 | − | |
| 2393 | −int sched_trace_rq_cpu(struct rq *rq); | |
| 2394 | −int sched_trace_rq_cpu_capacity(struct rq *rq); | |
| 2395 | −int sched_trace_rq_nr_running(struct rq *rq); | |
| 2396 | − | |
| 2397 | −const struct cpumask *sched_trace_rd_span(struct root_domain *rd); | |
| 2398 | − | |
| 2399 | 2385 | #ifdef CONFIG_SCHED_CORE |
| 2400 | 2386 | extern void sched_core_free(struct task_struct *tsk); |
| 2401 | 2387 | extern void sched_core_fork(struct task_struct *p); |
| @@ -2406,4 +2392,6 @@ static inline void sched_core_free(struct task_struct *tsk) { } · 4 unmodified lines | ||
| 2406 | 2392 | static inline void sched_core_fork(struct task_struct *p) { } |
| 2407 | 2393 | #endif |
| 2408 | 2394 | |
| 2395 | +extern void sched_set_stop_task(int cpu, struct task_struct *stop); | |
| 2396 | + | |
| 2409 | 2397 | #endif |
| @@ -240,13 +240,6 @@ static inline const struct cpumask *cpu_smt_mask(int cpu) · 239 unmodified lines | ||
| 240 | 240 | } |
| 241 | 241 | #endif |
| 242 | 242 | |
| 243 | −#if defined(CONFIG_SCHED_CLUSTER) && !defined(cpu_cluster_mask) | |
| 244 | −static inline const struct cpumask *cpu_cluster_mask(int cpu) | |
| 245 | −{ | |
| 246 | − return topology_cluster_cpumask(cpu); | |
| 247 | −} | |
| 248 | −#endif | |
| 249 | − | |
| 250 | 243 | static inline const struct cpumask *cpu_cpu_mask(int cpu) |
| 251 | 244 | { |
| 252 | 245 | return cpumask_of_node(cpu_to_node(cpu)); |