LGTM but I cannot approve it.
IMO this can even be considered an obvious fix. I am also seeing this step 
taking too long.

Thanks,
Kugan
________________________________
From: Kyrylo Tkachov <[email protected]>
Sent: Tuesday, 28 July 2026 6:20 PM
To: [email protected] <[email protected]>
Cc: [email protected] <[email protected]>; Dhruv Chawla 
<[email protected]>; Kugan Vivekanandarajah <[email protected]>; 
[email protected] <[email protected]>
Subject: Re: [PATCH] aarch64: Limit Arm SPE probes to PMU events

Ping.
Andi, Kugan, are you okay with this patch or do you want to make this check in 
another way?
Thanks,
Kyrill

> On 21 Jul 2026, at 16:29, Kyrylo Tkachov <[email protected]> wrote:
>
> From: Kyrylo Tkachov <[email protected]>
>
> The autoprofile bootstrap support probes for Arm SPE from gcc/configure,
> gcc-auto-profile, and the profile-optimization testsuite support.  Each
> bare "perf list" scans every event class even though arm_spe is a PMU.
> This can make the probe unnecessarily slow on systems with many events.
>
> Use "perf list pmu" at all three call sites.  The PMU event class filter
> has long been supported by perf and still reports arm_spe.  Stubbed BRBE,
> SPE, and fallback paths select the same profiler as before.
>
> This patch actually saves a few minutes of end-to-end bootstrap time on my SPE
> AArch64 many-core system.
>
> Ok for trunk?
> Thanks,
> Kyrill
>
> gcc/ChangeLog:
>
> * config/aarch64/gcc-auto-profile: Probe for arm_spe with
> "perf list pmu" instead of "perf list".
> * configure.ac: Likewise.
> * configure: Regenerate.
>
> gcc/testsuite/ChangeLog:
>
> * lib/profopt.exp: Likewise.
>
> Signed-off-by: Kyrylo Tkachov <[email protected]>
> ---
> gcc/config/aarch64/gcc-auto-profile | 2 +-
> gcc/configure                       | 2 +-
> gcc/configure.ac                    | 2 +-
> gcc/testsuite/lib/profopt.exp       | 2 +-
> 4 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/aarch64/gcc-auto-profile 
> b/gcc/config/aarch64/gcc-auto-profile
> index 8f7502b30e3..6e33047698c 100755
> --- a/gcc/config/aarch64/gcc-auto-profile
> +++ b/gcc/config/aarch64/gcc-auto-profile
> @@ -45,7 +45,7 @@ if [ "$use_brbe" = true ] ; then
>   set -x
>   perf record --inherit -o perf.data -j any,$FLAGS "$@"
>   set +x
> -elif [ -n "$(perf list | grep arm_spe)" ] ; then
> +elif [ -n "$(perf list pmu | grep arm_spe)" ]; then
>   echo >&2 "Info: Using SPE to collect branch profiles"
>   set -x
>   perf record --inherit -o perf.data -e arm_spe_0/branch_filter=1/ "$@"
> diff --git a/gcc/configure b/gcc/configure
> index 8f2ecfcffdc..cf2dfd99235 100755
> --- a/gcc/configure
> +++ b/gcc/configure
> @@ -35189,7 +35189,7 @@ $as_echo_n "checking AArch64 build supports SPE 
> profiling for autoprofiledbootst
> if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU 
> Hardware or event type doesn't support branch stack sampling.")"; then
>  AFDO_PROFILER=perf
>  aarch64_spe_support="using BRBE instead"
> - elif test -n "$($PERF list | grep arm_spe)"; then
> + elif test -n "$($PERF list pmu | grep arm_spe)"; then
>  AFDO_PROFILER=perf_spe
>  aarch64_spe_support=yes
> fi
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 030ee373a6a..77ec150c3e2 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -7881,7 +7881,7 @@ if test x$PERF != xno; then
> if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU 
> Hardware or event type doesn't support branch stack sampling.")"; then
>  AFDO_PROFILER=perf
>  aarch64_spe_support="using BRBE instead"
> - elif test -n "$($PERF list | grep arm_spe)"; then
> + elif test -n "$($PERF list pmu | grep arm_spe)"; then
>  AFDO_PROFILER=perf_spe
>  aarch64_spe_support=yes
> fi
> diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp
> index 4f3f61958aa..cd80d5e9402 100644
> --- a/gcc/testsuite/lib/profopt.exp
> +++ b/gcc/testsuite/lib/profopt.exp
> @@ -456,7 +456,7 @@ proc profopt-execute { src } {
>                 set bprefix "afdo."
> set compiler [lindex $GCC_UNDER_TEST 0]
> set autofdo_version [string trim [lindex [remote_exec target "$compiler 
> --print-autofdo-gcov-version"] 1] ]
> - set profiler_check [string trim [lindex [remote_exec target "perf 
> --no-pager list | grep arm_spe"] 1]]
> + set profiler_check [string trim [lindex [remote_exec target "perf 
> --no-pager list pmu | grep arm_spe"] 1]]
> if {$profiler_check ne ""} {
>    set profiler "perf_spe"
> } else {
> --
> 2.50.1 (Apple Git-155)
>

Reply via email to