Re: [PATCH 3/4] smp: get this_cpu once in smp_call_function

From: Mukesh Kumar Chaurasiya

Date: Tue Mar 24 2026 - 02:02:52 EST


On Tue, Mar 24, 2026 at 01:06:29AM +0530, Shrikanth Hegde wrote:
> Calling smp_processor_id() on:
> - In CONFIG_DEBUG_PREEMPT=y, if preemption/irq is disabled, then it does
> not print any warning.
> - In CONFIG_DEBUG_PREEMPT=n, it doesn't do anything apart from getting
> __smp_processor_id
>
> So with both CONFIG_DEBUG_PREEMPT=y/n, in preemption disabled section
> it is better to cache the value. It could save a few cycles. Though
> tiny, repeated in loop could add up to a small value.
>
> smp_call_function_single/smp_call_function_many_cond is called with
> preemption disabled.
> So cache the values once.
>
> Signed-off-by: Shrikanth Hegde <sshegde@xxxxxxxxxxxxx>
> ---
> kernel/smp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/smp.c b/kernel/smp.c
> index f349960f79ca..4c57104d1cd3 100644
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@ -677,7 +677,7 @@ int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
> csd->func = func;
> csd->info = info;
> #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG
> - csd->node.src = smp_processor_id();
> + csd->node.src = this_cpu;
> csd->node.dst = cpu;
> #endif
>
> @@ -832,7 +832,7 @@ static void smp_call_function_many_cond(const struct cpumask *mask,
> csd->func = func;
> csd->info = info;
> #ifdef CONFIG_CSD_LOCK_WAIT_DEBUG
> - csd->node.src = smp_processor_id();
> + csd->node.src = this_cpu;
> csd->node.dst = cpu;
> #endif
> trace_csd_queue_cpu(cpu, _RET_IP_, func, csd);
> --
> 2.47.3
>
LGTM

Reviewed-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@xxxxxxxxx>