Lines Matching refs:rpool
85 static void set_resource_limit(struct rdmacg_resource_pool *rpool, in set_resource_limit() argument
89 if (rpool->resources[index].max != S32_MAX) in set_resource_limit()
90 rpool->num_max_cnt++; in set_resource_limit()
92 if (rpool->resources[index].max == S32_MAX) in set_resource_limit()
93 rpool->num_max_cnt--; in set_resource_limit()
95 rpool->resources[index].max = new_max; in set_resource_limit()
98 static void set_all_resource_max_limit(struct rdmacg_resource_pool *rpool) in set_all_resource_max_limit() argument
103 set_resource_limit(rpool, i, S32_MAX); in set_all_resource_max_limit()
106 static void free_cg_rpool_locked(struct rdmacg_resource_pool *rpool) in free_cg_rpool_locked() argument
110 list_del(&rpool->cg_node); in free_cg_rpool_locked()
111 list_del(&rpool->dev_node); in free_cg_rpool_locked()
112 kfree(rpool); in free_cg_rpool_locked()
134 struct rdmacg_resource_pool *rpool; in get_cg_rpool_locked() local
136 rpool = find_cg_rpool_locked(cg, device); in get_cg_rpool_locked()
137 if (rpool) in get_cg_rpool_locked()
138 return rpool; in get_cg_rpool_locked()
140 rpool = kzalloc(sizeof(*rpool), GFP_KERNEL); in get_cg_rpool_locked()
141 if (!rpool) in get_cg_rpool_locked()
144 rpool->device = device; in get_cg_rpool_locked()
145 set_all_resource_max_limit(rpool); in get_cg_rpool_locked()
147 INIT_LIST_HEAD(&rpool->cg_node); in get_cg_rpool_locked()
148 INIT_LIST_HEAD(&rpool->dev_node); in get_cg_rpool_locked()
149 list_add_tail(&rpool->cg_node, &cg->rpools); in get_cg_rpool_locked()
150 list_add_tail(&rpool->dev_node, &device->rpools); in get_cg_rpool_locked()
151 return rpool; in get_cg_rpool_locked()
169 struct rdmacg_resource_pool *rpool; in uncharge_cg_locked() local
171 rpool = find_cg_rpool_locked(cg, device); in uncharge_cg_locked()
178 if (unlikely(!rpool)) { in uncharge_cg_locked()
183 rpool->resources[index].usage--; in uncharge_cg_locked()
189 WARN_ON_ONCE(rpool->resources[index].usage < 0); in uncharge_cg_locked()
190 rpool->usage_sum--; in uncharge_cg_locked()
191 if (rpool->usage_sum == 0 && in uncharge_cg_locked()
192 rpool->num_max_cnt == RDMACG_RESOURCE_MAX) { in uncharge_cg_locked()
197 free_cg_rpool_locked(rpool); in uncharge_cg_locked()
267 struct rdmacg_resource_pool *rpool; in rdmacg_try_charge() local
282 rpool = get_cg_rpool_locked(p, device); in rdmacg_try_charge()
283 if (IS_ERR(rpool)) { in rdmacg_try_charge()
284 ret = PTR_ERR(rpool); in rdmacg_try_charge()
287 new = rpool->resources[index].usage + 1; in rdmacg_try_charge()
288 if (new > rpool->resources[index].max) { in rdmacg_try_charge()
292 rpool->resources[index].usage = new; in rdmacg_try_charge()
293 rpool->usage_sum++; in rdmacg_try_charge()
342 struct rdmacg_resource_pool *rpool, *tmp; in rdmacg_unregister_device() local
355 list_for_each_entry_safe(rpool, tmp, &device->rpools, dev_node) in rdmacg_unregister_device()
356 free_cg_rpool_locked(rpool); in rdmacg_unregister_device()
436 struct rdmacg_resource_pool *rpool; in rdmacg_resource_set_max() local
469 rpool = get_cg_rpool_locked(cg, device); in rdmacg_resource_set_max()
470 if (IS_ERR(rpool)) { in rdmacg_resource_set_max()
471 ret = PTR_ERR(rpool); in rdmacg_resource_set_max()
477 set_resource_limit(rpool, i, new_limits[i]); in rdmacg_resource_set_max()
479 if (rpool->usage_sum == 0 && in rdmacg_resource_set_max()
480 rpool->num_max_cnt == RDMACG_RESOURCE_MAX) { in rdmacg_resource_set_max()
485 free_cg_rpool_locked(rpool); in rdmacg_resource_set_max()
499 struct rdmacg_resource_pool *rpool) in print_rpool_values() argument
511 if (rpool) in print_rpool_values()
512 value = rpool->resources[i].max; in print_rpool_values()
516 if (rpool) in print_rpool_values()
517 value = rpool->resources[i].usage; in print_rpool_values()
533 struct rdmacg_resource_pool *rpool; in rdmacg_resource_read() local
541 rpool = find_cg_rpool_locked(cg, device); in rdmacg_resource_read()
542 print_rpool_values(sf, rpool); in rdmacg_resource_read()
600 struct rdmacg_resource_pool *rpool; in rdmacg_css_offline() local
604 list_for_each_entry(rpool, &cg->rpools, cg_node) in rdmacg_css_offline()
605 set_all_resource_max_limit(rpool); in rdmacg_css_offline()