perf/amd/ibs: Advertise remote socket capability

IBS OP on future hardware can indicate data source from remote socket
as well. Advertise this capability to userspace so that userspace tools
can decode IBS data accordingly.

Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260216042530.1546-8-ravi.bangoria@amd.com
This commit is contained in:
Ravi Bangoria 2026-02-16 04:25:30 +00:00 committed by Peter Zijlstra
parent 8ae68bfec9
commit b2ea0f541d
2 changed files with 21 additions and 1 deletions

View File

@ -730,6 +730,7 @@ PMU_EVENT_ATTR_STRING(fetchlat, ibs_fetch_lat_format, "config1:0-10");
PMU_EVENT_ATTR_STRING(fetchlat, ibs_fetch_lat_cap, "1");
PMU_EVENT_ATTR_STRING(strmst, ibs_op_strmst_format, "config1:12");
PMU_EVENT_ATTR_STRING(strmst, ibs_op_strmst_cap, "1");
PMU_EVENT_ATTR_STRING(rmtsocket, ibs_op_rmtsocket_cap, "1");
static umode_t
zen4_ibs_extensions_is_visible(struct kobject *kobj, struct attribute *attr, int i)
@ -749,6 +750,12 @@ ibs_op_strmst_is_visible(struct kobject *kobj, struct attribute *attr, int i)
return ibs_caps & IBS_CAPS_STRMST_RMTSOCKET ? attr->mode : 0;
}
static umode_t
ibs_op_rmtsocket_is_visible(struct kobject *kobj, struct attribute *attr, int i)
{
return ibs_caps & IBS_CAPS_STRMST_RMTSOCKET ? attr->mode : 0;
}
static umode_t
ibs_op_ldlat_is_visible(struct kobject *kobj, struct attribute *attr, int i)
{
@ -802,6 +809,11 @@ static struct attribute *ibs_op_strmst_cap_attrs[] = {
NULL,
};
static struct attribute *ibs_op_rmtsocket_cap_attrs[] = {
&ibs_op_rmtsocket_cap.attr.attr,
NULL,
};
static struct attribute_group group_fetch_formats = {
.name = "format",
.attrs = fetch_attrs,
@ -849,6 +861,12 @@ static struct attribute_group group_ibs_op_strmst_cap = {
.is_visible = ibs_op_strmst_is_visible,
};
static struct attribute_group group_ibs_op_rmtsocket_cap = {
.name = "caps",
.attrs = ibs_op_rmtsocket_cap_attrs,
.is_visible = ibs_op_rmtsocket_is_visible,
};
static const struct attribute_group *fetch_attr_groups[] = {
&group_fetch_formats,
&empty_caps_group,
@ -938,6 +956,7 @@ static const struct attribute_group *op_attr_update[] = {
&group_ibs_op_dtlb_pgsize_cap,
&group_ibs_op_strmst_cap,
&group_ibs_op_strmst_format,
&group_ibs_op_rmtsocket_cap,
NULL,
};

View File

@ -100,7 +100,8 @@ union ibs_op_data2 {
cache_hit_st:1, /* 5: cache hit state */
data_src_hi:2, /* 6-7: data source high */
strm_st:1, /* 8: streaming store */
reserved1:55; /* 9-63: reserved */
rmt_socket:1, /* 9: remote socket */
reserved1:54; /* 10-63: reserved */
};
};