Lines Matching refs:resource

40 		      struct devlink_resource *resource, u64 resource_id)  in devlink_resource_find()  argument
44 if (resource) in devlink_resource_find()
45 resource_list = &resource->resource_list; in devlink_resource_find()
49 list_for_each_entry(resource, resource_list, list) { in devlink_resource_find()
52 if (resource->id == resource_id) in devlink_resource_find()
53 return resource; in devlink_resource_find()
55 child_resource = devlink_resource_find(devlink, resource, in devlink_resource_find()
64 devlink_resource_validate_children(struct devlink_resource *resource) in devlink_resource_validate_children() argument
70 if (list_empty(&resource->resource_list)) in devlink_resource_validate_children()
73 list_for_each_entry(child_resource, &resource->resource_list, list) in devlink_resource_validate_children()
76 if (parts_size > resource->size_new) in devlink_resource_validate_children()
79 resource->size_valid = size_valid; in devlink_resource_validate_children()
83 devlink_resource_validate_size(struct devlink_resource *resource, u64 size, in devlink_resource_validate_size() argument
89 if (size > resource->size_params.size_max) { in devlink_resource_validate_size()
94 if (size < resource->size_params.size_min) { in devlink_resource_validate_size()
99 div64_u64_rem(size, resource->size_params.size_granularity, &reminder); in devlink_resource_validate_size()
111 struct devlink_resource *resource; in devlink_nl_cmd_resource_set() local
121 resource = devlink_resource_find(devlink, NULL, resource_id); in devlink_nl_cmd_resource_set()
122 if (!resource) in devlink_nl_cmd_resource_set()
126 err = devlink_resource_validate_size(resource, size, info->extack); in devlink_nl_cmd_resource_set()
130 resource->size_new = size; in devlink_nl_cmd_resource_set()
131 devlink_resource_validate_children(resource); in devlink_nl_cmd_resource_set()
132 if (resource->parent) in devlink_nl_cmd_resource_set()
133 devlink_resource_validate_children(resource->parent); in devlink_nl_cmd_resource_set()
138 devlink_resource_size_params_put(struct devlink_resource *resource, in devlink_resource_size_params_put() argument
143 size_params = &resource->size_params; in devlink_resource_size_params_put()
155 static int devlink_resource_occ_put(struct devlink_resource *resource, in devlink_resource_occ_put() argument
158 if (!resource->occ_get) in devlink_resource_occ_put()
161 resource->occ_get(resource->occ_get_priv), in devlink_resource_occ_put()
166 struct devlink_resource *resource) in devlink_resource_put() argument
176 if (nla_put_string(skb, DEVLINK_ATTR_RESOURCE_NAME, resource->name) || in devlink_resource_put()
177 nla_put_u64_64bit(skb, DEVLINK_ATTR_RESOURCE_SIZE, resource->size, in devlink_resource_put()
179 nla_put_u64_64bit(skb, DEVLINK_ATTR_RESOURCE_ID, resource->id, in devlink_resource_put()
182 if (resource->size != resource->size_new && in devlink_resource_put()
184 resource->size_new, DEVLINK_ATTR_PAD)) in devlink_resource_put()
186 if (devlink_resource_occ_put(resource, skb)) in devlink_resource_put()
188 if (devlink_resource_size_params_put(resource, skb)) in devlink_resource_put()
190 if (list_empty(&resource->resource_list)) in devlink_resource_put()
194 resource->size_valid)) in devlink_resource_put()
202 list_for_each_entry(child_resource, &resource->resource_list, list) { in devlink_resource_put()
223 struct devlink_resource *resource; in devlink_resource_fill() local
232 resource = list_first_entry(&devlink->resource_list, in devlink_resource_fill()
256 list_for_each_entry_from(resource, &devlink->resource_list, list) { in devlink_resource_fill()
257 err = devlink_resource_put(devlink, skb, resource); in devlink_resource_fill()
299 struct devlink_resource *resource, in devlink_resources_validate() argument
305 if (resource) in devlink_resources_validate()
306 resource_list = &resource->resource_list; in devlink_resources_validate()
310 list_for_each_entry(resource, resource_list, list) { in devlink_resources_validate()
311 if (!resource->size_valid) in devlink_resources_validate()
313 err = devlink_resources_validate(devlink, resource, info); in devlink_resources_validate()
341 struct devlink_resource *resource; in devl_resource_register() local
349 resource = devlink_resource_find(devlink, NULL, resource_id); in devl_resource_register()
350 if (resource) in devl_resource_register()
353 resource = kzalloc(sizeof(*resource), GFP_KERNEL); in devl_resource_register()
354 if (!resource) in devl_resource_register()
366 resource->parent = parent_resource; in devl_resource_register()
368 kfree(resource); in devl_resource_register()
373 resource->name = resource_name; in devl_resource_register()
374 resource->size = resource_size; in devl_resource_register()
375 resource->size_new = resource_size; in devl_resource_register()
376 resource->id = resource_id; in devl_resource_register()
377 resource->size_valid = true; in devl_resource_register()
378 memcpy(&resource->size_params, size_params, in devl_resource_register()
379 sizeof(resource->size_params)); in devl_resource_register()
380 INIT_LIST_HEAD(&resource->resource_list); in devl_resource_register()
381 list_add_tail(&resource->list, resource_list); in devl_resource_register()
421 struct devlink_resource *resource) in devlink_resource_unregister() argument
425 list_for_each_entry_safe(child_resource, tmp, &resource->resource_list, in devlink_resource_unregister()
479 struct devlink_resource *resource; in devl_resource_size_get() local
483 resource = devlink_resource_find(devlink, NULL, resource_id); in devl_resource_size_get()
484 if (!resource) in devl_resource_size_get()
486 *p_resource_size = resource->size_new; in devl_resource_size_get()
487 resource->size = resource->size_new; in devl_resource_size_get()
505 struct devlink_resource *resource; in devl_resource_occ_get_register() local
509 resource = devlink_resource_find(devlink, NULL, resource_id); in devl_resource_occ_get_register()
510 if (WARN_ON(!resource)) in devl_resource_occ_get_register()
512 WARN_ON(resource->occ_get); in devl_resource_occ_get_register()
514 resource->occ_get = occ_get; in devl_resource_occ_get_register()
515 resource->occ_get_priv = occ_get_priv; in devl_resource_occ_get_register()
550 struct devlink_resource *resource; in devl_resource_occ_get_unregister() local
554 resource = devlink_resource_find(devlink, NULL, resource_id); in devl_resource_occ_get_unregister()
555 if (WARN_ON(!resource)) in devl_resource_occ_get_unregister()
557 WARN_ON(!resource->occ_get); in devl_resource_occ_get_unregister()
559 resource->occ_get = NULL; in devl_resource_occ_get_unregister()
560 resource->occ_get_priv = NULL; in devl_resource_occ_get_unregister()