* [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint
@ 2025-07-30 1:34 Alistair Popple
2025-07-30 1:34 ` [PATCH v3 2/2] rust: Add several miscellaneous PCI helpers Alistair Popple
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Alistair Popple @ 2025-07-30 1:34 UTC (permalink / raw)
To: rust-for-linux
Cc: Alistair Popple, Danilo Krummrich, Bjorn Helgaas,
Krzysztof Wilczyński, Miguel Ojeda, Alex Gaynor, Boqun Feng,
Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Greg Kroah-Hartman, Rafael J. Wysocki,
John Hubbard, Alexandre Courbot, linux-pci, linux-kernel
Update the safety comments to be consistent with other safety comments
in the PCI bindings. Also add an inline compiler hint.
Suggested-by: Danilo Krummrich <dakr@kernel.org>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Krzysztof Wilczyński <kwilczynski@kernel.org>
Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Alex Gaynor <alex.gaynor@gmail.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Gary Guo <gary@garyguo.net>
Cc: Björn Roy Baron <bjorn3_gh@protonmail.com>
Cc: Benno Lossin <lossin@kernel.org>
Cc: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Alice Ryhl <aliceryhl@google.com>
Cc: Trevor Gross <tmgross@umich.edu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Alexandre Courbot <acourbot@nvidia.com>
Cc: linux-pci@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Alistair Popple <apopple@nvidia.com>
---
Changes for v3:
- Updated capitalisation of SAFETY comments
---
rust/kernel/pci.rs | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
index 8435f8132e381..7da1712398938 100644
--- a/rust/kernel/pci.rs
+++ b/rust/kernel/pci.rs
@@ -371,14 +371,18 @@ fn as_raw(&self) -> *mut bindings::pci_dev {
impl Device {
/// Returns the PCI vendor ID.
+ #[inline]
pub fn vendor_id(&self) -> u16 {
- // SAFETY: `self.as_raw` is a valid pointer to a `struct pci_dev`.
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
unsafe { (*self.as_raw()).vendor }
}
/// Returns the PCI device ID.
+ #[inline]
pub fn device_id(&self) -> u16 {
- // SAFETY: `self.as_raw` is a valid pointer to a `struct pci_dev`.
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
unsafe { (*self.as_raw()).device }
}
--
2.47.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] rust: Add several miscellaneous PCI helpers
2025-07-30 1:34 [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Alistair Popple
@ 2025-07-30 1:34 ` Alistair Popple
2025-07-30 9:05 ` [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Miguel Ojeda
2025-08-15 18:32 ` Danilo Krummrich
2 siblings, 0 replies; 4+ messages in thread
From: Alistair Popple @ 2025-07-30 1:34 UTC (permalink / raw)
To: rust-for-linux
Cc: Alistair Popple, Alexandre Courbot, Danilo Krummrich,
Bjorn Helgaas, Krzysztof Wilczyński, Miguel Ojeda,
Alex Gaynor, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Greg Kroah-Hartman, Rafael J. Wysocki, John Hubbard, linux-pci,
linux-kernel
Add bindings to obtain a PCI device's resource start address, bus/
device function, revision ID and subsystem device and vendor IDs.
These will be used by the nova-core GPU driver which is currently in
development.
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Krzysztof Wilczyński <kwilczynski@kernel.org>
Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Alex Gaynor <alex.gaynor@gmail.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Gary Guo <gary@garyguo.net>
Cc: Björn Roy Baron <bjorn3_gh@protonmail.com>
Cc: Benno Lossin <lossin@kernel.org>
Cc: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Alice Ryhl <aliceryhl@google.com>
Cc: Trevor Gross <tmgross@umich.edu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Alexandre Courbot <acourbot@nvidia.com>
Cc: linux-pci@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Alistair Popple <apopple@nvidia.com>
---
Changes for v3:
- Fixed capitalisation of SAFETY comments.
- There was a long discussion about the SAFETY comments on v2 of the
series[1]. I don't think anything actionable came of it so I haven't
made any changes as a result of that discussion.
[1] - https://lore.kernel.org/rust-for-linux/20250710022415.923972-1-apopple@nvidia.com/
---
rust/helpers/pci.c | 10 ++++++++++
rust/kernel/pci.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/rust/helpers/pci.c b/rust/helpers/pci.c
index cd0e6bf2cc4d9..59d15bd4bdb13 100644
--- a/rust/helpers/pci.c
+++ b/rust/helpers/pci.c
@@ -12,6 +12,16 @@ void *rust_helper_pci_get_drvdata(struct pci_dev *pdev)
return pci_get_drvdata(pdev);
}
+u16 rust_helper_pci_dev_id(struct pci_dev *dev)
+{
+ return PCI_DEVID(dev->bus->number, dev->devfn);
+}
+
+resource_size_t rust_helper_pci_resource_start(struct pci_dev *pdev, int bar)
+{
+ return pci_resource_start(pdev, bar);
+}
+
resource_size_t rust_helper_pci_resource_len(struct pci_dev *pdev, int bar)
{
return pci_resource_len(pdev, bar);
diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
index 7da1712398938..d47226a679f6c 100644
--- a/rust/kernel/pci.rs
+++ b/rust/kernel/pci.rs
@@ -386,6 +386,50 @@ pub fn device_id(&self) -> u16 {
unsafe { (*self.as_raw()).device }
}
+ /// Returns the PCI revision ID.
+ #[inline]
+ pub fn revision_id(&self) -> u8 {
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
+ unsafe { (*self.as_raw()).revision }
+ }
+
+ /// Returns the PCI bus device/function.
+ #[inline]
+ pub fn dev_id(&self) -> u16 {
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
+ unsafe { bindings::pci_dev_id(self.as_raw()) }
+ }
+
+ /// Returns the PCI subsystem vendor ID.
+ #[inline]
+ pub fn subsystem_vendor_id(&self) -> u16 {
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
+ unsafe { (*self.as_raw()).subsystem_vendor }
+ }
+
+ /// Returns the PCI subsystem device ID.
+ #[inline]
+ pub fn subsystem_device_id(&self) -> u16 {
+ // SAFETY: By its type invariant `self.as_raw` is always a valid pointer to a
+ // `struct pci_dev`.
+ unsafe { (*self.as_raw()).subsystem_device }
+ }
+
+ /// Returns the start of the given PCI bar resource.
+ pub fn resource_start(&self, bar: u32) -> Result<bindings::resource_size_t> {
+ if !Bar::index_is_valid(bar) {
+ return Err(EINVAL);
+ }
+
+ // SAFETY:
+ // - `bar` is a valid bar number, as guaranteed by the above call to `Bar::index_is_valid`,
+ // - by its type invariant `self.as_raw` is always a valid pointer to a `struct pci_dev`.
+ Ok(unsafe { bindings::pci_resource_start(self.as_raw(), bar.try_into()?) })
+ }
+
/// Returns the size of the given PCI bar resource.
pub fn resource_len(&self, bar: u32) -> Result<bindings::resource_size_t> {
if !Bar::index_is_valid(bar) {
--
2.47.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint
2025-07-30 1:34 [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Alistair Popple
2025-07-30 1:34 ` [PATCH v3 2/2] rust: Add several miscellaneous PCI helpers Alistair Popple
@ 2025-07-30 9:05 ` Miguel Ojeda
2025-08-15 18:32 ` Danilo Krummrich
2 siblings, 0 replies; 4+ messages in thread
From: Miguel Ojeda @ 2025-07-30 9:05 UTC (permalink / raw)
To: Alistair Popple
Cc: rust-for-linux, Danilo Krummrich, Bjorn Helgaas,
Krzysztof Wilczyński, Miguel Ojeda, Alex Gaynor, Boqun Feng,
Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Greg Kroah-Hartman, Rafael J. Wysocki,
John Hubbard, Alexandre Courbot, linux-pci, linux-kernel
On Wed, Jul 30, 2025 at 3:34 AM Alistair Popple <apopple@nvidia.com> wrote:
>
> Cc: linux-kernel@vger.kernel.org
I think this list of Ccs is automated, given even the LKML is
included, but the Cc: tag inside the commit message is not meant to be
used to mention every maintainer/reviewer, i.e. it is normally used
when you want to document that someone was contacted (i.e. for a
particular reason, not in general).
Otherwise, all commits would have very long lists of Ccs and the value
of the tag is diminished.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint
2025-07-30 1:34 [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Alistair Popple
2025-07-30 1:34 ` [PATCH v3 2/2] rust: Add several miscellaneous PCI helpers Alistair Popple
2025-07-30 9:05 ` [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Miguel Ojeda
@ 2025-08-15 18:32 ` Danilo Krummrich
2 siblings, 0 replies; 4+ messages in thread
From: Danilo Krummrich @ 2025-08-15 18:32 UTC (permalink / raw)
To: Alistair Popple
Cc: rust-for-linux, Bjorn Helgaas, Krzysztof Wilczyński,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, Greg Kroah-Hartman, Rafael J. Wysocki, John Hubbard,
Alexandre Courbot, linux-pci, linux-kernel
On 7/30/25 3:34 AM, Alistair Popple wrote:
> Update the safety comments to be consistent with other safety comments
> in the PCI bindings. Also add an inline compiler hint.
>
> Suggested-by: Danilo Krummrich <dakr@kernel.org>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Krzysztof Wilczyński <kwilczynski@kernel.org>
> Cc: Miguel Ojeda <ojeda@kernel.org>
> Cc: Alex Gaynor <alex.gaynor@gmail.com>
> Cc: Boqun Feng <boqun.feng@gmail.com>
> Cc: Gary Guo <gary@garyguo.net>
> Cc: Björn Roy Baron <bjorn3_gh@protonmail.com>
> Cc: Benno Lossin <lossin@kernel.org>
> Cc: Andreas Hindborg <a.hindborg@kernel.org>
> Cc: Alice Ryhl <aliceryhl@google.com>
> Cc: Trevor Gross <tmgross@umich.edu>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Rafael J. Wysocki <rafael@kernel.org>
> Cc: John Hubbard <jhubbard@nvidia.com>
> Cc: Alexandre Courbot <acourbot@nvidia.com>
> Cc: linux-pci@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Alistair Popple <apopple@nvidia.com>
Applied to driver-core-testing, thanks!
Alistair, do you mind sending a follow-up patch to replace the raw
bindings:resource_size_t return types on resource_start() and resource_len()
with the Rust ResourceSize type?
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-08-15 18:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-30 1:34 [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Alistair Popple
2025-07-30 1:34 ` [PATCH v3 2/2] rust: Add several miscellaneous PCI helpers Alistair Popple
2025-07-30 9:05 ` [PATCH v3 1/2] rust: Update PCI binding safety comments and add inline compiler hint Miguel Ojeda
2025-08-15 18:32 ` Danilo Krummrich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).