]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sample: rust: pci: add tests for config space routines
authorZhi Wang <zhiw@nvidia.com>
Wed, 21 Jan 2026 20:22:11 +0000 (22:22 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Fri, 23 Jan 2026 20:24:59 +0000 (21:24 +0100)
Add tests exercising the PCI configuration space helpers.

Suggested-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Zhi Wang <zhiw@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260121202212.4438-6-zhiw@nvidia.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
samples/rust/rust_driver_pci.rs

index 38c949efce38bb005b3f99264a78c7f7541e7a47..8eea79e858a2af7f4925b09e63cc4583a6223690 100644 (file)
@@ -5,6 +5,7 @@
 //! To make this driver probe, QEMU must be run with `-device pci-testdev`.
 
 use kernel::{
+    device::Bound,
     device::Core,
     devres::Devres,
     io::Io,
@@ -65,6 +66,30 @@ impl SampleDriver {
 
         Ok(bar.read32(Regs::COUNT))
     }
+
+    fn config_space(pdev: &pci::Device<Bound>) {
+        let config = pdev.config_space();
+
+        // TODO: use the register!() macro for defining PCI configuration space registers once it
+        // has been move out of nova-core.
+        dev_info!(
+            pdev.as_ref(),
+            "pci-testdev config space read8 rev ID: {:x}\n",
+            config.read8(0x8)
+        );
+
+        dev_info!(
+            pdev.as_ref(),
+            "pci-testdev config space read16 vendor ID: {:x}\n",
+            config.read16(0)
+        );
+
+        dev_info!(
+            pdev.as_ref(),
+            "pci-testdev config space read32 BAR 0: {:x}\n",
+            config.read32(0x10)
+        );
+    }
 }
 
 impl pci::Driver for SampleDriver {
@@ -96,6 +121,7 @@ impl pci::Driver for SampleDriver {
                         "pci-testdev data-match count: {}\n",
                         Self::testdev(info, bar)?
                     );
+                    Self::config_space(pdev);
                 },
                 pdev: pdev.into(),
             }))