From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: Huacai Chen <chenhuacai@kernel.org>
Cc: "Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
"Théo Lebrun" <theo.lebrun@bootlin.com>,
"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] MIPS: SMP: Move the AP sync point before the non-parallel aware functions
Date: Fri, 23 May 2025 09:27:49 +0200 [thread overview]
Message-ID: <87frgvokga.fsf@BLaptop.bootlin.com> (raw)
In-Reply-To: <CAAhV-H54bTCatqbabhOuvr6O-oOBa-Z4TGyvoT7uGnTjR6OfDw@mail.gmail.com>
Hello Huacai,
> Hi, Gregory,
>
> On Mon, May 5, 2025 at 8:58 PM Gregory CLEMENT
> <gregory.clement@bootlin.com> wrote:
>>
>> When CONFIG_HOTPLUG_PARALLEL is enabled, the code executing before
>> cpuhp_ap_sync_alive() is executed in parallel, while after it is
>> serialized. The functions set_cpu_sibling_map() and set_cpu_core_map()
>> were not designed to be executed in parallel, so by moving the
>> cpuhp_ap_sync_alive() before cpuhp_ap_sync_alive(), we then ensure
>> they will be called serialized.
> set_cpu_sibling_map() and set_cpu_core_map() are the most obvious
> functions that need serialization, but you'd better check other places
> to make sure there are no similar functions executed in parallel.
I conducted an exhaustive review of all called functions, which allowed
me to identify an opportunity for improving boot time:
[1]. Additionally, I noted that CPU delay calibration is the only
remaining part where concurrent access could occur. This was indeed the
case prior to my previous patch submission[1]. To ensure safety, I am
about sending a new fix addressing this issue.
Gregory
[1]: https://lore.kernel.org/linux-mips/20250520-smp_calib-v1-1-cd04f0a78648@bootlin.com/
>
> Huacai
>
>>
>> The measurement done on EyeQ5 did not show any relevant boot time
>> increase after applying this patch.
>>
>> Reported-by: Huacai Chen <chenhuacai@kernel.org>
>> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
>> ---
>> Hello,
>>
>> As discussed last week [1], this is the patch that fixes the potential
>> issue with the functions set_cpu_sibling_map() and set_cpu_core_map().
>>
>> Gregory
>>
>> [1]: https://lore.kernel.org/all/aBVBHFGH2kICjnT3@alpha.franken.de/
>> ---
>> arch/mips/kernel/smp.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
>> index 1726744f2b2ec10a44420a7b9b9cd04f06c4d2f6..7901b59d8f60eddefc020cf2a137716af963f09e 100644
>> --- a/arch/mips/kernel/smp.c
>> +++ b/arch/mips/kernel/smp.c
>> @@ -374,13 +374,13 @@ asmlinkage void start_secondary(void)
>> calibrate_delay();
>> cpu_data[cpu].udelay_val = loops_per_jiffy;
>>
>> +#ifdef CONFIG_HOTPLUG_PARALLEL
>> + cpuhp_ap_sync_alive();
>> +#endif
>> set_cpu_sibling_map(cpu);
>> set_cpu_core_map(cpu);
>>
>> cpumask_set_cpu(cpu, &cpu_coherent_mask);
>> -#ifdef CONFIG_HOTPLUG_PARALLEL
>> - cpuhp_ap_sync_alive();
>> -#endif
>> notify_cpu_starting(cpu);
>>
>> #ifndef CONFIG_HOTPLUG_PARALLEL
>>
>> ---
>> base-commit: 3b3704261e851e25983860e4c352f1f73786f4ab
>> change-id: 20250505-hotplug-paralell-fix-25224cd229c6
>>
>> Best regards,
>> --
>> Grégory CLEMENT, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
>>
--
Grégory CLEMENT, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2025-05-23 7:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 12:57 [PATCH] MIPS: SMP: Move the AP sync point before the non-parallel aware functions Gregory CLEMENT
2025-05-06 12:44 ` Huacai Chen
2025-05-23 7:27 ` Gregory CLEMENT [this message]
2025-05-20 6:50 ` Thomas Bogendoerfer
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=87frgvokga.fsf@BLaptop.bootlin.com \
--to=gregory.clement@bootlin.com \
--cc=chenhuacai@kernel.org \
--cc=jiaxun.yang@flygoat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=tawfik.bayouk@mobileye.com \
--cc=theo.lebrun@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=tsbogend@alpha.franken.de \
--cc=vladimir.kondratiev@mobileye.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.