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

Commit 202f2fef authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Avoid taking the mutex for dropping the refcnt upon creation



After allocation a handle for the fresh object, we know that we can
safely drop the refcnt without triggering a free so we do not need the
mutex. Strangely, this mutex acquisition is the one that appears on
driver profiles.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent f0c43d9b
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -244,12 +244,17 @@ i915_gem_create_ioctl(struct drm_device *dev, void *data,
		return -ENOMEM;

	ret = drm_gem_handle_create(file_priv, obj, &handle);
	/* drop reference from allocate - handle holds it now */
	drm_gem_object_unreference_unlocked(obj);
	if (ret) {
		drm_gem_object_release(obj);
		i915_gem_info_remove_obj(dev->dev_private, obj->size);
		kfree(obj);
		return ret;
	}

	/* drop reference from allocate - handle holds it now */
	drm_gem_object_unreference(obj);
	trace_i915_gem_object_create(obj);

	args->handle = handle;
	return 0;
}
@@ -4380,8 +4385,6 @@ struct drm_gem_object * i915_gem_alloc_object(struct drm_device *dev,
	INIT_LIST_HEAD(&obj->gpu_write_list);
	obj->madv = I915_MADV_WILLNEED;

	trace_i915_gem_object_create(&obj->base);

	return &obj->base;
}