From: Thomas Gleixner <tglx@kernel.org>
To: Chuyi Zhou <zhouchuyi@bytedance.com>,
mingo@redhat.com, luto@kernel.org, peterz@infradead.org,
paulmck@kernel.org, muchun.song@linux.dev, bp@alien8.de,
dave.hansen@linux.intel.com, pbonzini@redhat.com,
bigeasy@linutronix.de, clrkwllms@kernel.org, rostedt@goodmis.org,
nadav.amit@gmail.com, vkuznets@redhat.com
Cc: linux-kernel@vger.kernel.org, Chuyi Zhou <zhouchuyi@bytedance.com>
Subject: Re: [PATCH v8 05/14] smp: Alloc percpu csd data in smpcfd_prepare_cpu() only once
Date: Fri, 26 Jun 2026 16:32:32 +0200 [thread overview]
Message-ID: <87y0g1id8f.ffs@fw13> (raw)
In-Reply-To: <20260616111127.966468-6-zhouchuyi@bytedance.com>
On Tue, Jun 16 2026 at 19:11, Chuyi Zhou wrote:
> Later patch would enable preemption during csd_lock_wait() in
> smp_call_function_many_cond(), which may cause access cfd->csd data that
> has already been freed in smpcfd_dead_cpu().
>
> One way to fix the above issue is to use the RCU mechanism to protect the
> csd data and wait for all read critical sections to exit before freeing
> the memory in smpcfd_dead_cpu(), but this could delay CPU shutdown. This
> patch chooses a simpler approach: allocate the percpu csd on the UP side
> only once and skip freeing the csd memory in smpcfd_dead_cpu().
See earlier comments about change logs.
> - cfd->csd = alloc_percpu(call_single_data_t);
> +
> + /*
> + * The percpu csd is allocated only once and never freed.
> + * This ensures that smp_call_function_many_cond() can safely
> + * access the csd of an offlined CPU if it gets preempted
> + * during csd_lock_wait().
I know what you are trying to say, but that sentence does not parse.
Allocate the per CPU csd at the first time a CPU comes up. It's
not freed when the CPU is offlined. That ensures that the per CPU
CSD can be accessed from csd_lock_wait() even when the CPU was
offlined after preemption was reenabled before invoking it.
Or something like that.
next prev parent reply other threads:[~2026-06-26 14:32 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-16 11:11 [PATCH v8 00/14] Allow preemption during IPI completion waiting to improve real-time performance Chuyi Zhou
2026-06-16 11:11 ` [PATCH v8 01/14] smp: Disable preemption explicitly in __csd_lock_wait() Chuyi Zhou
2026-06-26 13:38 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 02/14] smp: Enable preemption early in smp_call_function_single() Chuyi Zhou
2026-06-26 13:44 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 03/14] smp: Refactor remote CPU selection in smp_call_function_any() Chuyi Zhou
2026-06-26 13:49 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 04/14] smp: Use task-local IPI cpumask in smp_call_function_many_cond() Chuyi Zhou
2026-06-26 14:29 ` Thomas Gleixner
2026-06-26 15:47 ` Chuyi Zhou
2026-06-26 16:07 ` Chuyi Zhou
2026-06-26 19:07 ` Thomas Gleixner
2026-06-27 0:52 ` Chuyi Zhou
2026-06-16 11:11 ` [PATCH v8 05/14] smp: Alloc percpu csd data in smpcfd_prepare_cpu() only once Chuyi Zhou
2026-06-26 14:32 ` Thomas Gleixner [this message]
2026-06-16 11:11 ` [PATCH v8 06/14] smp: Enable preemption early in smp_call_function_many_cond() Chuyi Zhou
2026-06-26 14:40 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 07/14] smp: Remove preempt_disable() from smp_call_function() Chuyi Zhou
2026-06-26 14:42 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 08/14] smp: Remove preempt_disable() from on_each_cpu_cond_mask() Chuyi Zhou
2026-06-16 11:11 ` [PATCH v8 09/14] scftorture: Remove preempt_disable() in scftorture_invoke_one() Chuyi Zhou
2026-06-26 14:44 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 10/14] x86/mm: Factor out flush_tlb_info initialization Chuyi Zhou
2026-06-16 13:14 ` Sebastian Andrzej Siewior
2026-06-16 11:11 ` [PATCH v8 11/14] x86/mm: Cap flush_tlb_info alignment at 64 bytes Chuyi Zhou
2026-06-16 13:20 ` Sebastian Andrzej Siewior
2026-06-16 15:36 ` Chuyi Zhou
2026-06-26 14:49 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 12/14] x86/mm: Move flush_tlb_info back to the stack Chuyi Zhou
2026-06-26 14:57 ` Thomas Gleixner
2026-06-16 11:11 ` [PATCH v8 13/14] x86/kvm: Disable preemption in kvm_flush_tlb_multi() Chuyi Zhou
2026-06-16 13:46 ` Sebastian Andrzej Siewior
2026-06-16 11:11 ` [PATCH v8 14/14] x86/mm: Re-enable preemption before flush_tlb_multi() Chuyi Zhou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y0g1id8f.ffs@fw13 \
--to=tglx@kernel.org \
--cc=bigeasy@linutronix.de \
--cc=bp@alien8.de \
--cc=clrkwllms@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=muchun.song@linux.dev \
--cc=nadav.amit@gmail.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=vkuznets@redhat.com \
--cc=zhouchuyi@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.