From: Alvin Sun <alvin.sun@linux.dev>
To: "Miguel Ojeda" <ojeda@kernel.org>,
"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Daniel Almeida" <daniel.almeida@collabora.com>
Cc: rust-for-linux@vger.kernel.org, dri-devel@lists.freedesktop.org,
Alvin Sun <alvin.sun@linux.dev>
Subject: [PATCH 11/13] drm/tyr: add debugfs infrastructure
Date: Thu, 26 Mar 2026 14:53:04 +0800 [thread overview]
Message-ID: <20260326-b4-tyr-debugfs-v1-11-074badd18716@linux.dev> (raw)
In-Reply-To: <20260326-b4-tyr-debugfs-v1-0-074badd18716@linux.dev>
Add module debugfs root, per-device directory and TyrDebugFSData; wire
into driver and call debugfs_init.
Signed-off-by: Alvin Sun <alvin.sun@linux.dev>
---
drivers/gpu/drm/tyr/debugfs.rs | 46 ++++++++++++++++++++++++++++++++++++++++++
drivers/gpu/drm/tyr/driver.rs | 11 +++++++++-
drivers/gpu/drm/tyr/tyr.rs | 39 ++++++++++++++++++++++++++++++++---
3 files changed, 92 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/tyr/debugfs.rs b/drivers/gpu/drm/tyr/debugfs.rs
new file mode 100644
index 0000000000000..254ecef43ea9a
--- /dev/null
+++ b/drivers/gpu/drm/tyr/debugfs.rs
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0 or MIT
+
+//! Debugfs support for the Tyr DRM driver.
+
+use core::pin;
+
+use kernel::{
+ debugfs,
+ device::Core,
+ drm,
+ platform,
+ prelude::*,
+ revocable::LazyRevocable,
+ str::CString,
+ sync::{
+ hazptr::HazptrCtx,
+ Arc,
+ ArcBorrow, //
+ }, //
+};
+
+use crate::driver::TyrDrmDriver;
+
+pub(crate) static DEBUGFS_ROOT: LazyRevocable<debugfs::Dir> = LazyRevocable::new();
+
+/// Per-device debugfs data.
+pub(crate) struct TyrDebugFSData {}
+
+/// Registers per-device debugfs directory under the module's debugfs root.
+pub(crate) fn debugfs_init(
+ ddev: &drm::Device<TyrDrmDriver>,
+ pdev: &platform::Device<Core>,
+ debugfs_data: ArcBorrow<'_, TyrDebugFSData>,
+) -> Result {
+ let idx = ddev.primary_index();
+ let dir_name = CString::try_from_fmt(fmt!("{}", idx))?;
+ let ctx = pin::pin!(HazptrCtx::new());
+ let root_dir = DEBUGFS_ROOT.try_access(ctx).ok_or_else(|| {
+ pr_err!("DEBUGFS_ROOT is not set");
+ ENOENT
+ })?;
+ let debugfs_data: Arc<TyrDebugFSData> = debugfs_data.into();
+ let scope_init = root_dir.scope(debugfs_data, &dir_name, |_data, _dir| {});
+
+ kernel::devres::register(pdev.as_ref(), scope_init, GFP_KERNEL)
+}
diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs
index 593f71c550e08..c8c929fda06ac 100644
--- a/drivers/gpu/drm/tyr/driver.rs
+++ b/drivers/gpu/drm/tyr/driver.rs
@@ -38,6 +38,7 @@
};
use crate::{
+ debugfs::TyrDebugFSData,
file::TyrDrmFileData,
fw::Firmware,
gem::BoData,
@@ -75,6 +76,9 @@ pub(crate) struct TyrDrmDeviceData {
///
/// This is mainly queried by userspace, i.e.: Mesa.
pub(crate) gpu_info: GpuInfo,
+
+ /// Per-device debugfs data.
+ pub(crate) debugfs_data: Arc<TyrDebugFSData>,
}
// Both `Clk` and `Regulator` do not implement `Send` or `Sync`, but they
@@ -150,6 +154,8 @@ fn probe(
let platform: ARef<platform::Device> = pdev.into();
let mmu = Mmu::new(pdev, iomem.as_arc_borrow(), &gpu_info)?;
+ let debugfs_data = Arc::new(TyrDebugFSData {}, GFP_KERNEL)?;
+ let debugfs_data_clone = debugfs_data.clone();
let firmware = Firmware::new(
pdev,
@@ -174,9 +180,12 @@ fn probe(
_sram: sram_regulator,
}),
gpu_info,
+ debugfs_data: debugfs_data_clone,
});
-
let ddev = Registration::new_foreign_owned(uninit_ddev, pdev.as_ref(), data, 0)?;
+
+ crate::debugfs::debugfs_init(ddev, pdev, debugfs_data.as_arc_borrow())?;
+
let driver = TyrPlatformDriverData {
_device: ddev.into(),
};
diff --git a/drivers/gpu/drm/tyr/tyr.rs b/drivers/gpu/drm/tyr/tyr.rs
index 18b0668bb2178..cda4955db4dc9 100644
--- a/drivers/gpu/drm/tyr/tyr.rs
+++ b/drivers/gpu/drm/tyr/tyr.rs
@@ -5,8 +5,20 @@
//! The name "Tyr" is inspired by Norse mythology, reflecting Arm's tradition of
//! naming their GPUs after Nordic mythological figures and places.
-use crate::driver::TyrPlatformDriverData;
+use crate::{
+ debugfs::DEBUGFS_ROOT,
+ driver::TyrPlatformDriverData, //
+};
+use kernel::{
+ driver::Registration,
+ error,
+ platform,
+ prelude::*,
+ revocable::HazPtrRevokeHandle,
+ InPlaceModule, //
+};
+mod debugfs;
mod driver;
mod file;
mod fw;
@@ -17,8 +29,29 @@
mod slot;
mod vm;
-kernel::module_platform_driver! {
- type: TyrPlatformDriverData,
+pub(crate) const MODULE_NAME: &kernel::str::CStr = <LocalModule as kernel::ModuleMetadata>::NAME;
+
+#[pin_data]
+struct TyrModule {
+ _debugfs_root: HazPtrRevokeHandle<'static, kernel::debugfs::Dir>,
+ #[pin]
+ _driver: Registration<platform::Adapter<TyrPlatformDriverData>>,
+}
+
+impl InPlaceModule for TyrModule {
+ fn init(module: &'static kernel::ThisModule) -> impl PinInit<Self, error::Error> {
+ let dir = kernel::debugfs::Dir::new(kernel::c_str!("tyr"));
+ let debugfs_root_handle = Pin::static_ref(&DEBUGFS_ROOT).init(dir);
+
+ try_pin_init!(Self {
+ _driver <- Registration::new(MODULE_NAME, module),
+ _debugfs_root <- debugfs_root_handle,
+ })
+ }
+}
+
+module! {
+ type: TyrModule,
name: "tyr",
authors: ["The Tyr driver authors"],
description: "Arm Mali Tyr DRM driver",
--
2.43.0
next prev parent reply other threads:[~2026-03-26 6:55 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 6:52 [PATCH 00/13] drm/tyr: add debugfs support Alvin Sun
2026-03-26 6:52 ` [PATCH 01/13] rust: sync: support [pin_]init for `SetOnce` Alvin Sun
2026-03-26 6:52 ` [PATCH 02/13] rust: revocable: add lazily instantiated revocable variant Alvin Sun
2026-03-26 6:52 ` [PATCH 03/13] rust: sync: set_once: Rename InitError variants to fix clippy warning Alvin Sun
2026-03-26 14:40 ` Gary Guo
2026-03-27 6:07 ` Alvin Sun
2026-03-26 16:35 ` Miguel Ojeda
2026-03-27 6:13 ` Alvin Sun
2026-03-26 6:52 ` [PATCH 04/13] rust: sync: add hazard pointer abstraction Alvin Sun
2026-03-26 6:52 ` [PATCH 05/13] rust: revocable: add HazPtrRevocable Alvin Sun
2026-03-26 6:52 ` [PATCH 06/13] rust: revocable: make LazyRevocable use HazPtrRevocable Alvin Sun
2026-03-26 6:53 ` [PATCH 07/13] rust: drm: add Device::primary_index() Alvin Sun
2026-03-26 6:53 ` [PATCH 08/13] rust: drm/gem: add GEM object query helpers for debugfs Alvin Sun
2026-03-26 6:53 ` [PATCH 09/13] rust: drm/gem/shmem: add resident_size() and madv() " Alvin Sun
2026-03-26 6:53 ` [PATCH 10/13] drm/tyr: expose Vm gpuvm_core, gpuvm and va_range as pub(crate) Alvin Sun
2026-03-26 6:53 ` Alvin Sun [this message]
2026-03-26 6:53 ` [PATCH 12/13] drm/tyr: add vms and gpuvas debugfs interface Alvin Sun
2026-03-26 6:53 ` [PATCH 13/13] drm/tyr: add gems field and gems " Alvin Sun
2026-03-26 14:32 ` [PATCH 00/13] drm/tyr: add debugfs support Boqun Feng
2026-03-27 6:18 ` Alvin Sun
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=20260326-b4-tyr-debugfs-v1-11-074badd18716@linux.dev \
--to=alvin.sun@linux.dev \
--cc=a.hindborg@kernel.org \
--cc=airlied@gmail.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=christian.koenig@amd.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=sumit.semwal@linaro.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox