From nobody Mon Dec 1 23:02:28 2025 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022091.outbound.protection.outlook.com [52.101.96.91]) (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 B1C1620DD72 for ; Wed, 26 Nov 2025 17:17:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.91 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764177424; cv=fail; b=Tp6jp2YGnz974BEo/mUAIpFLx6jgu6KQ8KeVEFtQkmWM+2PzxcZET0iXVrBkhccyxUb2l5JeUslDvzjmcw+fciwPg4E8uAC65SPGXwZWnxSLm2eWrNaepsA69OaWFUdtq4IBiGA7aVtoE7HqyrwwW24WWekJaPAtGwMJCoz8piQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764177424; c=relaxed/simple; bh=0zjtdckSDh9Gca3JT59dvmS7ipv8ZTHx1Effg0aLzFk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=W8nJbOFuICmOgR9Tx9fwGKmH63txJbmAIKn7WjB1nP3U7lceA5l24fHnSdXz7BHXugyBbMbGw8wGL7LXEhRKgUioq9KXFPRLOzK+G8Y4xjF35IWm9Ye2ewVh0bAZEu/XmmGO6m2ngsvCU7sm/M2I/52Y8KGiPtWI0TMS1nvXNg0= 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.96.91 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=nUHNL/ZB/htOMcyzCEZGILhBFCcIENWX5XmYwhGHl2BtEI0wGeVmogk9pDmN4xdcHFmps9p85G8nB9h8pB0oxtx02OXCWdG3czPZrSSgrtIzMM6Po3DqoucTTT1f8O/ndIDnWGNfscSXJ3ZQfBDtPPzaq48IWOtpcUfF+T50SFXFAqA8GN9XZU8FqhV8GqKmg/NkTBfOHjp+y4pPmE5AuJf9pW7UrsBnGLwN4mkVGBRXfisqowC8GJ7B5LQJy2o+DCmVZNvZxwrwOy7TjE+dmG96YVPQvNcMmUte4waz8BTFuDgqTx6es/+xtzWM+GcFHzU1Vkk7b/QT7WHcdZIdDw== 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=XaS+OS70NmiRkMsBS1zPxCmTe0tuwRdybLzluAdBmlE=; b=xUDF1bJ50vAvXJmw9NboL/SGoUq/jZ21YXWcMWz7BtQ8QTK86FaaHPOHQaGL3JfPCWb0n5DiQsymF4PSXr7f29eODIniPH2UfxGRIZyLTZN+nC1ny7Ol1O98t5VllalD+FBt2lSzeWmFS1N1KmwRNMx6nLMYu2XlodshcVB53a1Qjf5XbGN7wdZdr05YgdToJwSpbOwLcayrOwneDi+u0QFKpoc7kQLojZknuN8PwzrAEDEHUiYzm/0aYZSW5gWGykR+VywwaLuiOyLDC6Ll0l8+LhAR57DqTXt//gu1euDkBrcOiZr53IwBnkMNBAhtfSkVHqOSLJzQxSqc3oK21w== 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 CWLP123MB6960.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:1e0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.13; Wed, 26 Nov 2025 17:17:00 +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.9366.009; Wed, 26 Nov 2025 17:17:00 +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, atomlin@atomlin.com, sean@ashe.io, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] fs/resctrl: Add helpers to check io_alloc support and enabled state Date: Wed, 26 Nov 2025 12:16:50 -0500 Message-ID: <20251126171653.1004321-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251126171653.1004321-1-atomlin@atomlin.com> References: <20251126171653.1004321-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR0102CA0070.prod.exchangelabs.com (2603:10b6:208:25::47) 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_|CWLP123MB6960:EE_ X-MS-Office365-Filtering-Correlation-Id: 75cb23ac-0639-47d1-7ab2-08de2d0f9c7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?72gCg/Z0r9rgkhaiA8TUPZmMW6ThC2pXvgunGHs3CNtLoHI5biczaWGAia0U?= =?us-ascii?Q?Y9SDpxWXb8P+yv2DF7bUZFQMF2QcShaxDtwhANAOpSOagaEzUfDxPNfyWhoI?= =?us-ascii?Q?DFdDUeoaZH8hP85CEZO3p2bP97qrMM+Zfnchv2hXixlbiNDHcoU0cEQBcj3c?= =?us-ascii?Q?3DJa7oHDy0HC9/WzpKZLRxmcH4ihN0++AcDKmkj7wplT1+OknMDfEAqdVRvO?= =?us-ascii?Q?mr83wWQ8eHslXGxqzV8ixMsZQm5y7tDljWVIL0PRpnAo63ptBL4squJl4ZFt?= =?us-ascii?Q?UcF4sVWHMDn0V6panDmSLWbmdqcE1wMaDaouLJHNAaZl4XeRRQVfbJSoxDyC?= =?us-ascii?Q?givLSS6TfpShubItZrnIIb0LC9KsHoaz0exHG7AL2l9fWYN8Yf53APEuGmTN?= =?us-ascii?Q?P+SPprKsSt4pq4GS6Ce1bwevKzuBjSbey4VktsF8MoCtHpRXV9RRKqyY70cC?= =?us-ascii?Q?2FFb1dFr+qbm9mm9KQFW7xN8VqUgmjCP/4OfEiOams/UT+5nXGKpFe+pUpzq?= =?us-ascii?Q?pd9KMti/txtlBOa255JOSLDMfXpm8691WVjC9tgWdHdYZUEq8h50nozX/Vjd?= =?us-ascii?Q?EwiOnSXNd+jGw2nGFzLcJxQc922ZOGi3Qj4QaIXvT5ap89YBCTGlldN+j8qt?= =?us-ascii?Q?QXGWh7NVQQjEu5s0xx5Crm5Q4KVZGTH3D8pwds9sXRsgLxZadWZwMGGKWoSA?= =?us-ascii?Q?3TifCnow+1AYdLHf3xdox0zrRyCSCAg/c9/NZBdjNb+jqI/WBC76Hgi/lJUO?= =?us-ascii?Q?XGTsKN4/5XWJvmmWo8SkOLom2sLMTzfwO5lvQcMjS5uMWsa8EM8wz34GdbWg?= =?us-ascii?Q?J7d22fRVNhPLcAulEMufy9o4k3z3bdg4YTiG1Afrqg5bZNelBNt8JekvE02M?= =?us-ascii?Q?ldOM+3sMrRYaMlG/NRlgqaycB3EuEPDMqdWIoVPJQvm4UyHO+iEf3m7zGFRm?= =?us-ascii?Q?wPrm+KOIgoEmxlxV2d48a/YD+Hh5vrxVPBarTdFR84gnohsl9MK3sfyCyvfi?= =?us-ascii?Q?AHpQLmyw93e+jszrkU2ljEy4Y9xcTXfOvrarr2X7wImSmdTpaKzIRXB1TnI8?= =?us-ascii?Q?Xsaf1RijIQ1zGnI8ehMSIAhA1Ad6usE3OfAqL5Kw0jvGTr2IwMEnAT0EgE3Z?= =?us-ascii?Q?omCYQMpY1jTkHQcHGp6UQWaqeTaRDzYijhn6jV488B3Ax5ZJ/wUB+IV4k+ai?= =?us-ascii?Q?/4PAp2lbLoPvvHQG7lXYlSRfkpfJUHhxttWPz+cvQtlNO9C7BDrNBDh6jIEv?= =?us-ascii?Q?77H5+YYdzMXbEU8z2pfmj2RCm8o9g1zGB65R6LDUQGFxpB49VdsbI1g0tBPk?= =?us-ascii?Q?9jGqWIyCybzx55bFq+e32nMZwXPL6pei2B8M3SOK97eLF5vTvC5sGtVdpIGR?= =?us-ascii?Q?NeqXC7Sl7+CdVop2TIIqUHkweCkQhN+ygj6OOFySPHIS9DCAmUFsXc1S9hUj?= =?us-ascii?Q?kSVhAGajvBjgEyzV0JQKZ2reHHQpgu43?= 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)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Gl5x+Y1ygGvzHDxU2klJas7GVL7F5maY8eRhQZ/wZxsEbaj4S31KljvAUqSK?= =?us-ascii?Q?KXz53ixy8aHt0chvZoyxb3jdqGxOiEa3CBTCZMMiWhWG91Qwf18RvkLRHPNH?= =?us-ascii?Q?5mtk0iyw0hJ64c4f2aN/VwGJpeoVkIK5auGiHyUFLigYp06FWXxM1pkbaEym?= =?us-ascii?Q?e39GI2sp0o+azYgwnOnWNCSrjoSFN9rMUpFxQIVZuthfIQIzb5an8RSlv5+K?= =?us-ascii?Q?RldnbpJEaV1OQ3aWt8AFfbH6ruj1L6t6c6/8VZYigqWqk1sY+uXXO987t7Ke?= =?us-ascii?Q?LKWGYQkBNckqck2QmJLgpv5K4jNrafowQCvfivL1ROhLnuo2KuO0ZETpx5iK?= =?us-ascii?Q?cUMrueOei6QHv+8k1GfRa7FqSIISgdCiyvNi7L8kjYSLhIuy8x8FlO/2HfzD?= =?us-ascii?Q?kncnQ65PoiRhWxl4YBLc7mGgCAlGGuWOKlqEIiOanvF/Rdsh92kW586l0U7h?= =?us-ascii?Q?bnCt/giFfhx0ERAYt4AjqV3ia8MhMGtn+vxFf6Y7SxRR3BI57Z8EaOqpxm/K?= =?us-ascii?Q?1+ZOSh9xSQwMwLByLMbynS+n6BtyQkOaUvu5Al70r+0PEaJUFa8o5P2RattH?= =?us-ascii?Q?mVwv+v0peNeoed3KQg2NiujsNvTfDzncCQzQ4WD+nKLyuRxzqWV0o4/PL6jW?= =?us-ascii?Q?n7zb72umjs28aYSswAYEJ9i05WHnqB07KicT7WIh4/gwRxL1+R29jylWQUpN?= =?us-ascii?Q?DtAHtCR3XFu3jqN/ZYR+F/eUxP3ROXMK4AY0/R9h71qyx5t3yDdDB2E1X7ya?= =?us-ascii?Q?4MTKLC4ZxYZvNfXTq4tCt0VjSeR8w4w7zkdu5MGfs8M9HdTvgOJKxkgFuPgl?= =?us-ascii?Q?it44Qqz3/u2Xe6iLvN+qCsn78Qqzr9uyBQyOyQJ9BSFjY8EiMmu/dcC8eMfL?= =?us-ascii?Q?7pVYpx+aX4MkhlTv2KxPgIQtcwW6+iodxwXlrOSWCvuihfZx26Ln3rnlGejj?= =?us-ascii?Q?XhSGXI43NmuU2fDF3C3TGVkqpQP6PIIf0XrB726HFfFuCkYOteN74leT8oh/?= =?us-ascii?Q?9bIiU0x3e6hj9HZhchvZHVY9ACQBfnya18TC6Bnm246U1dbpOGsY0p+Zi2eB?= =?us-ascii?Q?fsgFfLAPqlnp4quruG35cZPWTAzhNIU6U9UEK7k4/z3eqUY2l40RGKAgY23n?= =?us-ascii?Q?Jcwaig7LrWWMqQs6owdwtyKgUyd2ZclkU6jUXD2FaFqYzUAuNZmzLHz+kPKM?= =?us-ascii?Q?ppRSE5qGBa4/Twy4A1fgrGXOT/OFEjB1nZIZggjf5b/aku+lQXQDqgBe6U5+?= =?us-ascii?Q?Rqrj5v3HcTzNhr9JMW0RZ3wh4kUZjpdHFNEEafrIF3aBVEvm3tXLqW847Igz?= =?us-ascii?Q?2b+KCUWUzA4/hkhlz7tRcyMVR1NAl1W9OvC3mxNdnEjxdiNJcGZ7onI+nu2N?= =?us-ascii?Q?fFsonupuUSJhOCpgB8ZxfeUq3CQn+vBAXYCBSCFUkrfcgJD7eHjM+R4M3T3b?= =?us-ascii?Q?W+ZY+UWhB2yQjReusFIfG4Gxvc6BBqcbgnioIwwZHDIxrtBVZHIaHfcaeeTa?= =?us-ascii?Q?R+5eT/zuA5hpYNwwDYIhvqrR4vsT0vGATZEfIh+GI8++v6tZeTfJ3MX8oDnJ?= =?us-ascii?Q?uWHGv4TKbe1srZN1UcQSTdWei1on2TR01XkzPmJO?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75cb23ac-0639-47d1-7ab2-08de2d0f9c7b X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2025 17:17:00.8243 (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: KyEQSPgZfkfEaCxELbWuFRQoK3lyMHpCxGw/XCKl6m6Dzrh3YMBmc3eKsfmwzqJf7N0jYzmILX34Xp2onL3BMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6960 Content-Type: text/plain; charset="utf-8" This patch introduces two helpers to validate io_alloc support and whether it is enabled. This reduces code duplication, clarifies intent, and preserves existing semantics and messages. Signed-off-by: Aaron Tomlin --- fs/resctrl/ctrlmondata.c | 74 +++++++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c index b2d178d3556e..5f6f96d70e4a 100644 --- a/fs/resctrl/ctrlmondata.c +++ b/fs/resctrl/ctrlmondata.c @@ -758,6 +758,50 @@ u32 resctrl_io_alloc_closid(struct rdt_resource *r) return resctrl_arch_get_num_closid(r) - 1; } =20 +/* + * check_io_alloc_support() - Establish if io_alloc is supported + * + * @s: resctrl resource schema. + * + * This function must be called under the cpu hotplug lock + * and rdtgroup mutex + * + * Return: 0 on success, negative error code otherwise. + */ +static int check_io_alloc_support(struct resctrl_schema *s) +{ + struct rdt_resource *r =3D s->res; + + if (!r->cache.io_alloc.io_alloc_capable) { + rdt_last_cmd_printf("io_alloc is not supported on %s\n", s->name); + return -ENODEV; + } + + return 0; +} + +/* + * check_io_alloc_enabled() - Establish if io_alloc is enabled + * + * @s: resctrl resource schema + * + * This function must be called under the cpu hotplug lock + * and rdtgroup mutex + * + * Return: 0 on success, negative error code otherwise. + */ +static int check_io_alloc_enabled(struct resctrl_schema *s) +{ + struct rdt_resource *r =3D s->res; + + if (!resctrl_arch_get_io_alloc_enabled(r)) { + rdt_last_cmd_printf("io_alloc is not enabled on %s\n", s->name); + return -EINVAL; + } + + return 0; +} + ssize_t resctrl_io_alloc_write(struct kernfs_open_file *of, char *buf, size_t nbytes, loff_t off) { @@ -777,11 +821,9 @@ ssize_t resctrl_io_alloc_write(struct kernfs_open_file= *of, char *buf, =20 rdt_last_cmd_clear(); =20 - if (!r->cache.io_alloc_capable) { - rdt_last_cmd_printf("io_alloc is not supported on %s\n", s->name); - ret =3D -ENODEV; + ret =3D check_io_alloc_support(s); + if (ret) goto out_unlock; - } =20 /* If the feature is already up to date, no action is needed. */ if (resctrl_arch_get_io_alloc_enabled(r) =3D=3D enable) @@ -839,17 +881,13 @@ int resctrl_io_alloc_cbm_show(struct kernfs_open_file= *of, struct seq_file *seq, =20 rdt_last_cmd_clear(); =20 - if (!r->cache.io_alloc_capable) { - rdt_last_cmd_printf("io_alloc is not supported on %s\n", s->name); - ret =3D -ENODEV; + ret =3D check_io_alloc_support(s); + if (ret) goto out_unlock; - } =20 - if (!resctrl_arch_get_io_alloc_enabled(r)) { - rdt_last_cmd_printf("io_alloc is not enabled on %s\n", s->name); - ret =3D -EINVAL; + ret =3D check_io_alloc_enabled(s); + if (ret) goto out_unlock; - } =20 /* * When CDP is enabled, the CBMs of the highest CLOSID of CDP_CODE and @@ -928,17 +966,13 @@ ssize_t resctrl_io_alloc_cbm_write(struct kernfs_open= _file *of, char *buf, mutex_lock(&rdtgroup_mutex); rdt_last_cmd_clear(); =20 - if (!r->cache.io_alloc_capable) { - rdt_last_cmd_printf("io_alloc is not supported on %s\n", s->name); - ret =3D -ENODEV; + ret =3D check_io_alloc_support(s); + if (ret) goto out_unlock; - } =20 - if (!resctrl_arch_get_io_alloc_enabled(r)) { - rdt_last_cmd_printf("io_alloc is not enabled on %s\n", s->name); - ret =3D -EINVAL; + ret =3D check_io_alloc_enabled(s); + if (ret) goto out_unlock; - } =20 io_alloc_closid =3D resctrl_io_alloc_closid(r); =20 --=20 2.51.0