From: "Onur Özkan" <work@onurozkan.dev>
To: "Onur Özkan" <work@onurozkan.dev>
Cc: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
dri-devel@lists.freedesktop.org, dakr@kernel.org,
aliceryhl@google.com, daniel.almeida@collabora.com,
airlied@gmail.com, simona@ffwll.ch, ojeda@kernel.org,
boqun@kernel.org, gary@garyguo.net, bjorn3_gh@protonmail.com,
lossin@kernel.org, a.hindborg@kernel.org, tmgross@umich.edu
Subject: Re: [PATCH v4 0/4] drm/tyr: GPU reset infrastructure
Date: Sat, 15 Aug 2026 13:34:40 +0300 [thread overview]
Message-ID: <20260815103511.238176-1-work@onurozkan.dev> (raw)
In-Reply-To: <20260815-tyr-reset-impl-v4-0-578df9a5e576@onurozkan.dev>
On Sat, 15 Aug 2026 13:23:56 +0300
Onur Özkan <work@onurozkan.dev> wrote:
> Add support for scheduling GPU resets on a dedicated workqueue. Track
> the reset state to avoid queueing another reset while one is already
> pending or in progress.
>
> Use an SRCU based gate with mutex-protected reader admission to block
> hardware accesses while reset work runs and wait for current users
> before resetting.
>
> Stop new reset requests during teardown and drain any queued or running
> reset work before releasing the device resources.
>
> This is the initial reset infrastructure only. It is not wired to a reset
> source yet as those will follow in separate work.
>
> Based on 'commit 53441a9cae3c ("drm/tyr: program CSF global interface")'
> from tyr-for-upstream with the following patch series on the ML:
> - rust: workqueue: add cancel_sync support [1]
> - rust: add SRCU abstraction [2]
> - rust: workqueue: add ScopedQueue for lifetime bound items [3]
> - Creation of workqueues in Rust [4]
>
> TODOs:
> - On reset failure, we don't do anything for now. We should unplug
> the GPU (that's what Panthor does) but we don't have the infrastructure
> for that yet [5].
> - In schedule(), similar to panthor_device_schedule_reset(), we should
> have a PM check but similar to the note above, we don't have the
> infrastructure for that yet.
>
> Changes since v4:
> - Moved iomem behind the HwGate.
> - Renamed the guard names in hw_gate (after the iomem patch, I realized
> the old names were confusing).
>
> Changes since v3:
> - Dropped Resettable, ActiveHwState, pre/post-reset hooks and typestate.
> - Removed ResetState::Enqueueing and teardown spinning.
> - Replaced fail-fast try_access() and epoch tracking with a blocking
> hardware-access gate.
> - Used b4 for the prerequisites.
>
> Changes since v2:
> - Replaced Work::disable_sync with Work::cancel_sync.
> - Used type state pattern for reset stages.
> - Using ScopedQueue with device lifetime instead of a static workqueue.
> - Removed SRCU patch from this series.
>
> Changes since v1:
> - Removed OrderedQueue and using Alice's workqueue implementation [1]
> instead.
> - Added Resettable trait with pre_reset and post_reset hooks to be
> implemented by reset-managed hardwares.
> - Added SRCU abstraction and used it to synchronize the reset work and
> hardware access.
>
> v1: https://lore.kernel.org/rust-for-linux/20260313091646.16938-1-work@onurozkan.dev
> v2: https://lore.kernel.org/rust-for-linux/20260416171728.205141-1-work@onurozkan.dev
> v3: https://lore.kernel.org/all/20260708114358.957305-1-work@onurozkan.dev
> v4: https://lore.kernel.org/all/20260813-tyr-reset-impl-v4-0-b36fcd0805b2@onurozkan.dev
>
> Link: https://lore.kernel.org/all/20260617131731.145337-1-work@onurozkan.dev [1]
> Link: https://lore.kernel.org/all/20260613065348.96750-1-work@onurozkan.dev [2]
> Link: https://lore.kernel.org/all/20260617144645.253444-1-work@onurozkan.dev [3]
> Link: https://lore.kernel.org/all/20260312-create-workqueue-v4-0-ea39c351c38f@google.com [4]
> Link: https://gitlab.freedesktop.org/panfrost/linux/-/work_items/29#note_3391826 [5]
> Link: https://gitlab.freedesktop.org/panfrost/linux/-/issues/28
> Signed-off-by: Onur Özkan <work@onurozkan.dev>
> ---
> Onur Özkan (4):
> rust: workqueue: impl Send and Sync for OwnedQueue
> drm/tyr: clear stale IRQ state before soft reset
> drm/tyr: add GPU reset infrastructure
> drm/tyr: put iomem behind the hardware gate
>
> drivers/gpu/drm/tyr/driver.rs | 61 +++-----
> drivers/gpu/drm/tyr/fw.rs | 16 +-
> drivers/gpu/drm/tyr/mmu.rs | 9 +-
> drivers/gpu/drm/tyr/mmu/address_space.rs | 49 +++---
> drivers/gpu/drm/tyr/reset.rs | 252 +++++++++++++++++++++++++++++++
> drivers/gpu/drm/tyr/reset/hw_gate.rs | 102 +++++++++++++
> drivers/gpu/drm/tyr/tyr.rs | 1 +
> rust/kernel/workqueue/mod.rs | 8 +
> 8 files changed, 421 insertions(+), 77 deletions(-)
> ---
> base-commit: 53441a9cae3c4be552fa8aefa6e61b0f1bceb8a5
> change-id: 20260813-tyr-reset-impl-93e951f996b4
> prerequisite-message-id: <20260312-create-workqueue-v4-0-ea39c351c38f@google.com>
> prerequisite-patch-id: f5e24f7b3717f2ab0445b5395c7f12b554861d78
> prerequisite-patch-id: 0bf6ae4abcef7090d0e48921d6ec627a59dc6a7a
> prerequisite-patch-id: f2bd17b7ba9f4626ddec56fec8e108872ddc6af1
> prerequisite-message-id: <20260617144645.253444-1-work@onurozkan.dev>
> prerequisite-patch-id: 5b966d09cfd455dd09fb0911d174b123efa02a16
> prerequisite-message-id: <20260613065348.96750-1-work@onurozkan.dev>
> prerequisite-patch-id: 9e1efee190d212ba1b01cd0acb5a4357e0b4da42
> prerequisite-patch-id: 26aba035f4d1e212fa6ea7078095febefff5c5ba
> prerequisite-patch-id: ffa25d5aadec4c04589af2bdd59a9c022f0fc9b0
> prerequisite-patch-id: c2e05a4ac9d665d331952b291a622df6be673e41
> prerequisite-patch-id: c14a4bd8a68b045356d61f7fa94690bd037ad08b
> prerequisite-message-id: <20260617131731.145337-1-work@onurozkan.dev>
> prerequisite-patch-id: b40e7a218c4e0467933e83c45b09eb78c7ebace2
>
The version prefix is wrong on this series. It's not V4; it's V5. I am
not sure if I should re-send the whole series with the correct prefix.
Sorry,
Onur
prev parent reply other threads:[~2026-08-15 10:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-15 10:23 [PATCH v4 0/4] drm/tyr: GPU reset infrastructure Onur Özkan
2026-08-15 10:23 ` [PATCH v4 1/4] rust: workqueue: impl Send and Sync for OwnedQueue Onur Özkan
2026-08-15 10:23 ` [PATCH v4 2/4] drm/tyr: clear stale IRQ state before soft reset Onur Özkan
2026-08-15 10:23 ` [PATCH v4 3/4] drm/tyr: add GPU reset infrastructure Onur Özkan
2026-08-15 11:33 ` Danilo Krummrich
2026-08-15 10:24 ` [PATCH v4 4/4] drm/tyr: put iomem behind the hardware gate Onur Özkan
2026-08-15 10:34 ` Onur Özkan [this message]
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=20260815103511.238176-1-work@onurozkan.dev \
--to=work@onurozkan.dev \
--cc=a.hindborg@kernel.org \
--cc=airlied@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=tmgross@umich.edu \
/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.