From: Boris Brezillon <boris.brezillon@collabora.com>
To: Steven Price <steven.price@arm.com>, Liviu Dudau <liviu.dudau@arm.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
sashiko-bot@kernel.org, Danilo Krummrich <dakr@redhat.com>
Subject: Re: [PATCH v3 00/17] drm/panthor: Fix the unplug logic
Date: Thu, 13 Aug 2026 13:23:20 +0200 [thread overview]
Message-ID: <20260813132320.1682f9bd@fedora-21.home> (raw)
In-Reply-To: <20260813-panthor-unplug-fixes-v3-0-3ed4e961bbe7@collabora.com>
+Danilo, since you worked on the 'bound lifetime stuff in rust, and I
feel this is related to the problem I'm trying to fix here.
On Thu, 13 Aug 2026 12:56:58 +0200
Boris Brezillon <boris.brezillon@collabora.com> wrote:
> The current unplug logic is broken in multiple ways. This is an attempt
> at addressing the various problems found along the way (some were
> reported by Sashiko, others have been found while trying to address
> Sashiko's concerns).
>
> Sending a new version even though v2 didn't receive any human review
> just to try and address the new stuff pointed out by Sashiko.
Just a note I forgot to add to my cover letter. I've already spent way
more time than I wanted on this, not just because Sashiko keeps finding
new issues at each of my attempt, but also because the whole idea of
pretending a device on a platform bus is unplugged and can't harm us is
doomed. This is not an hot-pluggable bus, and the device is still there,
so, unless we can be absolutely sure it's inactive (which a RESET can
provide, but RESETs are fallible) we just have two options:
1. prevent the device from going away until we managed to properly
shutdown the GPU
2. make sure all resources the HW might have its hands on at the time
the failure of RESET in the unplug path happened are leaked
Option 1 is no longer possible since platform_driver::remove() can't
return an error. That leaves options 2, which is basically what this
patchset is doing, but the whole idea of leaking resources when the
final RESET in the unplug path fails has various nasty implications,
like the fact we end up with dangling drm_device (drm_gpuvm retains a
ref, and each GPU mapping we kept alive in the gpuvm is what keeps the
gpuvm and the BOs alive). In practice, there should be no one
triggering operations on this drm_device, because all the user-facing
interfaces have been shutdown by drm_dev_unregister() (which is called
by drm_dev_unplug()), but as things stand now, this drm_device still
has access to module-specific vtables, and there's nothing retaining
the module either.
TLDR; this is all super fragile stuff, on the other hand the current
situation is probably even worse. so if anyone has any idea how to
handle this properly (or at least a bit better than we do), please let
me know. I know a lot of this stuff is currently being considered as
part of the drm-rust abstractions, so hopefully we have a long-term
solution for rust drivers, but I'd really like a short-term solution
for panthor that doesn't involve nasty tricks or overly complex
refactoring.
>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> Changes in v3:
> - Fix a race in the reset reschedule logic we added to
> panthor_device_resume() (missing smp_mb__after_atomic())
> - Fix a VM leak when reset and suspend are racing with each other
> - Add missing drm_dev_enter/exit() sections
> - Insert the groups in the user_owned list even if the group creation
> happens during a reset
> - Try to document why some of the issues pointed out by Sashiko are
> either not real issues, or are expected (either fixed in a later
> commits, or just expected behavior)
> - Fix a race between panthor_device_unplug() and vm_prep_for_cleanup()
> (introduced in v2)
> - Link to v2: https://patch.msgid.link/20260811-panthor-unplug-fixes-v2-0-6b583e37f9ae@collabora.com
>
> Changes in v2:
> - Fix UAFs caused by deferred cleanup works
> - Fix UAFs caused by open FDs closed after unplug
> - Fix deadlock when device_unplug() is called from the reset work
> - Make sure reset requests are not lost in the resume and post_reset
> paths
> - Fix a deadlock in the suspend path
> - Fix a clk prepare_enable leak in the unplug path
> - Don't use a drmm_action to flush the cleanup queue (this could cause
> UAFs)
> - Drop the now unused panthor_vm::unusable field
> - Keep track of user owned resources to prevent leaks and/or UAFs
> - Link to v1: https://patch.msgid.link/20260804-panthor-unplug-fixes-v1-0-abbbd2d41b13@collabora.com
>
> ---
> Boris Brezillon (17):
> drm/panthor: Disable reset work before unplug
> drm/panthor: Further delay reset work enablement
> drm/panthor: Make sure reset requests in the resume path are not lost
> drm/panthor: Make sure reset requests in the post reset path are not lost
> drm/panthor: Flush the cleanup_wq in the unplug path
> drm/panthor: Drop unused vm argument passed to panthor_vm_prepare_sync_only_op_ctx()
> drm/panthor: Move the debugfs initialization to panthor_device.c
> drm/panthor: Split panthor_vm
> drm/panthor: Add fine-grained restrictions on VMs
> drm/panthor: Check AS state before disabling
> drm/panthor: Don't pre-allocate VMAs or page tables when preparing a full VM unmap
> drm/panthor: Make the VM cleanup path more robust against UAF
> drm/panthor: Track user owned VMs
> drm/panthor: Track user owned groups
> drm/panthor: Fix the unplug logic
> drm/panthor: Add a debugfs knob to simulate unplug failures
> drm/panthor: Add a debugfs knobs to simulate reset failures
>
> drivers/gpu/drm/panthor/panthor_device.c | 189 +++-
> drivers/gpu/drm/panthor/panthor_device.h | 38 +
> drivers/gpu/drm/panthor/panthor_drv.c | 132 ++-
> drivers/gpu/drm/panthor/panthor_fw.c | 9 +-
> drivers/gpu/drm/panthor/panthor_mmu.c | 1493 ++++++++++++++++++------------
> drivers/gpu/drm/panthor/panthor_mmu.h | 4 +-
> drivers/gpu/drm/panthor/panthor_sched.c | 132 ++-
> 7 files changed, 1344 insertions(+), 653 deletions(-)
> ---
> base-commit: 44e9eb5a762142a4aa46c0b5da7c39bfeb78910e
> change-id: 20260804-panthor-unplug-fixes-7927b3ddc2f9
>
> Best regards,
> --
> Boris Brezillon <boris.brezillon@collabora.com>
>
next prev parent reply other threads:[~2026-08-13 11:23 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
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 ` Boris Brezillon [this message]
2026-08-13 15:11 ` [PATCH v3 00/17] drm/panthor: Fix the unplug logic 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=20260813132320.1682f9bd@fedora-21.home \
--to=boris.brezillon@collabora.com \
--cc=airlied@gmail.com \
--cc=dakr@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=sashiko-bot@kernel.org \
--cc=simona@ffwll.ch \
--cc=steven.price@arm.com \
--cc=tzimmermann@suse.de \
/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.