> On 29 Jul 2026, at 07:31, Andrea Pinski <[email protected]> 
> wrote:
> 
> On Tue, Jul 28, 2026 at 10:27 PM Tamar Christina
> <[email protected]> wrote:
>> 
>>> -----Original Message-----
>>> From: [email protected] <[email protected]>
>>> Sent: 21 July 2026 15:29
>>> To: [email protected]
>>> Cc: Tamar Christina <[email protected]>; [email protected];
>>> [email protected]; [email protected]; Kyrylo Tkachov
>>> <[email protected]>
>>> Subject: [PATCH] aarch64: Limit Arm SPE probes to PMU events
>>> 
>>> 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?
>> 
>> LGTM.
> 
> ok.

Thanks all for the ok’s. Pushed now.
Kyrill

> 
>> 
>> Thanks,
>> Tamar
>> 
>>> 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