void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m) { struct msm_gem_object *msm_obj = to_msm_bo(obj); struct reservation_object *robj = msm_obj->resv; struct reservation_object_list *fobj; struct fence *fence; uint64_t off = drm_vma_node_start(&obj->vma_node); WARN_ON(!mutex_is_locked(&obj->dev->struct_mutex)); seq_printf(m, "%08x: %c %2d (%2d) %08llx %p %zu\n", msm_obj->flags, is_active(msm_obj) ? 'A' : 'I', obj->name, obj->refcount.refcount.counter, off, msm_obj->vaddr, obj->size); rcu_read_lock(); fobj = rcu_dereference(robj->fence); if (fobj) { unsigned int i, shared_count = fobj->shared_count; for (i = 0; i < shared_count; i++) { fence = rcu_dereference(fobj->shared[i]); describe_fence(fence, "Shared", m); } } fence = rcu_dereference(robj->fence_excl); if (fence) describe_fence(fence, "Exclusive", m); rcu_read_unlock(); }
/** * drm_gem_cma_describe - describe a CMA GEM object for debugfs * @cma_obj: CMA GEM object * @m: debugfs file handle * * This function can be used to dump a human-readable representation of the * CMA GEM object into a synthetic file. */ void drm_gem_cma_describe(struct drm_gem_cma_object *cma_obj, struct seq_file *m) { struct drm_gem_object *obj = &cma_obj->base; uint64_t off; off = drm_vma_node_start(&obj->vma_node); seq_printf(m, "%2d (%2d) %08llx %pad %p %zu", obj->name, obj->refcount.refcount.counter, off, &cma_obj->paddr, cma_obj->vaddr, obj->size); seq_printf(m, "\n"); }
void drm_gem_cma_describe(struct drm_gem_cma_object *cma_obj, struct seq_file *m) { struct drm_gem_object *obj = &cma_obj->base; struct drm_device *dev = obj->dev; uint64_t off; WARN_ON(!mutex_is_locked(&dev->struct_mutex)); off = drm_vma_node_start(&obj->vma_node); seq_printf(m, "%2d (%2d) %08llx %pad %p %d", obj->name, obj->refcount.refcount.counter, off, &cma_obj->paddr, cma_obj->vaddr, obj->size); seq_printf(m, "\n"); }
void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m) { struct msm_gem_object *msm_obj = to_msm_bo(obj); struct reservation_object *robj = msm_obj->resv; struct reservation_object_list *fobj; struct fence *fence; uint64_t off = drm_vma_node_start(&obj->vma_node); const char *madv; WARN_ON(!mutex_is_locked(&obj->dev->struct_mutex)); switch (msm_obj->madv) { case __MSM_MADV_PURGED: madv = " purged"; break; case MSM_MADV_DONTNEED: madv = " purgeable"; break; case MSM_MADV_WILLNEED: default: madv = ""; break; } seq_printf(m, "%08x: %c %2d (%2d) %08llx %p %zu%s\n", msm_obj->flags, is_active(msm_obj) ? 'A' : 'I', obj->name, obj->refcount.refcount.counter, off, msm_obj->vaddr, obj->size, madv); rcu_read_lock(); fobj = rcu_dereference(robj->fence); if (fobj) { unsigned int i, shared_count = fobj->shared_count; for (i = 0; i < shared_count; i++) { fence = rcu_dereference(fobj->shared[i]); describe_fence(fence, "Shared", m); } } fence = rcu_dereference(robj->fence_excl); if (fence) describe_fence(fence, "Exclusive", m); rcu_read_unlock(); }