Skip to content

Commit 17eafd0

Browse files
rchatreKAGA-KOKO
authored andcommitted
x86/intel_rdt: Split resource group removal in two
Resource groups used for pseudo-locking do not require the same work on removal as the other resource groups. The resource group removal is split in two in preparation for support of pseudo-locking resource groups. A single re-ordering occurs - the setting of the rdtgrp flag is moved to later. This flag is not used by any of the code between its original and new location. Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: fenghua.yu@intel.com Cc: tony.luck@intel.com Cc: vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com Cc: jithu.joseph@intel.com Cc: dave.hansen@intel.com Cc: hpa@zytor.com Link: https://lkml.kernel.org/r/c8cbf7a7c72480b39bb946a929dbae96c0f9aca1.1529706536.git.reinette.chatre@intel.com
1 parent dfe9674 commit 17eafd0

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

arch/x86/kernel/cpu/intel_rdt_rdtgroup.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,6 +2620,21 @@ static int rdtgroup_rmdir_mon(struct kernfs_node *kn, struct rdtgroup *rdtgrp,
26202620
return 0;
26212621
}
26222622

2623+
static int rdtgroup_ctrl_remove(struct kernfs_node *kn,
2624+
struct rdtgroup *rdtgrp)
2625+
{
2626+
rdtgrp->flags = RDT_DELETED;
2627+
list_del(&rdtgrp->rdtgroup_list);
2628+
2629+
/*
2630+
* one extra hold on this, will drop when we kfree(rdtgrp)
2631+
* in rdtgroup_kn_unlock()
2632+
*/
2633+
kernfs_get(kn);
2634+
kernfs_remove(rdtgrp->kn);
2635+
return 0;
2636+
}
2637+
26232638
static int rdtgroup_rmdir_ctrl(struct kernfs_node *kn, struct rdtgroup *rdtgrp,
26242639
cpumask_var_t tmpmask)
26252640
{
@@ -2645,7 +2660,6 @@ static int rdtgroup_rmdir_ctrl(struct kernfs_node *kn, struct rdtgroup *rdtgrp,
26452660
cpumask_or(tmpmask, tmpmask, &rdtgrp->cpu_mask);
26462661
update_closid_rmid(tmpmask, NULL);
26472662

2648-
rdtgrp->flags = RDT_DELETED;
26492663
closid_free(rdtgrp->closid);
26502664
free_rmid(rdtgrp->mon.rmid);
26512665

@@ -2654,14 +2668,7 @@ static int rdtgroup_rmdir_ctrl(struct kernfs_node *kn, struct rdtgroup *rdtgrp,
26542668
*/
26552669
free_all_child_rdtgrp(rdtgrp);
26562670

2657-
list_del(&rdtgrp->rdtgroup_list);
2658-
2659-
/*
2660-
* one extra hold on this, will drop when we kfree(rdtgrp)
2661-
* in rdtgroup_kn_unlock()
2662-
*/
2663-
kernfs_get(kn);
2664-
kernfs_remove(rdtgrp->kn);
2671+
rdtgroup_ctrl_remove(kn, rdtgrp);
26652672

26662673
return 0;
26672674
}

0 commit comments

Comments
 (0)