From: Catalin Marinas <catalin.marinas@arm.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: Bill Wendling <morbo@google.com>,
Masahiro Yamada <masahiroy@kernel.org>,
Will Deacon <will@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Peter Oberparleiter <oberpar@linux.ibm.com>,
Kees Cook <keescook@chromium.org>,
Peter Zijlstra <peterz@infradead.org>,
Bill Wendling <wcw@google.com>,
Sami Tolvanen <samitolvanen@google.com>,
Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
Nathan Chancellor <nathan@kernel.org>,
Luc Van Oostenryck <luc.vanoostenryck@gmail.com>,
Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
LKML <linux-kernel@vger.kernel.org>,
clang-built-linux <clang-built-linux@googlegroups.com>,
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
<x86@kernel.org>, Borislav Petkov <bp@alien8.de>,
Martin Liska <mliska@suse.cz>, Jonathan Corbet <corbet@lwn.net>,
Fangrui Song <maskray@google.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
Dmitry Vyukov <dvyukov@google.com>,
Johannes Berg <johannes.berg@intel.com>,
linux-toolchains@vger.kernel.org, Marco Elver <elver@google.com>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
linux-s390 <linux-s390@vger.kernel.org>
Subject: Re: [PATCH 2/2] Kconfig: CC_HAS_NO_PROFILE_FN_ATTR, depend on for GCOV and PGO
Date: Tue, 22 Jun 2021 10:25:34 +0100 [thread overview]
Message-ID: <20210622092533.GB3555@arm.com> (raw)
In-Reply-To: <CAKwvOd=9oAGPeuQmWnAMOxZn2ii_CRmyWnheoyXGcd09-U_CwA@mail.gmail.com>
On Mon, Jun 21, 2021 at 01:43:54PM -0700, Nick Desaulniers wrote:
> On Mon, Jun 21, 2021 at 11:50 AM Bill Wendling <morbo@google.com> wrote:
> > On Mon, Jun 21, 2021 at 11:22 AM Nick Desaulniers
> > <ndesaulniers@google.com> wrote:
> > > On Fri, Jun 18, 2021 at 11:23 PM Marco Elver <elver@google.com> wrote:
> > > > On Sat, 19 Jun 2021 at 01:30, Nick Desaulniers <ndesaulniers@google.com> wrote:
> > > > > We don't want compiler instrumentation to touch noinstr functions, which
> > > > > are annotated with the no_profile function attribute. Add a Kconfig test
> > > > > for this and make PGO and GCOV depend on it.
> > > > >
> > > > > Cc: Masahiro Yamada <masahiroy@kernel.org>
> > > > > Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
> > > > > Link: https://lore.kernel.org/lkml/YMTn9yjuemKFLbws@hirez.programming.kicks-ass.net/
> > > > > Link: https://lore.kernel.org/lkml/YMcssV%2Fn5IBGv4f0@hirez.programming.kicks-ass.net/
> > > > > Suggested-by: Peter Zijlstra <peterz@infradead.org>
> > > > > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> > > > > ---
> > > > > init/Kconfig | 3 +++
> > > > > kernel/gcov/Kconfig | 1 +
> > > > > kernel/pgo/Kconfig | 3 ++-
> > > > > 3 files changed, 6 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/init/Kconfig b/init/Kconfig
> > > > > index 1ea12c64e4c9..540f862b40c6 100644
> > > > > --- a/init/Kconfig
> > > > > +++ b/init/Kconfig
> > > > > @@ -83,6 +83,9 @@ config TOOLS_SUPPORT_RELR
> > > > > config CC_HAS_ASM_INLINE
> > > > > def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
> > > > >
> > > > > +config CC_HAS_NO_PROFILE_FN_ATTR
> > > > > + def_bool $(success,echo '__attribute__((no_profile)) int x();' | $(CC) -x c - -c -o /dev/null -Werror)
> > > > > +
> > > > > config CONSTRUCTORS
> > > > > bool
> > > > >
> > > > > diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
> > > > > index 58f87a3092f3..19facd4289cd 100644
> > > > > --- a/kernel/gcov/Kconfig
> > > > > +++ b/kernel/gcov/Kconfig
> > > > > @@ -5,6 +5,7 @@ config GCOV_KERNEL
> > > > > bool "Enable gcov-based kernel profiling"
> > > > > depends on DEBUG_FS
> > > > > depends on !CC_IS_CLANG || CLANG_VERSION >= 110000
> > > > > + depends on !X86 || (X86 && CC_HAS_NO_PROFILE_FN_ATTR)
> > > >
> > > > [+Cc Mark]
> > > >
> > > > arm64 is also starting to rely on noinstr working properly.
> > >
> > > Sure,
> > > Will, Catalin, other arm64 folks:
> > > Any thoughts on requiring GCC 7.1+/Clang 13.0+ for GCOV support? That
> > > way we can better guarantee that GCOV (and eventually, PGO) don't
> > > touch noinstr functions?
> > >
> > > If that's ok, I'll add modify the above like:
> > >
> > > + depends on !ARM64 || (ARM64 && CC_HAS_NO_PROFILE_FN_ATTR)
> >
> > Wouldn't "!ARM64 || CC_HAS_NO_PROFILE_FN_ATTR" be more succinct?
>
> We need to be able to express via Kconfig "GCOV should not be enabled
> for architectures that use noinstr when the toolchain does not support
> __attribute__((no_profile_instrument_function))."
>
> Where "architectures that use noinstr" are currently arm64, s390, and
> x86. So I guess we could do:
>
> + depends on !ARM64 || !S390 || !X86 || CC_HAS_NO_PROFILE_FN_ATTR
I think you want:
depends on !(ARM64 || S390 || X86) || CC_HAS_NO_PROFILE_FN_ATTR
> (We could add a Kconfig for ARCH_WANTS_NO_INSTR, which might be more
> informative than listed out architectures which might be non-obvious
> to passers-by).
That would probably look better.
--
Catalin
WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: Bill Wendling <morbo@google.com>,
Masahiro Yamada <masahiroy@kernel.org>,
Will Deacon <will@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Peter Oberparleiter <oberpar@linux.ibm.com>,
Kees Cook <keescook@chromium.org>,
Peter Zijlstra <peterz@infradead.org>,
Bill Wendling <wcw@google.com>,
Sami Tolvanen <samitolvanen@google.com>,
Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
Nathan Chancellor <nathan@kernel.org>,
Luc Van Oostenryck <luc.vanoostenryck@gmail.com>,
Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
LKML <linux-kernel@vger.kernel.org>,
clang-built-linux <clang-built-linux@googlegroups.com>,
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
<x86@kernel.org>, Borislav Petkov <bp@alien8.de>,
Martin Liska <mliska@suse.cz>, Jonathan Corbet <corbet@lwn.net>,
Fangrui Song <maskray@google.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
Dmitry Vyukov <dvyukov@google.com>,
Johannes Berg <johannes.berg@intel.com>,
linux-toolchains@vger.kernel.org, Marco Elver <elver@google.com>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
linux-s390 <linux-s390@vger.kernel.org>
Subject: Re: [PATCH 2/2] Kconfig: CC_HAS_NO_PROFILE_FN_ATTR, depend on for GCOV and PGO
Date: Tue, 22 Jun 2021 10:25:34 +0100 [thread overview]
Message-ID: <20210622092533.GB3555@arm.com> (raw)
In-Reply-To: <CAKwvOd=9oAGPeuQmWnAMOxZn2ii_CRmyWnheoyXGcd09-U_CwA@mail.gmail.com>
On Mon, Jun 21, 2021 at 01:43:54PM -0700, Nick Desaulniers wrote:
> On Mon, Jun 21, 2021 at 11:50 AM Bill Wendling <morbo@google.com> wrote:
> > On Mon, Jun 21, 2021 at 11:22 AM Nick Desaulniers
> > <ndesaulniers@google.com> wrote:
> > > On Fri, Jun 18, 2021 at 11:23 PM Marco Elver <elver@google.com> wrote:
> > > > On Sat, 19 Jun 2021 at 01:30, Nick Desaulniers <ndesaulniers@google.com> wrote:
> > > > > We don't want compiler instrumentation to touch noinstr functions, which
> > > > > are annotated with the no_profile function attribute. Add a Kconfig test
> > > > > for this and make PGO and GCOV depend on it.
> > > > >
> > > > > Cc: Masahiro Yamada <masahiroy@kernel.org>
> > > > > Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
> > > > > Link: https://lore.kernel.org/lkml/YMTn9yjuemKFLbws@hirez.programming.kicks-ass.net/
> > > > > Link: https://lore.kernel.org/lkml/YMcssV%2Fn5IBGv4f0@hirez.programming.kicks-ass.net/
> > > > > Suggested-by: Peter Zijlstra <peterz@infradead.org>
> > > > > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> > > > > ---
> > > > > init/Kconfig | 3 +++
> > > > > kernel/gcov/Kconfig | 1 +
> > > > > kernel/pgo/Kconfig | 3 ++-
> > > > > 3 files changed, 6 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/init/Kconfig b/init/Kconfig
> > > > > index 1ea12c64e4c9..540f862b40c6 100644
> > > > > --- a/init/Kconfig
> > > > > +++ b/init/Kconfig
> > > > > @@ -83,6 +83,9 @@ config TOOLS_SUPPORT_RELR
> > > > > config CC_HAS_ASM_INLINE
> > > > > def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
> > > > >
> > > > > +config CC_HAS_NO_PROFILE_FN_ATTR
> > > > > + def_bool $(success,echo '__attribute__((no_profile)) int x();' | $(CC) -x c - -c -o /dev/null -Werror)
> > > > > +
> > > > > config CONSTRUCTORS
> > > > > bool
> > > > >
> > > > > diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
> > > > > index 58f87a3092f3..19facd4289cd 100644
> > > > > --- a/kernel/gcov/Kconfig
> > > > > +++ b/kernel/gcov/Kconfig
> > > > > @@ -5,6 +5,7 @@ config GCOV_KERNEL
> > > > > bool "Enable gcov-based kernel profiling"
> > > > > depends on DEBUG_FS
> > > > > depends on !CC_IS_CLANG || CLANG_VERSION >= 110000
> > > > > + depends on !X86 || (X86 && CC_HAS_NO_PROFILE_FN_ATTR)
> > > >
> > > > [+Cc Mark]
> > > >
> > > > arm64 is also starting to rely on noinstr working properly.
> > >
> > > Sure,
> > > Will, Catalin, other arm64 folks:
> > > Any thoughts on requiring GCC 7.1+/Clang 13.0+ for GCOV support? That
> > > way we can better guarantee that GCOV (and eventually, PGO) don't
> > > touch noinstr functions?
> > >
> > > If that's ok, I'll add modify the above like:
> > >
> > > + depends on !ARM64 || (ARM64 && CC_HAS_NO_PROFILE_FN_ATTR)
> >
> > Wouldn't "!ARM64 || CC_HAS_NO_PROFILE_FN_ATTR" be more succinct?
>
> We need to be able to express via Kconfig "GCOV should not be enabled
> for architectures that use noinstr when the toolchain does not support
> __attribute__((no_profile_instrument_function))."
>
> Where "architectures that use noinstr" are currently arm64, s390, and
> x86. So I guess we could do:
>
> + depends on !ARM64 || !S390 || !X86 || CC_HAS_NO_PROFILE_FN_ATTR
I think you want:
depends on !(ARM64 || S390 || X86) || CC_HAS_NO_PROFILE_FN_ATTR
> (We could add a Kconfig for ARCH_WANTS_NO_INSTR, which might be more
> informative than listed out architectures which might be non-obvious
> to passers-by).
That would probably look better.
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-06-22 9:25 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-18 23:30 [PATCH 0/2] no_profile fn attr and Kconfig for GCOV+PGO Nick Desaulniers
2021-06-18 23:30 ` [PATCH 1/2] compiler_attributes.h: define __no_profile, add to noinstr Nick Desaulniers
2021-06-19 11:26 ` Miguel Ojeda
2021-06-19 11:32 ` Miguel Ojeda
2021-06-21 18:10 ` Nick Desaulniers
2021-06-21 18:24 ` Fangrui Song
2021-06-21 19:09 ` Miguel Ojeda
2021-06-18 23:30 ` [PATCH 2/2] Kconfig: CC_HAS_NO_PROFILE_FN_ATTR, depend on for GCOV and PGO Nick Desaulniers
2021-06-19 6:23 ` Marco Elver
2021-06-21 18:22 ` Nick Desaulniers
2021-06-21 18:22 ` Nick Desaulniers
2021-06-21 18:50 ` Bill Wendling
2021-06-21 18:50 ` Bill Wendling
2021-06-21 20:43 ` Nick Desaulniers
2021-06-21 20:43 ` Nick Desaulniers
2021-06-21 21:15 ` Nathan Chancellor
2021-06-21 21:15 ` Nathan Chancellor
2021-06-22 9:25 ` Catalin Marinas [this message]
2021-06-22 9:25 ` Catalin Marinas
2021-06-22 9:29 ` Mark Rutland
2021-06-22 9:29 ` Mark Rutland
2021-06-22 9:32 ` Catalin Marinas
2021-06-22 9:32 ` Catalin Marinas
2021-06-18 23:52 ` [PATCH 0/2] no_profile fn attr and Kconfig for GCOV+PGO Fangrui Song
2021-06-19 2:45 ` Kees Cook
2021-06-20 8:08 ` Bill Wendling
2021-06-20 14:53 ` Miguel Ojeda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210622092533.GB3555@arm.com \
--to=catalin.marinas@arm.com \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=borntraeger@de.ibm.com \
--cc=bp@alien8.de \
--cc=clang-built-linux@googlegroups.com \
--cc=corbet@lwn.net \
--cc=dvyukov@google.com \
--cc=elver@google.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=johannes.berg@intel.com \
--cc=keescook@chromium.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-toolchains@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=luc.vanoostenryck@gmail.com \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=maskray@google.com \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=mliska@suse.cz \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=oberpar@linux.ibm.com \
--cc=peterz@infradead.org \
--cc=samitolvanen@google.com \
--cc=wcw@google.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.