All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Boris Brezillon" <boris.brezillon@collabora.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 03/17] drm/panthor: Make sure reset requests in the resume path are not lost
Date: Thu, 13 Aug 2026 11:09:25 +0000	[thread overview]
Message-ID: <20260813110925.DEFD41F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260813-panthor-unplug-fixes-v3-3-3ed4e961bbe7@collabora.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Incorrect use of `smp_mb__after_atomic()` after `atomic_set()` fails to provide a guaranteed full memory barrier, potentially leading to a lost reset due to Store-Load reordering.
- [Low] Missing word in the newly added inline comment makes it grammatically incomplete and confusing.
--

--- Patch [3]: [PATCH v3 03/17] drm/panthor: Make sure reset requests in the resume path are not lost ---
commit df28c58d554a7a21bebf387cbb4ce59c9aa88cf4
Author: Boris Brezillon <boris.brezillon@collabora.com>

drm/panthor: Make sure reset requests in the resume path are not lost

A reset might have been queued while we were resuming. Make sure it's
not lost by rescheduling it.

Closes: https://sashiko.dev/#/patchset/20260804-panthor-unplug-fixes-v1-0-abbbd2d41b13@collabora.com?part=2

> diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/panthor/panthor_device.c
> index 47dc7faf9728c..1a8f5ac24399a 100644
> --- a/drivers/gpu/drm/panthor/panthor_device.c
> +++ b/drivers/gpu/drm/panthor/panthor_device.c
> @@ -569,7 +569,24 @@ int panthor_device_resume(struct device *dev)
>  	unmap_mapping_range(ptdev->base.anon_inode->i_mapping,
>  			    DRM_PANTHOR_USER_MMIO_OFFSET, 0, 1);
>  	atomic_set(&ptdev->pm.state, PANTHOR_DEVICE_PM_STATE_ACTIVE);
> +
> +	/* The smp_mb__after_atomic() is here to make sure the pm.state update
> +	 * is flushed before we check the reset.pending bit, otherwise,
> +	 * according to Sashiko, there's a with the checks that exist in
                                          ^^^^^^
[Severity: Low]
This isn't a bug, but it looks like a word is missing here. Did you mean
"there's a race with the checks"?

> +	 * panthor_device_schedule_reset().
> +	 * Not sure how real this is, because the try_cmpxchg_release() in
> +	 * the mutex_unlock() path also acts as a barrier, but it's not a
> +	 * fast-path anyway, so better safe than sorry.
> +	 */
> +	smp_mb__after_atomic();

[Severity: High]
Does this actually provide the intended memory barrier?

Since atomic_set() is not a read-modify-write (RMW) operation,
smp_mb__after_atomic() doesn't guarantee a full memory barrier. On some
architectures, it is defined merely as a compiler barrier.

This means the CPU could reorder the subsequent load of ptdev->reset.pending
before the store to pm.state becomes globally visible (Store-Load reordering).

If this reordering happens concurrently with panthor_device_schedule_reset()
setting reset.pending = 1 and checking pm.state, could this regression lead
to both threads failing to queue the reset work?

Also, can the try_cmpxchg_release() in the mutex_unlock() path prevent this?

Since release semantics only prevent prior operations from moving past the
release, they don't stop subsequent loads (like reading reset.pending) from
being hoisted before the release.

Should this use a full smp_mb() instead?

>  	mutex_unlock(&ptdev->pm.mmio_lock);
> +
> +	/* A reset might have been queued while we were resuming. Make sure
> +	 * it's not lost by rescheduling it.
> +	 */
> +	if (atomic_read(&ptdev->reset.pending))
> +		queue_work(ptdev->reset.wq, &ptdev->reset.work);
> +
>  	return 0;
>  
>  err_suspend_devfreq:

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260813-panthor-unplug-fixes-v3-0-3ed4e961bbe7@collabora.com?part=3

  reply	other threads:[~2026-08-13 11:09 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-13 10:56 [PATCH v3 00/17] drm/panthor: Fix the unplug logic Boris Brezillon
2026-08-13 10:56 ` [PATCH v3 01/17] drm/panthor: Disable reset work before unplug Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 02/17] drm/panthor: Further delay reset work enablement Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 03/17] drm/panthor: Make sure reset requests in the resume path are not lost Boris Brezillon
2026-08-13 11:09   ` sashiko-bot [this message]
2026-08-13 10:57 ` [PATCH v3 04/17] drm/panthor: Make sure reset requests in the post reset " Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 05/17] drm/panthor: Flush the cleanup_wq in the unplug path Boris Brezillon
2026-08-13 11:18   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 06/17] drm/panthor: Drop unused vm argument passed to panthor_vm_prepare_sync_only_op_ctx() Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 07/17] drm/panthor: Move the debugfs initialization to panthor_device.c Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 08/17] drm/panthor: Split panthor_vm Boris Brezillon
2026-08-13 11:37   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 09/17] drm/panthor: Add fine-grained restrictions on VMs Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 10/17] drm/panthor: Check AS state before disabling Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 11/17] drm/panthor: Don't pre-allocate VMAs or page tables when preparing a full VM unmap Boris Brezillon
2026-08-13 11:12   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 12/17] drm/panthor: Make the VM cleanup path more robust against UAF Boris Brezillon
2026-08-13 11:20   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 13/17] drm/panthor: Track user owned VMs Boris Brezillon
2026-08-13 11:18   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 14/17] drm/panthor: Track user owned groups Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 15/17] drm/panthor: Fix the unplug logic Boris Brezillon
2026-08-13 11:25   ` sashiko-bot
2026-08-13 10:57 ` [PATCH v3 16/17] drm/panthor: Add a debugfs knob to simulate unplug failures Boris Brezillon
2026-08-13 10:57 ` [PATCH v3 17/17] drm/panthor: Add a debugfs knobs to simulate reset failures Boris Brezillon
2026-08-13 11:23 ` [PATCH v3 00/17] drm/panthor: Fix the unplug logic Boris Brezillon
2026-08-13 15:11   ` Liviu Dudau
2026-08-13 15:55     ` Boris Brezillon
2026-08-13 17:06       ` Liviu Dudau
2026-08-13 18:50   ` Danilo Krummrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260813110925.DEFD41F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=boris.brezillon@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.