All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE
@ 2018-12-05  6:27 Masahiro Yamada
  2018-12-05  6:59 ` Meelis Roos
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Masahiro Yamada @ 2018-12-05  6:27 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, x86
  Cc: Zhenzhong Duan, Meelis Roos, Masahiro Yamada, H. Peter Anvin,
	Borislav Petkov, linux-kernel

It is troublesome to add a diagnostic like this to the Makefile
parse stage because the top-level Makefile could be parsed with
a stale include/config/auto.conf.

Once you are hit by the error about non-retpoline compiler, the
compilation still breaks even after disabling CONFIG_RETPOLINE.

The easiest fix is to move this check to the "archprepare" like commit
829fe4aa9ac1 ("x86: Allow generating user-space headers without a
compiler") did.

Link: https://lkml.org/lkml/2018/12/4/206
Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

Changes in v2:
  - Revive ifdef CONFIG_RETPOLINE surrounding the KBUILD_CFLAGS addition
  - Rephase the commit log a bit, hoping the cause of the issue will be clearer

 arch/x86/Makefile | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index f5d7f41..75ef499 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -220,9 +220,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 
 # Avoid indirect branches in kernel to deal with Spectre
 ifdef CONFIG_RETPOLINE
-ifeq ($(RETPOLINE_CFLAGS),)
-  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
-endif
   KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
 endif
 
@@ -307,6 +304,13 @@ ifndef CC_HAVE_ASM_GOTO
 	@echo Compiler lacks asm-goto support.
 	@exit 1
 endif
+ifdef CONFIG_RETPOLINE
+ifeq ($(RETPOLINE_CFLAGS),)
+	@echo "You are building kernel with non-retpoline compiler." >&2
+	@echo "Please update your compiler." >&2
+	@false
+endif
+endif
 
 archclean:
 	$(Q)rm -rf $(objtree)/arch/i386
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE
  2018-12-05  6:27 [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE Masahiro Yamada
@ 2018-12-05  6:59 ` Meelis Roos
  2018-12-05  7:10 ` Zhenzhong Duan
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Meelis Roos @ 2018-12-05  6:59 UTC (permalink / raw)
  To: Masahiro Yamada, Ingo Molnar, Thomas Gleixner, x86
  Cc: Zhenzhong Duan, Meelis Roos, H. Peter Anvin, Borislav Petkov,
	linux-kernel

05.12.18 08:27 Masahiro Yamada kirjutas:
> The easiest fix is to move this check to the "archprepare" like commit
> 829fe4aa9ac1 ("x86: Allow generating user-space headers without a
> compiler") did.
> 
> Link: https://lkml.org/lkml/2018/12/4/206
> Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
> Reported-by: Meelis Roos <mroos@linux.ee>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
> 
> Changes in v2:
>    - Revive ifdef CONFIG_RETPOLINE surrounding the KBUILD_CFLAGS addition
>    - Rephase the commit log a bit, hoping the cause of the issue will be clearer

Works for me - first it did

scripts/kconfig/conf  --syncconfig Kconfig

and then started compiling. The #define is gone from include/linux.

Thank you!

-- 
Meelis Roos <mroos@linux.ee>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE
  2018-12-05  6:27 [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE Masahiro Yamada
  2018-12-05  6:59 ` Meelis Roos
@ 2018-12-05  7:10 ` Zhenzhong Duan
  2018-12-18 13:20   ` Gi-Oh Kim
  2018-12-05  7:45 ` [tip:x86/urgent] x86/build: Fix " tip-bot for Masahiro Yamada
  2018-12-05  7:48 ` tip-bot for Masahiro Yamada
  3 siblings, 1 reply; 6+ messages in thread
From: Zhenzhong Duan @ 2018-12-05  7:10 UTC (permalink / raw)
  To: Masahiro Yamada, Ingo Molnar, Thomas Gleixner, x86
  Cc: Meelis Roos, H. Peter Anvin, Borislav Petkov, linux-kernel


