[PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU

Hao Ge posted 5 patches 4 months ago
There is a newer version of this series
[PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU
Posted by Hao Ge 4 months ago
From: Hao Ge <gehao@kylinos.cn>

As stated in the first patch of this patch series,
we make ARCH_NEEDS_WEAK_PER_CPU a Kconfig option,
and replace all instances of ARCH_NEEDS_WEAK_PER_CPU
in the kernel code with MODULE_NEEDS_WEAK_PER_CPU,
gated by #ifdef CONFIG_ARCH_NEEDS_WEAK_PER_CPU.

We'll make corresponding changes for the alpha
architecture.

Suggested-by: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Hao Ge <gehao@kylinos.cn>
---
 arch/alpha/Kconfig              | 1 +
 arch/alpha/include/asm/percpu.h | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 109a4cddcd13..ce9bc842e384 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -7,6 +7,7 @@ config ALPHA
 	select ARCH_HAS_DMA_OPS if PCI
 	select ARCH_MIGHT_HAVE_PC_PARPORT
 	select ARCH_MIGHT_HAVE_PC_SERIO
+	select ARCH_NEEDS_WEAK_PER_CPU
 	select ARCH_NO_PREEMPT
 	select ARCH_NO_SG_CHAIN
 	select ARCH_USE_CMPXCHG_LOCKREF
diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
index 6923249f2d49..5d8b75ec3bf2 100644
--- a/arch/alpha/include/asm/percpu.h
+++ b/arch/alpha/include/asm/percpu.h
@@ -10,8 +10,8 @@
  *
  * Always use weak definitions for percpu variables in modules.
  */
-#if defined(MODULE) && defined(CONFIG_SMP)
-#define ARCH_NEEDS_WEAK_PER_CPU
+#if defined(MODULE) && defined(CONFIG_SMP) && defined(CONFIG_ARCH_NEEDS_WEAK_PER_CPU)
+#define MODULE_NEEDS_WEAK_PER_CPU
 #endif
 
 #include <asm-generic/percpu.h>
-- 
2.25.1
Re: [PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU
Posted by Heiko Carstens 4 months ago
On Thu, Jun 12, 2025 at 04:27:27PM +0800, Hao Ge wrote:
> From: Hao Ge <gehao@kylinos.cn>
> 
> As stated in the first patch of this patch series,
> we make ARCH_NEEDS_WEAK_PER_CPU a Kconfig option,
> and replace all instances of ARCH_NEEDS_WEAK_PER_CPU
> in the kernel code with MODULE_NEEDS_WEAK_PER_CPU,
> gated by #ifdef CONFIG_ARCH_NEEDS_WEAK_PER_CPU.
> 
> We'll make corresponding changes for the alpha
> architecture.
> 
> Suggested-by: Suren Baghdasaryan <surenb@google.com>
> Signed-off-by: Hao Ge <gehao@kylinos.cn>
> ---
>  arch/alpha/Kconfig              | 1 +
>  arch/alpha/include/asm/percpu.h | 4 ++--
>  2 files changed, 3 insertions(+), 2 deletions(-)

...

> +	select ARCH_NEEDS_WEAK_PER_CPU
>  	select ARCH_NO_PREEMPT
>  	select ARCH_NO_SG_CHAIN
>  	select ARCH_USE_CMPXCHG_LOCKREF
> diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
> index 6923249f2d49..5d8b75ec3bf2 100644
> --- a/arch/alpha/include/asm/percpu.h
> +++ b/arch/alpha/include/asm/percpu.h
> @@ -10,8 +10,8 @@
>   *
>   * Always use weak definitions for percpu variables in modules.
>   */
> -#if defined(MODULE) && defined(CONFIG_SMP)
> -#define ARCH_NEEDS_WEAK_PER_CPU
> +#if defined(MODULE) && defined(CONFIG_SMP) && defined(CONFIG_ARCH_NEEDS_WEAK_PER_CPU)
> +#define MODULE_NEEDS_WEAK_PER_CPU

CONFIG_ARCH_NEEDS_WEAK_PER_CPU is always set with the above select.
So there is no point in adding this to the check.

Furthermore this removes ARCH_NEEDS_WEAK_PER_CPU and defines
MODULE_NEEDS_WEAK_PER_CPU while the common code conversion happens
only with patch 4. Or in other words: if patches are split like this
things break.

Same is true for patch 3. Just merging patches 2-4 would be the
easiest solution to this problem.
Re: [PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU
Posted by Hao Ge 4 months ago
On 2025/6/12 19:22, Heiko Carstens wrote:
> On Thu, Jun 12, 2025 at 04:27:27PM +0800, Hao Ge wrote:
>> From: Hao Ge <gehao@kylinos.cn>
>>
>> As stated in the first patch of this patch series,
>> we make ARCH_NEEDS_WEAK_PER_CPU a Kconfig option,
>> and replace all instances of ARCH_NEEDS_WEAK_PER_CPU
>> in the kernel code with MODULE_NEEDS_WEAK_PER_CPU,
>> gated by #ifdef CONFIG_ARCH_NEEDS_WEAK_PER_CPU.
>>
>> We'll make corresponding changes for the alpha
>> architecture.
>>
>> Suggested-by: Suren Baghdasaryan <surenb@google.com>
>> Signed-off-by: Hao Ge <gehao@kylinos.cn>
>> ---
>>   arch/alpha/Kconfig              | 1 +
>>   arch/alpha/include/asm/percpu.h | 4 ++--
>>   2 files changed, 3 insertions(+), 2 deletions(-)
> ...
>
>> +	select ARCH_NEEDS_WEAK_PER_CPU
>>   	select ARCH_NO_PREEMPT
>>   	select ARCH_NO_SG_CHAIN
>>   	select ARCH_USE_CMPXCHG_LOCKREF
>> diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
>> index 6923249f2d49..5d8b75ec3bf2 100644
>> --- a/arch/alpha/include/asm/percpu.h
>> +++ b/arch/alpha/include/asm/percpu.h
>> @@ -10,8 +10,8 @@
>>    *
>>    * Always use weak definitions for percpu variables in modules.
>>    */
>> -#if defined(MODULE) && defined(CONFIG_SMP)
>> -#define ARCH_NEEDS_WEAK_PER_CPU
>> +#if defined(MODULE) && defined(CONFIG_SMP) && defined(CONFIG_ARCH_NEEDS_WEAK_PER_CPU)
>> +#define MODULE_NEEDS_WEAK_PER_CPU

Hi Heiko

Thank you for taking the time to review these patches.

> CONFIG_ARCH_NEEDS_WEAK_PER_CPU is always set with the above select.
> So there is no point in adding this to the check.
Yes, that's exactly the case.
> Furthermore this removes ARCH_NEEDS_WEAK_PER_CPU and defines
> MODULE_NEEDS_WEAK_PER_CPU while the common code conversion happens
> only with patch 4. Or in other words: if patches are split like this
> things break.
>
> Same is true for patch 3. Just merging patches 2-4 would be the
> easiest solution to this problem.

I think this should be CC'd to the stable branch.

I'm wondering if these need to be integrated into a single patch.

I'm not sure. What do you think?


Hi Andrew and Suren

How do you see this? Any suggestions?

Thanks
Best Regards
Hao
Re: [PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU
Posted by Heiko Carstens 4 months ago
On Thu, Jun 12, 2025 at 08:06:25PM +0800, Hao Ge wrote:
> > Furthermore this removes ARCH_NEEDS_WEAK_PER_CPU and defines
> > MODULE_NEEDS_WEAK_PER_CPU while the common code conversion happens
> > only with patch 4. Or in other words: if patches are split like this
> > things break.
> > 
> > Same is true for patch 3. Just merging patches 2-4 would be the
> > easiest solution to this problem.
> 
> I think this should be CC'd to the stable branch.

Why should this go to stable? This is just a minor optimization.

> I'm wondering if these need to be integrated into a single patch.
> 
> I'm not sure. What do you think?

stable or not: this series must be bisectable, which is currently not the case.