Lines Matching refs:dr

59 static void free_dr(struct drmres *dr)  in free_dr()  argument
61 kfree_const(dr->node.name); in free_dr()
62 kfree(dr); in free_dr()
67 struct drmres *dr, *tmp; in drm_managed_release() local
70 list_for_each_entry_safe(dr, tmp, &dev->managed.resources, node.entry) { in drm_managed_release()
72 dr, dr->node.name, dr->node.size); in drm_managed_release()
74 if (dr->node.release) in drm_managed_release()
75 dr->node.release(dev, dr->node.size ? *(void **)&dr->data : NULL); in drm_managed_release()
77 list_del(&dr->node.entry); in drm_managed_release()
78 free_dr(dr); in drm_managed_release()
91 struct drmres *dr; in alloc_dr() local
94 if (unlikely(check_add_overflow(sizeof(*dr), size, &tot_size))) in alloc_dr()
97 dr = kmalloc_node_track_caller(tot_size, gfp, nid); in alloc_dr()
98 if (unlikely(!dr)) in alloc_dr()
101 memset(dr, 0, offsetof(struct drmres, data)); in alloc_dr()
103 INIT_LIST_HEAD(&dr->node.entry); in alloc_dr()
104 dr->node.release = release; in alloc_dr()
105 dr->node.size = size; in alloc_dr()
107 return dr; in alloc_dr()
110 static void del_dr(struct drm_device *dev, struct drmres *dr) in del_dr() argument
112 list_del_init(&dr->node.entry); in del_dr()
115 dr, dr->node.name, (unsigned long) dr->node.size); in del_dr()
118 static void add_dr(struct drm_device *dev, struct drmres *dr) in add_dr() argument
123 list_add(&dr->node.entry, &dev->managed.resources); in add_dr()
127 dr, dr->node.name, (unsigned long) dr->node.size); in add_dr()
142 struct drmres *dr; in __drmm_add_action() local
145 dr = alloc_dr(action, data ? sizeof(void*) : 0, in __drmm_add_action()
148 if (!dr) { in __drmm_add_action()
154 dr->node.name = kstrdup_const(name, GFP_KERNEL); in __drmm_add_action()
156 void_ptr = (void **)&dr->data; in __drmm_add_action()
160 add_dr(dev, dr); in __drmm_add_action()
195 struct drmres *dr_match = NULL, *dr; in drmm_release_action() local
199 list_for_each_entry_reverse(dr, &dev->managed.resources, node.entry) { in drmm_release_action()
200 if (dr->node.release == action) { in drmm_release_action()
201 if (!data || *(void **)dr->data == data) { in drmm_release_action()
202 dr_match = dr; in drmm_release_action()
231 struct drmres *dr; in drmm_kmalloc() local
233 dr = alloc_dr(NULL, size, gfp, dev_to_node(dev->dev)); in drmm_kmalloc()
234 if (!dr) { in drmm_kmalloc()
239 dr->node.name = kstrdup_const("kmalloc", gfp); in drmm_kmalloc()
241 add_dr(dev, dr); in drmm_kmalloc()
243 return dr->data; in drmm_kmalloc()
284 struct drmres *dr_match = NULL, *dr; in drmm_kfree() local
291 list_for_each_entry(dr, &dev->managed.resources, node.entry) { in drmm_kfree()
292 if (dr->data == data) { in drmm_kfree()
293 dr_match = dr; in drmm_kfree()