arch/x86/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Enable named address spaces also for GCC 6, GCC 7 and GCC 8
releases. These compilers all produce kernel images that boot
without problems.
Use compile-time test to detect compiler support for named
address spaces. The test passes with GCC 6 as the earliest
compiler version where the support for named address spaces
was introduced.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
---
arch/x86/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 9d16fee6bdb8..c9e0a54f469e 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2430,7 +2430,8 @@ source "kernel/livepatch/Kconfig"
endmenu
config CC_HAS_NAMED_AS
- def_bool CC_IS_GCC && GCC_VERSION >= 90100
+ def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null)
+ depends on CC_IS_GCC
config CC_HAS_NAMED_AS_FIXED_SANITIZERS
def_bool CC_IS_GCC && GCC_VERSION >= 130300
--
2.45.1
* Uros Bizjak <ubizjak@gmail.com> wrote: > Enable named address spaces also for GCC 6, GCC 7 and GCC 8 > releases. These compilers all produce kernel images that boot > without problems. > > Use compile-time test to detect compiler support for named > address spaces. The test passes with GCC 6 as the earliest > compiler version where the support for named address spaces > was introduced. > > Signed-off-by: Uros Bizjak <ubizjak@gmail.com> > Cc: Ingo Molnar <mingo@kernel.org> > Cc: Andy Lutomirski <luto@kernel.org> > Cc: Brian Gerst <brgerst@gmail.com> > Cc: Denys Vlasenko <dvlasenk@redhat.com> > Cc: H. Peter Anvin <hpa@zytor.com> > Cc: Linus Torvalds <torvalds@linux-foundation.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Josh Poimboeuf <jpoimboe@redhat.com> > --- > arch/x86/Kconfig | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index 9d16fee6bdb8..c9e0a54f469e 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -2430,7 +2430,8 @@ source "kernel/livepatch/Kconfig" > endmenu > > config CC_HAS_NAMED_AS > - def_bool CC_IS_GCC && GCC_VERSION >= 90100 > + def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null) > + depends on CC_IS_GCC So ... will this test also trigger on Clang, which might have a __seg_fs/__seg_gs work-alike definition? Thanks, Ingo
On Tue, May 21, 2024 at 10:18 AM Ingo Molnar <mingo@kernel.org> wrote: > > > * Uros Bizjak <ubizjak@gmail.com> wrote: > > > Enable named address spaces also for GCC 6, GCC 7 and GCC 8 > > releases. These compilers all produce kernel images that boot > > without problems. > > > > Use compile-time test to detect compiler support for named > > address spaces. The test passes with GCC 6 as the earliest > > compiler version where the support for named address spaces > > was introduced. > > > > Signed-off-by: Uros Bizjak <ubizjak@gmail.com> > > Cc: Ingo Molnar <mingo@kernel.org> > > Cc: Andy Lutomirski <luto@kernel.org> > > Cc: Brian Gerst <brgerst@gmail.com> > > Cc: Denys Vlasenko <dvlasenk@redhat.com> > > Cc: H. Peter Anvin <hpa@zytor.com> > > Cc: Linus Torvalds <torvalds@linux-foundation.org> > > Cc: Peter Zijlstra <peterz@infradead.org> > > Cc: Thomas Gleixner <tglx@linutronix.de> > > Cc: Josh Poimboeuf <jpoimboe@redhat.com> > > --- > > arch/x86/Kconfig | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > > index 9d16fee6bdb8..c9e0a54f469e 100644 > > --- a/arch/x86/Kconfig > > +++ b/arch/x86/Kconfig > > @@ -2430,7 +2430,8 @@ source "kernel/livepatch/Kconfig" > > endmenu > > > > config CC_HAS_NAMED_AS > > - def_bool CC_IS_GCC && GCC_VERSION >= 90100 > > + def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null) > > + depends on CC_IS_GCC > > So ... will this test also trigger on Clang, which might have a > __seg_fs/__seg_gs work-alike definition? Yes, but please note the dependence on CC_IS_GCC. This dependence can be removed once CLANG is tested to create correct code for named AS. Thanks, Uros.
The following commit has been merged into the x86/percpu branch of tip:
Commit-ID: 47ff30cc1be7bf426c03ecc84371452109b416e4
Gitweb: https://git.kernel.org/tip/47ff30cc1be7bf426c03ecc84371452109b416e4
Author: Uros Bizjak <ubizjak@gmail.com>
AuthorDate: Mon, 20 May 2024 10:21:14 +02:00
Committer: Ingo Molnar <mingo@kernel.org>
CommitterDate: Tue, 21 May 2024 10:17:01 +02:00
x86/percpu: Enable named address spaces for all capable GCC versions
Enable named address spaces also for GCC 6, GCC 7 and GCC 8
releases. These compilers all produce kernel images that boot
without problems.
Use compile-time test to detect compiler support for named
address spaces. The test passes with GCC 6 as the earliest
compiler version where the support for named address spaces
was introduced.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20240520082134.121320-1-ubizjak@gmail.com
---
arch/x86/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 9d16fee..c9e0a54 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2430,7 +2430,8 @@ source "kernel/livepatch/Kconfig"
endmenu
config CC_HAS_NAMED_AS
- def_bool CC_IS_GCC && GCC_VERSION >= 90100
+ def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null)
+ depends on CC_IS_GCC
config CC_HAS_NAMED_AS_FIXED_SANITIZERS
def_bool CC_IS_GCC && GCC_VERSION >= 130300
© 2016 - 2026 Red Hat, Inc.