[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YNGQhgKd9Ruti5qZ@hirez.programming.kicks-ass.net>
Date: Tue, 22 Jun 2021 09:25:58 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Nick Desaulniers <ndesaulniers@...gle.com>
Cc: Kees Cook <keescook@...omium.org>, Bill Wendling <wcw@...gle.com>,
Sami Tolvanen <samitolvanen@...gle.com>,
Peter Oberparleiter <oberpar@...ux.ibm.com>,
Masahiro Yamada <masahiroy@...nel.org>,
Miguel Ojeda <miguel.ojeda.sandonis@...il.com>,
Nathan Chancellor <nathan@...nel.org>,
Luc Van Oostenryck <luc.vanoostenryck@...il.com>,
Ard Biesheuvel <ardb@...nel.org>,
Will Deacon <will@...nel.org>, Arnd Bergmann <arnd@...db.de>,
Andrew Morton <akpm@...ux-foundation.org>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
linux-kernel@...r.kernel.org, clang-built-linux@...glegroups.com,
x86@...nel.org, Borislav Petkov <bp@...en8.de>,
Martin Liska <mliska@...e.cz>, Marco Elver <elver@...gle.com>,
Jonathan Corbet <corbet@....net>,
Fangrui Song <maskray@...gle.com>, linux-doc@...r.kernel.org,
linux-kbuild@...r.kernel.org, Dmitry Vyukov <dvyukov@...gle.com>,
johannes.berg@...el.com, linux-toolchains@...r.kernel.org,
Heiko Carstens <hca@...ux.ibm.com>,
Vasily Gorbik <gor@...ux.ibm.com>,
Christian Borntraeger <borntraeger@...ibm.com>,
linux-s390@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
Catalin Marinas <catalin.marinas@....com>
Subject: Re: [PATCH v2 3/3] Kconfig: add
ARCH_WANTS_NO_INSTR+CC_HAS_NO_PROFILE_FN_ATTR, depend on for GCOV and PGO
On Mon, Jun 21, 2021 at 04:18:22PM -0700, Nick Desaulniers wrote:
> We don't want compiler instrumentation to touch noinstr functions, which
> are annotated with the no_profile_instrument_function function
> attribute. Add a Kconfig test for this and make PGO and GCOV depend on
> it.
>
> If an architecture is using noinstr, it should denote that via this
> Kconfig value. That makes Kconfigs that depend on noinstr able to
> express dependencies in an architecturally agnostic way.
>
> Cc: Masahiro Yamada <masahiroy@...nel.org>
> Cc: Peter Oberparleiter <oberpar@...ux.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: Nathan Chancellor <nathan@...nel.org>
> Suggested-by: Peter Zijlstra <peterz@...radead.org>
> Signed-off-by: Nick Desaulniers <ndesaulniers@...gle.com>
> ---
> Changes V1 -> V2:
> * Add ARCH_WANTS_NO_INSTR
> * Change depdendencies to be !ARCH_WANTS_NO_INSTR || CC_HAS_NO_PROFILE_FN_ATTR
> rather than list architectures explicitly, as per Nathan.
> * s/no_profile/no_profile_instrument_function/
>
> arch/Kconfig | 7 +++++++
> arch/arm64/Kconfig | 1 +
> arch/s390/Kconfig | 1 +
> arch/x86/Kconfig | 1 +
> init/Kconfig | 3 +++
> kernel/gcov/Kconfig | 1 +
> kernel/pgo/Kconfig | 3 ++-
> 7 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 2b4109b0edee..2113c6b3b801 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -285,6 +285,13 @@ config ARCH_THREAD_STACK_ALLOCATOR
> config ARCH_WANTS_DYNAMIC_TASK_STRUCT
> bool
>
> +config ARCH_WANTS_NO_INSTR
> + bool
> + help
> + An architecure should select this if the noinstr macro is being used on
> + functions to denote that the toolchain should avoid instrumenting such
> + functions and is required for correctness.
> +
> config ARCH_32BIT_OFF_T
> bool
> depends on !64BIT
There's also CC_HAS_WORKING_NOSANITIZE_ADDRESS in lib/Kconfig.kasan that
might want to be hooked into this, but that can be done separately I
suppose.
Powered by blists - more mailing lists