This patch does - Declare and Define cpu_paravirt_mask. - Get/Set helpers for it.
Values are set by arch code and consumed by the scheduler. Signed-off-by: Shrikanth Hegde <[email protected]> --- include/linux/cpumask.h | 20 ++++++++++++++++++++ kernel/sched/core.c | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index ff8f41ab7ce6..079903851341 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -1270,6 +1270,26 @@ static __always_inline bool cpu_dying(unsigned int cpu) #endif /* NR_CPUS > 1 */ +/* + * All related wrappers kept together to avoid too many ifdefs + * See Documentation/scheduler/sched-arch.rst for details + */ +#ifdef CONFIG_PARAVIRT +extern struct cpumask __cpu_paravirt_mask; +#define cpu_paravirt_mask ((const struct cpumask *)&__cpu_paravirt_mask) +#define set_cpu_paravirt(cpu, paravirt) assign_cpu((cpu), &__cpu_paravirt_mask, (paravirt)) + +static __always_inline bool cpu_paravirt(unsigned int cpu) +{ + return cpumask_test_cpu(cpu, cpu_paravirt_mask); +} +#else +static __always_inline bool cpu_paravirt(unsigned int cpu) +{ + return false; +} +#endif + #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) #if NR_CPUS <= BITS_PER_LONG diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9f10cfbdc228..40db5e659994 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -10852,3 +10852,8 @@ void sched_change_end(struct sched_change_ctx *ctx) p->sched_class->prio_changed(rq, p, ctx->prio); } } + +#ifdef CONFIG_PARAVIRT +struct cpumask __cpu_paravirt_mask __read_mostly; +EXPORT_SYMBOL(__cpu_paravirt_mask); +#endif -- 2.47.3
