Lines Matching refs:plr

103 		if (rdtgrp->plr && rdtgrp->plr->minor == minor) {  in region_find_by_minor()
121 static void pseudo_lock_cstates_relax(struct pseudo_lock_region *plr) in pseudo_lock_cstates_relax() argument
125 list_for_each_entry_safe(pm_req, next, &plr->pm_reqs, list) { in pseudo_lock_cstates_relax()
150 static int pseudo_lock_cstates_constrain(struct pseudo_lock_region *plr) in pseudo_lock_cstates_constrain() argument
156 for_each_cpu(cpu, &plr->d->hdr.cpu_mask) { in pseudo_lock_cstates_constrain()
174 list_add(&pm_req->list, &plr->pm_reqs); in pseudo_lock_cstates_constrain()
180 pseudo_lock_cstates_relax(plr); in pseudo_lock_cstates_constrain()
193 static void pseudo_lock_region_clear(struct pseudo_lock_region *plr) in pseudo_lock_region_clear() argument
195 plr->size = 0; in pseudo_lock_region_clear()
196 plr->line_size = 0; in pseudo_lock_region_clear()
197 kfree(plr->kmem); in pseudo_lock_region_clear()
198 plr->kmem = NULL; in pseudo_lock_region_clear()
199 plr->s = NULL; in pseudo_lock_region_clear()
200 if (plr->d) in pseudo_lock_region_clear()
201 plr->d->plr = NULL; in pseudo_lock_region_clear()
202 plr->d = NULL; in pseudo_lock_region_clear()
203 plr->cbm = 0; in pseudo_lock_region_clear()
204 plr->debugfs_dir = NULL; in pseudo_lock_region_clear()
225 static int pseudo_lock_region_init(struct pseudo_lock_region *plr) in pseudo_lock_region_init() argument
227 enum resctrl_scope scope = plr->s->res->ctrl_scope; in pseudo_lock_region_init()
235 plr->cpu = cpumask_first(&plr->d->hdr.cpu_mask); in pseudo_lock_region_init()
237 if (!cpu_online(plr->cpu)) { in pseudo_lock_region_init()
239 plr->cpu); in pseudo_lock_region_init()
244 ci = get_cpu_cacheinfo_level(plr->cpu, scope); in pseudo_lock_region_init()
246 plr->line_size = ci->coherency_line_size; in pseudo_lock_region_init()
247 plr->size = rdtgroup_cbm_to_size(plr->s->res, plr->d, plr->cbm); in pseudo_lock_region_init()
254 pseudo_lock_region_clear(plr); in pseudo_lock_region_init()
271 struct pseudo_lock_region *plr; in pseudo_lock_init() local
273 plr = kzalloc(sizeof(*plr), GFP_KERNEL); in pseudo_lock_init()
274 if (!plr) in pseudo_lock_init()
277 init_waitqueue_head(&plr->lock_thread_wq); in pseudo_lock_init()
278 INIT_LIST_HEAD(&plr->pm_reqs); in pseudo_lock_init()
279 rdtgrp->plr = plr; in pseudo_lock_init()
293 static int pseudo_lock_region_alloc(struct pseudo_lock_region *plr) in pseudo_lock_region_alloc() argument
297 ret = pseudo_lock_region_init(plr); in pseudo_lock_region_alloc()
305 if (plr->size > KMALLOC_MAX_SIZE) { in pseudo_lock_region_alloc()
311 plr->kmem = kzalloc(plr->size, GFP_KERNEL); in pseudo_lock_region_alloc()
312 if (!plr->kmem) { in pseudo_lock_region_alloc()
321 pseudo_lock_region_clear(plr); in pseudo_lock_region_alloc()
338 pseudo_lock_region_clear(rdtgrp->plr); in pseudo_lock_free()
339 kfree(rdtgrp->plr); in pseudo_lock_free()
340 rdtgrp->plr = NULL; in pseudo_lock_free()
619 if (d->plr) { in rdtgroup_cbm_overlaps_pseudo_locked()
620 cbm_len = d->plr->s->res->cache.cbm_len; in rdtgroup_cbm_overlaps_pseudo_locked()
621 cbm_b = d->plr->cbm; in rdtgroup_cbm_overlaps_pseudo_locked()
660 if (d_i->plr) in rdtgroup_pseudo_locked_in_hierarchy()
691 struct pseudo_lock_region *plr = rdtgrp->plr; in pseudo_lock_measure_cycles() local
704 if (!plr->d) { in pseudo_lock_measure_cycles()
709 plr->thread_done = 0; in pseudo_lock_measure_cycles()
710 cpu = cpumask_first(&plr->d->hdr.cpu_mask); in pseudo_lock_measure_cycles()
716 plr->cpu = cpu; in pseudo_lock_measure_cycles()
720 plr, cpu, "pseudo_lock_measure/%u"); in pseudo_lock_measure_cycles()
723 plr, cpu, "pseudo_lock_measure/%u"); in pseudo_lock_measure_cycles()
726 plr, cpu, "pseudo_lock_measure/%u"); in pseudo_lock_measure_cycles()
735 ret = wait_event_interruptible(plr->lock_thread_wq, in pseudo_lock_measure_cycles()
736 plr->thread_done == 1); in pseudo_lock_measure_cycles()
799 struct pseudo_lock_region *plr = rdtgrp->plr; in rdtgroup_pseudo_lock_create() local
806 ret = pseudo_lock_region_alloc(plr); in rdtgroup_pseudo_lock_create()
810 ret = pseudo_lock_cstates_constrain(plr); in rdtgroup_pseudo_lock_create()
821 plr->thread_done = 0; in rdtgroup_pseudo_lock_create()
823 thread = kthread_run_on_cpu(resctrl_arch_pseudo_lock_fn, plr, in rdtgroup_pseudo_lock_create()
824 plr->cpu, "pseudo_lock/%u"); in rdtgroup_pseudo_lock_create()
831 ret = wait_event_interruptible(plr->lock_thread_wq, in rdtgroup_pseudo_lock_create()
832 plr->thread_done == 1); in rdtgroup_pseudo_lock_create()
864 plr->debugfs_dir = debugfs_create_dir(kn_name, debugfs_resctrl); in rdtgroup_pseudo_lock_create()
865 if (!IS_ERR_OR_NULL(plr->debugfs_dir)) in rdtgroup_pseudo_lock_create()
867 plr->debugfs_dir, rdtgrp, in rdtgroup_pseudo_lock_create()
890 plr->minor = new_minor; in rdtgroup_pseudo_lock_create()
903 debugfs_remove_recursive(plr->debugfs_dir); in rdtgroup_pseudo_lock_create()
906 pseudo_lock_cstates_relax(plr); in rdtgroup_pseudo_lock_create()
908 pseudo_lock_region_clear(plr); in rdtgroup_pseudo_lock_create()
929 struct pseudo_lock_region *plr = rdtgrp->plr; in rdtgroup_pseudo_lock_remove() local
940 pseudo_lock_cstates_relax(plr); in rdtgroup_pseudo_lock_remove()
941 debugfs_remove_recursive(rdtgrp->plr->debugfs_dir); in rdtgroup_pseudo_lock_remove()
942 device_destroy(&pseudo_lock_class, MKDEV(pseudo_lock_major, plr->minor)); in rdtgroup_pseudo_lock_remove()
943 pseudo_lock_minor_release(plr->minor); in rdtgroup_pseudo_lock_remove()
1003 struct pseudo_lock_region *plr; in pseudo_lock_dev_mmap_prepare() local
1017 plr = rdtgrp->plr; in pseudo_lock_dev_mmap_prepare()
1019 if (!plr->d) { in pseudo_lock_dev_mmap_prepare()
1030 if (!cpumask_subset(current->cpus_ptr, &plr->d->hdr.cpu_mask)) { in pseudo_lock_dev_mmap_prepare()
1035 physical = __pa(plr->kmem) >> PAGE_SHIFT; in pseudo_lock_dev_mmap_prepare()
1036 psize = plr->size - off; in pseudo_lock_dev_mmap_prepare()
1038 if (off > plr->size) { in pseudo_lock_dev_mmap_prepare()
1057 memset(plr->kmem + off, 0, vsize); in pseudo_lock_dev_mmap_prepare()