Lines Matching +full:client +full:- +full:id

1 // SPDX-License-Identifier: MIT
22 struct i915_drm_client *client; in i915_drm_client_alloc() local
24 client = kzalloc(sizeof(*client), GFP_KERNEL); in i915_drm_client_alloc()
25 if (!client) in i915_drm_client_alloc()
28 kref_init(&client->kref); in i915_drm_client_alloc()
29 spin_lock_init(&client->ctx_lock); in i915_drm_client_alloc()
30 INIT_LIST_HEAD(&client->ctx_list); in i915_drm_client_alloc()
32 spin_lock_init(&client->objects_lock); in i915_drm_client_alloc()
33 INIT_LIST_HEAD(&client->objects_list); in i915_drm_client_alloc()
36 return client; in i915_drm_client_alloc()
41 struct i915_drm_client *client = in __i915_drm_client_free() local
42 container_of(kref, typeof(*client), kref); in __i915_drm_client_free()
44 kfree(client); in __i915_drm_client_free()
52 const enum intel_region_id id = obj->mm.region ? in obj_meminfo()
53 obj->mm.region->id : INTEL_REGION_SMEM; in obj_meminfo()
54 const u64 sz = obj->base.size; in obj_meminfo()
56 if (drm_gem_object_is_shared_for_memory_stats(&obj->base)) in obj_meminfo()
57 stats[id].shared += sz; in obj_meminfo()
59 stats[id].private += sz; in obj_meminfo()
62 stats[id].resident += sz; in obj_meminfo()
64 if (!dma_resv_test_signaled(obj->base.resv, in obj_meminfo()
66 stats[id].active += sz; in obj_meminfo()
68 obj->mm.madv == I915_MADV_DONTNEED) in obj_meminfo()
69 stats[id].purgeable += sz; in obj_meminfo()
76 struct drm_i915_file_private *fpriv = file->driver_priv; in show_meminfo()
77 struct i915_drm_client *client = fpriv->client; in show_meminfo() local
78 struct drm_i915_private *i915 = fpriv->i915; in show_meminfo()
82 unsigned int id; in show_meminfo() local
85 spin_lock(&file->table_lock); in show_meminfo()
86 idr_for_each_entry(&file->object_idr, obj, id) in show_meminfo()
88 spin_unlock(&file->table_lock); in show_meminfo()
92 list_for_each_rcu(pos, &client->objects_list) { in show_meminfo()
102 for_each_memory_region(mr, i915, id) in show_meminfo()
104 &stats[id], in show_meminfo()
108 mr->uabi_name); in show_meminfo()
115 [I915_ENGINE_CLASS_VIDEO_ENHANCE] = "video-enhance",
125 for_each_gem_engine(ce, rcu_dereference(ctx->engines), it) { in busy_add()
126 if (ce->engine->uabi_class != class) in busy_add()
138 struct i915_drm_client *client, in show_client_class() argument
141 const unsigned int capacity = i915->engine_uabi_class_count[class]; in show_client_class()
142 u64 total = atomic64_read(&client->past_runtime[class]); in show_client_class()
146 list_for_each_entry_rcu(ctx, &client->ctx_list, client_link) in show_client_class()
151 drm_printf(p, "drm-engine-%s:\t%llu ns\n", in show_client_class()
155 drm_printf(p, "drm-engine-capacity-%s:\t%u\n", in show_client_class()
162 struct drm_i915_file_private *file_priv = file->driver_priv; in i915_drm_client_fdinfo()
163 struct drm_i915_private *i915 = file_priv->i915; in i915_drm_client_fdinfo()
168 * For text output format description please see drm-usage-stats.rst! in i915_drm_client_fdinfo()
178 show_client_class(p, i915, file_priv->client, i); in i915_drm_client_fdinfo()
181 void i915_drm_client_add_object(struct i915_drm_client *client, in i915_drm_client_add_object() argument
186 GEM_WARN_ON(obj->client); in i915_drm_client_add_object()
187 GEM_WARN_ON(!list_empty(&obj->client_link)); in i915_drm_client_add_object()
189 spin_lock_irqsave(&client->objects_lock, flags); in i915_drm_client_add_object()
190 obj->client = i915_drm_client_get(client); in i915_drm_client_add_object()
191 list_add_tail_rcu(&obj->client_link, &client->objects_list); in i915_drm_client_add_object()
192 spin_unlock_irqrestore(&client->objects_lock, flags); in i915_drm_client_add_object()
197 struct i915_drm_client *client = fetch_and_zero(&obj->client); in i915_drm_client_remove_object() local
200 /* Object may not be associated with a client. */ in i915_drm_client_remove_object()
201 if (!client) in i915_drm_client_remove_object()
204 spin_lock_irqsave(&client->objects_lock, flags); in i915_drm_client_remove_object()
205 list_del_rcu(&obj->client_link); in i915_drm_client_remove_object()
206 spin_unlock_irqrestore(&client->objects_lock, flags); in i915_drm_client_remove_object()
208 i915_drm_client_put(client); in i915_drm_client_remove_object()
211 void i915_drm_client_add_context_objects(struct i915_drm_client *client, in i915_drm_client_add_context_objects() argument
214 if (ce->state) in i915_drm_client_add_context_objects()
215 i915_drm_client_add_object(client, ce->state->obj); in i915_drm_client_add_context_objects()
217 if (ce->ring != ce->engine->legacy.ring && ce->ring->vma) in i915_drm_client_add_context_objects()
218 i915_drm_client_add_object(client, ce->ring->vma->obj); in i915_drm_client_add_context_objects()