Re: [RFC][PATCH v3 1/5] sparc64: Fix asm/percpu.h build error
On Thu, Jun 04, 2020 at 06:57:03PM +0200, Peter Zijlstra wrote: > I think I see, what happens is that these headers end up in the VDSO > build, and that doesn't have these CFLAGS, because userspace. > > Let me see what to do about that. I feel like the below is cheating, but it's the best I could find :/ VDSO including kernel headers and the utter maze that our kernel headers are makes it really hard to untangle :/ This builds sparc64-defconfig and sparc64-all{no,mod}config. Dave, does this work for you, or should I try hardder? --- arch/sparc/include/asm/percpu_64.h | 2 ++ arch/sparc/include/asm/trap_block.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/sparc/include/asm/percpu_64.h b/arch/sparc/include/asm/percpu_64.h index 32ef6f05cc565..a8786a4b90b6b 100644 --- a/arch/sparc/include/asm/percpu_64.h +++ b/arch/sparc/include/asm/percpu_64.h @@ -4,7 +4,9 @@ #include +#ifndef BUILD_VDSO register unsigned long __local_per_cpu_offset asm("g5"); +#endif #ifdef CONFIG_SMP diff --git a/arch/sparc/include/asm/trap_block.h b/arch/sparc/include/asm/trap_block.h index 0f6d0c4f66838..ace0d48e837e5 100644 --- a/arch/sparc/include/asm/trap_block.h +++ b/arch/sparc/include/asm/trap_block.h @@ -2,6 +2,8 @@ #ifndef _SPARC_TRAP_BLOCK_H #define _SPARC_TRAP_BLOCK_H +#include + #include #include
Re: [RFC][PATCH v3 1/5] sparc64: Fix asm/percpu.h build error
On Fri, May 29, 2020 at 04:29:17PM -0700, David Miller wrote: > From: Peter Zijlstra > Date: Fri, 29 May 2020 23:35:51 +0200 > > > ../arch/sparc/include/asm/percpu_64.h:7:24: warning: call-clobbered > > register used for global register variable > > register unsigned long __local_per_cpu_offset asm("g5"); > > The "-ffixed-g5" option on the command line tells gcc that we are > using 'g5' as a fixed register, so some part of your build isn't using > the: > > KBUILD_CFLAGS += -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare > > from arch/sparc/Makefile for some reason. Thanks, that was the clue I needed. I think I see, what happens is that these headers end up in the VDSO build, and that doesn't have these CFLAGS, because userspace. Let me see what to do about that.
Re: [RFC][PATCH v3 1/5] sparc64: Fix asm/percpu.h build error
From: Peter Zijlstra Date: Fri, 29 May 2020 23:35:51 +0200 > ../arch/sparc/include/asm/percpu_64.h:7:24: warning: call-clobbered register > used for global register variable > register unsigned long __local_per_cpu_offset asm("g5"); The "-ffixed-g5" option on the command line tells gcc that we are using 'g5' as a fixed register, so some part of your build isn't using the: KBUILD_CFLAGS += -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare from arch/sparc/Makefile for some reason.
[RFC][PATCH v3 1/5] sparc64: Fix asm/percpu.h build error
In order to break a header dependency between lockdep and task_struct, I need per-cpu stuff from lockdep. Including from lockdep.h gives a build error, this patch cures that, but results in the following warning: ../arch/sparc/include/asm/percpu_64.h:7:24: warning: call-clobbered register used for global register variable register unsigned long __local_per_cpu_offset asm("g5"); But i've no idea how to fix that :/ but it does build. Not-Signed-off-by: Peter Zijlstra (Intel) --- arch/sparc/include/asm/trap_block.h |2 ++ 1 file changed, 2 insertions(+) --- a/arch/sparc/include/asm/trap_block.h +++ b/arch/sparc/include/asm/trap_block.h @@ -2,6 +2,8 @@ #ifndef _SPARC_TRAP_BLOCK_H #define _SPARC_TRAP_BLOCK_H +#include + #include #include