On 2018/12/5 14:27, Masahiro Yamada wrote:
> It is troublesome to add a diagnostic like this to the Makefile
> parse stage because the top-level Makefile could be parsed with
> a stale include/config/auto.conf.
>
> Once you are hit by the error about non-retpoline compiler, the
> compilation still breaks even after disabling CONFIG_RETPOLINE.
>
> The easiest fix is to move this check to the "archprepare" like commit
> 829fe4aa9ac1 ("x86: Allow generating user-space headers without a
> compiler") did.
>
> Link: https://lkml.org/lkml/2018/12/4/206
> Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
> Reported-by: Meelis Roos <mroos@linux.ee>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
> Changes in v2:
>    - Revive ifdef CONFIG_RETPOLINE surrounding the KBUILD_CFLAGS addition
>    - Rephase the commit log a bit, hoping the cause of the issue will be clearer
>
>   arch/x86/Makefile | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index f5d7f41..75ef499 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -220,9 +220,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
>   
>   # Avoid indirect branches in kernel to deal with Spectre
>   ifdef CONFIG_RETPOLINE
> -ifeq ($(RETPOLINE_CFLAGS),)
> -  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
> -endif
>     KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
>   endif
>   
> @@ -307,6 +304,13 @@ ifndef CC_HAVE_ASM_GOTO
>   	@echo Compiler lacks asm-goto support.
>   	@exit 1
>   endif
> +ifdef CONFIG_RETPOLINE
> +ifeq ($(RETPOLINE_CFLAGS),)
> +	@echo "You are building kernel with non-retpoline compiler." >&2
> +	@echo "Please update your compiler." >&2
> +	@false
> +endif
> +endif
>   
>   archclean:
>   	$(Q)rm -rf $(objtree)/arch/i386
Acked-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>

-- 
Regards
Zhenzhong


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip:x86/urgent] x86/build: Fix compiler support check for CONFIG_RETPOLINE
  2018-12-05  6:27 [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE Masahiro Yamada
  2018-12-05  6:59 ` Meelis Roos
  2018-12-05  7:10 ` Zhenzhong Duan
@ 2018-12-05  7:45 ` tip-bot for Masahiro Yamada
  2018-12-05  7:48 ` tip-bot for Masahiro Yamada
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Masahiro Yamada @ 2018-12-05  7:45 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: mingo, tglx, linux-kernel, zhenzhong.duan, torvalds,
	yamada.masahiro, mroos, peterz, bp, hpa

Commit-ID:  10b87bc9f630a38a7f0c1e7cf13ff23fea1692ec
Gitweb:     https://git.kernel.org/tip/10b87bc9f630a38a7f0c1e7cf13ff23fea1692ec
Author:     Masahiro Yamada <yamada.masahiro@socionext.com>
AuthorDate: Wed, 5 Dec 2018 15:27:19 +0900
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 5 Dec 2018 08:42:09 +0100

x86/build: Fix compiler support check for CONFIG_RETPOLINE

It is troublesome to add a diagnostic like this to the Makefile
parse stage because the top-level Makefile could be parsed with
a stale include/config/auto.conf.

Once you are hit by the error about non-retpoline compiler, the
compilation still breaks even after disabling CONFIG_RETPOLINE.

The easiest fix is to move this check to the "archprepare" like
this commit did:

  829fe4aa9ac1 ("x86: Allow generating user-space headers without a compiler")

Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
Link: http://lkml.kernel.org/r/1543991239-18476-1-git-send-email-yamada.masahiro@socionext.com
Link: https://lkml.org/lkml/2018/12/4/206
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/Makefile | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index f5d7f4134524..75ef499a66e2 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -220,9 +220,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 
 # Avoid indirect branches in kernel to deal with Spectre
 ifdef CONFIG_RETPOLINE
-ifeq ($(RETPOLINE_CFLAGS),)
-  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
-endif
   KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
 endif
 
@@ -307,6 +304,13 @@ ifndef CC_HAVE_ASM_GOTO
 	@echo Compiler lacks asm-goto support.
 	@exit 1
 endif
+ifdef CONFIG_RETPOLINE
+ifeq ($(RETPOLINE_CFLAGS),)
+	@echo "You are building kernel with non-retpoline compiler." >&2
+	@echo "Please update your compiler." >&2
+	@false
+endif
+endif
 
 archclean:
 	$(Q)rm -rf $(objtree)/arch/i386

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip:x86/urgent] x86/build: Fix compiler support check for CONFIG_RETPOLINE
  2018-12-05  6:27 [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE Masahiro Yamada
                   ` (2 preceding siblings ...)
  2018-12-05  7:45 ` [tip:x86/urgent] x86/build: Fix " tip-bot for Masahiro Yamada
@ 2018-12-05  7:48 ` tip-bot for Masahiro Yamada
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Masahiro Yamada @ 2018-12-05  7:48 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: peterz, tglx, torvalds, zhenzhong.duan, mroos, linux-kernel,
	mingo, bp, yamada.masahiro, hpa

Commit-ID:  25896d073d8a0403b07e6dec56f58e6c33678207
Gitweb:     https://git.kernel.org/tip/25896d073d8a0403b07e6dec56f58e6c33678207
Author:     Masahiro Yamada <yamada.masahiro@socionext.com>
AuthorDate: Wed, 5 Dec 2018 15:27:19 +0900
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Wed, 5 Dec 2018 08:44:02 +0100

x86/build: Fix compiler support check for CONFIG_RETPOLINE

It is troublesome to add a diagnostic like this to the Makefile
parse stage because the top-level Makefile could be parsed with
a stale include/config/auto.conf.

Once you are hit by the error about non-retpoline compiler, the
compilation still breaks even after disabling CONFIG_RETPOLINE.

The easiest fix is to move this check to the "archprepare" like
this commit did:

  829fe4aa9ac1 ("x86: Allow generating user-space headers without a compiler")

Reported-by: Meelis Roos <mroos@linux.ee>
Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
Link: http://lkml.kernel.org/r/1543991239-18476-1-git-send-email-yamada.masahiro@socionext.com
Link: https://lkml.org/lkml/2018/12/4/206
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/Makefile | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index f5d7f4134524..75ef499a66e2 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -220,9 +220,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
 
 # Avoid indirect branches in kernel to deal with Spectre
 ifdef CONFIG_RETPOLINE
-ifeq ($(RETPOLINE_CFLAGS),)
-  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
-endif
   KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
 endif
 
@@ -307,6 +304,13 @@ ifndef CC_HAVE_ASM_GOTO
 	@echo Compiler lacks asm-goto support.
 	@exit 1
 endif
+ifdef CONFIG_RETPOLINE
+ifeq ($(RETPOLINE_CFLAGS),)
+	@echo "You are building kernel with non-retpoline compiler." >&2
+	@echo "Please update your compiler." >&2
+	@false
+endif
+endif
 
 archclean:
 	$(Q)rm -rf $(objtree)/arch/i386

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE
  2018-12-05  7:10 ` Zhenzhong Duan
@ 2018-12-18 13:20   ` Gi-Oh Kim
  0 siblings, 0 replies; 6+ messages in thread
From: Gi-Oh Kim @ 2018-12-18 13:20 UTC (permalink / raw)
  To: zhenzhong.duan
  Cc: yamada.masahiro, mingo, tglx, x86, mroos, hpa, Borislav Petkov,
	linux-kernel

On Wed, Dec 5, 2018 at 8:11 AM Zhenzhong Duan <zhenzhong.duan@oracle.com> wrote:
>
>
> On 2018/12/5 14:27, Masahiro Yamada wrote:
> > It is troublesome to add a diagnostic like this to the Makefile
> > parse stage because the top-level Makefile could be parsed with
> > a stale include/config/auto.conf.
> >
> > Once you are hit by the error about non-retpoline compiler, the
> > compilation still breaks even after disabling CONFIG_RETPOLINE.
> >
> > The easiest fix is to move this check to the "archprepare" like commit
> > 829fe4aa9ac1 ("x86: Allow generating user-space headers without a
> > compiler") did.
> >
> > Link: https://lkml.org/lkml/2018/12/4/206
> > Fixes: 4cd24de3a098 ("x86/retpoline: Make CONFIG_RETPOLINE depend on compiler support")
> > Reported-by: Meelis Roos <mroos@linux.ee>
> > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> > ---
> >
> > Changes in v2:
> >    - Revive ifdef CONFIG_RETPOLINE surrounding the KBUILD_CFLAGS addition
> >    - Rephase the commit log a bit, hoping the cause of the issue will be clearer
> >
> >   arch/x86/Makefile | 10 +++++++---
> >   1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> > index f5d7f41..75ef499 100644
> > --- a/arch/x86/Makefile
> > +++ b/arch/x86/Makefile
> > @@ -220,9 +220,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
> >
> >   # Avoid indirect branches in kernel to deal with Spectre
> >   ifdef CONFIG_RETPOLINE
> > -ifeq ($(RETPOLINE_CFLAGS),)
> > -  $(error You are building kernel with non-retpoline compiler, please update your compiler.)
> > -endif
> >     KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)
> >   endif
> >
> > @@ -307,6 +304,13 @@ ifndef CC_HAVE_ASM_GOTO
> >       @echo Compiler lacks asm-goto support.
> >       @exit 1
> >   endif
> > +ifdef CONFIG_RETPOLINE
> > +ifeq ($(RETPOLINE_CFLAGS),)
> > +     @echo "You are building kernel with non-retpoline compiler." >&2
> > +     @echo "Please update your compiler." >&2
> > +     @false
> > +endif
> > +endif
> >
> >   archclean:
> >       $(Q)rm -rf $(objtree)/arch/i386
> Acked-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
>
> --
> Regards
> Zhenzhong
>

Hi,

I think this patch needs to be merged to linux-stable 4.14.y branch.
Following is what I did to reproduce the problem.
The problem is gone after applying the patch.

1. I created and installed a headers package as following.
make -j7 deb-pkg
cd ..
sudo dpkg -i linux-headers-4.14.89+_4.14.89+-18_amd64.deb

2. I managed to re-produce the same problem as following.
gohkim@ws00837:~/study/drv$ make -C /usr/src/linux-headers-4.14.89+/
kernelrelease
make: Entering directory '/usr/src/linux-headers-4.14.89+'
arch/x86/Makefile:245: *** You are building kernel with non-retpoline
compiler, please update your compiler.. Stop.
make: Leaving directory '/usr/src/linux-headers-4.14.89+'

3. Weird thing is that it works fine if I use sudo command.
gohkim@ws00837:~/study/drv$ sudo make -C
/usr/src/linux-headers-4.14.89+/ kernelrelease
make: Entering directory '/usr/src/linux-headers-4.14.89+'
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf  --silentoldconfig Kconfig
4.14.89
make: Leaving directory '/usr/src/linux-headers-4.14.89+'


-- 
GIOH KIM
Linux Kernel Entwickler

1&1 IONOS Cloud GmbH
Greifswalder Str. 207
D - 10405 Berlin

Tel:       +49 176 2697 8962
Fax:      +49 30 577 008 299
Email:    gi-oh.kim@cloud.ionos.com
URL:      https://www.ionos.com

Sitz der Gesellschaft: Berlin
Registergericht: Amtsgericht Charlottenburg, HRB 125506 B
Geschäftsführer: Achim Weiss, Matthias Steinberg, Christoph Steffens

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-12-18 13:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-05  6:27 [PATCH v2] x86/build: fix compiler support check for CONFIG_RETPOLINE Masahiro Yamada
2018-12-05  6:59 ` Meelis Roos
2018-12-05  7:10 ` Zhenzhong Duan
2018-12-18 13:20   ` Gi-Oh Kim
2018-12-05  7:45 ` [tip:x86/urgent] x86/build: Fix " tip-bot for Masahiro Yamada
2018-12-05  7:48 ` tip-bot for Masahiro Yamada

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.