Skip to content

Commit

Permalink
perf/amd/ibs: Advertise zen4_ibs_extensions as pmu capability attribute
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Ravi Bangoria authored and Peter Zijlstra committed May 11, 2022
1 parent ba5d35b commit 838de1d
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions arch/x86/events/amd/ibs.c
Original file line number Diff line number Diff line change
Expand Up @@ -537,15 +537,22 @@ 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,
};

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)
Expand All @@ -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,
Expand All @@ -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,
};

Expand Down Expand Up @@ -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,
};

Expand Down

0 comments on commit 838de1d

Please sign in to comment.