summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/display/intel_frontbuffer.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2025-10-16 21:54:04 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2025-11-07 17:38:02 +0200
commit3afef438eee38947ba7e8bb9b23d56d77c25f14b (patch)
tree61b081933a2640544bfff2ae15f7e568caa40880 /drivers/gpu/drm/i915/display/intel_frontbuffer.c
parent65417489541fcef7f14104f3a0292e479f08f72b (diff)
drm/i915/frontbuffer: Split fb_tracking.lock into two
Our fb_tracking.lock is serving a double duty: - protects fb_tracking.busy_bits - provides the write-side protection for obj->frontbuffer Split obj->frontbuffer role into a separate lock so that we can clean up the current mess with the frontbuffer lifetime management. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20251016185408.22735-7-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_frontbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/display/intel_frontbuffer.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
index bdf8bfa7deb9..02b06dfb9fee 100644
--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
@@ -210,7 +210,7 @@ static void frontbuffer_retire(struct i915_active *ref)
}
static void frontbuffer_release(struct kref *ref)
- __releases(&to_intel_display(front->obj->dev)->fb_tracking.lock)
+ __releases(&to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock)
{
struct intel_frontbuffer *ret, *front =
container_of(ref, typeof(*front), ref);
@@ -223,7 +223,7 @@ static void frontbuffer_release(struct kref *ref)
ret = intel_bo_set_frontbuffer(obj, NULL);
drm_WARN_ON(display->drm, ret);
- spin_unlock(&display->fb_tracking.lock);
+ spin_unlock(&display->fb_tracking.frontbuffer_lock);
i915_active_fini(&front->write);
@@ -256,9 +256,9 @@ intel_frontbuffer_get(struct drm_gem_object *obj)
I915_ACTIVE_RETIRE_SLEEPS);
INIT_WORK(&front->flush_work, intel_frontbuffer_flush_work);
- spin_lock(&display->fb_tracking.lock);
+ spin_lock(&display->fb_tracking.frontbuffer_lock);
cur = intel_bo_set_frontbuffer(obj, front);
- spin_unlock(&display->fb_tracking.lock);
+ spin_unlock(&display->fb_tracking.frontbuffer_lock);
if (cur != front) {
drm_gem_object_put(obj);
@@ -272,7 +272,7 @@ void intel_frontbuffer_put(struct intel_frontbuffer *front)
{
kref_put_lock(&front->ref,
frontbuffer_release,
- &to_intel_display(front->obj->dev)->fb_tracking.lock);
+ &to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock);
}
/**