zyp@odyssey:~/rust_pcie_test$ lspci -s 01: -vv 01:00.0 Unassigned class [ff00]: Device 1234:5678 Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- Kernel driver in use: vfio-pci zyp@odyssey:~/rust_pcie_test$ cat src/bin/ident.rs use anyhow::{anyhow, Context}; use pci_driver::backends::vfio::VfioPciDevice; use pci_driver::device::PciDevice; use pci_driver::regions::PciRegion; fn main() -> anyhow::Result<()> { let device = VfioPciDevice::open("/sys/bus/pci/devices/0000:01:00.0") .context("Failed to open PCIe device")?; let bar0 = device.bar(0).ok_or(anyhow!("Failed to open BAR0"))?; let mut buf = Vec::new(); let mut offset = 0x2000; loop { let value = bar0.read_u8(offset) .context("Failed to read from BAR0")?; match value { 0x00 => break, 0xff => break, _ => (), } buf.push(value); offset += 4; } let str = String::from_utf8(buf)?; println!("{}", str); Ok(()) } zyp@odyssey:~/rust_pcie_test$ cargo run --bin ident Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.03s Running `target/debug/ident` LiteX SoC on Versa ECP5 2026-04-05 18:28:53