tools/perf/arch/x86/util/Build | 1 - tools/perf/arch/x86/util/env.c | 19 - tools/perf/arch/x86/util/env.h | 7 - tools/perf/arch/x86/util/pmu.c | 2 +- tools/perf/builtin-kvm.c | 1 + tools/perf/builtin-record.c | 4 +- tools/perf/builtin-stat.c | 18 +- tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- tools/perf/tests/attr/test-record-dummy-C0 | 2 +- tools/perf/tests/parse-events.c | 30 +- tools/perf/util/env.c | 24 ++ tools/perf/util/env.h | 4 + tools/perf/util/evsel.c | 394 ++++++++++++++------ tools/perf/util/evsel.h | 1 - tools/perf/util/parse-events.c | 6 +- tools/perf/util/util.c | 10 +- tools/perf/util/util.h | 3 + 18 files changed, 364 insertions(+), 166 deletions(-) delete mode 100644 tools/perf/arch/x86/util/env.c delete mode 100644 tools/perf/arch/x86/util/env.h
Hello, I found perf tools set exclude_guest bit inconsistently. It used to set the bit but now the default event for perf record doesn't. So I'm wondering why we want the bit in the first place. Actually it's not good for PMUs don't support any exclusion like AMD IBS because it disables new features after the exclude_guest due to the missing feature detection logic. v4 changes) * handle EOPNOTSUPP error in compatible way (Kan) * drop --exclude-guest option in perf stat * not to separate exclude_hv fallback * rename to exclude_GH_default (Kan) * drop the RFC from the subject v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ * move exclude_guest fallback to the front * fix precise_max handling on AMD * simplify the default event for perf record v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ * update the missing feature detection logic * separate exclude_hv fallback * add new fallback for exclude_guest v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ AFAIK it doesn't matter for the most cases but perf kvm. If users need to set the bit, they can still use :H modifier. For vPMU pass- through or Apple M1, it'd add the exclude_guest during the fallback logic. Also the kernel feature detection logic should be separated from the exclude bit tests since it depends on the PMU implementation rather than the core kernel features. So I changed it to use a software event for the detection and factor out some hw-specific checks. The code is available at 'perf/exclude-v4' branch in git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git Thanks, Namhyung Namhyung Kim (8): perf tools: Add fallback for exclude_guest perf tools: Don't set attr.exclude_guest by default perf tools: Simplify evsel__add_modifier() perf tools: Do not set exclude_guest for precise_ip perf tools: Detect missing kernel features properly perf tools: Move x86__is_amd_cpu() to util/env.c perf tools: Check fallback error and order perf record: Just use "cycles:P" as the default event tools/perf/arch/x86/util/Build | 1 - tools/perf/arch/x86/util/env.c | 19 - tools/perf/arch/x86/util/env.h | 7 - tools/perf/arch/x86/util/pmu.c | 2 +- tools/perf/builtin-kvm.c | 1 + tools/perf/builtin-record.c | 4 +- tools/perf/builtin-stat.c | 18 +- tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- tools/perf/tests/attr/test-record-dummy-C0 | 2 +- tools/perf/tests/parse-events.c | 30 +- tools/perf/util/env.c | 24 ++ tools/perf/util/env.h | 4 + tools/perf/util/evsel.c | 394 ++++++++++++++------ tools/perf/util/evsel.h | 1 - tools/perf/util/parse-events.c | 6 +- tools/perf/util/util.c | 10 +- tools/perf/util/util.h | 3 + 18 files changed, 364 insertions(+), 166 deletions(-) delete mode 100644 tools/perf/arch/x86/util/env.c delete mode 100644 tools/perf/arch/x86/util/env.h -- 2.46.1.824.gd892dcdcdd-goog
On 01/10/2024 1:20 am, Namhyung Kim wrote: > Hello, > > I found perf tools set exclude_guest bit inconsistently. It used to > set the bit but now the default event for perf record doesn't. So I'm > wondering why we want the bit in the first place. > > Actually it's not good for PMUs don't support any exclusion like AMD > IBS because it disables new features after the exclude_guest due to > the missing feature detection logic. > > v4 changes) > > * handle EOPNOTSUPP error in compatible way (Kan) > * drop --exclude-guest option in perf stat > * not to separate exclude_hv fallback > * rename to exclude_GH_default (Kan) > * drop the RFC from the subject > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > * move exclude_guest fallback to the front > * fix precise_max handling on AMD > * simplify the default event for perf record > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > * update the missing feature detection logic > * separate exclude_hv fallback > * add new fallback for exclude_guest > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > AFAIK it doesn't matter for the most cases but perf kvm. If users > need to set the bit, they can still use :H modifier. For vPMU pass- > through or Apple M1, it'd add the exclude_guest during the fallback > logic. > > Also the kernel feature detection logic should be separated from the > exclude bit tests since it depends on the PMU implementation rather > than the core kernel features. So I changed it to use a software > event for the detection and factor out some hw-specific checks. > > The code is available at 'perf/exclude-v4' branch in > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git > > Thanks, > Namhyung > > Looks like you need to allow for :H in the perf stat test on M1 now: diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh index 5a2ca2bcf94d..77cb95859649 100755 --- a/tools/perf/tests/shell/stat.sh +++ b/tools/perf/tests/shell/stat.sh @@ -161,7 +161,7 @@ test_hybrid() { fi # Run default Perf stat - cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles " | wc -l) + cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles | cycles:H " | wc -l) if [ "$pmus" -ne "$cycles_events" ] then Other than that: Reviewed-by: James Clark <james.clark@linaro.org> > Namhyung Kim (8): > perf tools: Add fallback for exclude_guest > perf tools: Don't set attr.exclude_guest by default > perf tools: Simplify evsel__add_modifier() > perf tools: Do not set exclude_guest for precise_ip > perf tools: Detect missing kernel features properly > perf tools: Move x86__is_amd_cpu() to util/env.c > perf tools: Check fallback error and order > perf record: Just use "cycles:P" as the default event > > tools/perf/arch/x86/util/Build | 1 - > tools/perf/arch/x86/util/env.c | 19 - > tools/perf/arch/x86/util/env.h | 7 - > tools/perf/arch/x86/util/pmu.c | 2 +- > tools/perf/builtin-kvm.c | 1 + > tools/perf/builtin-record.c | 4 +- > tools/perf/builtin-stat.c | 18 +- > tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- > tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- > tools/perf/tests/attr/test-record-dummy-C0 | 2 +- > tools/perf/tests/parse-events.c | 30 +- > tools/perf/util/env.c | 24 ++ > tools/perf/util/env.h | 4 + > tools/perf/util/evsel.c | 394 ++++++++++++++------ > tools/perf/util/evsel.h | 1 - > tools/perf/util/parse-events.c | 6 +- > tools/perf/util/util.c | 10 +- > tools/perf/util/util.h | 3 + > 18 files changed, 364 insertions(+), 166 deletions(-) > delete mode 100644 tools/perf/arch/x86/util/env.c > delete mode 100644 tools/perf/arch/x86/util/env.h >
On Wed, Oct 02, 2024 at 10:49:36AM +0100, James Clark wrote: > > > On 01/10/2024 1:20 am, Namhyung Kim wrote: > > Hello, > > > > I found perf tools set exclude_guest bit inconsistently. It used to > > set the bit but now the default event for perf record doesn't. So I'm > > wondering why we want the bit in the first place. > > > > Actually it's not good for PMUs don't support any exclusion like AMD > > IBS because it disables new features after the exclude_guest due to > > the missing feature detection logic. > > > > v4 changes) > > > > * handle EOPNOTSUPP error in compatible way (Kan) > > * drop --exclude-guest option in perf stat > > * not to separate exclude_hv fallback > > * rename to exclude_GH_default (Kan) > > * drop the RFC from the subject > > > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > > > * move exclude_guest fallback to the front > > * fix precise_max handling on AMD > > * simplify the default event for perf record > > > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > > > * update the missing feature detection logic > > * separate exclude_hv fallback > > * add new fallback for exclude_guest > > > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > > > AFAIK it doesn't matter for the most cases but perf kvm. If users > > need to set the bit, they can still use :H modifier. For vPMU pass- > > through or Apple M1, it'd add the exclude_guest during the fallback > > logic. > > > > Also the kernel feature detection logic should be separated from the > > exclude bit tests since it depends on the PMU implementation rather > > than the core kernel features. So I changed it to use a software > > event for the detection and factor out some hw-specific checks. > > > > The code is available at 'perf/exclude-v4' branch in > > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git > > > > Thanks, > > Namhyung > > > > > > Looks like you need to allow for :H in the perf stat test on M1 now: > > diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh > index 5a2ca2bcf94d..77cb95859649 100755 > --- a/tools/perf/tests/shell/stat.sh > +++ b/tools/perf/tests/shell/stat.sh > @@ -161,7 +161,7 @@ test_hybrid() { > fi > > # Run default Perf stat > - cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles " | > wc -l) > + cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles | cycles:H " | wc -l) Ok, what about "u"? Probably it can be cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/(uH)*| cycles(:[uH])* " | wc -l) > > if [ "$pmus" -ne "$cycles_events" ] > then > > Other than that: > > Reviewed-by: James Clark <james.clark@linaro.org> Thanks for the review! Namhyung > > > Namhyung Kim (8): > > perf tools: Add fallback for exclude_guest > > perf tools: Don't set attr.exclude_guest by default > > perf tools: Simplify evsel__add_modifier() > > perf tools: Do not set exclude_guest for precise_ip > > perf tools: Detect missing kernel features properly > > perf tools: Move x86__is_amd_cpu() to util/env.c > > perf tools: Check fallback error and order > > perf record: Just use "cycles:P" as the default event > > > > tools/perf/arch/x86/util/Build | 1 - > > tools/perf/arch/x86/util/env.c | 19 - > > tools/perf/arch/x86/util/env.h | 7 - > > tools/perf/arch/x86/util/pmu.c | 2 +- > > tools/perf/builtin-kvm.c | 1 + > > tools/perf/builtin-record.c | 4 +- > > tools/perf/builtin-stat.c | 18 +- > > tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- > > tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- > > tools/perf/tests/attr/test-record-dummy-C0 | 2 +- > > tools/perf/tests/parse-events.c | 30 +- > > tools/perf/util/env.c | 24 ++ > > tools/perf/util/env.h | 4 + > > tools/perf/util/evsel.c | 394 ++++++++++++++------ > > tools/perf/util/evsel.h | 1 - > > tools/perf/util/parse-events.c | 6 +- > > tools/perf/util/util.c | 10 +- > > tools/perf/util/util.h | 3 + > > 18 files changed, 364 insertions(+), 166 deletions(-) > > delete mode 100644 tools/perf/arch/x86/util/env.c > > delete mode 100644 tools/perf/arch/x86/util/env.h > > >
On 02/10/2024 19:29, Namhyung Kim wrote: > On Wed, Oct 02, 2024 at 10:49:36AM +0100, James Clark wrote: >> >> >> On 01/10/2024 1:20 am, Namhyung Kim wrote: >>> Hello, >>> >>> I found perf tools set exclude_guest bit inconsistently. It used to >>> set the bit but now the default event for perf record doesn't. So I'm >>> wondering why we want the bit in the first place. >>> >>> Actually it's not good for PMUs don't support any exclusion like AMD >>> IBS because it disables new features after the exclude_guest due to >>> the missing feature detection logic. >>> >>> v4 changes) >>> >>> * handle EOPNOTSUPP error in compatible way (Kan) >>> * drop --exclude-guest option in perf stat >>> * not to separate exclude_hv fallback >>> * rename to exclude_GH_default (Kan) >>> * drop the RFC from the subject >>> >>> v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ >>> >>> * move exclude_guest fallback to the front >>> * fix precise_max handling on AMD >>> * simplify the default event for perf record >>> >>> v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ >>> >>> * update the missing feature detection logic >>> * separate exclude_hv fallback >>> * add new fallback for exclude_guest >>> >>> v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ >>> >>> AFAIK it doesn't matter for the most cases but perf kvm. If users >>> need to set the bit, they can still use :H modifier. For vPMU pass- >>> through or Apple M1, it'd add the exclude_guest during the fallback >>> logic. >>> >>> Also the kernel feature detection logic should be separated from the >>> exclude bit tests since it depends on the PMU implementation rather >>> than the core kernel features. So I changed it to use a software >>> event for the detection and factor out some hw-specific checks. >>> >>> The code is available at 'perf/exclude-v4' branch in >>> git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git >>> >>> Thanks, >>> Namhyung >>> >>> >> >> Looks like you need to allow for :H in the perf stat test on M1 now: >> >> diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh >> index 5a2ca2bcf94d..77cb95859649 100755 >> --- a/tools/perf/tests/shell/stat.sh >> +++ b/tools/perf/tests/shell/stat.sh >> @@ -161,7 +161,7 @@ test_hybrid() { >> fi >> >> # Run default Perf stat >> - cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles " | >> wc -l) >> + cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles | cycles:H " | wc -l) > > Ok, what about "u"? Probably it can be > > cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/(uH)*| cycles(:[uH])* " | wc -l) > Yep that probably works too and is a bit more robust >> >> if [ "$pmus" -ne "$cycles_events" ] >> then >> >> Other than that: >> >> Reviewed-by: James Clark <james.clark@linaro.org> > > Thanks for the review! > Namhyung > >> >>> Namhyung Kim (8): >>> perf tools: Add fallback for exclude_guest >>> perf tools: Don't set attr.exclude_guest by default >>> perf tools: Simplify evsel__add_modifier() >>> perf tools: Do not set exclude_guest for precise_ip >>> perf tools: Detect missing kernel features properly >>> perf tools: Move x86__is_amd_cpu() to util/env.c >>> perf tools: Check fallback error and order >>> perf record: Just use "cycles:P" as the default event >>> >>> tools/perf/arch/x86/util/Build | 1 - >>> tools/perf/arch/x86/util/env.c | 19 - >>> tools/perf/arch/x86/util/env.h | 7 - >>> tools/perf/arch/x86/util/pmu.c | 2 +- >>> tools/perf/builtin-kvm.c | 1 + >>> tools/perf/builtin-record.c | 4 +- >>> tools/perf/builtin-stat.c | 18 +- >>> tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- >>> tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- >>> tools/perf/tests/attr/test-record-dummy-C0 | 2 +- >>> tools/perf/tests/parse-events.c | 30 +- >>> tools/perf/util/env.c | 24 ++ >>> tools/perf/util/env.h | 4 + >>> tools/perf/util/evsel.c | 394 ++++++++++++++------ >>> tools/perf/util/evsel.h | 1 - >>> tools/perf/util/parse-events.c | 6 +- >>> tools/perf/util/util.c | 10 +- >>> tools/perf/util/util.h | 3 + >>> 18 files changed, 364 insertions(+), 166 deletions(-) >>> delete mode 100644 tools/perf/arch/x86/util/env.c >>> delete mode 100644 tools/perf/arch/x86/util/env.h >>> >>
On Fri, Oct 04, 2024 at 04:40:18PM +0100, James Clark wrote: > > > On 02/10/2024 19:29, Namhyung Kim wrote: > > On Wed, Oct 02, 2024 at 10:49:36AM +0100, James Clark wrote: > > > > > > > > > On 01/10/2024 1:20 am, Namhyung Kim wrote: > > > > Hello, > > > > > > > > I found perf tools set exclude_guest bit inconsistently. It used to > > > > set the bit but now the default event for perf record doesn't. So I'm > > > > wondering why we want the bit in the first place. > > > > > > > > Actually it's not good for PMUs don't support any exclusion like AMD > > > > IBS because it disables new features after the exclude_guest due to > > > > the missing feature detection logic. > > > > > > > > v4 changes) > > > > > > > > * handle EOPNOTSUPP error in compatible way (Kan) > > > > * drop --exclude-guest option in perf stat > > > > * not to separate exclude_hv fallback > > > > * rename to exclude_GH_default (Kan) > > > > * drop the RFC from the subject > > > > > > > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > > > > > > > * move exclude_guest fallback to the front > > > > * fix precise_max handling on AMD > > > > * simplify the default event for perf record > > > > > > > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > > > > > > > * update the missing feature detection logic > > > > * separate exclude_hv fallback > > > > * add new fallback for exclude_guest > > > > > > > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > > > > > > > AFAIK it doesn't matter for the most cases but perf kvm. If users > > > > need to set the bit, they can still use :H modifier. For vPMU pass- > > > > through or Apple M1, it'd add the exclude_guest during the fallback > > > > logic. > > > > > > > > Also the kernel feature detection logic should be separated from the > > > > exclude bit tests since it depends on the PMU implementation rather > > > > than the core kernel features. So I changed it to use a software > > > > event for the detection and factor out some hw-specific checks. > > > > > > > > The code is available at 'perf/exclude-v4' branch in > > > > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git > > > > > > > > Thanks, > > > > Namhyung > > > > > > > > > > > > > > Looks like you need to allow for :H in the perf stat test on M1 now: > > > > > > diff --git a/tools/perf/tests/shell/stat.sh b/tools/perf/tests/shell/stat.sh > > > index 5a2ca2bcf94d..77cb95859649 100755 > > > --- a/tools/perf/tests/shell/stat.sh > > > +++ b/tools/perf/tests/shell/stat.sh > > > @@ -161,7 +161,7 @@ test_hybrid() { > > > fi > > > > > > # Run default Perf stat > > > - cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles " | > > > wc -l) > > > + cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/| cycles | cycles:H " | wc -l) > > > > Ok, what about "u"? Probably it can be > > > > cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/(uH)*| cycles(:[uH])* " | wc -l) > > > > Yep that probably works too and is a bit more robust Great, I'll merge this change with the fix above if nobody objects. It'd be nice if more folks on other architectures could test this patchset too. Thanks, Namhyung > > > > > > > if [ "$pmus" -ne "$cycles_events" ] > > > then > > > > > > Other than that: > > > > > > Reviewed-by: James Clark <james.clark@linaro.org> > > > > Thanks for the review! > > Namhyung > > > > > > > > > Namhyung Kim (8): > > > > perf tools: Add fallback for exclude_guest > > > > perf tools: Don't set attr.exclude_guest by default > > > > perf tools: Simplify evsel__add_modifier() > > > > perf tools: Do not set exclude_guest for precise_ip > > > > perf tools: Detect missing kernel features properly > > > > perf tools: Move x86__is_amd_cpu() to util/env.c > > > > perf tools: Check fallback error and order > > > > perf record: Just use "cycles:P" as the default event > > > > > > > > tools/perf/arch/x86/util/Build | 1 - > > > > tools/perf/arch/x86/util/env.c | 19 - > > > > tools/perf/arch/x86/util/env.h | 7 - > > > > tools/perf/arch/x86/util/pmu.c | 2 +- > > > > tools/perf/builtin-kvm.c | 1 + > > > > tools/perf/builtin-record.c | 4 +- > > > > tools/perf/builtin-stat.c | 18 +- > > > > tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- > > > > tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- > > > > tools/perf/tests/attr/test-record-dummy-C0 | 2 +- > > > > tools/perf/tests/parse-events.c | 30 +- > > > > tools/perf/util/env.c | 24 ++ > > > > tools/perf/util/env.h | 4 + > > > > tools/perf/util/evsel.c | 394 ++++++++++++++------ > > > > tools/perf/util/evsel.h | 1 - > > > > tools/perf/util/parse-events.c | 6 +- > > > > tools/perf/util/util.c | 10 +- > > > > tools/perf/util/util.h | 3 + > > > > 18 files changed, 364 insertions(+), 166 deletions(-) > > > > delete mode 100644 tools/perf/arch/x86/util/env.c > > > > delete mode 100644 tools/perf/arch/x86/util/env.h > > > > > > >
On 2024-09-30 8:20 p.m., Namhyung Kim wrote: > Hello, > > I found perf tools set exclude_guest bit inconsistently. It used to > set the bit but now the default event for perf record doesn't. So I'm > wondering why we want the bit in the first place. > > Actually it's not good for PMUs don't support any exclusion like AMD > IBS because it disables new features after the exclude_guest due to > the missing feature detection logic. > > v4 changes) > > * handle EOPNOTSUPP error in compatible way (Kan) > * drop --exclude-guest option in perf stat > * not to separate exclude_hv fallback > * rename to exclude_GH_default (Kan) > * drop the RFC from the subject > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > * move exclude_guest fallback to the front > * fix precise_max handling on AMD > * simplify the default event for perf record > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > * update the missing feature detection logic > * separate exclude_hv fallback > * add new fallback for exclude_guest > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > AFAIK it doesn't matter for the most cases but perf kvm. If users > need to set the bit, they can still use :H modifier. For vPMU pass- > through or Apple M1, it'd add the exclude_guest during the fallback > logic. > > Also the kernel feature detection logic should be separated from the > exclude bit tests since it depends on the PMU implementation rather > than the core kernel features. So I changed it to use a software > event for the detection and factor out some hw-specific checks. > > The code is available at 'perf/exclude-v4' branch in > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git > > Thanks, > Namhyung > > > Namhyung Kim (8): > perf tools: Add fallback for exclude_guest > perf tools: Don't set attr.exclude_guest by default > perf tools: Simplify evsel__add_modifier() > perf tools: Do not set exclude_guest for precise_ip > perf tools: Detect missing kernel features properly > perf tools: Move x86__is_amd_cpu() to util/env.c > perf tools: Check fallback error and order > perf record: Just use "cycles:P" as the default event > The patch set looks good to me. Acked-by: Kan Liang <kan.liang@linux.intel.com> Thanks, Kan > tools/perf/arch/x86/util/Build | 1 - > tools/perf/arch/x86/util/env.c | 19 - > tools/perf/arch/x86/util/env.h | 7 - > tools/perf/arch/x86/util/pmu.c | 2 +- > tools/perf/builtin-kvm.c | 1 + > tools/perf/builtin-record.c | 4 +- > tools/perf/builtin-stat.c | 18 +- > tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- > tools/perf/dlfilters/dlfilter-test-api-v2.c | 2 +- > tools/perf/tests/attr/test-record-dummy-C0 | 2 +- > tools/perf/tests/parse-events.c | 30 +- > tools/perf/util/env.c | 24 ++ > tools/perf/util/env.h | 4 + > tools/perf/util/evsel.c | 394 ++++++++++++++------ > tools/perf/util/evsel.h | 1 - > tools/perf/util/parse-events.c | 6 +- > tools/perf/util/util.c | 10 +- > tools/perf/util/util.h | 3 + > 18 files changed, 364 insertions(+), 166 deletions(-) > delete mode 100644 tools/perf/arch/x86/util/env.c > delete mode 100644 tools/perf/arch/x86/util/env.h >
On Tue, Oct 01, 2024 at 01:46:36PM -0400, Liang, Kan wrote: > > > On 2024-09-30 8:20 p.m., Namhyung Kim wrote: > > Hello, > > > > I found perf tools set exclude_guest bit inconsistently. It used to > > set the bit but now the default event for perf record doesn't. So I'm > > wondering why we want the bit in the first place. > > > > Actually it's not good for PMUs don't support any exclusion like AMD > > IBS because it disables new features after the exclude_guest due to > > the missing feature detection logic. > > > > v4 changes) > > > > * handle EOPNOTSUPP error in compatible way (Kan) > > * drop --exclude-guest option in perf stat > > * not to separate exclude_hv fallback > > * rename to exclude_GH_default (Kan) > > * drop the RFC from the subject > > > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > > > * move exclude_guest fallback to the front > > * fix precise_max handling on AMD > > * simplify the default event for perf record > > > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > > > * update the missing feature detection logic > > * separate exclude_hv fallback > > * add new fallback for exclude_guest > > > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > > > AFAIK it doesn't matter for the most cases but perf kvm. If users > > need to set the bit, they can still use :H modifier. For vPMU pass- > > through or Apple M1, it'd add the exclude_guest during the fallback > > logic. > > > > Also the kernel feature detection logic should be separated from the > > exclude bit tests since it depends on the PMU implementation rather > > than the core kernel features. So I changed it to use a software > > event for the detection and factor out some hw-specific checks. > > > > The code is available at 'perf/exclude-v4' branch in > > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git > > > > Thanks, > > Namhyung > > > > > > Namhyung Kim (8): > > perf tools: Add fallback for exclude_guest > > perf tools: Don't set attr.exclude_guest by default > > perf tools: Simplify evsel__add_modifier() > > perf tools: Do not set exclude_guest for precise_ip > > perf tools: Detect missing kernel features properly > > perf tools: Move x86__is_amd_cpu() to util/env.c > > perf tools: Check fallback error and order > > perf record: Just use "cycles:P" as the default event > > > > The patch set looks good to me. > > Acked-by: Kan Liang <kan.liang@linux.intel.com> Thanks for your review! Namhyung
On 01-Oct-24 5:50 AM, Namhyung Kim wrote: > Hello, > > I found perf tools set exclude_guest bit inconsistently. It used to > set the bit but now the default event for perf record doesn't. So I'm > wondering why we want the bit in the first place. > > Actually it's not good for PMUs don't support any exclusion like AMD > IBS because it disables new features after the exclude_guest due to > the missing feature detection logic. > > v4 changes) > > * handle EOPNOTSUPP error in compatible way (Kan) > * drop --exclude-guest option in perf stat > * not to separate exclude_hv fallback > * rename to exclude_GH_default (Kan) > * drop the RFC from the subject > > v3) https://lore.kernel.org/lkml/20240905202426.2690105-1-namhyung@kernel.org/ > > * move exclude_guest fallback to the front > * fix precise_max handling on AMD > * simplify the default event for perf record > > v2) https://lore.kernel.org/lkml/20240904064131.2377873-1-namhyung@kernel.org/ > > * update the missing feature detection logic > * separate exclude_hv fallback > * add new fallback for exclude_guest > > v1) https://lore.kernel.org/lkml/20240902014621.2002343-1-namhyung@kernel.org/ > > AFAIK it doesn't matter for the most cases but perf kvm. If users > need to set the bit, they can still use :H modifier. For vPMU pass- > through or Apple M1, it'd add the exclude_guest during the fallback > logic. > > Also the kernel feature detection logic should be separated from the > exclude bit tests since it depends on the PMU implementation rather > than the core kernel features. So I changed it to use a software > event for the detection and factor out some hw-specific checks. > > The code is available at 'perf/exclude-v4' branch in > git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git Apart from few minor things, series looks good to me: Reviewed-by: Ravi Bangoria <ravi.bangoria@amd.com> Thanks, Ravi
© 2016 - 2024 Red Hat, Inc.