[PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h

Thomas Weißschuh posted 36 patches 2 weeks ago
[PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
Posted by Thomas Weißschuh 2 weeks ago
The usage of ASM_FTR_IFCLR(CPU_TR_ARCH_31) requires asm/cputable.h and
asm/feature-fixups.h. Currently these headers are included transitively,
but that transitive inclusion is about to go away.

Explicitly include the headers.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 arch/powerpc/include/asm/vdso/processor.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/powerpc/include/asm/vdso/processor.h b/arch/powerpc/include/asm/vdso/processor.h
index 80d13207c5688d73954822aede2bbe2d0e05c054..42b64903bdf47cc5bd571fc3b5caed45e6358cb9 100644
--- a/arch/powerpc/include/asm/vdso/processor.h
+++ b/arch/powerpc/include/asm/vdso/processor.h
@@ -4,6 +4,9 @@
 
 #ifndef __ASSEMBLY__
 
+#include <asm/cputable.h>
+#include <asm/feature-fixups.h>
+
 /* Macros for adjusting thread priority (hardware multi-threading) */
 #ifdef CONFIG_PPC64
 #define HMT_very_low()		asm volatile("or 31, 31, 31	# very low priority")

-- 
2.51.0

Re: [PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
Posted by Christophe Leroy 2 weeks ago

Le 17/09/2025 à 16:00, Thomas Weißschuh a écrit :
> The usage of ASM_FTR_IFCLR(CPU_TR_ARCH_31) requires asm/cputable.h and
> asm/feature-fixups.h. Currently these headers are included transitively,
> but that transitive inclusion is about to go away.

Hum ...

That was unexpectedly added by commit 9c7bfc2dc21e ("powerpc/64s: Make 
POWER10 and later use pause_short in cpu_relax loops")

In theory, vdso/ headers shouldn't include any headers outside of vdso/


> 
> Explicitly include the headers.
> 
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
>   arch/powerpc/include/asm/vdso/processor.h | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/arch/powerpc/include/asm/vdso/processor.h b/arch/powerpc/include/asm/vdso/processor.h
> index 80d13207c5688d73954822aede2bbe2d0e05c054..42b64903bdf47cc5bd571fc3b5caed45e6358cb9 100644
> --- a/arch/powerpc/include/asm/vdso/processor.h
> +++ b/arch/powerpc/include/asm/vdso/processor.h
> @@ -4,6 +4,9 @@
>   
>   #ifndef __ASSEMBLY__

__ASSEMBLY__ is replaced by __ASSEMBLER__ in powerpc-next in commit 
74db6cc331b0 ("powerpc: Replace __ASSEMBLY__ with __ASSEMBLER__ in 
non-uapi headers")

>   
> +#include <asm/cputable.h>
> +#include <asm/feature-fixups.h>
> +
>   /* Macros for adjusting thread priority (hardware multi-threading) */
>   #ifdef CONFIG_PPC64
>   #define HMT_very_low()		asm volatile("or 31, 31, 31	# very low priority")
> 

Re: [PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
Posted by Michael Ellerman 1 week, 3 days ago
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 17/09/2025 à 16:00, Thomas Weißschuh a écrit :
>> The usage of ASM_FTR_IFCLR(CPU_TR_ARCH_31) requires asm/cputable.h and
>> asm/feature-fixups.h. Currently these headers are included transitively,
>> but that transitive inclusion is about to go away.
>
> Hum ...
>
> That was unexpectedly added by commit 9c7bfc2dc21e ("powerpc/64s: Make 
> POWER10 and later use pause_short in cpu_relax loops")
>
> In theory, vdso/ headers shouldn't include any headers outside of vdso/

Oops, looks like that was my fault.

It's expected that there can be feature fixups needed in the VDSO,
vdso_feature_fixups() handles them, so that's OK. But the headers
pulling from outside vdso is a pity.

Still this patch is fine as-is.

cheers
Re: [PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
Posted by Thomas Weißschuh 2 weeks ago
On Wed, Sep 17, 2025 at 04:41:49PM +0200, Christophe Leroy wrote:
> 
> 
> Le 17/09/2025 à 16:00, Thomas Weißschuh a écrit :
> > The usage of ASM_FTR_IFCLR(CPU_TR_ARCH_31) requires asm/cputable.h and
> > asm/feature-fixups.h. Currently these headers are included transitively,
> > but that transitive inclusion is about to go away.
> 
> Hum ...
> 
> That was unexpectedly added by commit 9c7bfc2dc21e ("powerpc/64s: Make
> POWER10 and later use pause_short in cpu_relax loops")
> 
> In theory, vdso/ headers shouldn't include any headers outside of vdso/

I am aware. But this is the dependency as it exists today and I don't really
want to make this series larger than it already is. This is by far not the
only such layering violation in the vDSO headers. I have some patches prepared...

> > Explicitly include the headers.
> > 
> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> > ---
> >   arch/powerpc/include/asm/vdso/processor.h | 3 +++
> >   1 file changed, 3 insertions(+)
> > 
> > diff --git a/arch/powerpc/include/asm/vdso/processor.h b/arch/powerpc/include/asm/vdso/processor.h
> > index 80d13207c5688d73954822aede2bbe2d0e05c054..42b64903bdf47cc5bd571fc3b5caed45e6358cb9 100644
> > --- a/arch/powerpc/include/asm/vdso/processor.h
> > +++ b/arch/powerpc/include/asm/vdso/processor.h
> > @@ -4,6 +4,9 @@
> >   #ifndef __ASSEMBLY__
> 
> __ASSEMBLY__ is replaced by __ASSEMBLER__ in powerpc-next in commit
> 74db6cc331b0 ("powerpc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi
> headers")

Ack. I'll have to rebase this series after -rc1 in any case. Right now I am
hoping to collect some Acks.

> > +#include <asm/cputable.h>
> > +#include <asm/feature-fixups.h>
> > +
> >   /* Macros for adjusting thread priority (hardware multi-threading) */
> >   #ifdef CONFIG_PPC64
> >   #define HMT_very_low()		asm volatile("or 31, 31, 31	# very low priority")
> > 
> 
Re: [PATCH v3 07/36] powerpc/vdso: Explicitly include asm/cputable.h and asm/feature-fixups.h
Posted by Christophe Leroy 2 weeks ago

Le 17/09/2025 à 17:21, Thomas Weißschuh a écrit :
> On Wed, Sep 17, 2025 at 04:41:49PM +0200, Christophe Leroy wrote:
>>
>>
>> Le 17/09/2025 à 16:00, Thomas Weißschuh a écrit :
>>> The usage of ASM_FTR_IFCLR(CPU_TR_ARCH_31) requires asm/cputable.h and
>>> asm/feature-fixups.h. Currently these headers are included transitively,
>>> but that transitive inclusion is about to go away.
>>
>> Hum ...
>>
>> That was unexpectedly added by commit 9c7bfc2dc21e ("powerpc/64s: Make
>> POWER10 and later use pause_short in cpu_relax loops")
>>
>> In theory, vdso/ headers shouldn't include any headers outside of vdso/
> 
> I am aware. But this is the dependency as it exists today and I don't really
> want to make this series larger than it already is. This is by far not the
> only such layering violation in the vDSO headers. I have some patches prepared...
> 
>>> Explicitly include the headers.
>>>
>>> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
>>> ---
>>>    arch/powerpc/include/asm/vdso/processor.h | 3 +++
>>>    1 file changed, 3 insertions(+)
>>>
>>> diff --git a/arch/powerpc/include/asm/vdso/processor.h b/arch/powerpc/include/asm/vdso/processor.h
>>> index 80d13207c5688d73954822aede2bbe2d0e05c054..42b64903bdf47cc5bd571fc3b5caed45e6358cb9 100644
>>> --- a/arch/powerpc/include/asm/vdso/processor.h
>>> +++ b/arch/powerpc/include/asm/vdso/processor.h
>>> @@ -4,6 +4,9 @@
>>>    #ifndef __ASSEMBLY__
>>
>> __ASSEMBLY__ is replaced by __ASSEMBLER__ in powerpc-next in commit
>> 74db6cc331b0 ("powerpc: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi
>> headers")
> 
> Ack. I'll have to rebase this series after -rc1 in any case. Right now I am
> hoping to collect some Acks.
> 
>>> +#include <asm/cputable.h>
>>> +#include <asm/feature-fixups.h>
>>> +
>>>    /* Macros for adjusting thread priority (hardware multi-threading) */
>>>    #ifdef CONFIG_PPC64
>>>    #define HMT_very_low()		asm volatile("or 31, 31, 31	# very low priority")
>>>
>>


Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>