Re: [PATCH 01/12] drm/panthor: Disable reset work before unplug

[email protected] Tue, 04 Aug 2026 10:21:04 +0000
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Deadlock (both self-deadlock and AB-BA) between `panthor_device_unplug()` and `panthor_device_reset_work()`.
--

--- Patch [1]: [PATCH 01/12] drm/panthor: Disable reset work before unplug ---
commit 116cfe13ccbee774afdfc7f2e6251c1738450020
Author: Boris Brezillon <[email protected]>

drm/panthor: Disable reset work before unplug

This commit disables the reset work during the unplug process to prevent
interruptions.

> diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/panthor/panthor_device.c
> index 0b25abebb803c..e7f5744bc1e31 100644
> --- a/drivers/gpu/drm/panthor/panthor_device.c
> +++ b/drivers/gpu/drm/panthor/panthor_device.c
> @@ -86,6 +86,9 @@ void panthor_device_unplug(struct panthor_device *ptdev)
>  	 */
>  	drm_dev_unplug(&ptdev->base);
>  
> +	/* Make sure we're not interrupted by resets while we're unplugging. */
> +	disable_work_sync(&ptdev->reset.work);

[Severity: High]
Does this introduce a deadlock when the reset work fails?

Looking at panthor_device_reset_work(), if the reset fails, it calls
panthor_device_unplug(). This would result in panthor_device_unplug() calling
disable_work_sync() on the currently executing work item, causing a
self-deadlock:

panthor_device_reset_work() {
	...
	if (ret) {
		panthor_device_unplug(ptdev);
			...
			disable_work_sync(&ptdev->reset.work);

Additionally, since panthor_device_unplug() acquires ptdev->unplug.lock
before calling disable_work_sync(), does this create an AB-BA deadlock if
driver removal happens concurrently with a reset failure?

The driver removal thread would acquire ptdev->unplug.lock and wait in
disable_work_sync(), while the reset work would block trying to acquire
ptdev->unplug.lock inside its call to panthor_device_unplug().

>  	/* We do the rest of the unplug with the unplug lock released,
>  	 * future callers will wait on ptdev->unplug.done anyway.
>  	 */

-- 
Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1