eb7630f95f
In preparation for chain migration, push the awareness of the split between execution and scheduler context down into some of the rt/deadline code paths that deal with load balancing. This patch was broken out from a larger chain migration patch originally by Connor O'Brien. Cc: Joel Fernandes <joelaf@google.com> Cc: Qais Yousef <qyousef@layalina.io> Cc: Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Vincent Guittot <vincent.guittot@linaro.org> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> Cc: Valentin Schneider <vschneid@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Ben Segall <bsegall@google.com> Cc: Zimuzo Ezeozue <zezeozue@google.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Will Deacon <will@kernel.org> Cc: Waiman Long <longman@redhat.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: "Paul E. McKenney" <paulmck@kernel.org> Cc: Metin Kaya <Metin.Kaya@arm.com> Cc: Xuewen Yan <xuewen.yan94@gmail.com> Cc: K Prateek Nayak <kprateek.nayak@amd.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: kernel-team@android.com Change-Id: Ie71af403e471c201f4eb8a65fe422e738b51d61b Signed-off-by: Connor O'Brien <connoro@google.com> [jstultz: split out from larger chain migration patch] Signed-off-by: John Stultz <jstultz@google.com> Bug: 306081722 --- v8: * Move null exec_ctx check to a later patch, as suggested by Metin v9: * Folded down cpupri null check changes from later patch, as suggested by Metin
32 lines
858 B
C
32 lines
858 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#define CPUPRI_NR_PRIORITIES (MAX_RT_PRIO+1)
|
|
|
|
#define CPUPRI_INVALID -1
|
|
#define CPUPRI_NORMAL 0
|
|
/* values 1-99 are for RT1-RT99 priorities */
|
|
#define CPUPRI_HIGHER 100
|
|
|
|
struct cpupri_vec {
|
|
atomic_t count;
|
|
cpumask_var_t mask;
|
|
};
|
|
|
|
struct cpupri {
|
|
struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES];
|
|
int *cpu_to_pri;
|
|
};
|
|
|
|
#ifdef CONFIG_SMP
|
|
int cpupri_find(struct cpupri *cp, struct task_struct *sched_ctx,
|
|
struct task_struct *exec_ctx,
|
|
struct cpumask *lowest_mask);
|
|
int cpupri_find_fitness(struct cpupri *cp, struct task_struct *sched_ctx,
|
|
struct task_struct *exec_ctx,
|
|
struct cpumask *lowest_mask,
|
|
bool (*fitness_fn)(struct task_struct *p, int cpu));
|
|
void cpupri_set(struct cpupri *cp, int cpu, int pri);
|
|
int cpupri_init(struct cpupri *cp);
|
|
void cpupri_cleanup(struct cpupri *cp);
|
|
#endif
|