mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] fs/resctrl: Fix CLOSID propagation when reparenting monitor groups
@ 2026-10-31 10:10 Jinjie Ruan
  2026-11-02 14:46 ` Ben Horgan
  0 siblings, 1 reply; 2+ messages in thread
From: Jinjie Ruan @ 2026-10-31 10:10 UTC (permalink / raw)
  To: tony.luck, ben.horgan, reinette.chatre, Dave.Martin, james.morse,
	babu.moger, peternewman, bp, x86, linux-kernel
  Cc: ruanjinjie

Renaming a monitor group to move it below a different control group
changes the CLOSID of every task in that monitor group. mongrp_reparent()
updates rdtgrp->mon.parent and rdtgrp->closid before calling
rdt_move_group_tasks() to propagate the new CLOSID to the tasks.

rdt_move_group_tasks() uses its first argument to identify the tasks to
move. For a monitor group this is is_rmid_match(), which on MPAM compares
both the PARTID and the PMG of the task with the parent control group's
CLOSID and the monitor group's RMID. After rdtgrp->mon.parent and
rdtgrp->closid have been updated, the match uses the new CLOSID, so no
task in the monitor group matches and none is moved. The tasks keep the
old PARTID and continue to use the old control group's allocation.

x86 matches on the RMID alone, so it is unaffected. Now only arm64 mpam
affected.

Save the monitor group state before it is modified and use the saved state
as the source of the task move. The updated group remains the destination,
so matching tasks are moved to the new CLOSID and RMID.

Fixes: 8da2b938eb7e ("x86/resctrl: Implement rename op for mon groups")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: stable@vger.kernel.org # 7.1.x
---
 fs/resctrl/rdtgroup.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 57ab090072c2..33b23b59a6de 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -4322,6 +4322,7 @@ static void mongrp_reparent(struct rdtgroup *rdtgrp,
 			    cpumask_var_t cpus)
 {
 	struct rdtgroup *prdtgrp = rdtgrp->mon.parent;
+	struct rdtgroup old_rdtgrp = *rdtgrp;
 
 	WARN_ON(rdtgrp->type != RDTMON_GROUP);
 	WARN_ON(new_prdtgrp->type != RDTCTRL_GROUP);
@@ -4338,7 +4339,7 @@ static void mongrp_reparent(struct rdtgroup *rdtgrp,
 	rdtgrp->closid = new_prdtgrp->closid;
 
 	/* Propagate updated closid to all tasks in this group. */
-	rdt_move_group_tasks(rdtgrp, rdtgrp, cpus);
+	rdt_move_group_tasks(&old_rdtgrp, rdtgrp, cpus);
 
 	update_closid_rmid(cpus, NULL);
 }
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-02 14:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-31 10:10 [PATCH] fs/resctrl: Fix CLOSID propagation when reparenting monitor groups Jinjie Ruan
2026-11-02 14:46 ` Ben Horgan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®