From nobody Tue Apr 14 13:58:11 2026 Received: from canpmsgout01.his.huawei.com (canpmsgout01.his.huawei.com [113.46.200.216]) (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 7CB6A2DEA9D for ; Tue, 14 Apr 2026 03:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.216 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; cv=none; b=OFiV6McGPJTKrsvYu4gf0wIecKr8i2cupUYjidgRuMG1TlvkL2BBNY/AL3SFrUvUaaP87iMl/fGN+k6dMZhbnDWyF6Huhw3aSgBITaAHXILvO818G6sUgbbCZ9TIrE/FvR2ud14ZEECnESHG0ljdV4a70KuP+ytFXva2xLLQR98= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; c=relaxed/simple; bh=Lbf3X8DGVRSRw4wmQb9aJlwU5jhGJ2HD0WPKn7gE9iY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=INjcrY8JzbGeSW+smjbjTweT1FoSuwCm3J3WPyHajBGDOJVZwRUl5tPNNP8qNJL4Pn3oK+kXJviQSF5f5J3KJWBCX2be76xn0TQj2QCvHf+h1QZ6wwkwz94zZnBorfxyOYa/dg7uc91NIWDRSe0LOxvtbHg6ydZVOsFHXeZHq4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=amITPnG0; arc=none smtp.client-ip=113.46.200.216 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="amITPnG0" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=m4BHO+qZLneV2dNec9dyDj/FXpVOxuLCt+7V4TDDTRQ=; b=amITPnG0InVHyuUe+6KJ3Q1OzNYKyBwJ1IwVrP0a8+JgvQV5QSB2RfXkUH7OStWcLBhHFrF1G jOSHPbp8kNgyJy9pa+SyXo8F6hpqZYF4qgtaBgEmfYtjk/uzauxk7JUs+NIhXE4fJGlTSa3aRoR sIphI+8Efr25E+k3Z5GtOKk= Received: from mail.maildlp.com (unknown [172.19.162.144]) by canpmsgout01.his.huawei.com (SkyGuard) with ESMTPS id 4fvqKn071dz1T4Gh; Tue, 14 Apr 2026 11:20:45 +0800 (CST) Received: from kwepemf100008.china.huawei.com (unknown [7.202.181.222]) by mail.maildlp.com (Postfix) with ESMTPS id DEA3C4056E; Tue, 14 Apr 2026 11:26:43 +0800 (CST) Received: from huawei.com (10.50.87.109) by kwepemf100008.china.huawei.com (7.202.181.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 14 Apr 2026 11:26:43 +0800 From: Zeng Heng To: , , , , CC: , , , , Subject: [PATCH mpam mpam/snapshot+extras/v6.18-rc1 v2 1/3] fs/resctrl: Fix incorrect PID parsing after IOMMU group token Date: Tue, 14 Apr 2026 11:26:08 +0800 Message-ID: <20260414032610.1523958-2-zengheng4@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260414032610.1523958-1-zengheng4@huawei.com> References: <20260414032610.1523958-1-zengheng4@huawei.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: kwepems500002.china.huawei.com (7.221.188.17) To kwepemf100008.china.huawei.com (7.202.181.222) Content-Type: text/plain; charset="utf-8" When the tasks interface receives an "iommu_group:id" configuration, the original code fails to skip the PID parsing logic after processing the IOMMU group. This causes the same token to be incorrectly passed to kstrtoint() as a PID, resulting in -EINVAL. Restructure the conditional logic to use explicit if-else branches, ensuring that IOMMU group tokens are processed by rdtgroup_move_iommu() and then skipped. This fix also enables proper handling of mixed configurations with multiple consecutive iommu_group:id and pid entries (e.g., echo "iommu_group:1,1234,iommu_group:2,5678" > tasks). Fixes: 98b622c413ee ("fs/resctrl: Add support for assigning iommu_groups to= resctrl groups") Signed-off-by: Zeng Heng --- fs/resctrl/rdtgroup.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index 5381233adceb..1810ace9538f 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -848,24 +848,33 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_ope= n_file *of, pid_str =3D strim(strsep(&buf, ",")); =20 is_iommu =3D string_is_iommu_group(pid_str, &iommu_group_id); - if (is_iommu) + if (is_iommu) { ret =3D rdtgroup_move_iommu(iommu_group_id, rdtgrp, of); - else if (kstrtoint(pid_str, 0, &pid)) { - rdt_last_cmd_printf("Task list parsing error pid %s\n", pid_str); - ret =3D -EINVAL; - break; - } + if (ret) { + rdt_last_cmd_printf("Error while processing iommu_group %d\n", + iommu_group_id); + break; + } + } else { + if (kstrtoint(pid_str, 0, &pid)) { + rdt_last_cmd_printf("Task list parsing error pid %s\n", + pid_str); + ret =3D -EINVAL; + break; + } =20 - if (pid < 0) { - rdt_last_cmd_printf("Invalid pid %d\n", pid); - ret =3D -EINVAL; - break; - } + if (pid < 0) { + rdt_last_cmd_printf("Invalid pid %d\n", pid); + ret =3D -EINVAL; + break; + } =20 - ret =3D rdtgroup_move_task(pid, rdtgrp, of); - if (ret) { - rdt_last_cmd_printf("Error while processing task %d\n", pid); - break; + ret =3D rdtgroup_move_task(pid, rdtgrp, of); + if (ret) { + rdt_last_cmd_printf("Error while processing task %d\n", + pid); + break; + } } } =20 --=20 2.25.1 From nobody Tue Apr 14 13:58:11 2026 Received: from canpmsgout11.his.huawei.com (canpmsgout11.his.huawei.com [113.46.200.226]) (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 694682D3A69 for ; Tue, 14 Apr 2026 03:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; cv=none; b=Z1e7fzCE72eXmaDXzwR9Y6j0yLpQF5OND5kVBuy+yeTKKWlFOKakCAt+u5X9HkAudhO4yn8euxo1eEQ1EOWJdvCr1w9/VCrl9gq0nfG/azLUStDdeKN8D1080d7yordR72LanMM4LdXmh7iim3YhStQEJo6ZRmzzx6hScpqqSBY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; c=relaxed/simple; bh=TOqHRNtejfbv0kOHPK4dTYkc2b84njQQs5VxxEpAqRU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gfCjJE+6xUM5QZ1Pw32L26zVmHOEGj0UVNWtI8Q3yrlUyYwezmYsmQ6X/2dLuqdabq3KE9jD+I9qkNWBFWy8pviAJoF+V/koSHFGiqmSUgQtQQsdCUFY6nh8F37thqh7r5SkYkxzNiGRDxLvWTe1fpYCgYfimL/yNN1BvF91vfY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=hWL112wd; arc=none smtp.client-ip=113.46.200.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="hWL112wd" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=Kf26vYYknevrMgWVWkOZATmzSLLE6pMpr1SBawQYMHs=; b=hWL112wdtl8oI8IWY0hVCb0Dl4PdMXEQLLhvMbEshsbm/Lj1Kzwn/d2JEehQMrLVVOOZdivPC 03Jfqt8PBls0dvfoQaRgGYh76OqOZ8KNugB3Sav5YXZ1g+b30POqi5d8Er9hVrF7sIjsSRVlyp2 yxrbNrpgT214gIX927K2lQI= Received: from mail.maildlp.com (unknown [172.19.163.127]) by canpmsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4fvqKN5Xp5zKm4w; Tue, 14 Apr 2026 11:20:24 +0800 (CST) Received: from kwepemf100008.china.huawei.com (unknown [7.202.181.222]) by mail.maildlp.com (Postfix) with ESMTPS id 3889940572; Tue, 14 Apr 2026 11:26:44 +0800 (CST) Received: from huawei.com (10.50.87.109) by kwepemf100008.china.huawei.com (7.202.181.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 14 Apr 2026 11:26:43 +0800 From: Zeng Heng To: , , , , CC: , , , , Subject: [PATCH mpam mpam/snapshot+extras/v6.18-rc1 v2 2/3] fs/resctrl: Remove unused 'of' parameter from rdtgroup_move_iommu() Date: Tue, 14 Apr 2026 11:26:09 +0800 Message-ID: <20260414032610.1523958-3-zengheng4@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260414032610.1523958-1-zengheng4@huawei.com> References: <20260414032610.1523958-1-zengheng4@huawei.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: kwepems500002.china.huawei.com (7.221.188.17) To kwepemf100008.china.huawei.com (7.202.181.222) Content-Type: text/plain; charset="utf-8" The 'of' (kernfs_open_file) parameter in rdtgroup_move_iommu() is not used within the function body. Remove it to simplify the interface and eliminate the unnecessary argument passing. Signed-off-by: Zeng Heng --- fs/resctrl/rdtgroup.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index 1810ace9538f..e92b5dcb6f2e 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -767,8 +767,7 @@ static int rdtgroup_move_task(pid_t pid, struct rdtgrou= p *rdtgrp, return ret; } =20 -static int rdtgroup_move_iommu(int iommu_group_id, struct rdtgroup *rdtgrp, - struct kernfs_open_file *of) +static int rdtgroup_move_iommu(int iommu_group_id, struct rdtgroup *rdtgrp) { const struct cred *cred =3D current_cred(); struct iommu_group *iommu_group; @@ -849,7 +848,7 @@ static ssize_t rdtgroup_tasks_write(struct kernfs_open_= file *of, =20 is_iommu =3D string_is_iommu_group(pid_str, &iommu_group_id); if (is_iommu) { - ret =3D rdtgroup_move_iommu(iommu_group_id, rdtgrp, of); + ret =3D rdtgroup_move_iommu(iommu_group_id, rdtgrp); if (ret) { rdt_last_cmd_printf("Error while processing iommu_group %d\n", iommu_group_id); --=20 2.25.1 From nobody Tue Apr 14 13:58:11 2026 Received: from canpmsgout11.his.huawei.com (canpmsgout11.his.huawei.com [113.46.200.226]) (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 6CAD52DAFAF for ; Tue, 14 Apr 2026 03:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; cv=none; b=ulvUTPenQ6IZdQSNav2ylo3ZiXmN0K03TSKBSrruL9sAIIcISRXOJaw52fKKCsGnYd/FaDcZuEuvsYOxllWOzlH+c/miaIIiyq/9n2nWN/olESXGKS+yjjddWLJU2NCtge6mCp9hTddFm3qy+CbbSphbwUVc6LeAOGmMLy2InVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776137208; c=relaxed/simple; bh=DdVhCV/akvupMOb1OAwL619Ib808s4EttGLs/wRyqsE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Dz4QOHTcutuychv+Xm6WBUqW4BUx9RAh6rTuCwf50u+VFB6kRUmEfapxN2zyjIyQzNoqaroaMaHb8fobBrf3hdX3djwtyrq3OjhI2tSjK61jTYQR9divHhtbBBUToQPlQTSbyLA+CUNib9/8xL2s0rWZg9LLqvxSpZuk+sJcc0Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=OJVZsqxP; arc=none smtp.client-ip=113.46.200.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="OJVZsqxP" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=zS5pyTxAhYRFPNVTgqJtOQo9LbOdVKbgxsANQfgKZDQ=; b=OJVZsqxPbLtDqdHwe/XvbRTndzog1IKsUZw2VIe1wxrpQxrIvp8iasTiChjSR/zvgOiDRkwzj +JT4qcz2HiZZ3wEWVMIOfEdZXOheYO/VJH9h/YbTXolplJc05YNoEgkHYVkq9wLKvcFLIVDHQ7+ 0A3DYOqXHI7biJT5Ew7l/a0= Received: from mail.maildlp.com (unknown [172.19.163.127]) by canpmsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4fvqKP1W2fzKm4w; Tue, 14 Apr 2026 11:20:25 +0800 (CST) Received: from kwepemf100008.china.huawei.com (unknown [7.202.181.222]) by mail.maildlp.com (Postfix) with ESMTPS id A27EC40572; Tue, 14 Apr 2026 11:26:44 +0800 (CST) Received: from huawei.com (10.50.87.109) by kwepemf100008.china.huawei.com (7.202.181.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 14 Apr 2026 11:26:44 +0800 From: Zeng Heng To: , , , , CC: , , , , Subject: [PATCH mpam mpam/snapshot+extras/v6.18-rc1 v2 3/3] fs/resctrl: Migrate IOMMU groups when removing resource groups Date: Tue, 14 Apr 2026 11:26:10 +0800 Message-ID: <20260414032610.1523958-4-zengheng4@huawei.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260414032610.1523958-1-zengheng4@huawei.com> References: <20260414032610.1523958-1-zengheng4@huawei.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: kwepems500002.china.huawei.com (7.221.188.17) To kwepemf100008.china.huawei.com (7.202.181.222) Content-Type: text/plain; charset="utf-8" When deleting a control group, monitor group, or unmounting the resctrl filesystem, migrate all associated IOMMU groups to the appropriate destination: * Control group deletion: move IOMMU groups to the default group * Monitor group deletion: move IOMMU groups to the parent control group * Filesystem unmount: move all IOMMU groups to the default group Without this migration, IOMMU groups remain bound to stale PARTID/PMG values of the destroyed group, causing them to "disappear" from the resctrl interface. Add rdt_move_group_iommus() to handle this migration, mirroring the existing rdt_move_group_tasks() pattern for task migration. When deleting a control group or unmounting the resctrl file system, it is necessary to move its all iommu_groups back to the default group. When removing a monitor group, need to move its iommu_groups back to the parent control group. Otherwise, these iommu_groups remain bound to the old PARTID and PMG, and they will appear to "disappear" from the resctrl fs. Signed-off-by: Zeng Heng --- fs/resctrl/rdtgroup.c | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c index e92b5dcb6f2e..351e430bde1a 100644 --- a/fs/resctrl/rdtgroup.c +++ b/fs/resctrl/rdtgroup.c @@ -3292,6 +3292,44 @@ static void rdt_move_group_tasks(struct rdtgroup *fr= om, struct rdtgroup *to, read_unlock(&tasklist_lock); } =20 +static int rdt_move_group_iommus(struct rdtgroup *from, struct rdtgroup *t= o) +{ + struct kset *iommu_groups; + struct iommu_group *group; + int err =3D 0, iommu_group_id; + struct kobject *group_kobj =3D NULL; + + if (!IS_ENABLED(CONFIG_RESCTRL_IOMMU)) + return 0; + + if (from =3D=3D to) + return 0; + + iommu_groups =3D iommu_get_group_kset(); + + while ((group_kobj =3D kset_get_next_obj(iommu_groups, group_kobj))) { + /* iommu_group_get_from_kobj() wants to drop a reference */ + kobject_get(group_kobj); + + group =3D iommu_group_get_from_kobj(group_kobj); + if (!group) + continue; + + if (!from || iommu_matches_rdtgroup(group, from)) { + err =3D kstrtoint(group_kobj->name, 0, &iommu_group_id); + if (err) + break; + + err =3D rdtgroup_move_iommu(iommu_group_id, to); + if (err) + break; + } + } + + kset_put(iommu_groups); + return err; +} + static void free_all_child_rdtgrp(struct rdtgroup *rdtgrp) { struct rdtgroup *sentry, *stmp; @@ -3320,6 +3358,9 @@ static void rmdir_all_sub(void) /* Move all tasks to the default resource group */ rdt_move_group_tasks(NULL, &rdtgroup_default, NULL); =20 + /* Move all iommu_groups to the default resource group */ + rdt_move_group_iommus(NULL, &rdtgroup_default); + list_for_each_entry_safe(rdtgrp, tmp, &rdt_all_groups, rdtgroup_list) { /* Free any child rmids */ free_all_child_rdtgrp(rdtgrp); @@ -4189,6 +4230,9 @@ static int rdtgroup_rmdir_mon(struct rdtgroup *rdtgrp= , cpumask_var_t tmpmask) /* Give any tasks back to the parent group */ rdt_move_group_tasks(rdtgrp, prdtgrp, tmpmask); =20 + /* Give any iommu_groups back to the parent group */ + rdt_move_group_iommus(rdtgrp, prdtgrp); + /* * Update per cpu closid/rmid of the moved CPUs first. * Note: the closid will not change, but the arch code still needs it. @@ -4239,6 +4283,9 @@ static int rdtgroup_rmdir_ctrl(struct rdtgroup *rdtgr= p, cpumask_var_t tmpmask) /* Give any tasks back to the default group */ rdt_move_group_tasks(rdtgrp, &rdtgroup_default, tmpmask); =20 + /* Give any iommu_groups back to the default group */ + rdt_move_group_iommus(rdtgrp, &rdtgroup_default); + /* Give any CPUs back to the default group */ cpumask_or(&rdtgroup_default.cpu_mask, &rdtgroup_default.cpu_mask, &rdtgrp->cpu_mask); --=20 2.25.1