diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-6.6/linux-yocto-6.6/0077-perf-amd-ibs-Advertise-zen4_ibs_extensions-as-pmu-ca.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux-6.6/linux-yocto-6.6/0077-perf-amd-ibs-Advertise-zen4_ibs_extensions-as-pmu-ca.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-6.6/linux-yocto-6.6/0077-perf-amd-ibs-Advertise-zen4_ibs_extensions-as-pmu-ca.patch b/meta-amd-bsp/recipes-kernel/linux-6.6/linux-yocto-6.6/0077-perf-amd-ibs-Advertise-zen4_ibs_extensions-as-pmu-ca.patch new file mode 100644 index 00000000..b52ec457 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux-6.6/linux-yocto-6.6/0077-perf-amd-ibs-Advertise-zen4_ibs_extensions-as-pmu-ca.patch @@ -0,0 +1,98 @@ +From 9ee6583df3fb0747502035b430969e1e59b1c9f7 Mon Sep 17 00:00:00 2001 +From: Ravi Bangoria <ravi.bangoria@amd.com> +Date: Mon, 9 May 2022 10:19:10 +0530 +Subject: [PATCH 77/86] perf/amd/ibs: Advertise zen4_ibs_extensions as pmu + capability attribute + +commit 838de1d843fc9b6161e0e1c6308a8c027d08606d upstream + +PMU driver can advertise certain feature via capability attribute('caps' +sysfs directory) which can be consumed by userspace tools like perf. Add +zen4_ibs_extensions capability attribute for IBS pmus. This attribute +will be enabled when CPUID_Fn8000001B_EAX[11] is set. + +With patch on Zen4: + + $ ls /sys/bus/event_source/devices/ibs_op/caps + zen4_ibs_extensions + +Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com> +Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> +Link: https://lore.kernel.org/r/20220509044914.1473-5-ravi.bangoria@amd.com +Signed-off-by: Zhaolong Zhang <zhaolong.zhang@windriver.com> +--- + arch/x86/events/amd/ibs.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c +index 2dc8b7ec030a..c251bc44c088 100644 +--- a/arch/x86/events/amd/ibs.c ++++ b/arch/x86/events/amd/ibs.c +@@ -537,8 +537,14 @@ static struct attribute_group empty_format_group = { + .attrs = attrs_empty, + }; + ++static struct attribute_group empty_caps_group = { ++ .name = "caps", ++ .attrs = attrs_empty, ++}; ++ + static const struct attribute_group *empty_attr_groups[] = { + &empty_format_group, ++ &empty_caps_group, + NULL, + }; + +@@ -546,6 +552,7 @@ PMU_FORMAT_ATTR(rand_en, "config:57"); + PMU_FORMAT_ATTR(cnt_ctl, "config:19"); + PMU_EVENT_ATTR_STRING(l3missonly, fetch_l3missonly, "config:59"); + PMU_EVENT_ATTR_STRING(l3missonly, op_l3missonly, "config:16"); ++PMU_EVENT_ATTR_STRING(zen4_ibs_extensions, zen4_ibs_extensions, "1"); + + static umode_t + zen4_ibs_extensions_is_visible(struct kobject *kobj, struct attribute *attr, int i) +@@ -563,6 +570,11 @@ static struct attribute *fetch_l3missonly_attrs[] = { + NULL, + }; + ++static struct attribute *zen4_ibs_extensions_attrs[] = { ++ &zen4_ibs_extensions.attr.attr, ++ NULL, ++}; ++ + static struct attribute_group group_rand_en = { + .name = "format", + .attrs = rand_en_attrs, +@@ -574,13 +586,21 @@ static struct attribute_group group_fetch_l3missonly = { + .is_visible = zen4_ibs_extensions_is_visible, + }; + ++static struct attribute_group group_zen4_ibs_extensions = { ++ .name = "caps", ++ .attrs = zen4_ibs_extensions_attrs, ++ .is_visible = zen4_ibs_extensions_is_visible, ++}; ++ + static const struct attribute_group *fetch_attr_groups[] = { + &group_rand_en, ++ &empty_caps_group, + NULL, + }; + + static const struct attribute_group *fetch_attr_update[] = { + &group_fetch_l3missonly, ++ &group_zen4_ibs_extensions, + NULL, + }; + +@@ -615,6 +635,7 @@ static struct attribute_group group_op_l3missonly = { + static const struct attribute_group *op_attr_update[] = { + &group_cnt_ctl, + &group_op_l3missonly, ++ &group_zen4_ibs_extensions, + NULL, + }; + +-- +2.37.3 + |