Lines Matching refs:rdtgrp
163 struct rdtgroup *rdtgrp; in rdtgroup_mode_by_closid() local
165 list_for_each_entry(rdtgrp, &rdt_all_groups, rdtgroup_list) { in rdtgroup_mode_by_closid()
166 if (rdtgrp->closid == closid) in rdtgroup_mode_by_closid()
167 return rdtgrp->mode; in rdtgroup_mode_by_closid()
270 struct rdtgroup *rdtgrp; in rdtgroup_cpus_show() local
273 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_cpus_show()
275 if (rdtgrp) { in rdtgroup_cpus_show()
276 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) in rdtgroup_cpus_show()
278 cpumask_pr_args(&rdtgrp->plr->d->cpu_mask)); in rdtgroup_cpus_show()
281 cpumask_pr_args(&rdtgrp->cpu_mask)); in rdtgroup_cpus_show()
329 static int cpus_mon_write(struct rdtgroup *rdtgrp, cpumask_var_t newmask, in cpus_mon_write() argument
332 struct rdtgroup *prgrp = rdtgrp->mon.parent, *crgrp; in cpus_mon_write()
343 cpumask_andnot(tmpmask, &rdtgrp->cpu_mask, newmask); in cpus_mon_write()
354 cpumask_andnot(tmpmask, newmask, &rdtgrp->cpu_mask); in cpus_mon_write()
358 if (crgrp == rdtgrp) in cpus_mon_write()
363 update_closid_rmid(tmpmask, rdtgrp); in cpus_mon_write()
367 cpumask_copy(&rdtgrp->cpu_mask, newmask); in cpus_mon_write()
382 static int cpus_ctrl_write(struct rdtgroup *rdtgrp, cpumask_var_t newmask, in cpus_ctrl_write() argument
389 cpumask_andnot(tmpmask, &rdtgrp->cpu_mask, newmask); in cpus_ctrl_write()
392 if (rdtgrp == &rdtgroup_default) { in cpus_ctrl_write()
408 cpumask_andnot(tmpmask, newmask, &rdtgrp->cpu_mask); in cpus_ctrl_write()
411 if (r == rdtgrp) in cpus_ctrl_write()
417 update_closid_rmid(tmpmask, rdtgrp); in cpus_ctrl_write()
421 cpumask_copy(&rdtgrp->cpu_mask, newmask); in cpus_ctrl_write()
427 head = &rdtgrp->mon.crdtgrp_list; in cpus_ctrl_write()
429 cpumask_and(tmpmask, &rdtgrp->cpu_mask, &crgrp->cpu_mask); in cpus_ctrl_write()
430 update_closid_rmid(tmpmask, rdtgrp); in cpus_ctrl_write()
441 struct rdtgroup *rdtgrp; in rdtgroup_cpus_write() local
459 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_cpus_write()
461 if (!rdtgrp) { in rdtgroup_cpus_write()
467 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED || in rdtgroup_cpus_write()
468 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { in rdtgroup_cpus_write()
492 if (rdtgrp->type == RDTCTRL_GROUP) in rdtgroup_cpus_write()
493 ret = cpus_ctrl_write(rdtgrp, newmask, tmpmask, tmpmask1); in rdtgroup_cpus_write()
494 else if (rdtgrp->type == RDTMON_GROUP) in rdtgroup_cpus_write()
495 ret = cpus_mon_write(rdtgrp, newmask, tmpmask); in rdtgroup_cpus_write()
510 struct rdtgroup *rdtgrp; member
516 struct rdtgroup *rdtgrp; in move_myself() local
519 rdtgrp = callback->rdtgrp; in move_myself()
526 if (atomic_dec_and_test(&rdtgrp->waitcount) && in move_myself()
527 (rdtgrp->flags & RDT_DELETED)) { in move_myself()
530 kfree(rdtgrp); in move_myself()
542 struct rdtgroup *rdtgrp) in __rdtgroup_move_task() argument
551 callback->rdtgrp = rdtgrp; in __rdtgroup_move_task()
557 atomic_inc(&rdtgrp->waitcount); in __rdtgroup_move_task()
565 atomic_dec(&rdtgrp->waitcount); in __rdtgroup_move_task()
574 if (rdtgrp->type == RDTCTRL_GROUP) { in __rdtgroup_move_task()
575 tsk->closid = rdtgrp->closid; in __rdtgroup_move_task()
576 tsk->rmid = rdtgrp->mon.rmid; in __rdtgroup_move_task()
577 } else if (rdtgrp->type == RDTMON_GROUP) { in __rdtgroup_move_task()
578 if (rdtgrp->mon.parent->closid == tsk->closid) { in __rdtgroup_move_task()
579 tsk->rmid = rdtgrp->mon.rmid; in __rdtgroup_move_task()
637 static int rdtgroup_move_task(pid_t pid, struct rdtgroup *rdtgrp, in rdtgroup_move_task() argument
660 ret = __rdtgroup_move_task(tsk, rdtgrp); in rdtgroup_move_task()
669 struct rdtgroup *rdtgrp; in rdtgroup_tasks_write() local
675 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_tasks_write()
676 if (!rdtgrp) { in rdtgroup_tasks_write()
682 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED || in rdtgroup_tasks_write()
683 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { in rdtgroup_tasks_write()
689 ret = rdtgroup_move_task(pid, rdtgrp, of); in rdtgroup_tasks_write()
713 struct rdtgroup *rdtgrp; in rdtgroup_tasks_show() local
716 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_tasks_show()
717 if (rdtgrp) in rdtgroup_tasks_show()
718 show_rdt_tasks(rdtgrp, s); in rdtgroup_tasks_show()
949 struct rdtgroup *rdtgrp; in rdtgroup_mode_show() local
951 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_mode_show()
952 if (!rdtgrp) { in rdtgroup_mode_show()
957 seq_printf(s, "%s\n", rdtgroup_mode_str(rdtgrp->mode)); in rdtgroup_mode_show()
1031 static bool rdtgroup_mode_test_exclusive(struct rdtgroup *rdtgrp) in rdtgroup_mode_test_exclusive() argument
1033 int closid = rdtgrp->closid; in rdtgroup_mode_test_exclusive()
1044 rdtgrp->closid, false)) { in rdtgroup_mode_test_exclusive()
1066 struct rdtgroup *rdtgrp; in rdtgroup_mode_write() local
1075 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_mode_write()
1076 if (!rdtgrp) { in rdtgroup_mode_write()
1083 mode = rdtgrp->mode; in rdtgroup_mode_write()
1099 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { in rdtgroup_mode_write()
1100 ret = rdtgroup_locksetup_exit(rdtgrp); in rdtgroup_mode_write()
1104 rdtgrp->mode = RDT_MODE_SHAREABLE; in rdtgroup_mode_write()
1106 if (!rdtgroup_mode_test_exclusive(rdtgrp)) { in rdtgroup_mode_write()
1110 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { in rdtgroup_mode_write()
1111 ret = rdtgroup_locksetup_exit(rdtgrp); in rdtgroup_mode_write()
1115 rdtgrp->mode = RDT_MODE_EXCLUSIVE; in rdtgroup_mode_write()
1117 ret = rdtgroup_locksetup_enter(rdtgrp); in rdtgroup_mode_write()
1120 rdtgrp->mode = RDT_MODE_PSEUDO_LOCKSETUP; in rdtgroup_mode_write()
1175 struct rdtgroup *rdtgrp; in rdtgroup_size_show() local
1182 rdtgrp = rdtgroup_kn_lock_live(of->kn); in rdtgroup_size_show()
1183 if (!rdtgrp) { in rdtgroup_size_show()
1188 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) { in rdtgroup_size_show()
1189 seq_printf(s, "%*s:", max_name_width, rdtgrp->plr->r->name); in rdtgroup_size_show()
1190 size = rdtgroup_cbm_to_size(rdtgrp->plr->r, in rdtgroup_size_show()
1191 rdtgrp->plr->d, in rdtgroup_size_show()
1192 rdtgrp->plr->cbm); in rdtgroup_size_show()
1193 seq_printf(s, "%d=%u\n", rdtgrp->plr->d->id, size); in rdtgroup_size_show()
1203 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { in rdtgroup_size_show()
1207 d->ctrl_val[rdtgrp->closid] : in rdtgroup_size_show()
1208 d->mbps_val[rdtgrp->closid]); in rdtgroup_size_show()
1802 struct rdtgroup *rdtgrp = kernfs_to_rdtgroup(kn); in rdtgroup_kn_lock_live() local
1804 if (!rdtgrp) in rdtgroup_kn_lock_live()
1807 atomic_inc(&rdtgrp->waitcount); in rdtgroup_kn_lock_live()
1813 if (rdtgrp->flags & RDT_DELETED) in rdtgroup_kn_lock_live()
1816 return rdtgrp; in rdtgroup_kn_lock_live()
1821 struct rdtgroup *rdtgrp = kernfs_to_rdtgroup(kn); in rdtgroup_kn_unlock() local
1823 if (!rdtgrp) in rdtgroup_kn_unlock()
1828 if (atomic_dec_and_test(&rdtgrp->waitcount) && in rdtgroup_kn_unlock()
1829 (rdtgrp->flags & RDT_DELETED)) { in rdtgroup_kn_unlock()
1830 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP || in rdtgroup_kn_unlock()
1831 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) in rdtgroup_kn_unlock()
1832 rdtgroup_pseudo_lock_remove(rdtgrp); in rdtgroup_kn_unlock()
1834 kernfs_put(rdtgrp->kn); in rdtgroup_kn_unlock()
1835 kfree(rdtgrp); in rdtgroup_kn_unlock()
2033 static void free_all_child_rdtgrp(struct rdtgroup *rdtgrp) in free_all_child_rdtgrp() argument
2038 head = &rdtgrp->mon.crdtgrp_list; in free_all_child_rdtgrp()
2051 struct rdtgroup *rdtgrp, *tmp; in rmdir_all_sub() local
2056 list_for_each_entry_safe(rdtgrp, tmp, &rdt_all_groups, rdtgroup_list) { in rmdir_all_sub()
2058 free_all_child_rdtgrp(rdtgrp); in rmdir_all_sub()
2061 if (rdtgrp == &rdtgroup_default) in rmdir_all_sub()
2064 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP || in rmdir_all_sub()
2065 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) in rmdir_all_sub()
2066 rdtgroup_pseudo_lock_remove(rdtgrp); in rmdir_all_sub()
2074 &rdtgroup_default.cpu_mask, &rdtgrp->cpu_mask); in rmdir_all_sub()
2076 free_rmid(rdtgrp->mon.rmid); in rmdir_all_sub()
2078 kernfs_remove(rdtgrp->kn); in rmdir_all_sub()
2079 list_del(&rdtgrp->rdtgroup_list); in rmdir_all_sub()
2080 kfree(rdtgrp); in rmdir_all_sub()
2355 static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp) in rdtgroup_init_alloc() argument
2358 u32 closid = rdtgrp->closid; in rdtgroup_init_alloc()
2421 ret = update_domains(r, rdtgrp->closid); in rdtgroup_init_alloc()
2426 rdtgrp->mode = RDT_MODE_SHAREABLE; in rdtgroup_init_alloc()
2437 struct rdtgroup *prdtgrp, *rdtgrp; in mkdir_rdt_prepare() local
2459 rdtgrp = kzalloc(sizeof(*rdtgrp), GFP_KERNEL); in mkdir_rdt_prepare()
2460 if (!rdtgrp) { in mkdir_rdt_prepare()
2465 *r = rdtgrp; in mkdir_rdt_prepare()
2466 rdtgrp->mon.parent = prdtgrp; in mkdir_rdt_prepare()
2467 rdtgrp->type = rtype; in mkdir_rdt_prepare()
2468 INIT_LIST_HEAD(&rdtgrp->mon.crdtgrp_list); in mkdir_rdt_prepare()
2471 kn = kernfs_create_dir(parent_kn, name, mode, rdtgrp); in mkdir_rdt_prepare()
2477 rdtgrp->kn = kn; in mkdir_rdt_prepare()
2506 rdtgrp->mon.rmid = ret; in mkdir_rdt_prepare()
2508 ret = mkdir_mondata_all(kn, rdtgrp, &rdtgrp->mon.mon_data_kn); in mkdir_rdt_prepare()
2522 free_rmid(rdtgrp->mon.rmid); in mkdir_rdt_prepare()
2524 kernfs_remove(rdtgrp->kn); in mkdir_rdt_prepare()
2526 kfree(rdtgrp); in mkdir_rdt_prepare()
2549 struct rdtgroup *rdtgrp, *prgrp; in rdtgroup_mkdir_mon() local
2553 &rdtgrp); in rdtgroup_mkdir_mon()
2557 prgrp = rdtgrp->mon.parent; in rdtgroup_mkdir_mon()
2558 rdtgrp->closid = prgrp->closid; in rdtgroup_mkdir_mon()
2564 list_add_tail(&rdtgrp->mon.crdtgrp_list, &prgrp->mon.crdtgrp_list); in rdtgroup_mkdir_mon()
2578 struct rdtgroup *rdtgrp; in rdtgroup_mkdir_ctrl_mon() local
2584 &rdtgrp); in rdtgroup_mkdir_ctrl_mon()
2588 kn = rdtgrp->kn; in rdtgroup_mkdir_ctrl_mon()
2597 rdtgrp->closid = closid; in rdtgroup_mkdir_ctrl_mon()
2598 ret = rdtgroup_init_alloc(rdtgrp); in rdtgroup_mkdir_ctrl_mon()
2602 list_add(&rdtgrp->rdtgroup_list, &rdt_all_groups); in rdtgroup_mkdir_ctrl_mon()
2619 list_del(&rdtgrp->rdtgroup_list); in rdtgroup_mkdir_ctrl_mon()
2623 mkdir_rdt_prepare_clean(rdtgrp); in rdtgroup_mkdir_ctrl_mon()
2670 static int rdtgroup_rmdir_mon(struct kernfs_node *kn, struct rdtgroup *rdtgrp, in rdtgroup_rmdir_mon() argument
2673 struct rdtgroup *prdtgrp = rdtgrp->mon.parent; in rdtgroup_rmdir_mon()
2677 rdt_move_group_tasks(rdtgrp, prdtgrp, tmpmask); in rdtgroup_rmdir_mon()
2680 for_each_cpu(cpu, &rdtgrp->cpu_mask) in rdtgroup_rmdir_mon()
2686 cpumask_or(tmpmask, tmpmask, &rdtgrp->cpu_mask); in rdtgroup_rmdir_mon()
2689 rdtgrp->flags = RDT_DELETED; in rdtgroup_rmdir_mon()
2690 free_rmid(rdtgrp->mon.rmid); in rdtgroup_rmdir_mon()
2696 list_del(&rdtgrp->mon.crdtgrp_list); in rdtgroup_rmdir_mon()
2703 kernfs_remove(rdtgrp->kn); in rdtgroup_rmdir_mon()
2709 struct rdtgroup *rdtgrp) in rdtgroup_ctrl_remove() argument
2711 rdtgrp->flags = RDT_DELETED; in rdtgroup_ctrl_remove()
2712 list_del(&rdtgrp->rdtgroup_list); in rdtgroup_ctrl_remove()
2719 kernfs_remove(rdtgrp->kn); in rdtgroup_ctrl_remove()
2723 static int rdtgroup_rmdir_ctrl(struct kernfs_node *kn, struct rdtgroup *rdtgrp, in rdtgroup_rmdir_ctrl() argument
2729 rdt_move_group_tasks(rdtgrp, &rdtgroup_default, tmpmask); in rdtgroup_rmdir_ctrl()
2733 &rdtgroup_default.cpu_mask, &rdtgrp->cpu_mask); in rdtgroup_rmdir_ctrl()
2736 for_each_cpu(cpu, &rdtgrp->cpu_mask) { in rdtgroup_rmdir_ctrl()
2745 cpumask_or(tmpmask, tmpmask, &rdtgrp->cpu_mask); in rdtgroup_rmdir_ctrl()
2748 closid_free(rdtgrp->closid); in rdtgroup_rmdir_ctrl()
2749 free_rmid(rdtgrp->mon.rmid); in rdtgroup_rmdir_ctrl()
2754 free_all_child_rdtgrp(rdtgrp); in rdtgroup_rmdir_ctrl()
2756 rdtgroup_ctrl_remove(kn, rdtgrp); in rdtgroup_rmdir_ctrl()
2764 struct rdtgroup *rdtgrp; in rdtgroup_rmdir() local
2771 rdtgrp = rdtgroup_kn_lock_live(kn); in rdtgroup_rmdir()
2772 if (!rdtgrp) { in rdtgroup_rmdir()
2784 if (rdtgrp->type == RDTCTRL_GROUP && parent_kn == rdtgroup_default.kn) { in rdtgroup_rmdir()
2785 if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP || in rdtgroup_rmdir()
2786 rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) { in rdtgroup_rmdir()
2787 ret = rdtgroup_ctrl_remove(kn, rdtgrp); in rdtgroup_rmdir()
2789 ret = rdtgroup_rmdir_ctrl(kn, rdtgrp, tmpmask); in rdtgroup_rmdir()
2791 } else if (rdtgrp->type == RDTMON_GROUP && in rdtgroup_rmdir()
2793 ret = rdtgroup_rmdir_mon(kn, rdtgrp, tmpmask); in rdtgroup_rmdir()