From nobody Sat Feb 7 09:59:32 2026 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021104.outbound.protection.outlook.com [52.101.95.104]) (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 770B32459DC for ; Wed, 31 Dec 2025 02:36:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767148562; cv=fail; b=F70as3yYxjuoX+Uwu+q/MeaUM8XVSmjYMulgIYst1Gx4MgLf/ouecbXr5nZVgsHoA2qeX4OFQnfGUNmn187lwezh0FxiFTIP2CPGUOO0cFCNLIL44YRKlfEmcxk+GF4qmZ6A3mS+IkSkW/zOXLZMUP186KoEbBpUdR6TzVOILLc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767148562; c=relaxed/simple; bh=uTWb5SvNiExrME/HXqpY4GQDIGNuvbzfSqeNBjyV8hY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FksbUDwUGuGL2daQkizgji6l7I6mhI2L8JDXps7cpv4g0fNNIFPWh1T28qg6+0cs5yrcI8z7lsz1edQz/hmzWqp1y/8yCIzw6VPT85OSNjI1ywNUQ3JkDpcsCT+91gw0jEPxeFMYgFIwN2NXnc2HKdlEYUkv/QLK0so3Rg7mE0I= 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.104 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=L+TOLM6v9fwQyn+INAhJofsUX5f4obRwROV5BKzmYB+sXO6LVM45ej3K6hP25qVrZ3h3EqJWDw4e/NulZ4JdhPabSxr1EEwmcQn9xLUa6dHDwZTPtRDAwHnDeWLGizkm9XwBu9sUchaSbpngo6DL5fLU1W3NJPLOwlbLBngwlJ0R6z8IAR+zRFXl2ZEsmrrxEVAuTzgoeugxwW+X1mMaB+5RJofnTS7fsudVARUzGLu9W+XDcjmHvTXGBe5ac2Zw4nX9Risu+WUh+X+QE+XJyfZWHUcelBhbZiyO/cTy0honosRZuTaz56KfCnkMg5I5FoQHQTB8ONu1zmsXQAO98A== 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=tro3RCciiAhqhRVGASJdRErtu4f8hjOXtCjkOTIp6oc=; b=ap43CoiBy7Ud4N80Tw6FvH/bw/xnpmRFiWIGc63Ikj8df6vy2rJLClByrdSf6be+bdSYu7+MPO32E5q7F8J4YW9KZN+U5/S2y1r74Ys9ZZN+TfXkkos9QY66xM+B+p7VIAbVYPxEYi+wIgFn/c0pHbVMtMSZhVlsGKX6lDtvYYjsT7LQQ9WrYV3yDAtti/WHIKE65kZYpCEXhaTmGYTUwKwen0rwsf6PtDO/Hm3eOYUgxqyRtmBcwlWfRh/8JN/Mg3RTlnL0gs5+RivDMmfZMCtkOxJTGAUQ4guatEFruH30A2AyAkTcwXpVo/x5tSkjoqN83o4dWAmQ6YTXJwyPkA== 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 CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB4082.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:bb::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Wed, 31 Dec 2025 02:35:57 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%5]) with mapi id 15.20.9478.004; Wed, 31 Dec 2025 02:35:57 +0000 From: Aaron Tomlin To: tony.luck@intel.com, reinette.chatre@intel.com, Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com Cc: dave.martin@arm.com, sean@ashe.io, linux-kernel@vger.kernel.org Subject: [v3 PATCH 1/1] x86/resctrl: Add "*" shorthand to set io_alloc CBM for all domains Date: Tue, 30 Dec 2025 21:35:49 -0500 Message-ID: <20251231023549.2390630-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251231023549.2390630-1-atomlin@atomlin.com> References: <20251231023549.2390630-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0604.namprd03.prod.outlook.com (2603:10b6:408:106::9) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) 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: CWLP123MB3523:EE_|CWLP123MB4082:EE_ X-MS-Office365-Filtering-Correlation-Id: 7839a839-68cb-44e7-8147-08de481553df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ufiOYiki920sAWLv/TfMQf1k3UAOib/LsBldUrMpBG1gaPmuNQwyg7u5559B?= =?us-ascii?Q?xI7oqbaezBDz61L4Rd6jM0Do9HlZfV4L5j8KTC0lwHUjTt9FMYYyy1qvqloq?= =?us-ascii?Q?S/DEIlMVRCfODiENNGbUm8rC7Jz6BAl+hX3rrmPiXiKE2WPrjJ7vuaMyJf2p?= =?us-ascii?Q?6hQzU1MsPHzyhSH1gUVTYzCAmmhj0xDUNx0YG8zMF2rM9wp01dG4b4URGywA?= =?us-ascii?Q?VmR9Gs4tWWZiCvV1dDWw60C8q+YelY+xl6yokgQtEFMGWnse5ZFJ/o94REXP?= =?us-ascii?Q?fllQhdQ8ueR0ZjxoX+Sy0BlIUcbrg29zS0jhcnbI6xeiYfJBWn6nIdNrJUiM?= =?us-ascii?Q?IrpHDX+UZ7KwYwGCcrCxaPjVNyvP7aWvpyV6WNxhcUDZLnzxqPqKrSxQq4k9?= =?us-ascii?Q?VogWIyaSzdpEgIlgQeCigMizmJCZKc9tT3uP2awzVhhDImElpukg3NQ7lFYf?= =?us-ascii?Q?54OjDQ9jC4qlNolmbwaWowRpiVqrM1+B2UiNTvesPGB/cSRWpElFRNYh/K4H?= =?us-ascii?Q?DCEiqiQQZBjYKeZiwQwWHwQxPOgBS3fsvHgz7mTB3QhOWoXFOKvv/2WUnKbI?= =?us-ascii?Q?pUl9qFKcILMp40GfexnXfj44+j4O47jsfzsWn9R2Np3fnI/F/8/LWIBDpQu6?= =?us-ascii?Q?eO2nrhMQQcJVb4uPxjT5ds/XjHG+zRiR7xLYDtfHkHnG2E47zN0EBateVt3r?= =?us-ascii?Q?JKMFAnbYFTHXBo+YN0Y5q75C3IDc5L5XF4P+4tKOGwxzC/5LuLn3HG80oySO?= =?us-ascii?Q?Bb9O7cMjfRfhdlPoIvGYsZXaLO6sM0LxWKepSLMKTq8LXSpR5mugfmx/httX?= =?us-ascii?Q?Q7/Wh1pe6Rt3AWEEsxmOhjzFbstka/ThWAWMMO6y9b5Sfq43jYM8HMS3ppjh?= =?us-ascii?Q?KICe12ox+ZcrYCXmdgCosEL7Y7g8c+CZ7yr4h+QL3/B1vOIoubKtO0Gsj0lc?= =?us-ascii?Q?OLpAJELJxiGcxFWYczKKcSeNJqOG9hilWmZYAGOP7+zzk3/RVk0TJH/OjuEf?= =?us-ascii?Q?B057nm9r0JB3amOTdp2MRxqkVfrCK/sm+Vx+jWptz5eUXQS3BS9Ab+G4ohL8?= =?us-ascii?Q?k8+yGKCyydpd+qbfqF1P6LKth7YrJUXN3trR2hitXcXh/roZedMjsY9LF4Vg?= =?us-ascii?Q?eM8dB0UkDz7EYG6JpCB7z07sPCmRMEA1zvEwBFCqB/mo3zwCgsFrHAxiVz0O?= =?us-ascii?Q?9kteYSF0FeXrO4+9OcQcwgVkj9ngOjx1gAqTFA5uNKMNxyq2WELKfOrZ/4CB?= =?us-ascii?Q?EQ57Itj6pPp5soEW2HsRDGJiZr/Kv8ux+a/QtD/rvL2xnD2bcIPELqU92Nxp?= =?us-ascii?Q?4NquOApCWkcjPFGVKx9huoOVEWPawhP6gjPU/vSKhuCBCzo60Uxi4JImDpYW?= =?us-ascii?Q?XL1YizbgvCNK51lQTrlA0oSSBYjYDobEKUtHKtjwag4Ir7n5ZelkbMzZpSbm?= =?us-ascii?Q?kvugyJk33/ztCOhqWjUmzB5f1qqU0+4P?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+c2+4ooNSo3Tz8+W6jrQN1dQOdgtRqDRXpRpAUzCh9By66SxnrBiSyYFCjqt?= =?us-ascii?Q?z6QsBjsOd5/VPUvznGtxME2JFPpA6yf+MKnMr5R0D4UNdiJh8x1Qee/DmP8e?= =?us-ascii?Q?w362QuNr/JBZ/50tkk98RsVU/kyu3evHZjhkyhUZ7+xELS8LVHPO5DAMm3vu?= =?us-ascii?Q?0AKyg9izk6ijlz6zblQIaGgcpb/SVcflfOlPRerDpi+wRIETPrTyAu45f2eh?= =?us-ascii?Q?r3v25537lbqJ555ImHkSBHHpRuzeAcw/JaDYwObrt4thVhWH2eo6gT1Imgk7?= =?us-ascii?Q?ST73oq9Hae2YsEoQ/By/Bta/0dloIAuUMeq/f0PJ96e2mG7LNeBdUOokqc0h?= =?us-ascii?Q?iqSqOFarLE/khzUfr+/VdMhbwHn/CYB6U68bApefbNzUZfJrS5LZDFTXyWqg?= =?us-ascii?Q?cXb+EJW/LIPwx8LisB1GE/Wmk48tf7mdjosE7J6chcjVUwoX8jIMsEZwWGPd?= =?us-ascii?Q?ZUkqc+NDKoIHwp5v3IYB09ZlmxmKZ+GzevOOmMMIJBdRZUZHrJwl1m7yx0wp?= =?us-ascii?Q?Sav0lGLwCAmpN152x0N38Rr9nAilR4E+0m19Bas9RGDdd5B5zv35oBJ1/NLT?= =?us-ascii?Q?ZeHt9eBpNKkuogR7Q+/bWAqTy6H/lEHaOVRlmdvln0YzjhqN7RFdnyay/TUW?= =?us-ascii?Q?/qp2LaAxMopb+JwxboJytjF5VVOSLpj/iHxt2it0PYCCXJQmWYH6QSRil3Aa?= =?us-ascii?Q?5JTBXmMS3Ww3kc99uxFmRVdya04PgO8oqsU4RyaWPBlPt6iQGJ6tmNK3sikJ?= =?us-ascii?Q?H1G48hTYtuyLWAk6dwTT4pC2OzpOE5lHj1HfGv3WG5LQo3L3nmiITegJBE52?= =?us-ascii?Q?+ntsRJcp4g9ysYWLpJbmVWtEu2n7cH7mYMZg7PXT9NZaBlW4TIYNBp8JhjYE?= =?us-ascii?Q?LJ9w5gW3ianwMWbIXDzr5xrz1eEGXmMdKrF+xBIEbB/zzrjRrYqZehntz9wM?= =?us-ascii?Q?Zufb8WEg+ANlzvxtVmtXBc6MePcEanapHB2K81ISdGmylFHET2asJEeg2TOi?= =?us-ascii?Q?H6gv1L6Wj1UlBp0rrYgnTi99mBBL/Hn5KFbp7YuvbVAViRIb8ERto7JbWzlR?= =?us-ascii?Q?nFzS+fxGicKqq9MUfuuheCXdQD25Mg8K8x4O/p9oF/8wldXAnhGD4Uv0AhvU?= =?us-ascii?Q?j1xGqqDgxHto63rXYxja6fc2MzcRtM+hn1KVCCESlWB+g70RVdrxAJd8+v30?= =?us-ascii?Q?aem1kgsrjRsGpWf2ZNj9mx73RCJXOiathY+kf35nweewz+4gk4BMCQpTWzeu?= =?us-ascii?Q?76ETIfWeD3338FoBj3jpYvp9bsyJbLpcA5r/4ACxM80zfJXVaNeBQIoia/rh?= =?us-ascii?Q?IgfjK6369XB4Z1D19UlUiPhrsSYtHZOn9iCe6KjGloO5tuV2RKpm+ZUUzqlY?= =?us-ascii?Q?o3i2XoYxqABAaDGuRc9BRhFiBTQ5FcvTkcV+tY61/TWnGBx4OqxGl7vfY2/O?= =?us-ascii?Q?axSwUm/euJCxdUOCgQRMtFEFDcKU1xHhNFUOnAFnr8VjI3fJQ/BYfeU6dXxx?= =?us-ascii?Q?OcmQAMhOelwIWBFVaQG7rwxXyqp/wedZYuvyKAf9CgqAI0bHyZxu0D4/Y8ji?= =?us-ascii?Q?kNlZoJEfhQfE+C1wVInAYwXbSAxHmvIwkBIS9D2Hik37Gess8J/ogJ8IDHdx?= =?us-ascii?Q?KNkW5Pxdj8o2utVavMUCeGfMPEFh85rv659TzwvNmesazo4R8ykDGpw0FnOW?= =?us-ascii?Q?rjCuliywtVgC5krqXWkGr2skOgmPbBE+7C/WDbHfYSbX2UumytFNus/LmAkl?= =?us-ascii?Q?0aEIoDLA7A=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7839a839-68cb-44e7-8147-08de481553df X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2025 02:35:57.4082 (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: Zsx5iEYSD+0H/cNvNo2ci56C6bbBfbMbUmTh9KknVDfyAzS0goZrzsjfU6vRdWpZVVDHC/DBCLHFhh5HSt66hA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB4082 Content-Type: text/plain; charset="utf-8" Introduce a wildcard domain ID selector "*" for the io_alloc_cbm interface. This allows a user to update the Capacity Bitmask (CBM) across all cache domains in a single operation. Currently, configuring io_alloc_cbm requires an explicit ID for each domain, which is cumbersome on systems with high core counts and numerous cache clusters. Supporting a wildcard selector simplifies automation and management tasks. For example, a user can now write "*=3D0" to the io_alloc_cbm file to program every domain to the hardware-defined minimum CBM. Note that the value provided must still adhere to the constraints defined in the resource's min_cbm_bits. Signed-off-by: Aaron Tomlin --- Documentation/filesystems/resctrl.rst | 8 ++++ fs/resctrl/ctrlmondata.c | 60 ++++++++++++++------------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesyst= ems/resctrl.rst index 8c8ce678148a..e4d92c865e44 100644 --- a/Documentation/filesystems/resctrl.rst +++ b/Documentation/filesystems/resctrl.rst @@ -215,6 +215,14 @@ related to allocation: # cat /sys/fs/resctrl/info/L3/io_alloc_cbm 0=3D00ff;1=3D000f =20 + Set each CBM to a specified value. + + A special value "*" is required to represent all cache IDs. + + Example:: + + # echo "*=3D0" > /sys/fs/resctrl/info/L3/io_alloc_cbm + When CDP is enabled "io_alloc_cbm" associated with the CDP_DATA and CDP_= CODE resources may reflect the same values. For example, values read from and written to /sys/fs/resctrl/info/L3DATA/io_alloc_cbm may be reflected by diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c index b2d178d3556e..7b3119f91b9d 100644 --- a/fs/resctrl/ctrlmondata.c +++ b/fs/resctrl/ctrlmondata.c @@ -873,41 +873,45 @@ static int resctrl_io_alloc_parse_line(char *line, s= truct rdt_resource *r, struct rdt_ctrl_domain *d; char *dom =3D NULL, *id; unsigned long dom_id; + bool update_all; =20 -next: - if (!line || line[0] =3D=3D '\0') - return 0; + while (line && line[0] !=3D '\0') { + update_all =3D false; + dom =3D strsep(&line, ";"); + id =3D strsep(&dom, "=3D"); =20 - dom =3D strsep(&line, ";"); - id =3D strsep(&dom, "=3D"); - if (!dom || kstrtoul(id, 10, &dom_id)) { - rdt_last_cmd_puts("Missing '=3D' or non-numeric domain\n"); - return -EINVAL; - } + if (id && !strcmp(id, "*")) { + update_all =3D true; + } else if (!dom || kstrtoul(id, 10, &dom_id)) { + rdt_last_cmd_puts("Missing '=3D' or non-numeric domain\n"); + return -EINVAL; + } =20 - dom =3D strim(dom); - list_for_each_entry(d, &r->ctrl_domains, hdr.list) { - if (d->hdr.id =3D=3D dom_id) { - data.buf =3D dom; - data.mode =3D RDT_MODE_SHAREABLE; - data.closid =3D closid; - if (parse_cbm(&data, s, d)) - return -EINVAL; - /* - * Keep io_alloc CLOSID's CBM of CDP_CODE and CDP_DATA - * in sync. - */ - if (resctrl_arch_get_cdp_enabled(r->rid)) { - peer_type =3D resctrl_peer_type(s->conf_type); - memcpy(&d->staged_config[peer_type], - &d->staged_config[s->conf_type], - sizeof(d->staged_config[0])); + dom =3D strim(dom); + list_for_each_entry(d, &r->ctrl_domains, hdr.list) { + if (update_all || d->hdr.id =3D=3D dom_id) { + data.buf =3D dom; + data.mode =3D RDT_MODE_SHAREABLE; + data.closid =3D closid; + if (parse_cbm(&data, s, d)) + return -EINVAL; + /* + * Keep io_alloc CLOSID's CBM of CDP_CODE and CDP_DATA + * in sync. + */ + if (resctrl_arch_get_cdp_enabled(r->rid)) { + peer_type =3D resctrl_peer_type(s->conf_type); + d->staged_config[peer_type] =3D + d->staged_config[s->conf_type]; + } + + if (!update_all) + break; } - goto next; } } =20 - return -EINVAL; + return 0; } =20 ssize_t resctrl_io_alloc_cbm_write(struct kernfs_open_file *of, char *buf, --=20 2.51.0