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
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.
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
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.
© 2016 - 2025 Red Hat, Inc.