From nobody Thu Dec 18 06:16:21 2025 Received: from CWXP265CU010.outbound.protection.outlook.com (mail-ukwestazon11022105.outbound.protection.outlook.com [52.101.101.105]) (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 22DB0328244 for ; Mon, 15 Dec 2025 23:03:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.101.105 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765839792; cv=fail; b=BqdrAOYRP0RPdIxxiJs5YEvk1C24+HpLkHKVy6gFz6H+Fdz5PvHjtArovzo13YrL/CATbHhm0IKpkN9EqQUA40881s/DhoMl73qdgv3uWj85A0uKCdOEM5zevd31l3WGeF1C7bkfSZiIUnGI4TuTi0J5AkukC8MXBIaqmxgLDOo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765839792; c=relaxed/simple; bh=enZX1Rq/78GCFdmHNhTQaNxXQGv6bg0+XmHqg6eK2i4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RFrPaHDw7z+90bLqrD77jNJUPeTChHJ5w7e+kFgGDG6VZpdT9N/KdssY02XZMzmodeRJoDV0Tm9vWT8j2hllGXbaRQ0ckoyfGfNL7GWnJfpgjA07VQKDLDtlor4676DTgJ8S/85sGXApXBq2lBfduVcFhIGvt5bm3wpyYDTKKEo= 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.101.105 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=UmotDBU4CzQgoLeXveM7cJuqIORYB+kXSL+Y9EqRE68rUOdt3x5cfes2T4UDpFDtUIMBbT/1+HPsyR/fsbUiBCFHRwLXME6X8LsHldDmfxXSEP9/ljjFJhIJpayjktq6LOPWKB1pwHDxefBnRrlpTRl8Io2lDQKtXRxiq6Q6sBpDur6kAVG4mdzvPv8hfuY0uGGrwLTJGu8A7ZetanUZbun/AgQG94iLdxLAxbAwo2QhTDZ93UNf5SBOAc6n0MiqC3nm9lJ+SwAhnaPCzLVMijSXIKljjbwlawYtUQq83cRBwZfddEo6dN2tXVdukHdjRMAQ6nS8BQ57tVSrSi2Y5A== 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=6FCpJpkJje3OqOvqjnNIWMG78fYepFUcNy2tqcISvvA=; b=lGSv1aVKQyo2uu7izzdP+WXlw+5ViCAe7cwsuGBKNazUZRgIitOJue6XzG7PV3VNgF4wiI4jdFsR7XLkEDqZamT95Ww6g0wnmKC1fjTKyI5wUkGm1S5EaGrcA3f28fU2uDiorurvGy11xCA3FBvwniLKTnm84wtXziacSHWknGxzk4QjZOYTQCf4/vDUii+KSfQQMDqFLcSelUWHbLfWRJixCoY4K/G/rGzosbVS/7QQ+ZHy/NwzYeR72V7xCBjvLzb2AV/Cgi3vEaiXuBWP4Xgwl3Hw9Xbsc4imH4U8PHMCg1bkhsYOG0fEWqr4ZKB7h2BFNsHcgDH1kTDwRfucgA== 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 LO0P123MB6302.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:291::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.13; Mon, 15 Dec 2025 23:03:08 +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.9412.011; Mon, 15 Dec 2025 23:03:08 +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 v2 1/3] fs/resctrl: Add helpers to check io_alloc support and enabled state Date: Mon, 15 Dec 2025 18:02:55 -0500 Message-ID: <20251215230257.1798865-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251215230257.1798865-1-atomlin@atomlin.com> References: <20251215230257.1798865-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0146.namprd04.prod.outlook.com (2603:10b6:408:ed::31) 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_|LO0P123MB6302:EE_ X-MS-Office365-Filtering-Correlation-Id: c9d525f9-8bc6-470a-fbb5-08de3c2e1c69 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ys8NEDK2wTccFWkB6dmuw/yqR+/4oat2ym7E/CuUPL1Hv9bjQywAxxYr5L5/?= =?us-ascii?Q?YenaX1uVEfPnwCwJfiWM8Xb9XV3iWIFHmHVzd5Tiha/sW0Okc6rHNKXCzxK/?= =?us-ascii?Q?cZqG0nhJnOIP3oKXDujzzgDvlzktKAcCpobQY+rfZYsrcJed/0Bt5aFUPPwc?= =?us-ascii?Q?Ux6jDIvd0hSX8O9Yw8d4DcznFouEkdeA8uWkxOcf/eROAExW9easOtsCwbZV?= =?us-ascii?Q?vsuYLaP7DJrMYfbUr5zFopIza1nqGKfO7hGLgLmkJgatNGriuDCCviBE0sGn?= =?us-ascii?Q?VdDxjPwd/qzjgCrh7IBcHsQ5Opho6XMm8dc3TL6n23kLXJtZH/hiPGgMUPNA?= =?us-ascii?Q?7N50ai/sgTkBplw4LuPc+TsciA7tea8vfURs4IJUvmG6cJlmVbM+poxOV6Y4?= =?us-ascii?Q?NhHWwN8dDSujtMHicspM1sU3/LWaqsyxVSmqemLZz9jCqJtnAmmuh7g7cRSn?= =?us-ascii?Q?myRzqIr6rcxK3JhVRZxou/kVDRytOMxiyXtIKTL/4QjeKgtKilOfPioA973D?= =?us-ascii?Q?vcRqqgFfx0JSmabQN1n2qt6iZY3J3wBWur+QT3bbVqk0FQvax+jFLH1kb/3r?= =?us-ascii?Q?hcIKu0aX/cgU8bSY9U+RCIy7crc7+gjjruWdb3IvuTl0foZwxaGp++V3iogd?= =?us-ascii?Q?GED9SlRBFSfxtZc1Xy/3DDpoDUqNzOVuuw8cCJ6Pulr6qwZdgQQGkRXa1vVQ?= =?us-ascii?Q?gOSdlRDuMMzzkFsbLHrG7Ebz3IVWxX/IvYur7EEcnHDxahkEarEG53vXHzxq?= =?us-ascii?Q?/Z5Vb9e4y67CjN49LrUqVgKaAc1aO/60LijXMHUv36vman3JmKGf8b/VXKYy?= =?us-ascii?Q?8C9YIvffjv1wkWlsMbxtq8lpzY0XZtDesKngG+e8cV83WH+MaVeuiU8iq5oL?= =?us-ascii?Q?9YlXXkNcJWGwExNWgrABftl6Y//Fs3j4c8acYDJUJ10+UhpJtSiQa/RUnqas?= =?us-ascii?Q?hIDTuwCosOSEEZONFQFCnwK2BCnRmPbO7iQ+5BPOD1+PeLxYZBGIt+4JRGBM?= =?us-ascii?Q?AX6pZKJBhgK52c7a1B78tHn5S7hq8dyGl6r7JVRCOvUpsFRqwDv9dJexvnUA?= =?us-ascii?Q?ap8CMsiO5rvDhdoXFsLmNTfDbuLL1Nn5D1oRuZ/YdHXx9tHoppXCzZ8y5t5Z?= =?us-ascii?Q?J3qHYAOgfF81GpohnBcf/9TUBlPmyydnBqo1ItcDPkhVtroiicn8woCo2+Dh?= =?us-ascii?Q?chfTjVsj0jxz44iHkKgjG7kzsnBNdxnyU94G5w48F8LpTkWm7SoHfvE3Gjk7?= =?us-ascii?Q?Ci6CFDeK+zTkcQGU84Nry6Efa8zj9W5ZeXiFU/0QzthYRYo5q2cKCp1627vM?= =?us-ascii?Q?yH/iDn/YyWc6mHDkbnTkhpNUxn5GLjfHb/b2m7iVxUKoQso7oG0pOxkCIANB?= =?us-ascii?Q?uykaa/gLkUa4MqVhkGpBGswKPkZuxIj/Xo18D55yckhGjjl4//xbQ80OP6b7?= =?us-ascii?Q?yE3U0Ei2RgkyJD1LwCRvbyv0tcSpofkl?= 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)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?x1mSudgcQczb/xOLKpMvA2Z3EuSCUoXPPo2IN1b+LrtRAGSG2sWeZ3SBoxzq?= =?us-ascii?Q?uCwlHRIuJ6U0SPGGGVXNnBY/+KEHUrwY0nXQc/35tPgDV0oBo2AxqVIOnaKd?= =?us-ascii?Q?mwMjTFvAWM8Kov2NmnIx0SrswX9PTppLqUqjl0Gp0dhrud+arE+SBxTs7Jv2?= =?us-ascii?Q?CtnrZnkkafmEKrisH4kiB+xPbIS3dOo5MDkLe06yrV5/vODROmROumVkltPF?= =?us-ascii?Q?YtUR7sfA/VxI/KH0VyF1uKlD6fBfux2x9AvzLlfISQ5mmZmzf+r7c6CwKwIO?= =?us-ascii?Q?C4aWj5kEJH/tCSZt6hfFUDnR3ZHdGbBN6fUB89cvOd/twgWQyMcoPXNfTgyl?= =?us-ascii?Q?9mQihP2zODGh9SjwtjkxCwn6K/tQ5IVzn9FeAu96l/1JFhXAFyD9l5tJjnh9?= =?us-ascii?Q?e5Rluq15N91jvKrSr/9T11qNjopWkROwKb+WRkmJf6W7Ud0O5EzzQ+3h0ihZ?= =?us-ascii?Q?hFtaCXjH8FSThAU3MwZn3/ZdUDuufhdLtxpYRO/svokfEvM7AxTdA5ZS78GO?= =?us-ascii?Q?SJQ9aG/k5UagFt5c22xtNmvBBFMfhcoCKKx0tWAY2vL3nKstExD+MNX6enwJ?= =?us-ascii?Q?Lkyw1cEB5hMeeaWD3nQhuJd4jlp+R39YtBV9GCqo4zNNyJI06sFhvHMoUiFY?= =?us-ascii?Q?1dH9X1l/WtW7TFBbLTs+46W1ivL2vY4nG3iCz4Af0hdD+0jSQbx/z25FFJ/Z?= =?us-ascii?Q?vFXS81mLClounMrTdkpRm12YfC6Wprzjnl0jlSCuWH4ex5P453WkoKBqTYlP?= =?us-ascii?Q?C5ugmM6aBUd52FGFM+8IUnD59DMZ/J/wUPhF3ogCCsv7EDdQojo6Xsw/+CVy?= =?us-ascii?Q?sSN2kG0ePYV0eZOoJfwLSdtttP15oiWVF3e/wX3sRI+3CnGsvjUciU/hYuuI?= =?us-ascii?Q?qCKh69DUCJGNIHbqCA2F/6TwKKtKYZMwEXRlQ1dV85mVcssJL9UE6sd0Ddk7?= =?us-ascii?Q?VhE16shtl4nYWLfcEyoiCEgByCcpUC2MMuwhwzSYxyrArWwVZTx/z8M4kUHa?= =?us-ascii?Q?RMFOzBsI6WvOizXxhrsCW9MgBkCLQaPvXvSnEvVs198QjSU7HIuDBygmYNpk?= =?us-ascii?Q?BZddJQb+VnyDnPgB3o4HvXCuuhQ2t55x3oSfvpZAd5jpV3XFq9r/4pDXv5d/?= =?us-ascii?Q?mXzYXrimDxO1bGb3D1Awpbk04ygdGhhPEjX/OZuCp6QTKjKxOovcR67ubpZ5?= =?us-ascii?Q?dWZ0+ay83ogiCHSQD8UzHMx0zZodwX3XJHLKKxnXH8TLHVYIoZwx5KJK1hgG?= =?us-ascii?Q?J4sK7SAAiunrn04o1OWV+4p/EUChbBLCipLrUkJlFjkILHPhm1kBdxlcOYcW?= =?us-ascii?Q?Vu+aRbHy6na7nBsQMvQtqcwmRzjp1eQJaY3bPZzajFlQp1zUazaMBGr1xUJV?= =?us-ascii?Q?BAW9nU9bNmjvTXE6deZQUFvWNT+xZPQfxvZZa2rpG0S8nn0PgM1mjI9/t2mU?= =?us-ascii?Q?FYJSgX/DwEdH7qLHcQ7pwOFBwc+7oI2fvo1/UDpebcTdw7cmh/g0TZTb4sy7?= =?us-ascii?Q?YZe0nRy/Br+LoSXCCmgs4uvtHN82WG6IZV6BgX3Yu7z+Ze5COZkyf5t12pIz?= =?us-ascii?Q?XaubbW/wtO2j4g1TpbUzrLI/9lR8vb+RCDNb1wGW?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9d525f9-8bc6-470a-fbb5-08de3c2e1c69 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2025 23:03:07.9222 (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: OQCj4SQw987r41JQJm84pzZnCIpbKBIs5fsEToEII70nkx5N6oWYPdHZ6gcLdCjwjz0RGQl+Np1YN2LGkGH63g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB6302 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..d2f9a4f2d887 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 +/* + * resctrl_io_alloc_supported() - 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 inline int resctrl_io_alloc_supported(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; +} + +/* + * resctrl_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 inline int resctrl_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 resctrl_io_alloc_supported(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 resctrl_io_alloc_supported(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 resctrl_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 resctrl_io_alloc_supported(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 resctrl_io_alloc_enabled(s); + if (ret) goto out_unlock; - } =20 io_alloc_closid =3D resctrl_io_alloc_closid(r); =20 --=20 2.51.0