All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] drm/tyr: GPU reset infrastructure
@ 2026-08-15 10:23 Onur Özkan
  2026-08-15 10:23 ` [PATCH v4 1/4] rust: workqueue: impl Send and Sync for OwnedQueue Onur Özkan
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Onur Özkan @ 2026-08-15 10:23 UTC (permalink / raw)
  To: linux-kernel, rust-for-linux, dri-devel
  Cc: dakr, aliceryhl, daniel.almeida, airlied, simona, ojeda, boqun,
	gary, bjorn3_gh, lossin, a.hindborg, tmgross, Onur Özkan

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-08-15 11:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH v4 0/4] drm/tyr: GPU reset infrastructure Onur Özkan

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.