From nobody Tue Dec 16 14:37:27 2025 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2052.outbound.protection.outlook.com [40.107.100.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29A93224AF0; Thu, 29 May 2025 12:35:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522128; cv=fail; b=aKKSiOlpAcSJQEuFIw+DqxHUvteay21vx5emuXClsAOGY/PLgJ1GKiFS7TmsbF5CKDi2RkZv8ypUapWz+rxNv6kfnBv9XjTInUUoPEZo1cWIZVN/E7t9K2/ZL8QG4KBZpxIULohGXNFH0Ne0xMJK2AjkycAaJZIkMK4ClQeqOLA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522128; c=relaxed/simple; bh=b7ZS2cd6P04Z+KBH0avUktFOZ5d0y0AgkkV2IcCCLTo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dVL50yGamE1+sR4v/4XWTOl5pVlpWWCg7WkWKzKHGrdKW0Yr7QVo/BRH89O6uwfBXLA+bY26T5fi7sqe5KsDujuOkEyXSLLwfadfpUPBE4D1SHi8UD+cQ1huP+V4DxndTcvDeITs6r0iSAIakfljUj64mmegIkXD4VVFaZpZrV8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=1owAawSU; arc=fail smtp.client-ip=40.107.100.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="1owAawSU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b2H0qd3w8oDEIJCuGFprHEXeM+61laivVEWCC5OrxesQ70kQ4PXp7mI/kg+dmnA5x9AQSHVVZL8Dt+87i/3ucR7W0Vz8sjAOMiBPcE2Rl0s3NXQdse53GAtgEVnLLTBdlmQh2YG0m8l9HdxT0vNQ7mLqlam+MWSrnI3m9oMuBl+UmqGtaPKWp8DlFh8AtXztmUiDuz60IS7bXvzabtLI9v3jVxlzfMmsny3x76oRX6GsCCtIKpK2LekBsrpTzTQlgY5p6e/jttloq0Ne9k01bm2BXJf93k10rd3W8AOLgeFbdJ9/lm/382L8FAnFNE23HKEeSVRf3sjFJ/w/gyjvIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0ZyfSlNYr+LaLHbYoXFd8B5aGfRJDrahEKGNaQAhnfM=; b=DNy73tC1r+b4l3XtYwQcoD5F8fZn9UJ+rIAFEYr/k2cFPXQPZz3iDu3sHcvM/C2RFFLrCEohTpLmGY3G3ox/QMEkaWDO3gyaBkG5P3k2M8y3KSMZ07nXH1UJLtUJm0u+yWxit8A7iiFFc1IknHHyK7rXyYL4KgIjUbtrTIfEUbpYbpNBwH/+SQPFwMNOHMMAalLXioaYrmS3F8DfoHBfbJmwva/Wa67EwlzHomNSATN05f5unV+iA8vn+KGRiZif9tt7taH9H3U3JLqYvuA2XM7CEjz/AxBesTY4xid4U98WynlOdAs+tdXPeDfWluzxdHe5exv+JHIeUggjCz7Jnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0ZyfSlNYr+LaLHbYoXFd8B5aGfRJDrahEKGNaQAhnfM=; b=1owAawSUslPg3dcuuomy5IRRbjUMqz8IGiq+DQ9d2UF9NN6EUQxrdDer4VZAwcXpLLfj424RqL6gXKRxfGffh6t/EbZ59b4ngqKTZGXj80v3zBT2VHaXU8LrpBsBnTLJG0uLHcV6ul6Tt+Zobc6CRViKnJySg/gOtxpvsaE5XrE= Received: from SJ0PR05CA0105.namprd05.prod.outlook.com (2603:10b6:a03:334::20) by DM4PR12MB8500.namprd12.prod.outlook.com (2603:10b6:8:190::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.29; Thu, 29 May 2025 12:35:21 +0000 Received: from SJ1PEPF00002313.namprd03.prod.outlook.com (2603:10b6:a03:334:cafe::83) by SJ0PR05CA0105.outlook.office365.com (2603:10b6:a03:334::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.19 via Frontend Transport; Thu, 29 May 2025 12:35:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF00002313.mail.protection.outlook.com (10.167.242.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8769.18 via Frontend Transport; Thu, 29 May 2025 12:35:20 +0000 Received: from BLR-L-RBANGORI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 29 May 2025 07:35:15 -0500 From: Ravi Bangoria To: Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim CC: Ravi Bangoria , Ingo Molnar , Stephane Eranian , Ian Rogers , "Kan Liang" , James Clark , "Leo Yan" , Joe Mario , , , "Santosh Shukla" , Ananth Narayan , Sandipan Das Subject: [PATCH 1/4] perf/amd/ibs: Add load/store SW filters to IBS OP PMU Date: Thu, 29 May 2025 12:34:53 +0000 Message-ID: <20250529123456.1801-2-ravi.bangoria@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250529123456.1801-1-ravi.bangoria@amd.com> References: <20250529123456.1801-1-ravi.bangoria@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002313:EE_|DM4PR12MB8500:EE_ X-MS-Office365-Filtering-Correlation-Id: 9146b65f-0226-400e-a832-08dd9ead46c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?g1YtvJqVDcfCDXlrfRABiulBBmDJWRu+XYOpLvUFS82SzcN1wdH9Ks6lZ0zG?= =?us-ascii?Q?cj7mtmlVlBEw2JpCUpzk1B0HdCb0+mKCs8iGwB/eK/A6Mg7YW2t5szY8KdIJ?= =?us-ascii?Q?Gw1J2davZryvTPVBKYqiK5tpCvEO0sh/4xmT5UfIsJKE0k3/Nbq89uxab0Qm?= =?us-ascii?Q?mM44qZCRhFnquQoncuOusOtiJAgwVHfu7fQNyopPPZ0Glk0YsrCo7hdUDKgL?= =?us-ascii?Q?1l+EmHtav/MYzHgkB2ZksE3pTcdHvHBhVmpCh6CKJuTBOlvZGvXIdZtCQBG1?= =?us-ascii?Q?6WlXaqwuHkLfUt+3B2TSRkZ86a/AThQ9vpj6K1Y3QQqMavso7PHHBtHE1QVg?= =?us-ascii?Q?50/Fm5tSIqU5mWuScgBUFQSO2Zscx6vHMqPXQF+D0mx3bJl3FRVGotwwyc3l?= =?us-ascii?Q?7ta6cDZEA6HwyzixRS0Flg5q3LuRCwXZNJyl8T2v4GvcOhH49QjKo2rUnY04?= =?us-ascii?Q?Dg0OkY69dy+6t03H+Xv7L4dzAXLIkyB6/KmOGJY9SGT7BDuONFl6YjHhuIpm?= =?us-ascii?Q?b8gC50a385z3rweuA88IQow3Ii+gKIfiMJceYUFteySS0wqDwWCbg4Xc4TRA?= =?us-ascii?Q?to0NJJ3YSq0BfgoId5ynQSP0OkhUO2tLmK2LzXpq+Wp3xnnn0quiPlpAKbuf?= =?us-ascii?Q?USOHJq9SncJr43Enj1WO8Rxxq+FhIQrzvfiPOu+y0QIwP2o5B1+xrvEFswq5?= =?us-ascii?Q?wau0yVdy/OomwjQLEqdg3Z49Vd63SzNQ63rh5pqmnhzfNckj7RFjl6xVzECc?= =?us-ascii?Q?Bdxsc21iKqKA8mg00ay/cjjdB5hMahxs9/2Th8EG7F3Onnv2Tg6VcWrwJpEs?= =?us-ascii?Q?gM0qYa/j/GSo5Jb9T5NXakI9H6654FrDBNiVtzUfzGZ3c30EtcmxRdYdJMhL?= =?us-ascii?Q?TpBoJrj0AlnFkx/lSkMOl1eaDAo4pONVH/FcjWB9DOH4rxc4zkA5Jmw0aq++?= =?us-ascii?Q?EAWTsSqZbE6WM4dJFGmoIvST5OEZ/vxhWIkEAozYVgVPiEOBjQW9VOrsmtV3?= =?us-ascii?Q?ZqIqSxhylbh2nlmbZsIXQY+3ecpSTvIMiAzyeGGNTggODpXi1P0FNCNc7zLh?= =?us-ascii?Q?fvhaKx3jfzM2RbW1f0uRc8ChEEMKDhguoPj5emH20epy4HM6Gt/69YJNYLBJ?= =?us-ascii?Q?bx8YIpWjVfPIgQfZT33d6eRCg5IGmUAFdwa5T/WRYDbwVXFilXE8HvzXgeJV?= =?us-ascii?Q?3RqZsxevrQauTLSe03XhJbKvw6Oln3LKoju/3c6X19FmQUryDsAYp179ZLVZ?= =?us-ascii?Q?AT5Xbw8rJncNDAS6DfVr47egIm2ghDpP2P2klpyD9PWE3SSJp5w3p0Jmrj7x?= =?us-ascii?Q?GHI5RdRx0/oj+20xtNWQjfMmItWvyWgSDK8KmvbD6LF24VnOOqlAl3tIh8u5?= =?us-ascii?Q?Qgxcb+jrORyTrkSlCghSHV24KOswK5sBK+CLZgWmEmCFj8UBgzh/c8PHw1Ex?= =?us-ascii?Q?fbmwXg79YgWPhoy3OKH462a9chuRX1aCTxj6G02ls4wRvZcPyIZjhZ1rfqPQ?= =?us-ascii?Q?oVn9w9V3grRAf3HzizW96d/QBwb/CATln94O?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2025 12:35:20.8979 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9146b65f-0226-400e-a832-08dd9ead46c3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002313.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8500 Content-Type: text/plain; charset="utf-8" Since current IBS OP PMU does not have the capability to tag only load/ stores instructions, tools like perf mem/c2c ends up recording lots of unwanted samples. So, introduce a load/store software filter in the IBS OP PMU: ibs_op/swfilt=3D1,ldop=3D1/ --> Only load samples ibs_op/swfilt=3D1,stop=3D1/ --> Only store samples ibs_op/swfilt=3D1,ldop=3D1,stop=3D1/ --> Load OR store samples Other HW or SW filters in combination with this ldst filter are logical AND. For ex: ibs_op/swfilt=3D1,ldop=3D1,stop=3D1/u is "privilege =3D=3D userspace && (ldop =3D=3D 1 || stop =3D=3D 1)" ibs_op/swfilt=3D1,ldop=3D1,stop=3D1,l3missonly=3D1/ is "l3missonly =3D=3D 1 && (ldop =3D=3D 1 || stop =3D=3D 1)" An alternate approach is mem_op BPF filter: perf record --filter "mem_op =3D=3D load || mem_op =3D=3D store" ... However, there are few issues with it: o BPF filter is called after preparing entire perf sample. If the sample does not satisfy the filtering criteria, all the efforts of preparing perf sample gets wasted. o BPF filter requires root privilege. Signed-off-by: Ravi Bangoria --- arch/x86/events/amd/ibs.c | 73 +++++++++++++++++++++++++++++++++++--- include/linux/perf_event.h | 14 ++++++++ 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c index 0252b7ea8bca..d18ce6464b27 100644 --- a/arch/x86/events/amd/ibs.c +++ b/arch/x86/events/amd/ibs.c @@ -31,6 +31,10 @@ static u32 ibs_caps; /* attr.config2 */ #define IBS_SW_FILTER_MASK 1 =20 +/* attr.config1 */ +#define IBS_LDOP_FILTER_MASK (1UL << 12) +#define IBS_STOP_FILTER_MASK (1UL << 13) + /* * IBS states: * @@ -308,6 +312,11 @@ static int perf_ibs_init(struct perf_event *event) event->attr.exclude_hv)) return -EINVAL; =20 + if (!(event->attr.config2 & IBS_SW_FILTER_MASK) && + (event->attr.config1 & (IBS_LDOP_FILTER_MASK | + IBS_STOP_FILTER_MASK))) + return -EINVAL; + ret =3D validate_group(event); if (ret) return ret; @@ -624,6 +633,10 @@ static struct attribute_group empty_caps_group =3D { PMU_FORMAT_ATTR(rand_en, "config:57"); PMU_FORMAT_ATTR(cnt_ctl, "config:19"); PMU_FORMAT_ATTR(swfilt, "config2:0"); +PMU_FORMAT_ATTR(ldop, "config1:12"); /* IBS_LDOP_FILTER_MASK */ +PMU_FORMAT_ATTR(stop, "config1:13"); /* IBS_STOP_FILTER_MASK */ +PMU_CAP_ATTR(swfilt_ldst, "1"); + PMU_EVENT_ATTR_STRING(l3missonly, fetch_l3missonly, "config:59"); PMU_EVENT_ATTR_STRING(l3missonly, op_l3missonly, "config:16"); PMU_EVENT_ATTR_STRING(ldlat, ibs_op_ldlat_format, "config1:0-11"); @@ -724,6 +737,8 @@ cnt_ctl_is_visible(struct kobject *kobj, struct attribu= te *attr, int i) =20 static struct attribute *op_attrs[] =3D { &format_attr_swfilt.attr, + &format_attr_ldop.attr, + &format_attr_stop.attr, NULL, }; =20 @@ -737,11 +752,21 @@ static struct attribute *op_l3missonly_attrs[] =3D { NULL, }; =20 +static struct attribute *op_attrs_caps[] =3D { + &cap_attr_swfilt_ldst.attr, + NULL, +}; + static struct attribute_group group_op_formats =3D { .name =3D "format", .attrs =3D op_attrs, }; =20 +static struct attribute_group group_op_caps =3D { + .name =3D "caps", + .attrs =3D op_attrs_caps, +}; + static struct attribute *ibs_op_ldlat_format_attrs[] =3D { &ibs_op_ldlat_format.attr.attr, NULL, @@ -761,7 +786,7 @@ static struct attribute_group group_op_l3missonly =3D { =20 static const struct attribute_group *op_attr_groups[] =3D { &group_op_formats, - &empty_caps_group, + &group_op_caps, NULL, }; =20 @@ -1148,13 +1173,23 @@ static bool perf_ibs_is_mem_sample_type(struct perf= _ibs *perf_ibs, PERF_SAMPLE_PHYS_ADDR); } =20 +static bool perf_ibs_ld_st_filter_event(struct perf_ibs *perf_ibs, + struct perf_event *event) +{ + return perf_ibs =3D=3D &perf_ibs_op && + (event->attr.config2 & IBS_SW_FILTER_MASK) && + (event->attr.config1 & (IBS_LDOP_FILTER_MASK | + IBS_STOP_FILTER_MASK)); +} + static int perf_ibs_get_offset_max(struct perf_ibs *perf_ibs, struct perf_event *event, int check_rip) { if (event->attr.sample_type & PERF_SAMPLE_RAW || perf_ibs_is_mem_sample_type(perf_ibs, event) || - perf_ibs_ldlat_event(perf_ibs, event)) + perf_ibs_ldlat_event(perf_ibs, event) || + perf_ibs_ld_st_filter_event(perf_ibs, event)) return perf_ibs->offset_max; else if (check_rip) return 3; @@ -1189,6 +1224,32 @@ static bool perf_ibs_is_kernel_br_target(struct perf= _event *event, op_data.op_brn_ret && kernel_ip(br_target)); } =20 +/* + * ibs_op/swfilt=3D1,ldop=3D1/ --> Only load samples + * ibs_op/swfilt=3D1,stop=3D1/ --> Only store samples + * ibs_op/swfilt=3D1,ldop=3D1,stop=3D1/ --> Load OR store samples + */ +static bool perf_ibs_ld_st_filter(struct perf_event *event, + struct perf_ibs_data *ibs_data) +{ + union ibs_op_data3 op_data3; + + if (!(event->attr.config1 & (IBS_LDOP_FILTER_MASK | + IBS_STOP_FILTER_MASK))) { + return false; + } + + op_data3.val =3D ibs_data->regs[ibs_op_msr_idx(MSR_AMD64_IBSOPDATA3)]; + + if ((event->attr.config1 & IBS_LDOP_FILTER_MASK) && op_data3.ld_op) + return false; + + if ((event->attr.config1 & IBS_STOP_FILTER_MASK) && op_data3.st_op) + return false; + + return true; +} + static bool perf_ibs_swfilt_discard(struct perf_ibs *perf_ibs, struct perf= _event *event, struct pt_regs *regs, struct perf_ibs_data *ibs_data, int br_target_idx) @@ -1196,9 +1257,12 @@ static bool perf_ibs_swfilt_discard(struct perf_ibs = *perf_ibs, struct perf_event if (perf_exclude_event(event, regs)) return true; =20 - if (perf_ibs !=3D &perf_ibs_op || !event->attr.exclude_kernel) + if (perf_ibs !=3D &perf_ibs_op) return false; =20 + if (!event->attr.exclude_kernel) + goto ldst_filter; + if (perf_ibs_is_kernel_data_addr(event, ibs_data)) return true; =20 @@ -1206,7 +1270,8 @@ static bool perf_ibs_swfilt_discard(struct perf_ibs *= perf_ibs, struct perf_event perf_ibs_is_kernel_br_target(event, ibs_data, br_target_idx)) return true; =20 - return false; +ldst_filter: + return perf_ibs_ld_st_filter(event, ibs_data); } =20 static void perf_ibs_phyaddr_clear(struct perf_ibs *perf_ibs, diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 0069ba6866a4..dedb92d5cd61 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -1998,6 +1998,20 @@ _name##_show(struct device *dev, \ \ static struct device_attribute format_attr_##_name =3D __ATTR_RO(_name) =20 +#define PMU_CAP_ATTR_SHOW(_name, _cap) \ +static ssize_t \ +_name##_show(struct device *dev, struct device_attribute *attr, \ + char *page) \ +{ \ + BUILD_BUG_ON(sizeof(_cap) >=3D PAGE_SIZE); \ + return sprintf(page, _cap "\n"); \ +} + +#define PMU_CAP_ATTR(_name, _cap) \ + PMU_CAP_ATTR_SHOW(_name, _cap) \ + \ +static struct device_attribute cap_attr_##_name =3D __ATTR_RO(_name) + /* Performance counter hotplug functions */ #ifdef CONFIG_PERF_EVENTS int perf_event_init_cpu(unsigned int cpu); --=20 2.43.0 From nobody Tue Dec 16 14:37:27 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2068.outbound.protection.outlook.com [40.107.243.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DBB4221FBD; Thu, 29 May 2025 12:35:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522130; cv=fail; b=aacwrd/tKFUmqTZBKqL2cJ9ZyyxZOSQ70n33TyXZpiVAwbMYUwktedXtejcJ6lYqDQ6X0rGo5Ck54fV0CXTUziknmyZ8ijAIzWVHp/9B4AL6juf082Y/lSZBOYdvcD7vxs5py6g4ZJTeqR7fcd1VVpSXSirRR0+vFgm5BSJuirw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522130; c=relaxed/simple; bh=CDEwa6S6Yy9Dx21xHWoufb/SD4PFv2OVICg5VzjDm/Q=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fqmjsmgDR26sOyjiDFfbcBHAYISL9kbaOEnGyiZIgK2JYRSHlLe4Apw4F8PTWL8auiMuAFziinGg9WwDP7xmhrIEzBZ42iCclJvSmppwoRArBC87UVnIl9dDRuOWW908tFzYKpopWPqPeFPP3K1ovn3Z504nNtW3ZGiMm0knrsc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=OvZ9NsvZ; arc=fail smtp.client-ip=40.107.243.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="OvZ9NsvZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QZsbkUT/Rc7MAJeJZS4ImOoGSYCA8TunCX6JEkdwPmINNeRs3TaX3z43G/hdbtvvdsj//auFWoYSD034jh379NRngxlxQwsRuCHNGjLaVRdj/Ailjiwc2PfZW7pEdXcYdJoN1vHlzqQVpSS00SNs7MWyNcvzAyvnTXCqejOFEb2jzSICMNZtq/MsqTF05fAoYqA3lPlsUjMVWilV6LIojv4V0JQseUI2TOFR8etITKhtEw3M3ZfadQWA0mW/aYi1BRxQs06ftD24Ou5/dMQi6txXHltRuFJzvjLMsyhDpSteHdz72TlEL50g5JMHOxR2b/LZnh6WJOY2WL2b8IZCqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IsBI23w5tcmycbwOoEAg1O1LjHvswzN2cb8YHXf3Qc0=; b=uvHEfF2dwaRvMLab+vAEKfgiOjjGOcsfkjseDl+xRpgLM6ahVTnxoUlKHjHy391Ci5jYo5suCMfFqoxrnY85Utpr0wUDYkYRX36E/OW7AA+49vnqWtspnINIucg0ToV1zOCf42razI1gCOJf2Bb81kcEbjCUrRdpx62yDD3PYubGZw6XHPAqvhuns3IJ+L6O7I8qY2OwulNSmiuzkafnh/5zgvLfFOKVNHzoZaA3QvtUsOW1387qZFiyS4VMg+8ncxrbkddNlOLjRwUhW83z/Q+LYE26+R8Z0Hw3GvjxhjGBazDX3jPlO9bqfpGQTHyh4ogwaJcXlKhpx6wHUDDm0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IsBI23w5tcmycbwOoEAg1O1LjHvswzN2cb8YHXf3Qc0=; b=OvZ9NsvZw3wLqDVXtJL6hVH1KDUnpSYwzHIHTGwz5D+1bX4XxYH5Hsqpo13LfneVvsPLN3NXWeS8buL0X6nPWPf1uD0WofCsDDV2F+sYMjlu1iBUAbbDYq2+oNqeZkPPJLLKkhV3Sm6V6AS480X3YuL91LE0i+ZIZO/835KZv9c= Received: from MW4PR03CA0133.namprd03.prod.outlook.com (2603:10b6:303:8c::18) by MN2PR12MB4424.namprd12.prod.outlook.com (2603:10b6:208:26a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.21; Thu, 29 May 2025 12:35:26 +0000 Received: from SJ1PEPF00002312.namprd03.prod.outlook.com (2603:10b6:303:8c:cafe::4e) by MW4PR03CA0133.outlook.office365.com (2603:10b6:303:8c::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.19 via Frontend Transport; Thu, 29 May 2025 12:35:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF00002312.mail.protection.outlook.com (10.167.242.166) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8769.18 via Frontend Transport; Thu, 29 May 2025 12:35:25 +0000 Received: from BLR-L-RBANGORI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 29 May 2025 07:35:20 -0500 From: Ravi Bangoria To: Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim CC: Ravi Bangoria , Ingo Molnar , Stephane Eranian , Ian Rogers , "Kan Liang" , James Clark , "Leo Yan" , Joe Mario , , , "Santosh Shukla" , Ananth Narayan , Sandipan Das Subject: [PATCH 2/4] perf mem/c2c amd: Wire IBS OP PMU load/store SW filter Date: Thu, 29 May 2025 12:34:54 +0000 Message-ID: <20250529123456.1801-3-ravi.bangoria@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250529123456.1801-1-ravi.bangoria@amd.com> References: <20250529123456.1801-1-ravi.bangoria@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002312:EE_|MN2PR12MB4424:EE_ X-MS-Office365-Filtering-Correlation-Id: 41d5ea6b-c451-4be7-9902-08dd9ead4980 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|7416014|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+qGY7q4Ol31UN3zbgx2C945QMiz08qri6yuHTuGeRQp1T7b3LKYJqpXOYJWr?= =?us-ascii?Q?lSQIFDuYYNPz7TfHEyzMxu0KnInWYiWI1jeN0o8KYL5tAg/RpeRR2vGTpSvn?= =?us-ascii?Q?T2puWVyCseyEmrdlutao785NYL9P3+1JMk4zn50JOlg73Cfa1uj0mdSxpFt4?= =?us-ascii?Q?mw88YZdaA+vRHD6CyOU2tCWVpnhZCCdQE2JrMCuWiLi4XUFrnNK2CYt7A8fH?= =?us-ascii?Q?gyxhhA9PdsK7FDwtOkNdkYEaHmXIZRhXkfbr/SkEYWzIzleb77AKFiCct/dh?= =?us-ascii?Q?SAXi99fMW/wxfHI1FORWADNAjQq04xzaAqxxej6YhPJ48SPDrS2zcM71X/4L?= =?us-ascii?Q?yTiKNeIII5UlZZaF/z2gugcuF+VHt8wmvTRkSDrciTXn4UVe6sdEjS7M4Hc5?= =?us-ascii?Q?sVqomZ30S1i90BtqK61odRqRR3x12xAo/AAUFmhctdDGgkGwkPUgng/q38OA?= =?us-ascii?Q?oyh8MWhlA9FeiDeQliZkdGZO2R2dv83Uu8yVrlae/y5EwG/dqmvIZRQ8Q3xK?= =?us-ascii?Q?I0XwXd3ToN+58l+Z2gpeAL8lMvO9l3AbilmydeKXvY4X8Pk65EMuURuMG0Lc?= =?us-ascii?Q?Oltu2m2NfIiBg1M65hgfGhDWsyLanpIf9draJSUSvEZUgvnC5tHNw9oOX1h3?= =?us-ascii?Q?uCy72DXjAGOgKtrKVqLOt9Meju3EgPZytDkraGIiVZxzjYpDua3gQe0kMo5T?= =?us-ascii?Q?sXAUl4hLWtlLY5HSQQRipKu58IYNX4Nx7hG6AdDV/p3eM1LSHcXHczu9BSEa?= =?us-ascii?Q?H19xS+zQunSwWb7S6uKTGydHcNOlDZTdcG8TtKaShp5aqwMIOm5+ro6FI0G5?= =?us-ascii?Q?GNgg1ypqwjtM3RIW07EN5Inmdi+BNoZ69EIr95tS9lRkaC5VU5w2EixqULA8?= =?us-ascii?Q?NYlts/+SwLn/suM89zGZn+sWkiP9QfqQkQCUtc7xMx8JHEP8ixF9sbPb3n7m?= =?us-ascii?Q?xEeOccf+LE4Pk+Baa+LoV1a9Co21nFYZqfTia9kQ83zPp+6L/YBzB+0O0bT8?= =?us-ascii?Q?4U0eDyg5BD90+Dy46KvVtgwySp2arAqtGg7J129gukVrwXDudOYTcsu7SWam?= =?us-ascii?Q?ANyhogzNVzynMUkXmscTQxMdKNQifUVzbfzanMeusQAfJj3n5ZFRv9VS5t8/?= =?us-ascii?Q?MjSxfkduz//sYJbkXtyxBhV+x7WDPmFwM23vBKQ9Zpinbt876hdjeyGZXbYd?= =?us-ascii?Q?feKEsfuStj5U+agppywNEuhxUmIIPC4cZnFDV+bem+jYBhqVlYOuzpzau9m9?= =?us-ascii?Q?72mRrl9rWXlBEpvKsxKqp/62NG0GcTQgYEvb5JQW4VBUVxlFCxHNkGMt90Ki?= =?us-ascii?Q?qHDTLkd7K4fpNk+H6ec5LWpTGyTzI5yc+Ead1sNisMa8isnfNXBjTpDX+L7L?= =?us-ascii?Q?GUPRaF4bM/EnMej4sBuKiuwi9XPHr9kQEWw0wXlg3IMgbiVKaeSVlil0zKja?= =?us-ascii?Q?YJlz4Z67ZbgeMH9dSFC/Y4TUGKeeph7kJXxORBT0rX4+eMWDoqEeOhyCZo+H?= =?us-ascii?Q?Ejveszi3E0WpqxJ2YgdL08P/ZydLNKeX5voR?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(7416014)(376014)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2025 12:35:25.4915 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 41d5ea6b-c451-4be7-9902-08dd9ead4980 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002312.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4424 Content-Type: text/plain; charset="utf-8" Currently, perf mem/c2c tools on AMD records ibs_op// pmu event, which has no inherent load/store filtering capability. But with the addition of a SW based load/store filtering capability in IBS OP PMU, perf mem/ c2c tools can now record load-only, store-only and load-store-only events. Wire them accordingly. Before: $ perf mem record -v -e list mem-ldst ibs_op// : available After: $ perf mem record -v -e list mem-load ibs_op/swfilt=3D1,ldop=3D1/ : available mem-store ibs_op/swfilt=3D1,stop=3D1/ : available mem-ldst ibs_op/swfilt=3D1,ldop=3D1,stop=3D1/: available Signed-off-by: Ravi Bangoria --- tools/perf/arch/x86/util/mem-events.c | 12 ++++++++++ tools/perf/arch/x86/util/mem-events.h | 2 ++ tools/perf/arch/x86/util/pmu.c | 17 +++++++++----- tools/perf/tests/shell/test_data_symbol.sh | 26 +++++++++++++--------- tools/perf/util/mem-events.c | 2 +- 5 files changed, 42 insertions(+), 17 deletions(-) diff --git a/tools/perf/arch/x86/util/mem-events.c b/tools/perf/arch/x86/ut= il/mem-events.c index b38f519020ff..0a034317b55c 100644 --- a/tools/perf/arch/x86/util/mem-events.c +++ b/tools/perf/arch/x86/util/mem-events.c @@ -32,3 +32,15 @@ struct perf_mem_event perf_mem_events_amd_ldlat[PERF_MEM= _EVENTS__MAX] =3D { E(NULL, NULL, NULL, false, 0), E("mem-ldst", "%s/ldlat=3D%u/", NULL, true, 0), }; + +struct perf_mem_event perf_mem_events_amd_swfilt[PERF_MEM_EVENTS__MAX] =3D= { + E("mem-load", "%s/swfilt=3D1,ldop=3D1/", NULL, false, 0), + E("mem-store", "%s/swfilt=3D1,stop=3D1/", NULL, false, 0), + E("mem-ldst", "%s/swfilt=3D1,ldop=3D1,stop=3D1/", NULL, false, 0), +}; + +struct perf_mem_event perf_mem_events_amd_ldlat_swfilt[PERF_MEM_EVENTS__MA= X] =3D { + E("mem-load", "%s/ldlat=3D%u,swfilt=3D1,ldop=3D1/", NULL, true, 0), + E("mem-store", "%s/swfilt=3D1,stop=3D1/", NULL, false, 0), + E("mem-ldst", "%s/ldlat=3D%u,swfilt=3D1,ldop=3D1,stop=3D1/", NULL, true, = 0), +}; diff --git a/tools/perf/arch/x86/util/mem-events.h b/tools/perf/arch/x86/ut= il/mem-events.h index 11e09a256f5b..bde1e51f639c 100644 --- a/tools/perf/arch/x86/util/mem-events.h +++ b/tools/perf/arch/x86/util/mem-events.h @@ -7,5 +7,7 @@ extern struct perf_mem_event perf_mem_events_intel_aux[PERF= _MEM_EVENTS__MAX]; =20 extern struct perf_mem_event perf_mem_events_amd[PERF_MEM_EVENTS__MAX]; extern struct perf_mem_event perf_mem_events_amd_ldlat[PERF_MEM_EVENTS__MA= X]; +extern struct perf_mem_event perf_mem_events_amd_swfilt[PERF_MEM_EVENTS__M= AX]; +extern struct perf_mem_event perf_mem_events_amd_ldlat_swfilt[PERF_MEM_EVE= NTS__MAX]; =20 #endif /* _X86_MEM_EVENTS_H */ diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c index 58113482654b..34f25ec9cca6 100644 --- a/tools/perf/arch/x86/util/pmu.c +++ b/tools/perf/arch/x86/util/pmu.c @@ -271,7 +271,7 @@ static void gnr_uncore_cha_imc_adjust_cpumask_for_snc(s= truct perf_pmu *pmu, bool =20 void perf_pmu__arch_init(struct perf_pmu *pmu) { - struct perf_pmu_caps *ldlat_cap; + struct perf_pmu_caps *ldlat_cap, *swfilt_ldst_cap; =20 #ifdef HAVE_AUXTRACE_SUPPORT if (!strcmp(pmu->name, INTEL_PT_PMU_NAME)) { @@ -295,11 +295,18 @@ void perf_pmu__arch_init(struct perf_pmu *pmu) return; =20 ldlat_cap =3D perf_pmu__get_cap(pmu, "ldlat"); - if (!ldlat_cap || strcmp(ldlat_cap->value, "1")) - return; + swfilt_ldst_cap =3D perf_pmu__get_cap(pmu, "swfilt_ldst"); + + if (ldlat_cap && !strcmp(ldlat_cap->value, "1")) { + perf_mem_events__loads_ldlat =3D 0; =20 - perf_mem_events__loads_ldlat =3D 0; - pmu->mem_events =3D perf_mem_events_amd_ldlat; + if (swfilt_ldst_cap && !strcmp(swfilt_ldst_cap->value, "1")) + pmu->mem_events =3D perf_mem_events_amd_ldlat_swfilt; + else + pmu->mem_events =3D perf_mem_events_amd_ldlat; + } else if (swfilt_ldst_cap && !strcmp(swfilt_ldst_cap->value, "1")) { + pmu->mem_events =3D perf_mem_events_amd_swfilt; + } } else { if (pmu->is_core) { if (perf_pmu__have_event(pmu, "mem-loads-aux")) diff --git a/tools/perf/tests/shell/test_data_symbol.sh b/tools/perf/tests/= shell/test_data_symbol.sh index d61b5659a46d..e2156c9a4bc9 100755 --- a/tools/perf/tests/shell/test_data_symbol.sh +++ b/tools/perf/tests/shell/test_data_symbol.sh @@ -57,7 +57,7 @@ echo "Recording workload..." is_amd=3D$(grep -E -c 'vendor_id.*AuthenticAMD' /proc/cpuinfo) if (($is_amd >=3D 1)); then mem_events=3D"$(perf mem record -v -e list 2>&1)" - if ! [[ "$mem_events" =3D~ ^mem\-ldst.*ibs_op/(.*)/.*available ]]; then + if ! [[ "$mem_events" =3D~ mem\-ldst.*ibs_op/(.*)/.*available ]]; then echo "ERROR: mem-ldst event is not matching" exit 1 fi @@ -65,18 +65,22 @@ if (($is_amd >=3D 1)); then # --ldlat on AMD: # o Zen4 and earlier uarch does not support ldlat # o Even on supported platforms, it's disabled (--ldlat=3D0) by default. - ldlat=3D${BASH_REMATCH[1]} - if [[ -n $ldlat ]]; then - if ! [[ "$ldlat" =3D~ ldlat=3D0 ]]; then - echo "ERROR: ldlat not initialized to 0?" - exit 1 + format=3D${BASH_REMATCH[1]} + if [[ $format =3D~ ldlat=3D(\d*) ]]; then + ldlat=3D${BASH_REMATCH[1]} + if [[ -n $ldlat ]]; then + if ! [[ "$ldlat" =3D~ ldlat=3D0 ]]; then + echo "ERROR: ldlat not initialized to 0?" + exit 1 + fi + + mem_events=3D"$(perf mem record -v --ldlat=3D150 -e list 2>&1)" + if ! [[ "$mem_events" =3D~ ^mem-ldst.*ibs_op/ldlat=3D150/.*available ]]= ; then + echo "ERROR: --ldlat not honored?" + exit 1 + fi fi =20 - mem_events=3D"$(perf mem record -v --ldlat=3D150 -e list 2>&1)" - if ! [[ "$mem_events" =3D~ ^mem-ldst.*ibs_op/ldlat=3D150/.*available ]];= then - echo "ERROR: --ldlat not honored?" - exit 1 - fi fi =20 # perf mem/c2c internally uses IBS PMU on AMD CPU which doesn't diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c index 80b3069427bc..24afdd12bed2 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -93,7 +93,7 @@ static const char *perf_pmu__mem_events_name(struct perf_= pmu *pmu, int i, if (i =3D=3D PERF_MEM_EVENTS__LOAD || i =3D=3D PERF_MEM_EVENTS__LOAD_STOR= E) { if (e->ldlat) { if (!e->aux_event) { - /* ARM and Most of Intel */ + /* ARM, AMD and Most of Intel */ scnprintf(buf, buf_size, e->name, pmu->name, perf_mem_events__loads_ldlat); --=20 2.43.0 From nobody Tue Dec 16 14:37:27 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2069.outbound.protection.outlook.com [40.107.220.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9979D225A2C; Thu, 29 May 2025 12:35:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.69 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522136; cv=fail; b=AF74Mv+vv5181ADBcTRig37lHoMn1KnOorEMHp3xwbaKE2ydMpTqKq6bZnRczzqiw3CoAFwgDvgBNo1tX/oLkMakZSSbuToRndKDqhmSs0ZEKK7XLEN6CUb/GrRRbvuVTSV/SF4wd96MXuAhR0ljBeuQu6byA/LlUapMp/jgBFU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522136; c=relaxed/simple; bh=r/A0hPlikeGJaW9Kqr/FNsYE5zSTLsbJywbRmbCsFwY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SDV7qLopn4WuQR0NN/wwr/cWOzdlM0825eGB1WJmuPz9/7LbiLuiizRec+B+EMD3U2JrEHwEcLzPS+8pUsn5FrqHEKEnT728AZcVAf1xpZmDd9klNMHzuSbn1SLwrXQgXy7ppStw1ZFoz2lNHks847AGABbJiycjbGePZ9nQZMM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=R9CZVHkg; arc=fail smtp.client-ip=40.107.220.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="R9CZVHkg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nVZT1MYPueaW1eDj7lmau4jHPyBeOMO2XKqC055Lp/8Y6HBmoXVgb6kzPauwhMjZhRt3wOxeiDr2vlKv0FpEf71A9gApysPRNXOnaSb4ghMmUQCuce6/UvINCuNvbYnF82sa7kLHq/PGFVxofe7ci+5FhLpH0exMsDiDY2NKORu6ONO/wYcpzI/Fay//lbziJsflIUpMPlT8FXEGGrSTZ41F/OERicp9/Nfm8W1UujRBG1wsM1WnUkhXp7vMFHLSlRgSL0tV7JOe9LjKRpe9zCaa03ms5pzap+cEngiS7wREWlsrr4vFFsjZ8YHoeqZqV5TmgmRGJKqtEV1UbpajBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tp7FFhhUlw+PBwU9pm8ZkVDOkQGDtuCiHmNblgHOLUs=; b=wLe2rFuAHtFimDe4Od/TpOPy5lPpDKfPD0fD78qs0vMa4/+0gTTyaVXbrg4tFgM232nQc1XoGsEpEZ/bgrxoEuY9ZcgwE78OKLv4aPaiKVEbxbmMgeJYp7Tm4xSzNNIIYkkRcjUMTwQTkMX5SJG5zAtYVmTQxmzxB0CakOamP4aIrU/+BaJmALkMzdxyNAVB1uD5A5EVpi4r9WlUrlkVMsNlhPW8XG38aMMrSo58kzGKJqbYHbiVu62L/4OtWVc0ZpTnhzJ7qK2W4SdiobEXPbMAJXShk4hhSocFDpz6sbY2Vzz+t5ZKnBL6pOaNoctdgzzxhX16RhSxekr7q++SJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tp7FFhhUlw+PBwU9pm8ZkVDOkQGDtuCiHmNblgHOLUs=; b=R9CZVHkgTJyWY860o8uyNFNOykY5qz/RH+s2Fzx3EXLJNCELguF2qOjMIA5I+9kC0HqKg+aiz6rcVvnWtUmlPnBVUpnmjF4YC1p6OcKuRDw1VtfAOKgLKFAD38V4bDgVHhcjKnyIhLnmkwmdAQd1EI+yOsCKPHdfXdblb90sg4k= Received: from SJ0PR13CA0146.namprd13.prod.outlook.com (2603:10b6:a03:2c6::31) by CY5PR12MB6252.namprd12.prod.outlook.com (2603:10b6:930:20::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.27; Thu, 29 May 2025 12:35:31 +0000 Received: from SJ1PEPF00002311.namprd03.prod.outlook.com (2603:10b6:a03:2c6:cafe::6e) by SJ0PR13CA0146.outlook.office365.com (2603:10b6:a03:2c6::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.16 via Frontend Transport; Thu, 29 May 2025 12:35:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF00002311.mail.protection.outlook.com (10.167.242.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8769.18 via Frontend Transport; Thu, 29 May 2025 12:35:30 +0000 Received: from BLR-L-RBANGORI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 29 May 2025 07:35:25 -0500 From: Ravi Bangoria To: Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim CC: Ravi Bangoria , Ingo Molnar , Stephane Eranian , Ian Rogers , "Kan Liang" , James Clark , "Leo Yan" , Joe Mario , , , "Santosh Shukla" , Ananth Narayan , Sandipan Das Subject: [PATCH 3/4] perf test amd: Add IBS load/store swfilt tests Date: Thu, 29 May 2025 12:34:55 +0000 Message-ID: <20250529123456.1801-4-ravi.bangoria@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250529123456.1801-1-ravi.bangoria@amd.com> References: <20250529123456.1801-1-ravi.bangoria@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002311:EE_|CY5PR12MB6252:EE_ X-MS-Office365-Filtering-Correlation-Id: 100f8b31-2834-4748-a16f-08dd9ead4c42 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AmyZwo1HUG1EqspM24N8BvnGIHsJIj7QlvePRvCBAHep24DzqDkEzZzm9BJ/?= =?us-ascii?Q?NkcqIoLiC4NGCH7kzKhyZQb/2YXvou9Q2lvHQ7XrImUJXlW5fWvKTC0jtEvQ?= =?us-ascii?Q?UyESvpj+J3CvISjfWx6+8G0KFGuHjERVgEN/wJ9WePnH4V5E4+Fjb9a+NDCD?= =?us-ascii?Q?KuE1hQX6xb4SHHSh/Nbyxa2HngOPVplMlmF4lUS2qjarydvtBvd9zILO5Jjg?= =?us-ascii?Q?6EkRvCIF55KOXD940VXfZCsBKdQoeiiv0qQ/NV7/KYaDo6SFsiGh1DOAHEhO?= =?us-ascii?Q?hM2w1/xmM5wQMFXV4DWZntyCEQN2cjawHNsU/innVuJuVh5dwkBmMk5v9mdd?= =?us-ascii?Q?MVCJBFK7hwQRcoYgxBB/tOMe7hDqeESarXCRv1RR0at1T4sZvl2GAmOuPhtt?= =?us-ascii?Q?9yv6MZCflqRTgqfqLeJFik8RvlkeJngaBQx6K7GIf0gbAq7WgpuvCqLDVoA5?= =?us-ascii?Q?3p3c406EnMVkJ9szIjLnP/+W5AfWsBU4mQC0ox+S/iUs925n4Jt3oA1If12+?= =?us-ascii?Q?rHslJ+ItagDgjz9P6qvhRos/Z03hfBSGysEWVQ692+yrdLxmf3qXnTwNe5bd?= =?us-ascii?Q?uv4PXmnHwmFi1EHrCpAvoqqFJ8hXDDSyU0mRJO9Q2CkQ/1xtlpnRXc05N35q?= =?us-ascii?Q?lt729H8C7sz8e1puo/1vG24ieOpxKw90EV3n1dGNE0snh/eXukiWTPyCivSz?= =?us-ascii?Q?yfvj9+dE/VcZ1hyzdhEHXpjt+xW8RNhv6pJCdTJD/+RDSb1q0urDcKyo5Chy?= =?us-ascii?Q?z8pcv1zkgusetYCIva2e9/yJeBULP46D616BgyQB5L6vLlZpty+7QVZGYgnq?= =?us-ascii?Q?84viy/XieQ/Xd9g4hGXA2z2Wn8s2dQGNRNmXiM2UMnTONCHrUbgK6aIp5MBn?= =?us-ascii?Q?t7o+5CvF595HdB4N0/VhAoeBdRH5P6+2GIWYs2+Fn29vBpOzdWDdThABXbuG?= =?us-ascii?Q?+PtX+g3KC6cVVltpVGkmOKnihi+BzKBmLXyQS6+cQIRWhV3iG68ma0DQ/xCZ?= =?us-ascii?Q?hHUJCrDfKeuMp5fCdDXCFnSqpSgrPuTy8R0ZK2D4m0LAkhJcFpq/8ZpzIMUk?= =?us-ascii?Q?U1qSyjUduyqfo7n8d/Zbnm252O23KKjmjMAKwgeImL2ivbzdftMPg9vr24Js?= =?us-ascii?Q?stnIxaBMvrtMjN87iysCUQW1Q/O2O4IDXGicQ0OvP7n2kvYExdfmGoWkbKIW?= =?us-ascii?Q?/BohwvasARAfJwtYkGfmDLQCM/f4v/5MnaiR2b2LpS6mG7l+pBkwS8niDzri?= =?us-ascii?Q?WWkoJI5mrzeuI3PDJfHGNtcFL84BD8lpdD1TwRGVE31LjOyVGzogspOJ9iVG?= =?us-ascii?Q?SWGtWunfaUUL1icDoPeHt5uayl8mSy0oXDkYB0EwI/E0COYm41ZX2k/0g161?= =?us-ascii?Q?JtJYQ6lFmFHD06FyAFcOKpjqnkJb6onNh2paWH4vvSpseVLRchGBG1ilFq/c?= =?us-ascii?Q?yNpTEumyAJRqrLlrlpvOh5GDnTaexK06oBo4RPxYr/8UvNYJaA/vXaq+PK6u?= =?us-ascii?Q?r7vzsqkm8EI+KXyWl3JR8vXAwuV7NFz99GH8?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2025 12:35:30.1183 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 100f8b31-2834-4748-a16f-08dd9ead4c42 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002311.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6252 Content-Type: text/plain; charset="utf-8" Add basic sanity tests for load-only, store-only and load-store-only sampling with IBS OP PMU. Signed-off-by: Ravi Bangoria --- tools/perf/tests/shell/amd-ibs-swfilt.sh | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/perf/tests/shell/amd-ibs-swfilt.sh b/tools/perf/tests/sh= ell/amd-ibs-swfilt.sh index 83937aa687cc..bc052a36a9b4 100755 --- a/tools/perf/tests/shell/amd-ibs-swfilt.sh +++ b/tools/perf/tests/shell/amd-ibs-swfilt.sh @@ -65,3 +65,29 @@ if [ ${user_sample} -ne 0 ]; then echo "[FAIL] unexpected user samples: " ${user_sample} exit 1 fi + +echo "test load/store swfilt" + +# load/store swfil +if [ -f /sys/bus/event_source/devices/ibs_op/caps/swfilt_ldst ]; then + # test load only sampling + non_load_sample=3D$(perf record -e ibs_op/swfilt=3D1,ldop=3D1/ --raw-samp= les -o- perf test -w sqrtloop | perf script -D -i- | grep -c "LdOp 0") + if [ ${non_load_sample} -ne 0 ]; then + echo "[FAIL] unexpected non-load samples: " ${non_load_sample} + exit 1; + fi + + # test store only sampling + non_store_sample=3D$(perf record -e ibs_op/swfilt=3D1,stop=3D1/ --raw-sam= ples -o- perf test -w sqrtloop | perf script -D -i- | grep -c "StOp 0") + if [ ${non_store_sample} -ne 0 ]; then + echo "[FAIL] unexpected non-store samples: " ${non_store_sample} + exit 1; + fi + + # test load/store only sampling + non_load_store_sample=3D$(perf record -e ibs_op/swfilt=3D1,ldop=3D1,stop= =3D1/ --raw-samples -o- perf test -w sqrtloop | perf script -D -i- | grep -= c "LdOp 0 StOp 0") + if [ ${non_load_store_sample} -ne 0 ]; then + echo "[FAIL] unexpected non-load/store samples: " ${non_load_store_sampl= e} + exit 1; + fi +fi --=20 2.43.0 From nobody Tue Dec 16 14:37:27 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2048.outbound.protection.outlook.com [40.107.93.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8ABB224B1B; Thu, 29 May 2025 12:35:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522144; cv=fail; b=I52JgtF4/Fi7SxGTEzAdn4hCZtEwmPFMB1bDZ0vl3Q4oNzqchaiFRc4BA3aKnmU2lCrjhh2J4eHv+ENyEtkHfxBNcL9hmgpwMNGkavwbyDoMkf6XmL0m7f6JAlENZl0RnqyxYUFKqidXt1M/Sp4E5QUwONRO5Or6wuJapOOjgxU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748522144; c=relaxed/simple; bh=8m2dYGOUHlHtbHXKM20enZzd9/uxNZ9OvkWKr7rzQ4Y=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IMeX2HLw7YIVyLLWdAHcZ6aygg9llmkCVXFHeuYOsa/BNMDpe5mwKn1IB/tcMlbIImS0TJWSxoQwyay44S03yOxzckGSWFdZBb8qZXJUSQK2ggD3mpFdDgU5T2R+Oc48DS0ZDtqJA2NjTl+IJi6Ao6uKHjnEPvo+/iFNpFWls4c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=wZcfiB2k; arc=fail smtp.client-ip=40.107.93.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="wZcfiB2k" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bV8Q3qBEEnE/3OuXdmvLdEA0xI2/3O7Lt6wtA/J4Ipb//fwrJgud9JSAiz1xRS+q1pQc4WnoOBsrDlXN+UKC18G3ONRiMqbZKOiwbe2cYOLNbrIaT5fYoSmWxaUv6JFM616/rBAi/C2BgZ++5tse6+empe45T8uwz3KXBTjxqCMJtdBufC2Eexk1r18Xkj2mNkM9IttXLApd/37A6KWVlhm9LVQtOEdYQImSnWrrN26AoIcf78q5ESQgXaDoKQeYIgFNUuVeQIjDcGsDM4nlgBB8J0pNcBm3Mypd4YJr1TcmKfkUMTx5A937+fifyIk1H5rjem97c/8Nj0zyocvx0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DFAlZ/WkEXSqnCgSK1fYbKV/nr0l0cmpVFzf2Zq1NvI=; b=sRPh9Eu8T3JtvQc3wsl+ralliECkQRMXs6HW14LauWBJuF968gLskrbu/bhmRxBek4yOdSs916tpAoStRpMk2D4v9bi0Gcu8fL3Yqj/4KermiWOcgufI7966rQ0zCUq8y7yniIQ/O+1h8WVOXwmB/x+g5lK7dg/z6nAReMraK4kIoym9a3Je5lQ3WbNNmyXOy5GTGLPV/1wFwNPCCcypqGPHLrHGQP9Sn+sf9Zi/UYVACOqD9iMFUWKPeYmKSRJuOEO0Axbdq7zPD+oTPqtakt/uw/u386glrZdD9GasRKcNXHh7yK1NHrGFXcj+VjgpaaBcFgGb0eBvzIEblTjbEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=infradead.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DFAlZ/WkEXSqnCgSK1fYbKV/nr0l0cmpVFzf2Zq1NvI=; b=wZcfiB2k9wXrrFN/8W06+zSJGvtDiBEnlpQMuMrojwlGrFRnKt0HC16Z07kBrw3Uu/kFN9kMWYL7Y0bBlIMxwL478oWbOl4QhVoBvPZJzOTkzAWbzhA0eewk7M6Y1kuGo3PwBoUrIbFTnpnAWZMeenI8qoutd0Twm0HCfJ/IzfM= Received: from SJ0PR05CA0102.namprd05.prod.outlook.com (2603:10b6:a03:334::17) by IA0PR12MB8893.namprd12.prod.outlook.com (2603:10b6:208:484::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8746.30; Thu, 29 May 2025 12:35:35 +0000 Received: from SJ1PEPF00002313.namprd03.prod.outlook.com (2603:10b6:a03:334:cafe::27) by SJ0PR05CA0102.outlook.office365.com (2603:10b6:a03:334::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8769.17 via Frontend Transport; Thu, 29 May 2025 12:35:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ1PEPF00002313.mail.protection.outlook.com (10.167.242.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8769.18 via Frontend Transport; Thu, 29 May 2025 12:35:34 +0000 Received: from BLR-L-RBANGORI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 29 May 2025 07:35:29 -0500 From: Ravi Bangoria To: Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim CC: Ravi Bangoria , Ingo Molnar , Stephane Eranian , Ian Rogers , "Kan Liang" , James Clark , "Leo Yan" , Joe Mario , , , "Santosh Shukla" , Ananth Narayan , Sandipan Das Subject: [PATCH 4/4] perf doc amd: Update perf-amd-ibs man page Date: Thu, 29 May 2025 12:34:56 +0000 Message-ID: <20250529123456.1801-5-ravi.bangoria@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250529123456.1801-1-ravi.bangoria@amd.com> References: <20250529123456.1801-1-ravi.bangoria@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002313:EE_|IA0PR12MB8893:EE_ X-MS-Office365-Filtering-Correlation-Id: fb74c1a6-248b-46ae-d71f-08dd9ead4f13 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|82310400026|36860700013|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Pypg4iiqTONLh3efz2iWa88TggrlsBdlsvdZuVAVvFvzGLi9OI8LFU1ik+BA?= =?us-ascii?Q?DQwYW2LRbbNoHcqt1r9BfiTiOwl99KjyLJqhFnU2U4nmaM3lvB52efWqdkbL?= =?us-ascii?Q?JpCuOaSclwm+ZWF2+iMejND3vYmEDZm/CkBNdGE7lozCvMLkNvXTPrqFVG2d?= =?us-ascii?Q?+4UbbfL/fMjQM+0WLf4iTRw351HnrPw6HHAcTMFczz/7SmR0rIKdE7j6QMfw?= =?us-ascii?Q?emD60zJp3/AvIvvZ0zkIjBgO4FzMD7BrOHmcuiU8mM/ovX0x39gRykw/GkI9?= =?us-ascii?Q?wpMPo5k+4k2xsd06AWjE8GtNoVMxgtRvDYM/vZfGYR1t2B3iXRxv+AEyVpfZ?= =?us-ascii?Q?KzwNTS7HJnQVnquhhhETZfBAZ3eYr/YRbs2TTgYnUQZjG8ewgOiSRieFMSUY?= =?us-ascii?Q?+zLaodUV1DPIxf2n7/mt9wj/m+R1MO3gxiJF0+GpM2g76VkETPj6K/vqXA1/?= =?us-ascii?Q?NdVot+b2Md8T1thw05VIY1pCCt5VJTxKFdUSGZ84hTRcpq8ULpY7FP/AYBNI?= =?us-ascii?Q?zpQlRb7YcixnaN4XvxQNVFV5l7NUcr3vb1BaDTMn5zflEkWBzZeK04awSPvB?= =?us-ascii?Q?YV6a9bwAm/JFuTdeBLYmd1Gpa5o5p8lsl2zgVIl3v/m1s+vqwAgIaxACFtzJ?= =?us-ascii?Q?9BlJ6BB8/mlFJigGyQe6N4X1Y87HJtkS+0JAnL5bk1zvlliOJJv2d3O/8hig?= =?us-ascii?Q?XrsH94pez5ApDjT4DTXXM/1LA6T8C7dsC1TRhlwABDkB25+euIuoHDYThTJ/?= =?us-ascii?Q?yI2mWeX0Ufc/2HHfJMeewPMz/+Px9tdBNHNCniVZlfFbIEsZVr6RildZEads?= =?us-ascii?Q?L7+U7L4c7lppgMctdVAko+mVwrqFuanltX+2FcVrWf/JX73p7Ufo4XIlQ1OF?= =?us-ascii?Q?l0JlMgf7mt+3BVUEcLubxvfJ3YocDDsZ5f+/Q6YAGE9PnUBmIRXxegvHXJ9a?= =?us-ascii?Q?8KDSfvl8ajy7o6ny/KT0+xhxZXttBNrP5ywU+Yf5QoFSSAYAFOkkEUJupN05?= =?us-ascii?Q?iX4y77gbbz2JyQX8a+l9gq4V8DIVcyeDzyIuq+rKli6dJ5YUPTkqCaDWSrr/?= =?us-ascii?Q?JLc/Wq+RSfBPpQehBuIbKDpyF/xBscEpH1mMXkvbSpY6+dH4Cix+HhyB5gSo?= =?us-ascii?Q?3MHD2hyQwsUC3gqLzvaH3TF74s/mUDj7eAnIf0vGAF8wRu0Baz82T/IJHr68?= =?us-ascii?Q?Uf7+l+nataGPt2kWW3sd4pvYcdiq3HzelB2WoEPmauteR+hPeYjSQLZsa2LT?= =?us-ascii?Q?yAu5yjrrKPiHr5ukzij1GUJAnclplvtYdcIzAvodPRF+z/uavrmH7vOLgTb/?= =?us-ascii?Q?s6WKXrxyw7pPx78TtpE8gFIg+4q4lFHwp6NJCdT7vpzTsSO6JEtdrxS4RP9Z?= =?us-ascii?Q?OF09pUQ4dY2+2uFN2S8bAxszeNBaka1aeZ1AOjhO3rSfqqCDekNp4G46q7AT?= =?us-ascii?Q?u4q59qvzGUnR8BXKH360FmMm9ht45dBAQ5jJa5vKwf/qvMEPtpqjb4xdUH2K?= =?us-ascii?Q?H5Kwzs1fSPaglhnXiWr9F+kGu5w6v+d6gG3R+T9tUAwGbrnoHmLObSFmEA?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(82310400026)(36860700013)(13003099007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2025 12:35:34.8355 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fb74c1a6-248b-46ae-d71f-08dd9ead4f13 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002313.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8893 Content-Type: text/plain; charset="utf-8" o Document software filtering capabilities provided by IBS kernel driver. o After recent perf-mem hist updates [1], the perf-mem example command in the perf-amd-ibs man page renders output differently. Unfortunately, there is no way to get the same aggregated output now. So use alternate command that can aggregate and show data at the command level. [1]: https://lore.kernel.org/r/20250430205548.789750-1-namhyung@kernel.org Signed-off-by: Ravi Bangoria --- tools/perf/Documentation/perf-amd-ibs.txt | 72 +++++++++++++++++------ 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/tools/perf/Documentation/perf-amd-ibs.txt b/tools/perf/Documen= tation/perf-amd-ibs.txt index 55f80beae037..a543a68e3c94 100644 --- a/tools/perf/Documentation/perf-amd-ibs.txt +++ b/tools/perf/Documentation/perf-amd-ibs.txt @@ -33,9 +33,6 @@ if IBS is supported by the hardware and kernel. IBS Op PMU supports two events: cycles and micro ops. IBS Fetch PMU suppor= ts one event: fetch ops. =20 -IBS PMUs do not have user/kernel filtering capability and thus it requires -CAP_SYS_ADMIN or CAP_PERFMON privilege. - IBS VS. REGULAR CORE PMU ------------------------ =20 @@ -160,6 +157,38 @@ System-wide profile, fetch ops event, sampling period:= 100000, Random enable =20 etc. =20 +IBS SW FILTERING +---------------- + +IBS PMU driver provides few additional software filtering capabilities. Wh= en +supported, kernel exposes config format through the following files: + + /sys/bus/event_source/devices/ibs_fetch/format/swfilt + /sys/bus/event_source/devices/ibs_op/format/swfilt + +1. Privilege (user/kernel) filtering. IBS PMUs do not support privilege +filtering in hardware so IBS driver supports it as a software filter. + + ibs_op/swfilt=3D1/u --> Only usermode samples + ibs_op/swfilt=3D1/k --> Only kernelmode samples + ibs_fetch/swfilt=3D1/u --> Only usermode samples + ibs_fetch/swfilt=3D1/k --> Only kernelmode samples + + Privilege filtering is always available when "swfilt" is supported. + So, kernel does not expose any separate PMU capability for this. + +2. Load/Store sampling. IBS OP PMU do not support load/store filtering in +hardware, so IBS driver supports it as a software filter. + + ibs_op/swfilt=3D1,ldop=3D1/ --> Only load samples + ibs_op/swfilt=3D1,stop=3D1/ --> Only store samples + ibs_op/swfilt=3D1,ldop=3D1,stop=3D1/ --> Load OR store samples + + Kernel creates following PMU capability file when load/store software + filtering is supported: + + /sys/bus/event_source/devices/ibs_op/caps/swfilt_ldst + PERF MEM AND PERF C2C --------------------- =20 @@ -173,21 +202,28 @@ Below is a simple example of the perf mem tool. A normal perf mem report output will provide detailed memory access profil= e. However, it can also be aggregated based on output fields. For example: =20 - # perf mem report -F mem,sample,snoop - Samples: 3M of event 'ibs_op//', Event count (approx.): 23524876 - Memory access Samples Snoop - N/A 1903343 N/A - L1 hit 1056754 N/A - L2 hit 75231 N/A - L3 hit 9496 HitM - L3 hit 2270 N/A - RAM hit 8710 N/A - Remote node, same socket RAM hit 3241 N/A - Remote core, same node Any cache hit 1572 HitM - Remote core, same node Any cache hit 514 N/A - Remote node, same socket Any cache hit 1216 HitM - Remote node, same socket Any cache hit 350 N/A - Uncached hit 18 N/A + # perf mem report -s comm,mem -H --stdio + Overhead Samples Command / Memory access + ......................... .......................................... + 66.46% 471728 cc1 + 34.70% 1393 RAM hit + 10.42% 370 Remote node, same socket RAM hit + 6.73% 10239 L2 hit + 5.84% 293953 N/A + 3.26% 163803 L1 hit + 3.16% 1796 L3 hit + 1.29% 95 Remote core, same node Any cache hit + 1.06% 73 Remote node, same socket Any cache hit + 0.00% 6 Uncached hit + 9.45% 44994 sh + 2.60% 131 RAM hit + 2.21% 219 Remote core, same node Any cache hit + 1.89% 190 Remote node, same socket Any cache hit + 1.02% 52 Remote node, same socket RAM hit + 0.72% 785 L2 hit + 0.60% 30149 N/A + 0.27% 13340 L1 hit + ... =20 Please refer to their man page for more detail. =20 --=20 2.43.0