From: "Chuyi Zhou" <zhouchuyi@bytedance.com>
To: "Sebastian Andrzej Siewior" <bigeasy@linutronix.de>
Cc: <tglx@kernel.org>, <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>,
<clrkwllms@kernel.org>, <rostedt@goodmis.org>,
<nadav.amit@gmail.com>, <linux-kernel@vger.kernel.org>
Subject: Re: [RESEND PATCH v5 12/12] x86/mm: Enable preemption during flush_tlb_kernel_range
Date: Tue, 26 May 2026 11:25:12 +0800 [thread overview]
Message-ID: <6265669c-d7d4-45a4-a9d2-2f5e884aa7c5@bytedance.com> (raw)
In-Reply-To: <20260522104818.CbT5fyN8@linutronix.de>
On 2026-05-22 6:48 p.m., Sebastian Andrzej Siewior wrote:
> On 2026-05-13 20:45:24 [+0800], Chuyi Zhou wrote:
>> flush_tlb_kernel_range() is invoked when kernel memory mapping changes.
>> On x86 platforms without the INVLPGB feature enabled, we need to send IPIs
>> to every online CPU and synchronously wait for them to complete
>> do_kernel_range_flush(). This process can be time-consuming due to factors
>> such as a large number of CPUs or other issues (like interrupts being
>> disabled). flush_tlb_kernel_range() always disables preemption, this may
>> affect the scheduling latency of other tasks on the current CPU.
>>
>> Previous patch converted flush_tlb_info from per-cpu variable to on-stack
>> variable. Additionally, it's no longer necessary to explicitly disable
>> preemption before calling smp_call*() since they internally handles the
>> preemption logic. Now it's safe to enable preemption during
>> flush_tlb_kernel_range(). Additionally, in get_flush_tlb_info() use
>> raw_smp_processor_id() to avoid warnings from check_preemption_disabled().
>
> This is a bit odd. That smp_processor_id() is there to catch users with
> enabled CPU migration. The only reason is the accounting done in
> flush_tlb_func(). This raw_smp_processor_id() is only needed in
> flush_tlb_kernel_range() which does not call flush_tlb_func(). This is
> only statistics.
>
> kernel_tlb_flush_all() does not need info at all.
> kernel_tlb_flush_range() needs only start and end.
>
Agreed, I see the concern about changing get_flush_tlb_info() to use
raw_smp_processor_id(). The smp_processor_id() check is useful for the
mm TLB flush paths.
For flush_tlb_kernel_range(), however, the kernel range path only needs
start/end, and the full kernel flush case does not need flush_tlb_info
at all. One possible way to address this is:
- keep get_flush_tlb_info() using smp_processor_id();
- factor the range-to-full-flush decision out of get_flush_tlb_info(),
so flush_tlb_kernel_range() can reuse that logic without building a
full flush_tlb_info;
- make flush_tlb_kernel_range() use a small kernel-only range
descriptor containing only start/end for the range case;
- make kernel_tlb_flush_all() take no flush_tlb_info argument.
That would avoid weakening the smp_processor_id() debug check and make
the kernel range path use only the data it actually needs.
That said, this does add some extra churn to this patch. Since the main
goal of the series is to enable preemption during
flush_tlb_kernel_range(), I am also fine with keeping this series
smaller if the x86 maintainers prefer, and doing the
kernel-range/flush_tlb_info cleanup as a seperate follow-up patch.
> Oh well.
>
>> Signed-off-by: Chuyi Zhou <zhouchuyi@bytedance.com>
>
> Sebastian
next prev parent reply other threads:[~2026-05-26 3:25 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-13 12:45 [RESEND PATCH v5 00/12] Allow preemption during IPI completion waiting to improve real-time performance Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 01/12] smp: Disable preemption explicitly in __csd_lock_wait Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 02/12] smp: Enable preemption early in smp_call_function_single Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 03/12] smp: Refactor remote CPU selection in smp_call_function_any() Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 04/12] smp: Use task-local IPI cpumask in smp_call_function_many_cond() Chuyi Zhou
2026-05-21 15:26 ` Sebastian Andrzej Siewior
2026-05-21 16:00 ` Chuyi Zhou
2026-05-22 7:22 ` Sebastian Andrzej Siewior
2026-05-13 12:45 ` [RESEND PATCH v5 05/12] smp: Alloc percpu csd data in smpcfd_prepare_cpu() only once Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 06/12] smp: Enable preemption early in smp_call_function_many_cond Chuyi Zhou
2026-05-22 10:08 ` Sebastian Andrzej Siewior
2026-05-22 15:16 ` Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 07/12] smp: Remove preempt_disable from smp_call_function Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 08/12] smp: Remove preempt_disable from on_each_cpu_cond_mask Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 09/12] scftorture: Remove preempt_disable in scftorture_invoke_one Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 10/12] x86/mm: Move flush_tlb_info back to the stack Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 11/12] x86/mm: Enable preemption during native_flush_tlb_multi Chuyi Zhou
2026-05-13 12:45 ` [RESEND PATCH v5 12/12] x86/mm: Enable preemption during flush_tlb_kernel_range Chuyi Zhou
2026-05-22 10:48 ` Sebastian Andrzej Siewior
2026-05-26 3:25 ` Chuyi Zhou [this message]
2026-05-20 12:44 ` [RESEND PATCH v5 00/12] Allow preemption during IPI completion waiting to improve real-time performance Chuyi Zhou
2026-05-22 10:57 ` Sebastian Andrzej Siewior
2026-05-22 14:11 ` Steven Rostedt
2026-05-22 14:45 ` Sebastian Andrzej Siewior
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=6265669c-d7d4-45a4-a9d2-2f5e884aa7c5@bytedance.com \
--to=zhouchuyi@bytedance.com \
--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=tglx@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®