Re: [PATCH RESEND] sched: Convert paravirt_steal to new static key APIs
Shrikanth Hegde <[email protected]>
| Newsgroups | org.ozlabs.lists.linuxppc-dev,dev.linux.lists.loongarch,dev.linux.lists.virtualization,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.xenproject.lists.xen-devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Hongyan. On 8/19/26 1:42 PM, Hongyan Xia wrote: > From: Hongyan Xia <[email protected]> > > paravirt_steal_rq_enabled and paravirt_steal_enabled use raw static_key > APIs which are now deprecated. Use the new API instead. > > No functional change. > FWIW, looks good to me. One minor nit. Reviewed-by: Shrikanth Hegde <[email protected]> > Signed-off-by: Hongyan Xia <[email protected]> > Acked-by: Juergen Gross <[email protected]> > --- > Changed in RESEND: > - Separate the original series into individual patches. They aren't easy > to review as a series. > > arch/arm64/kernel/paravirt.c | 4 ++-- > arch/loongarch/kernel/paravirt.c | 4 ++-- > arch/powerpc/platforms/pseries/setup.c | 4 ++-- > arch/riscv/kernel/paravirt.c | 4 ++-- > arch/x86/kernel/cpu/vmware.c | 4 ++-- > arch/x86/kernel/kvm.c | 4 ++-- > drivers/xen/time.c | 4 ++-- > include/linux/sched/cputime.h | 6 +++--- > kernel/sched/core.c | 4 ++-- > kernel/sched/cputime.c | 4 ++-- > 10 files changed, 21 insertions(+), 21 deletions(-) > > diff --git a/arch/arm64/kernel/paravirt.c b/arch/arm64/kernel/paravirt.c > index 572efb96b23f..30bf61d031eb 100644 > --- a/arch/arm64/kernel/paravirt.c > +++ b/arch/arm64/kernel/paravirt.c > @@ -157,9 +157,9 @@ int __init pv_time_init(void) > > static_call_update(pv_steal_clock, para_steal_clock); > > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > > pr_info("using stolen time PV\n"); > > diff --git a/arch/loongarch/kernel/paravirt.c b/arch/loongarch/kernel/paravirt.c > index 10821cce554c..e8965a3f8082 100644 > --- a/arch/loongarch/kernel/paravirt.c > +++ b/arch/loongarch/kernel/paravirt.c > @@ -308,10 +308,10 @@ int __init pv_time_init(void) > > static_call_update(pv_steal_clock, paravt_steal_clock); > > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > #endif > > if (static_key_enabled(&virt_preempt_key)) > diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c > index 1223dc961242..8dcbc4bb7025 100644 > --- a/arch/powerpc/platforms/pseries/setup.c > +++ b/arch/powerpc/platforms/pseries/setup.c > @@ -852,9 +852,9 @@ static void __init pSeries_setup_arch(void) > static_branch_enable(&shared_processor); > pv_spinlocks_init(); > #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > #endif > } > > diff --git a/arch/riscv/kernel/paravirt.c b/arch/riscv/kernel/paravirt.c > index 5f56be79cd06..9c13a6f1ea2a 100644 > --- a/arch/riscv/kernel/paravirt.c > +++ b/arch/riscv/kernel/paravirt.c > @@ -116,9 +116,9 @@ int __init pv_time_init(void) > > static_call_update(pv_steal_clock, pv_time_steal_clock); > > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > > pr_info("Computing paravirt steal-time\n"); > > diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c > index 34b73573b108..f7ab9e7902cf 100644 > --- a/arch/x86/kernel/cpu/vmware.c > +++ b/arch/x86/kernel/cpu/vmware.c > @@ -328,9 +328,9 @@ static int vmware_cpu_down_prepare(unsigned int cpu) > static __init int activate_jump_labels(void) > { > if (has_steal_clock) { > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > } > > return 0; > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index dcef84da304b..d3dcd64f22c2 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -1052,9 +1052,9 @@ const __initconst struct hypervisor_x86 x86_hyper_kvm = { > static __init int activate_jump_labels(void) > { > if (has_steal_clock) { > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (steal_acc) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > } > > return 0; > diff --git a/drivers/xen/time.c b/drivers/xen/time.c > index a2be0a4d45b0..a02d48a2aa68 100644 > --- a/drivers/xen/time.c > +++ b/drivers/xen/time.c > @@ -169,7 +169,7 @@ void __init xen_time_setup_guest(void) > > static_call_update(pv_steal_clock, xen_steal_clock); > > - static_key_slow_inc(¶virt_steal_enabled); > + static_branch_inc(¶virt_steal_enabled); > if (xen_runstate_remote) > - static_key_slow_inc(¶virt_steal_rq_enabled); > + static_branch_inc(¶virt_steal_rq_enabled); > } > diff --git a/include/linux/sched/cputime.h b/include/linux/sched/cputime.h > index e90efaf6d26e..694126411dfe 100644 > --- a/include/linux/sched/cputime.h > +++ b/include/linux/sched/cputime.h > @@ -182,9 +182,9 @@ extern unsigned long long > task_sched_runtime(struct task_struct *task); > > #ifdef CONFIG_PARAVIRT > -struct static_key; > -extern struct static_key paravirt_steal_enabled; > -extern struct static_key paravirt_steal_rq_enabled; > +#include <linux/jump_label.h> nit: This looks bit odd to see includes in the middle. I know it is including only if necessary. maybe worth an unconditional include in the beginning? > +DECLARE_STATIC_KEY_FALSE(paravirt_steal_enabled); > +DECLARE_STATIC_KEY_FALSE(paravirt_steal_rq_enabled); > > #ifdef CONFIG_HAVE_PV_STEAL_CLOCK_GEN > u64 dummy_steal_clock(int cpu); > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 5c07d53e43b5..84d090581a08 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -795,7 +795,7 @@ struct rq *_task_rq_lock(struct task_struct *p, struct rq_flags *rf) > > /* Use CONFIG_PARAVIRT as this will avoid more #ifdef in arch code. */ > #ifdef CONFIG_PARAVIRT > -struct static_key paravirt_steal_rq_enabled; > +DEFINE_STATIC_KEY_FALSE(paravirt_steal_rq_enabled); > #endif > > static void update_rq_clock_task(struct rq *rq, s64 delta) > @@ -834,7 +834,7 @@ static void update_rq_clock_task(struct rq *rq, s64 delta) > } > #endif > #ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING > - if (static_key_false((¶virt_steal_rq_enabled))) { > + if (static_branch_unlikely(¶virt_steal_rq_enabled)) { > u64 prev_steal; > > steal = prev_steal = paravirt_steal_clock(cpu_of(rq)); > diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c > index 06bddaa738e5..f16970ca81d0 100644 > --- a/kernel/sched/cputime.c > +++ b/kernel/sched/cputime.c > @@ -255,7 +255,7 @@ void __account_forceidle_time(struct task_struct *p, u64 delta) > * occasion account more time than the calling functions think elapsed. > */ > #ifdef CONFIG_PARAVIRT > -struct static_key paravirt_steal_enabled; > +DEFINE_STATIC_KEY_FALSE(paravirt_steal_enabled); > > #ifdef CONFIG_HAVE_PV_STEAL_CLOCK_GEN > static u64 native_steal_clock(int cpu) > @@ -270,7 +270,7 @@ DEFINE_STATIC_CALL(pv_steal_clock, native_steal_clock); > static __always_inline u64 steal_account_process_time(u64 maxtime) > { > #ifdef CONFIG_PARAVIRT > - if (static_key_false(¶virt_steal_enabled)) { > + if (static_branch_unlikely(¶virt_steal_enabled)) { > u64 steal; > > steal = paravirt_steal_clock(smp_processor_id());