From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [PATCH] powerpc/64: Use -mprofile-kernel for big endian ELFv2 kernels
Date: Tue, 09 May 2023 19:34:04 +0530 [thread overview]
Message-ID: <1683640469.r7fu0pmbzi.naveen@linux.ibm.com> (raw)
In-Reply-To: <20230506011814.8766-1-npiggin@gmail.com>
Nicholas Piggin wrote:
> -mprofile-kernel is an optimised calling convention for mcount that
> Linux has only implemented with the ELFv2 ABI, so it was disabled for
> big endian kernels. However it does work with ELFv2 big endian, so let's
> allow that if the compiler supports it.
>
> Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
> Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> Christophe had the good idea that we could use -mprofile-kernel for
> ELFv2 BE. Unfortunately can't remove -pg due to lack of -mprofile-kernel
> in clang, but this gives BE the nicer ftrace code with GCC at least.
> Function tracer works for me with a BE kernel.
LGTM. With a few minor nits below:
Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
>
> Thanks,
> Nick
>
> arch/powerpc/Kconfig | 6 ++++--
> arch/powerpc/tools/gcc-check-mprofile-kernel.sh | 4 ++--
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index a64bfd9b8a1d..bd2ee7af1342 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -547,8 +547,10 @@ config LD_HEAD_STUB_CATCH
> If unsure, say "N".
>
> config MPROFILE_KERNEL
> - depends on PPC64 && CPU_LITTLE_ENDIAN && FUNCTION_TRACER
> - def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__)
> + depends on PPC64 && FUNCTION_TRACER
> + depends on CPU_LITTLE_ENDIAN || PPC64_BIG_ENDIAN_ELF_ABI_V2
Can't we just check for PPC64_ELF_ABI_V2?
> + def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -mlittle-endian) if CPU_LITTLE_ENDIAN
> + def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-mprofile-kernel.sh $(CC) -mbig-endian) if CPU_BIG_ENDIAN
>
> config HOTPLUG_CPU
> bool "Support for enabling/disabling CPUs"
> diff --git a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> index 137f3376ac2b..e78c599251ff 100755
> --- a/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> +++ b/arch/powerpc/tools/gcc-check-mprofile-kernel.sh
> @@ -14,13 +14,13 @@ set -o pipefail
We have this comment before the below code, which should also be updated/removed:
# -mprofile-kernel is only supported on 64le, so this should not be invoked
# for other targets. Therefore we can pass in -m64 and -mlittle-endian
# explicitly, to take care of toolchains defaulting to other targets.
> # Test whether the compile option -mprofile-kernel exists and generates
> # profiling code (ie. a call to _mcount()).
> echo "int func() { return 0; }" | \
> - $* -m64 -mlittle-endian -S -x c -O2 -p -mprofile-kernel - -o - \
> + $* -m64 -S -x c -O2 -p -mprofile-kernel - -o - \
> 2> /dev/null | grep -q "_mcount"
>
> # Test whether the notrace attribute correctly suppresses calls to _mcount().
>
> echo -e "#include <linux/compiler.h>\nnotrace int func() { return 0; }" | \
> - $* -m64 -mlittle-endian -S -x c -O2 -p -mprofile-kernel - -o - \
> + $* -m64 -S -x c -O2 -p -mprofile-kernel - -o - \
> 2> /dev/null | grep -q "_mcount" && \
> exit 1
>
- Naveen
prev parent reply other threads:[~2023-05-09 15:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-06 1:18 [PATCH] powerpc/64: Use -mprofile-kernel for big endian ELFv2 kernels Nicholas Piggin
2023-05-09 14:04 ` Naveen N. Rao [this message]
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=1683640469.r7fu0pmbzi.naveen@linux.ibm.com \
--to=naveen.n.rao@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=npiggin@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).