Commit e62e48ad authored by Zhi Wang's avatar Zhi Wang Committed by Danilo Krummrich
Browse files

sample: rust: pci: add tests for config space routines



Add tests exercising the PCI configuration space helpers.

Suggested-by: default avatarDanilo Krummrich <dakr@kernel.org>
Signed-off-by: default avatarZhi Wang <zhiw@nvidia.com>
Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Reviewed-by: default avatarGary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260121202212.4438-6-zhiw@nvidia.com


Signed-off-by: default avatarDanilo Krummrich <dakr@kernel.org>
parent 4dc0bacb
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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 @@ fn testdev(index: &TestIndex, bar: &Bar0) -> Result<u32> {

        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 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
                        "pci-testdev data-match count: {}\n",
                        Self::testdev(info, bar)?
                    );
                    Self::config_space(pdev);
                },
                pdev: pdev.into(),
            }))