All of lore.kernel.org
 help / color / mirror / Atom feed
From: Timur Tabi <ttabi@nvidia.com>
To: Matthew Maurer <mmaurer@google.com>,
	Danilo Krummrich <dakr@kernel.org>, Gary Guo <gary@garyguo.net>,
	John Hubbard <jhubbard@nvidia.com>,
	"Joel Fernandes" <joelagnelf@nvidia.com>,
	Alexandre Courbot <acourbot@nvidia.com>,
	<rust-for-linux@vger.kernel.org>, <nouveau@lists.freedesktop.org>
Subject: [PATCH v4 1/9] rust: pci: add PCI device name method
Date: Tue, 13 Jan 2026 16:54:00 -0600	[thread overview]
Message-ID: <20260113225408.671252-2-ttabi@nvidia.com> (raw)
In-Reply-To: <20260113225408.671252-1-ttabi@nvidia.com>

Add a name() method to the PCI `Device` type, which returns a CStr
that contains the device name, typically the BDF address.

Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 rust/kernel/pci.rs | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
index 82e128431f08..125fb39f4316 100644
--- a/rust/kernel/pci.rs
+++ b/rust/kernel/pci.rs
@@ -427,6 +427,43 @@ pub fn pci_class(&self) -> Class {
         // SAFETY: `self.as_raw` is a valid pointer to a `struct pci_dev`.
         Class::from_raw(unsafe { (*self.as_raw()).class })
     }
+
+    /// Returns the PCI device name.
+    ///
+    /// This returns the device name in the format "DDDD:BB:DD.F" where:
+    /// - DDDD is the PCI domain (4 hex digits)
+    /// - BB is the bus number (2 hex digits)
+    /// - DD is the device number (2 hex digits)
+    /// - F is the function number (1 hex digit)
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use kernel::{c_str, debugfs::Dir, device::Core, pci, prelude::*};
+    /// fn create_debugfs(pdev: &pci::Device<Core>) -> Result {
+    ///     let dir = Dir::new(pdev.name());
+    ///     Ok(())
+    /// }
+    /// ```
+    #[inline]
+    pub fn name(&self) -> &CStr {
+        // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+        // `struct pci_dev`, which contains a `struct device dev` member.
+        unsafe {
+            let pci_dev = self.as_raw();
+            let dev = &raw const (*pci_dev).dev;
+
+            // If init_name is set, use it; otherwise use the kobject name
+            let init_name = (*dev).init_name;
+            let name_ptr = if !init_name.is_null() {
+                init_name
+            } else {
+                (*dev).kobj.name
+            };
+
+            CStr::from_char_ptr(name_ptr)
+        }
+    }
 }
 
 impl Device<device::Core> {
-- 
2.52.0


  reply	other threads:[~2026-01-14 12:59 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-13 22:53 [PATCH v4 0/9] gpu: nova-core: expose the logging buffers via debugfs Timur Tabi
2026-01-13 22:54 ` Timur Tabi [this message]
2026-01-13 22:54 ` [PATCH v4 2/9] gpu: nova-core: implement BinaryWriter for LogBuffer Timur Tabi
2026-01-13 22:54 ` [PATCH v4 3/9] gpu: nova-core: Replace module_pci_driver! with explicit module init Timur Tabi
2026-01-13 22:54 ` [PATCH v4 4/9] gpu: nova-core: use pin projection in method boot() Timur Tabi
2026-01-13 22:54 ` [PATCH v4 5/9] rust: debugfs: implement Directory trait for Dir Timur Tabi
2026-01-15 17:27   ` kernel test robot
2026-01-13 22:54 ` [PATCH v4 6/9] rust: debugfs: wrap Entry in an enum to prep for LookupDir Timur Tabi
2026-01-13 22:54 ` [PATCH v4 7/9] rust: debugfs: add LookupDir Timur Tabi
2026-01-13 22:54 ` [PATCH v4 8/9] gpu: nova-core: create debugfs root when driver loads Timur Tabi
2026-01-13 22:54 ` [PATCH v4 9/9] gpu: nova-core: create GSP-RM logging buffers debugfs entries Timur Tabi
2026-01-13 23:11 ` [PATCH v4 0/9] gpu: nova-core: expose the logging buffers via debugfs Danilo Krummrich
2026-01-13 23:11   ` Danilo Krummrich
2026-01-13 23:26   ` Timur Tabi
2026-01-13 23:26     ` Timur Tabi
2026-01-13 23:50     ` Danilo Krummrich
2026-01-13 23:50       ` Danilo Krummrich
2026-01-13 23:59       ` Timur Tabi
2026-01-13 23:59         ` Timur Tabi
2026-01-14  1:09         ` Gary Guo
2026-01-14  1:09           ` Gary Guo
2026-01-14 11:17         ` Danilo Krummrich
2026-01-14 11:17           ` 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=20260113225408.671252-2-ttabi@nvidia.com \
    --to=ttabi@nvidia.com \
    --cc=acourbot@nvidia.com \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=jhubbard@nvidia.com \
    --cc=joelagnelf@nvidia.com \
    --cc=mmaurer@google.com \
    --cc=nouveau@lists.freedesktop.org \
    --cc=rust-for-linux@vger.kernel.org \
    /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.