Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73aa808f authored by Chris Wilson's avatar Chris Wilson
Browse files

drm: Move the GTT accounting to i915



Only drm/i915 does the bookkeeping that makes the information useful,
and the information maintained is driver specific, so move it out of the
core and into its single user.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Dave Airlie <airlied@redhat.com>
parent 6a04002b
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ static struct drm_info_list drm_debugfs_list[] = {
	{"queues", drm_queues_info, 0},
	{"bufs", drm_bufs_info, 0},
	{"gem_names", drm_gem_name_info, DRIVER_GEM},
	{"gem_objects", drm_gem_object_info, DRIVER_GEM},
#if DRM_DEBUG_CODE
	{"vma", drm_vma_info, 0},
#endif
+0 −14
Original line number Diff line number Diff line
@@ -92,12 +92,6 @@ drm_gem_init(struct drm_device *dev)

	spin_lock_init(&dev->object_name_lock);
	idr_init(&dev->object_name_idr);
	atomic_set(&dev->object_count, 0);
	atomic_set(&dev->object_memory, 0);
	atomic_set(&dev->pin_count, 0);
	atomic_set(&dev->pin_memory, 0);
	atomic_set(&dev->gtt_count, 0);
	atomic_set(&dev->gtt_memory, 0);

	mm = kzalloc(sizeof(struct drm_gem_mm), GFP_KERNEL);
	if (!mm) {
@@ -151,9 +145,6 @@ int drm_gem_object_init(struct drm_device *dev,
	kref_init(&obj->handlecount);
	obj->size = size;

	atomic_inc(&dev->object_count);
	atomic_add(obj->size, &dev->object_memory);

	return 0;
}
EXPORT_SYMBOL(drm_gem_object_init);
@@ -180,8 +171,6 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size)
	return obj;
fput:
	/* Object_init mangles the global counters - readjust them. */
	atomic_dec(&dev->object_count);
	atomic_sub(obj->size, &dev->object_memory);
	fput(obj->filp);
free:
	kfree(obj);
@@ -436,10 +425,7 @@ drm_gem_release(struct drm_device *dev, struct drm_file *file_private)
void
drm_gem_object_release(struct drm_gem_object *obj)
{
	struct drm_device *dev = obj->dev;
	fput(obj->filp);
	atomic_dec(&dev->object_count);
	atomic_sub(obj->size, &dev->object_memory);
}
EXPORT_SYMBOL(drm_gem_object_release);

+0 −14
Original line number Diff line number Diff line
@@ -270,20 +270,6 @@ int drm_gem_name_info(struct seq_file *m, void *data)
	return 0;
}

int drm_gem_object_info(struct seq_file *m, void* data)
{
	struct drm_info_node *node = (struct drm_info_node *) m->private;
	struct drm_device *dev = node->minor->dev;

	seq_printf(m, "%d objects\n", atomic_read(&dev->object_count));
	seq_printf(m, "%d object bytes\n", atomic_read(&dev->object_memory));
	seq_printf(m, "%d pinned\n", atomic_read(&dev->pin_count));
	seq_printf(m, "%d pin bytes\n", atomic_read(&dev->pin_memory));
	seq_printf(m, "%d gtt bytes\n", atomic_read(&dev->gtt_memory));
	seq_printf(m, "%d gtt total\n", dev->gtt_total);
	return 0;
}

#if DRM_DEBUG_CODE

int drm_vma_info(struct seq_file *m, void *data)
+0 −1
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ static struct drm_info_list drm_proc_list[] = {
	{"queues", drm_queues_info, 0},
	{"bufs", drm_bufs_info, 0},
	{"gem_names", drm_gem_name_info, DRIVER_GEM},
	{"gem_objects", drm_gem_object_info, DRIVER_GEM},
#if DRM_DEBUG_CODE
	{"vma", drm_vma_info, 0},
#endif
+26 −0
Original line number Diff line number Diff line
@@ -188,6 +188,31 @@ static int i915_gem_object_list_info(struct seq_file *m, void *data)
	return 0;
}

static int i915_gem_object_info(struct seq_file *m, void* data)
{
	struct drm_info_node *node = (struct drm_info_node *) m->private;
	struct drm_device *dev = node->minor->dev;
	struct drm_i915_private *dev_priv = dev->dev_private;
	int ret;

	ret = mutex_lock_interruptible(&dev->struct_mutex);
	if (ret)
		return ret;

	seq_printf(m, "%u objects\n", dev_priv->mm.object_count);
	seq_printf(m, "%zu object bytes\n", dev_priv->mm.object_memory);
	seq_printf(m, "%u pinned\n", dev_priv->mm.pin_count);
	seq_printf(m, "%zu pin bytes\n", dev_priv->mm.pin_memory);
	seq_printf(m, "%u objects in gtt\n", dev_priv->mm.gtt_count);
	seq_printf(m, "%zu gtt bytes\n", dev_priv->mm.gtt_memory);
	seq_printf(m, "%zu gtt total\n", dev_priv->mm.gtt_total);

	mutex_unlock(&dev->struct_mutex);

	return 0;
}


static int i915_gem_pageflip_info(struct seq_file *m, void *data)
{
	struct drm_info_node *node = (struct drm_info_node *) m->private;
@@ -994,6 +1019,7 @@ static int i915_wedged_create(struct dentry *root, struct drm_minor *minor)

static struct drm_info_list i915_debugfs_list[] = {
	{"i915_capabilities", i915_capabilities, 0, 0},
	{"i915_gem_objects", i915_gem_object_info, 0},
	{"i915_gem_render_active", i915_gem_object_list_info, 0, (void *) RENDER_LIST},
	{"i915_gem_bsd_active", i915_gem_object_list_info, 0, (void *) BSD_LIST},
	{"i915_gem_flushing", i915_gem_object_list_info, 0, (void *) FLUSHING_LIST},
Loading