Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/i915/psr: Check PSR pause counter in __psr_wait_for_idle_locked

PSR work is using __psr_wait_for_idle_locked to ensure PSR exit is
completed before continuing to PSR activation. __psr_wait_for_idle_locked
is unlocking PSR mutex which allows PSR disable/enable and PSR
pause/resume while PSR idle is being wait. PSR enable status is already
checked after locking again PSR mutex but PSR pause counter check is
missing. Due to this PSR work may continue to PSR activation even PSR is
paused.

Fix this by checking PSR pause counter in __psr_wait_for_idle_locked after
PSR mutex is locked again.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Jeevan B <jeevan.b@intel.com>
Link: https://lore.kernel.org/r/20250826074457.1992524-1-jouni.hogander@intel.com

+1 -1
+1 -1
drivers/gpu/drm/i915/display/intel_psr.c
··· 3093 3093 3094 3094 /* After the unlocked wait, verify that PSR is still wanted! */ 3095 3095 mutex_lock(&intel_dp->psr.lock); 3096 - return err == 0 && intel_dp->psr.enabled; 3096 + return err == 0 && intel_dp->psr.enabled && !intel_dp->psr.pause_counter; 3097 3097 } 3098 3098 3099 3099 static int intel_psr_fastset_force(struct intel_display *display)