From nobody Mon Sep 28 22:30:52 2026 Received: from LO3P265CU004.outbound.protection.outlook.com (mail-uksouthazon11020086.outbound.protection.outlook.com [52.101.196.86]) (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 1420C3D16F8; Sun, 16 Aug 2026 20:59:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.196.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913973; cv=fail; b=hxItzYSRU068PZI5KUBMCAjkKlFTj+6XFPGrmX6y1uuw8UOVYhAS4zyUVtXPonCzW3C7/Xu7Rc0zXXui0gvExjaIg/2sb9vp0IgAJ43GyHG8YOXZhD3eMv38Tp5TRJnTyI5xkY1nhUcQEhhBaxkFC3/+p6ctkDLLw3GNceRZZbc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913973; c=relaxed/simple; bh=/dT15EN5BtXqC/Kc+JIYw1DdFsMy6ur+RmiE+0tyCcI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=B1YCho8b9JHKFJzAVCJN32EleS87DjFXjUTcqzpG29s+N0x98HM6JytextJ9+CEM6O7iMQOcf5sPg2elywts+bp3mL1s6LBMDHQ5ViMIN4ycxxWLmVRXT4drCP9wksPUGUeNdYSYdTuZF/bcArfmxAbwfNwvNyGQdoCFVXm58Rs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.196.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OgbYfNvhKYhVwuwO8CT6bihl7qhniDLgZxAAgrP+ae0b8T3cHaxPoi6MRBOcanfhJMDNz9IkZ8smR2S/oUcmoZOptoiAhn9iF1pe0OFZ5OlQUh/6C1f3QqSXn+GXpry56Dya8tzohEIOB1yMQ0qgSaiV0fyLG8pShMCXjpN7eX453naH0LB2RjYkyxyYLsc1PFL0HyLxfc0r0itDE2yPTwr5uzwZyC2IuyUJNAHREMBpRwqrH7nJswcELtqUeOSKLi7HdhwIaCLtOI9K38cIlKMWsO+noKlzuYEO9RHF8jpSHi+ysDj77dcBrob/bSgtUZyRnhOkFrpuo4NZXFzCvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=+LY40U8azJZOZVX5dkyDjbVu9cZgdNS5hWk4U+zDsEQ=; b=Q3Qxt+CUPnmeGNxucSeJf02ER2dBWLnxTl/WcwYMnJgOUoXei+/OYdyURxdpPSNP4KR4SEcyU1hCPPK7YWwHHKVgYJGqkU/8NHsav2Quxd1FbB7aiEuk9Vqk8HeW3LnuHdSZZCq9MCNKBtL1RR2VSPX55g55jzj1t2b2hx6VKUZsx05L0KWT8SRvBNtO9bnxZ9K+lIiFLIDuE4z1Zs8Ct27iqTo++xaOYabj3zTtVkvwL8gS1FgQOPJpeFQ/tSVEQREpaYsYy7CBjwK/0Cbd4lU3+c62P5ALZjzJA1st18A6xF+YHTGQ4i6pjQidWLkYNUAI7Tq74Y1Tgz38OWaTmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by LO3P123MB2682.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.16; Sun, 16 Aug 2026 20:59:29 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0315.016; Sun, 16 Aug 2026 20:59:29 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v2 1/4] perf trace: Introduce kernel symbol beautifier for virtual addresses Date: Sun, 16 Aug 2026 16:59:18 -0400 Message-ID: <20260816205921.576365-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260816205921.576365-1-atomlin@atomlin.com> References: <20260816205921.576365-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0271.namprd03.prod.outlook.com (2603:10b6:408:f5::6) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|LO3P123MB2682:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b996971-6f11-41ef-ee4b-08defbd9435b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|6133799003|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 3mq/bn9hS1VUTK6dxPEwE0Du+Ypuf9mBU7l1Mcz6Gva/A82O9gAK0IJ/7mz1nreGojt6ViS32sZjIiHYmZ0Igb+oh46jRjxVOmoLa7Z+8ffADPiHy45HLooJr8vgIrJjnSE/gVz30V8nUsUG6s2h4IvlkbYeUTMjvfEE6LRFMtYjaFgHH/cOYmQwxJ5j1WnYHe3FU/1unBxFgCgabmOlZz/3zbJbqho4h6F/ax7K7FAgZwseZFJeDCcySWspydR4xCVszXYp+I31mkYGpzm1V0dK0rCt1zyMWChjr6EM1HTq34zVkPj+65wj7YQjDzlcZcI84EZkiS/oeL/pF2h0sFePJ0glb9Ivtm/7ERA+/mlmnChiuSryqw+V7loRWJWbASppxENwYeQz93BzCrKAgIr1eX7uQOQGVlIHBWGjMS1ZMaZOf3xkNt0caYuu3y2+/H1vC2wSpVooZ+QRXtjLNWZ0vlP4LMl3fD1vlLEXJjH4Sq9XyzI77s28XU7txtQ6DkMMI/i/0RGTnin+P1A3HTz1qWlvQlsOdL+RTejPob+RHoUFK9JEpAssY51HqIlnxb/P3t1gFzsFoS21mxcE2f7tJY87qGzGFCsAPTGYIHH7Hi/2NxAxSa5XvLk5eAhYxujPxmQpJ06es2+BxIQSyyrzWhI9JMnGB0saqqLOWnE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(6133799003)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vJdKrK+y+sFGcX8y6gFiSzkn+at0FiBG+LFV1Cwcm+dfUj6nySVCJvTCDvot?= =?us-ascii?Q?GUKgQCEXU2XflniTqJ/sihKO3wz0gbJSCWKt7Ex5/LRMsVHo9iSDncyzMmMT?= =?us-ascii?Q?L9Pb85FDgFbywAGdVFyuxAjOroV68h5xs36+Gnz4l3zUynUxL7MzhQIKFM6/?= =?us-ascii?Q?VRM08pDsQwN9IuDcpKuaiBTyFTey26GaYXlzWHT9rY7/AVR05Cp5PGmwL5VE?= =?us-ascii?Q?sZe6Owd1cvYwdZ6X14kHJ9BdIFu7ekczbGHjGi5TlWXq3UlwozziJYM72HjM?= =?us-ascii?Q?/dTbaMTeoQGUBbSnymlcLbfjBzpgG91StSSkHJ2Da0YJbmEhUOk66eW7IPjf?= =?us-ascii?Q?qsN5RUr2LCnIzG5w7VsCtIpeokcAkwvd7A59xAGmu4Nr1ykYZMekB+52KffE?= =?us-ascii?Q?VN7hILiSjWZnq4DegrESkcRZ1hF/yYUaFGP9eg98Rv2EZ/0tNGZBV5W3joaJ?= =?us-ascii?Q?Wpsv8zx8Fqpyuwy6MQHTq4nVCI9r2h4jiipV3bQhDeK1QlgkaPDRnwX9YvZ0?= =?us-ascii?Q?8wwdqQwu3VtQW1UVSKbW8dZJqWMTB+Qkh8j09pHOw+Pv/aeHSdfH2bnR1ul2?= =?us-ascii?Q?uwKdi4GMAAOKV6Y+3zy83wvpJi/QHGekAq2VdLFOQ5GoOTxM+llfK0irnarT?= =?us-ascii?Q?pQcDC6G83/0IhGur/HtrLKpa+ug64IJby7wWzhcSJV9P7d10GdkXfndclryS?= =?us-ascii?Q?Y/nE6XFipuumi+1R8tTJO0jK5Qrxv8fGHsG2uwg2ZHrOcVgstPnJZTIWiR4A?= =?us-ascii?Q?+V+56E6Dy9l1cfFMOFtjaDuzi+Az1jC1Ry20CxGWkESUFa1afk91YDRh3D4P?= =?us-ascii?Q?xf0xeDhBrbmnBc6OKhBlrXLWAEbQlIXx9mgKWv2AutGrFNMmkP+YhawztmD4?= =?us-ascii?Q?omcEf4r5FVzOEnHPdy0bTDORiTtssqmbQYg5bCdgZWEbVNJqBRzuNKttUb11?= =?us-ascii?Q?D0Qxp5UTWEvIR2R6k79zjHUNaUs8fJ6632TX4sa0Dng2j9iLKQ4lLxU++kid?= =?us-ascii?Q?yk9BKKF7/fotYQXO9ve3Px2VIN7/oX2VGwgToOgPAHgVpeK+VkUgx+yd+tqX?= =?us-ascii?Q?hFR6e4cMIycnQC5TYUYoXWHZDWWav2BBvWcqM+J5NZoB5N5aj3T9iE9aBTId?= =?us-ascii?Q?3NzN0xkseVPupsYoGIDJu0EDfhzi2gNSq+mR7lGvkszBA138/TGoMvW2y4k9?= =?us-ascii?Q?/5FPUX7SNs9IWuX2030xiPDx65Za4nz7E6tWIiUbyI/RQ8wZb94/MfqzL4vG?= =?us-ascii?Q?mVjovypox+ew96ILpiKwTeW8DURO3vLp8dYuuAEhn8SxihHVoimpNmQmlyby?= =?us-ascii?Q?v5tm9wKi4JKUCamiyYIMWlbH2jortnr7wTPTBxtenFzHwayTlGpmEjKBYD4r?= =?us-ascii?Q?183EC8fraR65vC5lR3xqd5vbbVseTdP83rqBdUNz1jRn1q27LBaFTFPF+4jv?= =?us-ascii?Q?g/0cPfVWkHHYIL7jPAlk5zw1g1i+3WcP+2q8BSRk+Vr/7EnMvDZ9LC031zLs?= =?us-ascii?Q?7Sc1ImnyrrSJdwfNXvm/afGNdMrHagAEgzcKqLJp0FEF77C4aOBSAlMC3f1C?= =?us-ascii?Q?HGsHiECJDw2zfyUYzaEp0iIYfUPsVmCYyAvcqsF9xw1xmJZUOh7UYkyRrj+h?= =?us-ascii?Q?uoLToP0XY6uE75iEnhGR95udWmEq4VY3ziji7W72AkiFo6/tS7p/z0afXDpA?= =?us-ascii?Q?HlY3hqK9rJKgrCWfSG3lg4MP7qTxtFlBx0VK2z2nyKCoXGtHVcbX1ye+bU81?= =?us-ascii?Q?euZWCFWeqA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b996971-6f11-41ef-ee4b-08defbd9435b X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2026 20:59:29.1457 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MddJF7uNFi0IQm4zjqEewJm1Aeu+job+AYPffPUw5tmA3xapLcBaf9Kt86j0fCQkw014TO6DK4uSd5E2xE7Msw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB2682 Content-Type: text/plain; charset="utf-8" Currently, when 'perf trace' formats tracepoint payloads or system call arguments containing raw kernel virtual addresses (e.g., a work item function pointer work_func_t in workqueue:workqueue_execute_start), it prints them as raw hexadecimal values (e.g., 0xffffffff81234567). This impairs readability when tracing kernel execution flows. Introduce a dedicated kernel symbol beautifier, syscall_arg__scnprintf_ksym (i.e., SCA_KSYM), to resolve kernel virtual addresses to human-readable symbol names and offsets (e.g., "flush_to_ldisc"). The beautifier looks up the virtual address in the machine kernel maps via machine__find_kernel_symbol(). If a valid kernel symbol is found, the symbol name and offset are printed without requiring --libtraceevent; if the address is zero, "NULL" is rendered; otherwise, it gracefully falls back to hexadecimal formatting. Signed-off-by: Aaron Tomlin --- tools/perf/builtin-trace.c | 29 +++++++++++++++++++++++++++++ tools/perf/trace/beauty/beauty.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c3c7f1f85c53..003048946503 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -750,6 +750,35 @@ size_t syscall_arg__scnprintf_ptr(char *bf, size_t siz= e, struct syscall_arg *arg return syscall_arg__scnprintf_hex(bf, size, arg); } =20 +size_t syscall_arg__scnprintf_ksym(char *bf, size_t size, struct syscall_a= rg *arg) +{ + if (arg->val =3D=3D 0) + return scnprintf(bf, size, "NULL"); + + if (arg->trace && arg->trace->host) { + struct map *map =3D NULL; + struct symbol *sym =3D machine__find_kernel_symbol(arg->trace->host, + arg->val, &map); + + if (sym) { + u64 start =3D map__unmap_ip(map, sym->start); + u64 offset =3D arg->val - start; + size_t printed; + + if (offset =3D=3D 0) + printed =3D scnprintf(bf, size, "%s", sym->name); + else + printed =3D scnprintf(bf, size, "%s+0x%" PRIx64, + sym->name, offset); + map__put(map); + return printed; + } + map__put(map); + } + + return syscall_arg__scnprintf_hex(bf, size, arg); +} + size_t syscall_arg__scnprintf_int(char *bf, size_t size, struct syscall_ar= g *arg) { return scnprintf(bf, size, "%d", arg->val); diff --git a/tools/perf/trace/beauty/beauty.h b/tools/perf/trace/beauty/bea= uty.h index 58a3206481ae..0f4801c61a5b 100644 --- a/tools/perf/trace/beauty/beauty.h +++ b/tools/perf/trace/beauty/beauty.h @@ -160,6 +160,9 @@ size_t syscall_arg__scnprintf_hex(char *bf, size_t size= , struct syscall_arg *arg size_t syscall_arg__scnprintf_ptr(char *bf, size_t size, struct syscall_ar= g *arg); #define SCA_PTR syscall_arg__scnprintf_ptr =20 +size_t syscall_arg__scnprintf_ksym(char *bf, size_t size, struct syscall_a= rg *arg); +#define SCA_KSYM syscall_arg__scnprintf_ksym + size_t syscall_arg__scnprintf_int(char *bf, size_t size, struct syscall_ar= g *arg); #define SCA_INT syscall_arg__scnprintf_int =20 --=20 2.55.0 From nobody Mon Sep 28 22:30:52 2026 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021113.outbound.protection.outlook.com [52.101.95.113]) (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 057A43D300F; Sun, 16 Aug 2026 20:59:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.113 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913977; cv=fail; b=s7a0xCJhAQYcQPq+TgLLBmwMkFr/3PBgryxXTm/5WVV2vDYJkdF6oBchOuAgJf3Og43/mx4+MRPvfpoTKSSJAhERhdkWVbTDrYLR5Lb3lQC+TIUb8MEQ8hKsIhoJDp4xSry8YnJmunDiu44ROLE29Ud6BaMV4WZHkvJ/WOIdLMo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913977; c=relaxed/simple; bh=GVgKO3P6BpaGDNnLxbWKGuDzUbD6phg67vMg29khpy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=OpRb57aL1Tza747QrLSIUYT+8oRIqGHg4NVmcdS1i8emgbTUWHGzreKUqoW7OhPEkXO2rVBQlwq1Ik/6J1NtAg7AYxxmITtP3FBGG8UZSjs/5ZrkxnkU0RwZHshjyqDR71HJ+JpnqTj3mRCNAJtqF9AHO/IXkypqorOpVbHPOz4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.95.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XmtMo22gv33e3dIx+nddcGWi6e55ri5kgH4GX8TC2af3BdQqj69OEkdSPPs3FoejMh+eSiOFy86zOAXOLOnfHWH/GIJnOmFJVtMXoi/GBDUNHFYuxFqcmmiU3ObDngLWHo8cVJ5ox/lezDdViy2Dk+zsmHb3lt/gVVfQJRLHu+RI4dOGNkpKrRR76wlNXihWfsn9rnetKcOWXvJJVY0rktmX5kARdmIDLbyM2lXXUl6RMw+4b/U6o74qLNSrSiYSW7p5gUnVs8IUxin+oBP4GsHTuvvgvO/vAOT4RurgHEdCr8IGe+o5sqK2w5bkwQjZhXAAaSeuLOFYDI+1hoLSog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=MlnSBGjxPrFqwflqDgOltvRSK3YSTPL1JmdjVEwN/tE=; b=NFYjLWWLwyt22lkmDFWMTtvmDzz7CTry8FSVKelL1HHUkvsqxc/wZ7jEqsQdzGKtcdfNO297meK/zPKpnUyUb9rK2reQlOpZ37leuGOcEsTFblOUlQrmpZ+xaIX/9dhq6oHziLuRhQ9Bx+ILvbEY8iWu1gUUFa95lcfjjntEDGCgxtm58/sWnqNlNDWSOFRb8hUu9FR+V6f6qM7KDRi+tkk2ADWNUSOVzoh/okJvTKY6dv6yZ0OZWfPJwyGBlkMBC8n4vtlqWko5sSQLD/4W4HRPLgOvbYZM8hpUiH0emb5zhPYY0HpialQbdPz8wtM45eP7OBnLQp2YDdHF6iX7XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by LO3P123MB2682.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.16; Sun, 16 Aug 2026 20:59:32 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0315.016; Sun, 16 Aug 2026 20:59:32 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v2 2/4] perf trace: Auto-assign kernel symbol beautifier to function pointer fields Date: Sun, 16 Aug 2026 16:59:19 -0400 Message-ID: <20260816205921.576365-3-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260816205921.576365-1-atomlin@atomlin.com> References: <20260816205921.576365-1-atomlin@atomlin.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0273.namprd03.prod.outlook.com (2603:10b6:408:f5::8) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|LO3P123MB2682:EE_ X-MS-Office365-Filtering-Correlation-Id: 57975589-771f-4369-7306-08defbd94567 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|6133799003|3023799007|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: QDZMpEJ4Htn+Se5+wqf5p1GnvQwGEGBHJLUKxkSw+iGh5ubsCPrKe6JC9rRlY4XNbUMYAK75JCMa97wZ5NKamP0atvpwMc121LVgvYa8ATx9Cm9M7zf7Kr+5EDEIv1fLpnnF1fUouINV5z2OEajqDtCKK3Y8qUHTudveZTA+MhfdyXcyNf0MKBeFmMYPH9a9OS/k2vrHJX9KIP3saI2+mRHjDY0Rk1pJzZq8SQMPfD9uehnLfPmyskOtCe3nlC0DHM6WgiKI8UtK5bupsPh3P2yivgOt5CxLZqhJ7uBB5L1ABmCzgNPVkunSMP73wwVv7eRrQUSQq29CYHNDcETuKO9mbRGLSNE6Ol29qJZfaNJfuLN1+Yd4T0oHO2u49truHX1wbpOt9iZHjwGYHTKIWD+hHdwNnxK5xUuy05ajmqsJn1v05kyFx+n9WIVGh9WzNdQ+Jzhf4KgrFqBVbgTlFqzgHYEPTWz3uE+P0D0KVB0dA7dcgGqPAM/8mCGxx4VlKQ0QJrekLsBo6FTMjNT/Bs4hdXV/P5nGVcDlw+JTpstrAIwKOnqCMajt8xwF/5zh4CDsCXlevhrfz5iBTFpzPXHn7Tf51+Z5PnTYVIWPj8kAYdRQ8rKkdNMkM5HfZjFxs5Fabts/HnCp8r8kySfssLopDZC0MJ3LTsQ6gBLUa50= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(6133799003)(3023799007)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?STgvTzIrRm9HczRLWWt4NWY4d3pTMXhscUlzeWJsc1dHdGdBd0RGZlF6WU4r?= =?utf-8?B?Sk1mT1BSTG0weFVpbExNemZZTmEyTEEzUSsxSGhhRlNUenRLTmU4WEJocllz?= =?utf-8?B?dUl6OGJTbGU4MGI2eWdIT2hxWVNMZGpOY2lLMXdHQW10S1ozbmxUYitFQ2FX?= =?utf-8?B?c2lmbWEzV2lSa3AwQUh6cW9SY29VanowL3FteEkvWWZJelp5eXJqNHJkS0U4?= =?utf-8?B?ZWNSRXdBOXdNT2VuendCeldzd0VGMjZRUGpKbjZmN0ZXNjAxaGRxbzJ2MmpG?= =?utf-8?B?TFpXZUltVnMxODZkNXZZSFFLczQ1Zndncys5TnlEbk9aQjQ1d1ZlRDRSdzlm?= =?utf-8?B?ckZXaFJxZm9NSmdWbkNVcGlyL3V6Wms1dW55RDMxb1I4V0VHQTRKbVdkb2ht?= =?utf-8?B?Y1NYNDNQUWlOdnR1SE1vSFNsKzhkVnNMMTh1SU9NZVBiWDZYNTRKS1JBMVBj?= =?utf-8?B?NjI3RFRzZ1MyMDhhemV3MTNWc3pxTnBrelVaTjVGWDZQa3c2SlNOU3VDWTRr?= =?utf-8?B?U3FJZERVZ1VzMzV6WnZjcU9NWHI1aUpNMUN5TGtLQ3o2QkVNS2NQTWVpbXVD?= =?utf-8?B?bU41MW9iOE5zWXN2bVQzMEloODEzcmdDQlVKTWNpclRwT1REYmVSa0Y5dm9t?= =?utf-8?B?d2FwUkwrUURqdkdSWnE0RlF1MkRYQUY5L0h1L2d1aWZvZ1UwMUlseEZ3aEdC?= =?utf-8?B?MVNOOGZaS1hQNC9zSXpHQkM3R2dPZFhpTmoyRk9OdURJSld1djA2MmV2OVgv?= =?utf-8?B?ckc2dkF5ZXNCcUVESUlJNjk2bWgzSmprck1DZmlaa2crampWeDNGZTNJMlBs?= =?utf-8?B?aS9vMVhHc0U5OHRRM0t4R241M1l6cVhLUS9lb3haUWp0VGM5TWpRRmJ6MTZn?= =?utf-8?B?bXNoNUxFNUpDWGo3WStwR0RZUnBLakdIYTdmY2V6SXZUUmNzRC9lT3o4Qkd3?= =?utf-8?B?K3gva0pzTWFMbjNCZUhkalJWYWc1KzJnK25nVGozNXlVTXBKM3BibHZaZWhM?= =?utf-8?B?SnZIZyt4MVFjWXdYMVY5elRnbEo4aDFRR0NHSzdWSGhESkZKbWtMWFdEN2d6?= =?utf-8?B?SzAwRFloZlUwM0h3UXJuY1hIelUyQjR4OE9TeE5nbUJOK2tjRXFmVXhMNmUx?= =?utf-8?B?UG9WOHViUkpRc3F5TFBLaUI4UFpsTXVlQUZwbGNSVDhFdU1sRzZWMFA4WFBB?= =?utf-8?B?VU43cEZxWHpzQmhtbkpTYXI0bExCS1JQZDBWVUpIRE5kaWIyS0hGRkFSdndr?= =?utf-8?B?QkMxaUR5NUNaQkdNUm16OWtZSDBlREtUYWVFeHhXYjdYQjlmejJKaDYzdVRS?= =?utf-8?B?dmY1L2ZTbDQ2Z1pPL3ROSkN3MTR0Rk1XS3l4dktIeUtSVHZpUmpCcm83Vnpk?= =?utf-8?B?Q3F6MTZ3SVYyZUo5eUp3eGtXMDUvK09nM3RRbDM5NzZrZFlFYzNsQTE0em44?= =?utf-8?B?UHVWYlgvY1VHZS9oNXZIK2czWVJoV3FZUWJmSTA1bUVPckwzUXdpSS9qNWxK?= =?utf-8?B?b0p6bkdpWEJTb05KYW1oWUhYTW5ZNDEvck9FYWFjR2ZqQnhZTmtFQ0dFQlhJ?= =?utf-8?B?T3I0b3RzQkcweEg0T2dwK2NPZkFmOHU3aG56Wk91TFM4d0VVd0xvU3Fzd3hx?= =?utf-8?B?V2FoMjJsY0ErT0VNMjdTd1pQaUZwTzNiM2YwKzBydFNoQXY4T2tPdDBDMmY2?= =?utf-8?B?cFJFVG5nTnFGQXE1NzBrcjhQNXRkeFVmV1RNUUllRUE4QkxtRFBZdU5FRFlF?= =?utf-8?B?NDlnaCt1Z3RwQ2xUZ2pMSkdqMlZNOGZxcDI0OE95V21rbUNodUhyYmpHR2E3?= =?utf-8?B?Nlg0Q1p4bXF0ZlpXbnF2S3RWMWtOVFNBVlFQU3hMcVcxVVN0eTB0Q3lSNTFL?= =?utf-8?B?aWFSU1g3K1NaL2gzdWFiMkEyTlpCd3dnVVo4WnBUaVovZHNoSDU3WTloNUl5?= =?utf-8?B?SHVOQisrVGVCVml0em1KQWE2dUY5Z01HTGNsZi94bEpDZkZUeGd0MTR2WDVp?= =?utf-8?B?dW5JaktNY1c5TVRlWG9jZXdCRnFKWDYwZDZUL0puckd5R3ppNllUQjlYNWJ1?= =?utf-8?B?Ylp0RzBIRWxsTi9YeENoZkY4SGhJaTM1aG5WNnZTbjdBNWtuZm5WeXFPZGtz?= =?utf-8?B?SG9kSGVCYytLMHFHbDJrdXZpTFFwUUl3WWxwRW9oalFxTnVDL2planNnWXN1?= =?utf-8?B?TFNVRldya2huME5yRDdZandnNDk1U0V3cjI2c1l5QkhhdXRKNkhDYUFDU1JT?= =?utf-8?B?RWh4QlpTSjlybVZaYm9EdmV1ZE5oTmg0QktFRUd4dDlsYVhzeS93Q1dRSWlj?= =?utf-8?B?RFdOTXRQWCtVZkZNMDZZUUltUXhkQUZTV0MwSmdZZ0t1SERTeTc2QT09?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57975589-771f-4369-7306-08defbd94567 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2026 20:59:32.5187 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /pCkTh4Hq+RyMKy8HQIy22KYxjRYab7KdCYRjbsO32yuBku69rCtrlMo2jweQUkRCD79F/04wwru5QggRQrrqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB2682 Tracepoint fields that convey kernel function pointers, such as "function", "fn", "work", "action", and "callsite" are currently formatted as generic hexadecimal pointers by default. Enhance syscall_arg_fmt__init_array() to automatically detect these fields by name and type signature (e.g., typedefs ending with "_func_t" or "_fn", or C function pointer types containing "(*)") and assign SCA_KSYM as their default beautifier. Additionally, register common function pointer field names within the sorted syscall_arg_fmts__by_name lookup table. This ensures tracepoint arguments such as workqueue:workqueue_execute_start.function are symbolised automatically without requiring explicit per-event configuration. For example: =E2=9D=AF sudo tools/perf/perf trace --event workqueue:workqueue_execut= e_end --max-events 2 --show-cpu 0.000 [000] kworker/u32:15/236682 workqueue:workqueue_execute_end(= work: 0xffffffffab2f1420, function: toggle_allocation_gate) 0.132 [000] kworker/u32:15/236682 workqueue:workqueue_execute_end(= work: 0xffff8ac2c1adc010, function: flush_to_ldisc) Signed-off-by: Aaron Tomlin --- tools/perf/builtin-trace.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 003048946503..85abae09d328 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2198,6 +2198,15 @@ syscall_arg_fmt__init_array(struct syscall_arg_fmt *= arg, struct tep_format_field ((len >=3D 4 && strcmp(field->name + len - 4, "name") =3D=3D 0) || strstr(field->name, "path") !=3D NULL)) { arg->scnprintf =3D SCA_FILENAME; + } else if ((field->type && (strstr(field->type, "(*)") !=3D NULL || + strstr(field->type, "_func_t") !=3D NULL || + strstr(field->type, "_fn") !=3D NULL)) || + (((field->flags & TEP_FIELD_IS_POINTER) || field->size =3D=3D sizeof= (u64)) && + (strcmp(field->name, "fn") =3D=3D 0 || + strcmp(field->name, "function") =3D=3D 0 || + strcmp(field->name, "callsite") =3D=3D 0 || + strcmp(field->name, "call_site") =3D=3D 0))) { + arg->scnprintf =3D SCA_KSYM; } else if ((field->flags & TEP_FIELD_IS_POINTER) || strstr(field->name, = "addr") || field_has_hex_fmt(field, len)) arg->scnprintf =3D SCA_PTR; --=20 2.55.0 From nobody Mon Sep 28 22:30:52 2026 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021113.outbound.protection.outlook.com [52.101.95.113]) (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 D2A3F235045; Sun, 16 Aug 2026 20:59:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.113 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913979; cv=fail; b=obakLP6AY0EanA4+h1rlhKfF8D/kq/1uLGlRqtKEahtt3NN+y12SmaINpf3cZXo/ZkSIcvB8os91xmGPIJ759fTd64IXBY+VJBsVIunC/MMUxVf0CoZGpY2PyNqKQansCk6I0pmas2PZiDFp7mxHl7BNxpHSyuN6CnTPqC407SM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913979; c=relaxed/simple; bh=4Hdvcpdun9EYY3oc9wl1tVVQNL4LECzOuYhwZh0rwOM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sob1eGGt6/oWNTFzEMm/C563toX0T5DTqSVGgCdlI7+kfhME5//bvWBXdAD0Sb+ij1scImIIwaAXaVhXuw6mi5ppbY3MDcZuTROUIpScVmacpW6NRqJwQodkuXseDQSSOtIi8oOwUTdkYybWv3FWhmlbfR50o6IW5fJS9v7lY+M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.95.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yrvm1NB+tIrkrnLtMfxh/qS0fcApMZnoL3gW5RWNxhYv63ZI+mnBlo6hP9Kv+VxF4MP30O26jaapTYl096Nx7M1YrpRuMWOXfgSfOJDvTAFhseDFA8RcfHdtgL1KYUpB5CnPIU+VOxBa2soqDCpKnAb6+iXiLZuOqD6ZzLD2ckwcLK9mviCdkOzBV/ZqEgA5Ye7He56A69arvz4U3HhjDjWojTb9Ek755ca15CdnPmZGhgNEO9ZO135gYF7SZhacTG5MNr8iP2ptn1meVEgcew97yLjMOPr3zo2LNrnmnp9LGkUPhbI9AdhqBRVwPlsDWUBHfuUHEDa7O7nWY0F1cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=4iiFtoMCvoeSd5mCtPwkWXYH3kdHTLcRnIP8PTMn3/k=; b=t0Ye/4yEGI0JTdnvMaHW2mqzPBF+mthcCox38lZJ1vj7b+aj3NstcwxKo82BbzvVv9pRf+c/qIN7AbdfNsjcR1TjnBf5wsQgJmRMNx8yu7f2yqa+H+GofKq1ckHtLNRXQ6xkQpqHguWd8so8+47zEzuek/Aet86qFPgmDGmnr3CsbTtLD6RMpmkLRUz/wzGdLFH20tq/OUivgMpZXF/XRab5Y37w3IF8hJ3nTBi7XfzY+GfQBJdFRIFJAR8NHI9hfrlE8ZudjNG9OUGgpQOUtYKRcQXi2Z7fN3qE6qj256apj8yJQZVbftPuyDL4DiZjHEbT+rg8msiBJRVKQ6BNfw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by LO3P123MB2682.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.16; Sun, 16 Aug 2026 20:59:36 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0315.016; Sun, 16 Aug 2026 20:59:36 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v2 3/4] perf trace: Enhance BTF type formatting to symbolise kernel function pointers Date: Sun, 16 Aug 2026 16:59:20 -0400 Message-ID: <20260816205921.576365-4-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260816205921.576365-1-atomlin@atomlin.com> References: <20260816205921.576365-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN1PR12CA0005.namprd12.prod.outlook.com (2603:10b6:408:e1::10) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|LO3P123MB2682:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ac71ad2-f68c-4fc8-e3a0-08defbd94794 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|6133799003|3023799007|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: gwWl9u6pTrxUehzopkEysMHfISWWHEDQWYwglcruA+vV7NcTuNs6nftGEUqmZYF12PiFVhZfyEexWcX3sbObNUmruVnPco3tt3QEqeqmLfCUeYRj4PXk+v3UTjW/j/1JdHjdoV4VA3zSxV0CM3N38gBO9Y42NlBp1EwKNvf43KWy85n1EHqjVYHjXNGAIYMeKMgnuTtOh7H4ibKtXmCyLxmuKPWsABJFU9t+X5Mhab7kM7js2NqW2UUn/cdOww8WV6wXOnErrdQ6XAOPCA4vZlndz6Pn/99qG4ztkxnGeJM88JkmCaSdTYWIUr0Etsf0tBDPhosRifxQOs97ETtfOKecyfo1N3hPb3OjNjvAryMZ+Xa8bmRBmVesn4tU54z9QFzd0Da2XsY4QI1Sj06T5c1UulXHiljzstk9vZm31YRINldLTBX3PYyzQmpF86SYs7kw2w/XCezBdA4mi45k4iWnG05lWp7yJOnLZQ4iqpWBQZgTUKna+CyRWHYwDotCfiSLz8GhfDx9tttVXAPrPO+1ZXAdiM7AuW1SUjF9O7cyifqSUEs/C88qYJmgPuAMMdtgPYZVblhFz0hLKiLk3hfTnPmharM1gjwC7+YIbRJOIsMSpaKRGCPLP1PI+nFRlJ0b5ES7a0fFvf2jAUxm11o2zGJouKZ2I84Gf5AHcYk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(6133799003)(3023799007)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SjODELoKMmioc5ZUpa7D2VSNjG0ji3M+B7ceyzfG0Lhv3Bp5YBzzdwEo1o4J?= =?us-ascii?Q?Phk39NMHqH/2y6KyGjiwSE2EHxdUih2M8mcFMGH64NNaD2u6MKwOlZpeLcyJ?= =?us-ascii?Q?GAeCPyPd2zEt+qYhEkaYiItHF9Vh/Diyw1FOhuMH8q4HBHlVfoYTAmX9u74U?= =?us-ascii?Q?khsfx9NiN9waTSgd5nNWUKAc89C0+s6nVffcLNS17XXzJPCx1zIjP1+uxBGP?= =?us-ascii?Q?rRjRBB+c6/dZDkF7+sBSn0jYkVWK4CgWnPVQSvVE5hEnjWcaAlEUPxl7DMUy?= =?us-ascii?Q?o1OC56Mka6+lGnMdn3s2ltweeCSwQW/KrZ/gcU82vLqOubNhb2gCOplPF8Ky?= =?us-ascii?Q?W6vU73WvVBW1Qf9uNvI0SUVSHgzeqQV3NaHu30mLoS8iJJ0f1/+e+z79mAxG?= =?us-ascii?Q?BwzP3XuZ9yUa5+7GK4oOtTG6t/AMXm6V0F9UgHq+3TlOd4pFDKJ0CQu9ZWW9?= =?us-ascii?Q?lRqCMIVD6lHJJXCKF+xGJYjOoh+xrDFyrRltGjykrO0VCv6zeU1kFY/VUTwy?= =?us-ascii?Q?69HGpJFEHax8oqASgVhfhzzP6SiA1Oj4TvvvxOGiZ41pQ1xHMgVR2fWJR3dk?= =?us-ascii?Q?/ZY1HoLr08vlHpSPir1mkItWTQyoDZ4y6fcvIupWKyd0M0tjPGasgvxDDMF/?= =?us-ascii?Q?88UOTNamCNS+lGZtDe7j12Hxm8aFfXFJX7s5XWCDy42cMBkyWyZrD7IV7zZj?= =?us-ascii?Q?OHfEvfAb80C3IBuWek4mn2NOlVM7JBsMHzThjNqje8i1xxwmTOieTP5iLTTe?= =?us-ascii?Q?raRHpegA6NmqykFTdH4f0hEwURgQdxoIXCM5XQogvg33xEIHKxurWMZw6hn3?= =?us-ascii?Q?7nxDB8dlBchhUXsPSR8rDzFYAqQq4kaUS0xFp3kdvH54ULmqDKGkcr/+yf7m?= =?us-ascii?Q?jQ/yZtQqdHlvRYYLbwnwoXhhW8DnrNYf3RJVTkOxrlTomapZJfRBh6DFuY2U?= =?us-ascii?Q?2oMlxzis+CAf4Bw+ka/04XG5HRvN7TLEW0iag0aBjXGPCFlGDI5nzINwOy1B?= =?us-ascii?Q?h77F4Fy6kPeXmdqpczMrJyl/T88cJsM+64EkkPfBGk5YHq5uYBAk4Xp7uHi6?= =?us-ascii?Q?jji9RQNYNzursnyg+EkTx2+voY5dF0otvaikc6gQGKMo9jB/GWQuSdB4Gn5l?= =?us-ascii?Q?/PfXpZbJPlFlMryZTzlhE22xq4qcUNyH02vD46CvpWyhh8REn2MTx71qiC8Q?= =?us-ascii?Q?lYpHhLYRvoF0KMbHAcsI+2YFUqe4F5PlRC547xpreFRBkOaMtMp1lsVn0pSd?= =?us-ascii?Q?j5iX8ReuTU7gKepSJDKGkAlvTaK3l/qoKba652cBDtmyTN2AyLM6AbccJSQi?= =?us-ascii?Q?ElAU3IaRR0Drv077TcXSolT3VuHIfgGkN+gAioIxTTdzVg94HoY9PIT5fNFY?= =?us-ascii?Q?0dlv9Dh863Cid+kJDlSZM09A5ItmGVyR1PGH4aHNyeQ5IUAby7BrA2IRqnYN?= =?us-ascii?Q?gAYIbT4aq0RhBGXu7yJ23epx4d5ikE4tI457EivFiBn+JpFssLujl40tDOsS?= =?us-ascii?Q?BFBqFXqLzsYCcEkB2xqic8FcjQsJG+JF00K+OFbUOy/aBTFdosCsVnbvUXCx?= =?us-ascii?Q?U16PVwFUFzUE5FiUSHUEzRJN72EYpKk+Jiy9Cl242jHvXcjqkieV55w5FUF1?= =?us-ascii?Q?35+ViZkyUCw3kkjk3783+UFsGzyQOOTpB12e3Xs7nPbMVT54DKvoP5hxPzD9?= =?us-ascii?Q?Vb1GPlKVqTrqdKKwnzq3TLfKdWlzPa2Rt2hzsDCGEPja4+opQPW4koNf64mQ?= =?us-ascii?Q?pCd9Vw4jMA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ac71ad2-f68c-4fc8-e3a0-08defbd94794 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2026 20:59:36.2422 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5KXlYtejTfIcwD3l6BQBwNU04XYA012Gp40aMht7GJfNOZlGWK5ojxeq9fUHSPP7kTyveNsawRVqDJLbOeRPBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB2682 Content-Type: text/plain; charset="utf-8" When BTF (BPF Type Format) metadata is loaded from vmlinux, 'perf trace' can inspect the precise C types of tracepoint and system call parameters. However, function pointer arguments are currently not recognised during BTF pretty-printing and default to hexadecimal output. Introduce btf_is_func_ptr() to inspect BTF type hierarchies (i.e., traversing pointers, typedefs, and type modifiers) to determine whether a parameter resolves to a function prototype (BTF_KIND_FUNC_PROTO). Generalise BTF type caching via syscall_arg_fmt__cache_btf_type() to handle structs, unions, enums, and function pointers alike. When a field is identified as a kernel function pointer, trace__btf_scnprintf() routes its value to syscall_arg__scnprintf_ksym(), enabling automatic zero-config symbolisation of kernel function pointers whenever BTF is available. Signed-off-by: Aaron Tomlin --- tools/perf/builtin-trace.c | 65 +++++++++++++++++---- tools/perf/tests/shell/trace_btf_general.sh | 2 +- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 85abae09d328..cb3cb877a22e 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -979,21 +979,61 @@ static size_t syscall_arg__scnprintf_getrandom_flags(= char *bf, size_t size, #define SCA_GETRANDOM_FLAGS syscall_arg__scnprintf_getrandom_flags =20 #ifdef HAVE_LIBBPF_SUPPORT -static void syscall_arg_fmt__cache_btf_enum(struct syscall_arg_fmt *arg_fm= t, struct btf *btf, char *type) +static bool btf_is_func_ptr(const struct btf *btf, const struct btf_type *= type) { + bool has_ptr =3D false; + + while (type) { + if (btf_is_ptr(type)) { + has_ptr =3D true; + type =3D btf__type_by_id(btf, type->type); + } else if (btf_is_typedef(type) || btf_is_mod(type)) { + type =3D btf__type_by_id(btf, type->type); + } else { + break; + } + } + return has_ptr && type && btf_is_func_proto(type); +} + +static void syscall_arg_fmt__cache_btf_type(struct syscall_arg_fmt *arg_fm= t, + struct btf *btf, const char *type) +{ + char name[128]; + const char *pos; + size_t len =3D 0; int id; =20 - type =3D strstr(type, "enum "); if (type =3D=3D NULL) return; =20 - type +=3D 5; // skip "enum " to get the enumeration name + if ((pos =3D strstr(type, "enum ")) !=3D NULL) + pos +=3D 5; + else if ((pos =3D strstr(type, "struct ")) !=3D NULL) + pos +=3D 7; + else if ((pos =3D strstr(type, "union ")) !=3D NULL) + pos +=3D 6; + else + pos =3D type; + + while (isspace(*pos)) + pos++; + + while ((isalnum(pos[len]) || pos[len] =3D=3D '_') && len < sizeof(name) -= 1) { + name[len] =3D pos[len]; + len++; + } + name[len] =3D '\0'; =20 - id =3D btf__find_by_name(btf, type); + if (len =3D=3D 0) + return; + + id =3D btf__find_by_name(btf, name); if (id < 0) return; =20 arg_fmt->type =3D btf__type_by_id(btf, id); + arg_fmt->type_id =3D id; } =20 static bool syscall_arg__strtoul_btf_enum(char *bf, size_t size, struct sy= scall_arg *arg, u64 *val) @@ -1028,8 +1068,7 @@ static bool syscall_arg__strtoul_btf_type(char *bf, s= ize_t size, struct syscall_ return false; =20 if (arg->fmt->type =3D=3D NULL) { - // See if this is an enum - syscall_arg_fmt__cache_btf_enum(arg->fmt, btf, type); + syscall_arg_fmt__cache_btf_type(arg->fmt, btf, type); } =20 // Now let's see if we have a BTF type resolved @@ -1108,7 +1147,7 @@ static size_t btf_struct_scnprintf(const struct btf_t= ype *type, struct btf *btf, } =20 static size_t trace__btf_scnprintf(struct trace *trace, struct syscall_arg= *arg, char *bf, - size_t size, int val, char *type) + size_t size, unsigned long val, char *type) { struct syscall_arg_fmt *arg_fmt =3D arg->fmt; =20 @@ -1116,8 +1155,7 @@ static size_t trace__btf_scnprintf(struct trace *trac= e, struct syscall_arg *arg, return 0; =20 if (arg_fmt->type =3D=3D NULL) { - // Check if this is an enum and if we have the BTF type for it. - syscall_arg_fmt__cache_btf_enum(arg_fmt, trace->btf, type); + syscall_arg_fmt__cache_btf_type(arg_fmt, trace->btf, type); } =20 // Did we manage to find a BTF type for the syscall/tracepoint argument? @@ -1128,13 +1166,17 @@ static size_t trace__btf_scnprintf(struct trace *tr= ace, struct syscall_arg *arg, return btf_enum_scnprintf(arg_fmt->type, trace->btf, bf, size, val); else if (btf_is_struct(arg_fmt->type) || btf_is_union(arg_fmt->type)) return btf_struct_scnprintf(arg_fmt->type, trace->btf, bf, size, arg); + else if (btf_is_func_ptr(trace->btf, arg_fmt->type)) { + arg->val =3D val; + return syscall_arg__scnprintf_ksym(bf, size, arg); + } =20 return 0; } =20 #else // HAVE_LIBBPF_SUPPORT static size_t trace__btf_scnprintf(struct trace *trace __maybe_unused, str= uct syscall_arg *arg __maybe_unused, - char *bf __maybe_unused, size_t size __maybe_unused, int val __mayb= e_unused, + char *bf __maybe_unused, size_t size __maybe_unused, unsigned long = val __maybe_unused, char *type __maybe_unused) { return 0; @@ -2567,7 +2609,8 @@ static size_t syscall__scnprintf_args(struct syscall = *sc, char *bf, size_t size, =20 default_scnprintf =3D sc->arg_fmt[arg.idx].scnprintf; =20 - if (trace->force_btf || default_scnprintf =3D=3D NULL || default_scnpri= ntf =3D=3D SCA_PTR) { + if (trace->force_btf || default_scnprintf =3D=3D NULL || + default_scnprintf =3D=3D SCA_PTR || default_scnprintf =3D=3D SCA_KS= YM) { btf_printed =3D trace__btf_scnprintf(trace, &arg, bf + printed, size - printed, val, field->type); if (btf_printed) { diff --git a/tools/perf/tests/shell/trace_btf_general.sh b/tools/perf/tests= /shell/trace_btf_general.sh index 7a94a5743924..255468eff128 100755 --- a/tools/perf/tests/shell/trace_btf_general.sh +++ b/tools/perf/tests/shell/trace_btf_general.sh @@ -49,7 +49,7 @@ trace_test_buffer() { trace_test_struct_btf() { echo "Testing perf trace's struct augmentation" output=3D"$(perf trace --sort-events -e clock_nanosleep --force-btf --ma= x-events=3D1 -- sleep 1 2>&1)" - if ! echo "$output" | grep -q -E "^sleep/[0-9]+ clock_nanosleep\(0, 0, \= {1,.*\}, 0x[0-9a-f]+\) +=3D +[0-9]+$" + if ! echo "$output" | grep -q -E "sleep/[0-9]+ clock_nanosleep\(.*(struc= t __kernel_timespec|\{1,).*\) =3D [0-9]+" then printf "BTF struct augmentation test failed, output:\n$output\n" err=3D1 --=20 2.55.0 From nobody Mon Sep 28 22:30:52 2026 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021140.outbound.protection.outlook.com [52.101.95.140]) (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 1C9EC3D47DD; Sun, 16 Aug 2026 20:59:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.140 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913987; cv=fail; b=GODw+NDuiJNOnSmRcSNqAsBaKRpZEuK6O/mbtTpPQmdQPeQl15n/8bExQWR78gNY4eAQvSUKnEVjnr/9D8M3+Jlh4zjSPa5uE0sceuCusnTE5aWQK9/27ipzXknA/3zz3AkxX2mpRpKaZtyiEYXOz1BlYEDRvfJ7rrQoUVcaSPE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786913987; c=relaxed/simple; bh=q2gZ4ulnfe5qWEDwHZOz/q0qtt8KtRsRc3qWK7NZcsc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CzWxxQ5SL6p3bOMV2JpdIxm4+2yPx550/WRtSNyD8NAa5MUSBQR1minzY9pINUChXas3EIB1Yct1E0Riai/rmq6tzPazmZPAPoubM/5hAJcsktJQwslHdNazcmGzwzJyO0MSontshWfZWtiQMcpqvLWAUdNQYlHyOccf4AXD614= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.95.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HcI32+QjT2WXybX/Mp6gsrqeGj10p8eKfpexAkZD7uSttuLUfx+UlHCwLskF55Fb4ETdCN4dXQ8r9TSlv7VC2HHhLEy+xdFDcXPPdmSZQiFuzpIjOoQ+OKW3QE7tUmzErPMVLoynyOUEuOwnOat1n7HptPaKvWoXIdhG4uEdSxwc7TxEk0RandI1Wm6Q+twgDpS+bT9+5lAJAgwLJnmL2YEpbdk1vb4RJFuVUCQerL9Tf42uvh2Iu7PX8uYMmH1dCaIJnbeAso9UiN5BEEA18DrA4HUzcauXLfSgfQZVl0z6wcda/027aOxEMEBl2JfrsM8tJvgX4nY+2IK5VWWWtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=oXdrem2ffKK2V3YmCug0VnyYQT+e37A4HVFDd9ZGNX4=; b=Wn5MDT9N94VcDQbZ0M3bh+Jpnp2/LySuwCsDmX6ikDE1eioptQ20rfe1OZ3GlGSMrSL1IiojqIXCWNsq7tCifkM79lJTcX7xvLulvfH2F4rI3q1dpY3364ORU7pLovxBTyNJGibuN/5VCFPOxK5098p7YyMnRxR+PbuBncJsafYUoQW2DEtQtSnPw1scC9MuhB4DMyYhW1jbBexQvLv2Yuz9CWex10j+Qw8aiNb4NquJ3JTof6w5wkjQocYVzRINvaUP6jdVi3B9s9+0C7+vkq34/xJa7n23z5+xOlE4FhBCs13l2z8jYyc08F0mQ7oduJdDAPSq48DW8gLb4YJYgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) by LO3P123MB2682.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.16; Sun, 16 Aug 2026 20:59:40 +0000 Received: from CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230]) by CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM ([fe80::cec4:77ab:262e:d230%4]) with mapi id 15.21.0315.016; Sun, 16 Aug 2026 20:59:40 +0000 From: Aaron Tomlin To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, namhyung@kernel.org Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, irogers@google.com, adrian.hunter@intel.com, james.clark@linaro.org, howardchu95@gmail.com, atomlin@atomlin.com, neelx@suse.com, chjohnst@mail.com, sean@ashe.io, steve@abita.co, rishil1999@outlook.com, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH perf-tools-next v2 4/4] perf tests: Add shell test for kernel symbol beautifier Date: Sun, 16 Aug 2026 16:59:21 -0400 Message-ID: <20260816205921.576365-5-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260816205921.576365-1-atomlin@atomlin.com> References: <20260816205921.576365-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0225.namprd03.prod.outlook.com (2603:10b6:408:f8::20) To CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:183::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB6607:EE_|LO3P123MB2682:EE_ X-MS-Office365-Filtering-Correlation-Id: 8364c589-7aa7-4447-a053-08defbd949f3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|23010399003|366016|6133799003|3023799007|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: irDRM5leRJk5waV7zXPgajgIWl0ugdp0w6A2mExgwcJb/By4k+pAjtwPDiJ0Vc2fIFeJFO+3IIo0jeoyrxRQTA467aTpkIFfCIOnlOVyPxPzOd0oWQosBEqLU9ZPUT07HwRU0SZd1DEfaprYpCSB47dHG0kVpB7RpvU1XF0H+uI6lDj7ArqPnudLkDR3wWGijoVBujo5IvSa691zM+vhw59NtoiWZ7piO1JMvH0CYIxVspEUz3F4oVTDSD+5PSeqOisseu+qb1gIa2qNyKKWAvKJUy4tl+bM5m/Qf1jMRjQ5YKokSL8ruwUKlRA7EHbfLs6bV9FAFetitg6+z7iaWMvvA1CTYCX0eK1ddBLqdpxJx/z++48HYkPNdSGvHE+ji2ZbYGmDQL5QDFPLcx7FSznupTGHjwyB6hDZG9Xeu5FoDXrZ32+GTxCJ7uJbn6TduDEILntQS2o4c477SB630BmXBHGTGX1kItTgm1Ofxw1+3ZnubGcXAF4NlJ8xMwKjmuvsFn33GW4cGjYw+i67ohd3AulfnrhOaG4NGP7xWwRWIvknvMaRdgckl6NYY1lVoi96wpOehB+s9X3RhGLcUqW3KYUHJ93YcjpVFvFrEgxTI+mp1azVifHsIEtMaltlMWAlQhUp9AJzFfG9nFHgn+F++DTb73tfsrjl2TWhA5U= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(23010399003)(366016)(6133799003)(3023799007)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?obGxzarfuHu3WrwemKJ2voI3QLZJsEKdTRwfpZbbB9mWizn3rE2unpr0u25N?= =?us-ascii?Q?PtaoT65QXuPR4vYQWuTPertfFaZ5RSSSdn16taSL3uVRPv61ryt+8rverHDl?= =?us-ascii?Q?jCVpfQZ2Hg8eUyrQPjHQ4+dodzggc35GKZphzFMwYKsrjkp66tbon08dGE/K?= =?us-ascii?Q?otV9GdLeWtcaFQC2k+775WCADiUYML/bjZhfCH8rz6k+WR+CHxaaSG0NGdCP?= =?us-ascii?Q?fG/NcV/1DR4kkMRchlgmxqSXYMbDS9cpYS0DW78wffENiE4A7/RMchzlh98G?= =?us-ascii?Q?1JBAjZoN1RpJ8d/xdaf5LQmcGuC957E69jT0E0kbIaONAbTkRhwzBR2CHmqn?= =?us-ascii?Q?eYDr2SJMH8JUJERLULx3k7wAwpQZoj1Sg/YA8SwYSU9EYxwfT278szECcK/A?= =?us-ascii?Q?Kh5qGiY4+F37BSyXUIMMvnGBLKyAzmwuMretMDsM4ZLeW79hhQhjma4Npjci?= =?us-ascii?Q?kCO6kyRZphNAeujkkdStaBzmTUfJ8d8tNtceSjLZ/zG5qgVwlCzUGTaRvUuT?= =?us-ascii?Q?FLaW8IVX8uwNgzuBWDNVJjOg5B1dlnWOkwYMdkfg/3h/DqRKCjoPl1Ol31Re?= =?us-ascii?Q?0OpuaGJKqmBGk07+MUbqa2m9jsSeHQLewgBNeK8TfeHZabe67GYaf3zSSy1Z?= =?us-ascii?Q?7I+jVyl7ZRhyfN1PLOlS0wM4rxyyejQuY2QNAXiHaRBivGQHK0PhUIh2dt7x?= =?us-ascii?Q?H0ZsiY6QHtWbRjWLDALLi1TJgsHjcDoDgPLUkwxgEgp0fww9mPntGPCbqUWl?= =?us-ascii?Q?sDNRegd2hL1O+Nf3bP8mg6/94mdjZyV5xmB8IG3V20g044wypIa1uCMbI7q1?= =?us-ascii?Q?OyCveCxRpY0RiEbuF/swd5firBPJEOS3Kvajwj5DpFo0P3ll7DS4C06mjEtr?= =?us-ascii?Q?UniuIQgk62dbAjRrcG3D48ARSJs0SbfJ4iTyAXVKm0shxHDkeHc/23kofo2v?= =?us-ascii?Q?Jr4X91LwWM4kKhJ1rJJkxxvoLV9V59KhI4wW0lAZovKX7k0jQK1MGm4AkXZO?= =?us-ascii?Q?ZHzSNvLvstf6rkw5nOYTNsBku9IILM8zUfQWliB/4XbGdSnOSjQyxxUXzt8F?= =?us-ascii?Q?BPQqsP81tA+Dyojk0aTlbVOhGLclrTvCVQk+BnqsMijhExGgD4xGANdGo4HN?= =?us-ascii?Q?vFukWS24IlsD/TlNA3PT+99fl+6rjiofNzA2lel2qAtNMkInLcno3Fx9tkpu?= =?us-ascii?Q?Bc19RPhIfk04uIxB7PGJ5pxZw5dxl4lEoIEJKQy7d3k1IS+1oJ5hYQ+PeycJ?= =?us-ascii?Q?mQojWH8s1LDV2d8MMTs+ekOmqhck5JoehXOsvC21v5wUbCFhQ+LE5uzKo/ji?= =?us-ascii?Q?og2FCS+pOrOzx/LnKS2W9G63WNJHZRJscx5sefXD4jdbFvp4JALJQT9uJFw1?= =?us-ascii?Q?UnZyJlB3HCKumHU9dFzX+2+eK9+d2rTGS6q61cu507qgaT7Z0lgCLHgwNQYC?= =?us-ascii?Q?BST92SHrswuQehhFAGqtIlOqMOPIkTYqGrcZN7L2p80PnDnTnGBczjjftnHE?= =?us-ascii?Q?iP4QYT9MoKA93egiNobpufXTV0dq3jGItpFfx2R/+1xC/7+v7+E59Sfnurn9?= =?us-ascii?Q?1Ik7sx7mTb4VP5GKtJB5Crdqu3uDTqzZbgPuELNrF6XQiUb4lTo/o1wirRdU?= =?us-ascii?Q?HWptxCOEDlywQxYUJZ7O1qnpV2UvXAxS4VKFHdMetXTuM8SZCryQXVnwtaXK?= =?us-ascii?Q?HD6FFMW88sKyIdwYyXNk2X7fVzkQtnlAvR4+evEBfh2l9nF/QEfu3APoZ3jQ?= =?us-ascii?Q?ttP6nmX5Og=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8364c589-7aa7-4447-a053-08defbd949f3 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB6607.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2026 20:59:40.1517 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jUEna6ix3zBwRDyr+vBHQzukms2j2fvSoCZ84ukssX3n3xG4SjS5+KL5Vjmf4dPalHZFzKsbrLrH3z2E+YNuqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB2682 Content-Type: text/plain; charset="utf-8" Add a dedicated shell test script, trace_ksym_beautifier.sh, to verify that 'perf trace' properly symbolises kernel virtual addresses and function pointers using both the default kallsyms beautifier (SCA_KSYM) and BTF type routing i.e., --force-btf. Signed-off-by: Aaron Tomlin --- .../perf/tests/shell/trace_ksym_beautifier.sh | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 tools/perf/tests/shell/trace_ksym_beautifier.sh diff --git a/tools/perf/tests/shell/trace_ksym_beautifier.sh b/tools/perf/t= ests/shell/trace_ksym_beautifier.sh new file mode 100755 index 000000000000..2916f78503f7 --- /dev/null +++ b/tools/perf/tests/shell/trace_ksym_beautifier.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# perf trace kernel symbol beautifier tests +# SPDX-License-Identifier: GPL-2.0 + +err=3D0 +OUTPUT=3D$(mktemp /tmp/perf_trace_test.XXXXX) + +# shellcheck source=3Dlib/probe.sh +. "$(dirname $0)"/lib/probe.sh +skip_if_no_perf_trace || exit 2 +[ "$(id -u)" =3D 0 ] || exit 2 + +cleanup() { + rm -f ${OUTPUT} +} + +trap cleanup EXIT TERM INT HUP + +test_ksym_kallsyms() { + echo "Testing perf trace kernel symbol beautifier (default kallsyms)" + perf trace -e kmem:kmalloc --max-events=3D1 > ${OUTPUT} 2>&1 + if ! grep -q -E "call_site: [a-zA-Z0-9_]+" ${OUTPUT} + then + printf "Default kallsyms function symbolization failed, output:\n$(cat= ${OUTPUT})\n" + err=3D1 + fi +} + +test_ksym_btf() { + echo "Testing perf trace kernel symbol beautifier (BTF)" + if [ ! -f /sys/kernel/btf/vmlinux ]; then + echo "Skipping BTF test due to missing vmlinux BTF" + return + fi + + perf trace -e kmem:kmalloc --force-btf --max-events=3D1 > ${OUTPUT} 2>&1 + if ! grep -q -E "call_site: [a-zA-Z0-9_]+" ${OUTPUT} + then + printf "BTF function symbolization failed, output:\n$(cat ${OUTPUT})\n" + err=3D1 + fi +} + +test_ksym_kallsyms + +if [ $err =3D 0 ]; then + test_ksym_btf +fi + +cleanup + +exit $err --=20 2.55.0