From 4fd8664debfbfccb8fbc96c36cfca6e6440cf4fa Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 28 Mar 2020 13:35:50 -0600 Subject: [PATCH] pcid: Skip empty buses and devices --- pcid/src/main.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pcid/src/main.rs b/pcid/src/main.rs index 340eb6dbcb..88d85e07c0 100644 --- a/pcid/src/main.rs +++ b/pcid/src/main.rs @@ -246,15 +246,25 @@ fn main() { print!("PCI BS/DV/FN VEND:DEVI CL.SC.IN.RV\n"); let pci = Pci::new(); - for bus in pci.buses() { - for dev in bus.devs() { + 'bus: for bus in pci.buses() { + 'dev: for dev in bus.devs() { for func in dev.funcs() { let func_num = func.num; match PciHeader::from_reader(func) { Ok(header) => { handle_parsed_header(&config, &pci, bus.num, dev.num, func_num, header); } - Err(PciHeaderError::NoDevice) => {}, + Err(PciHeaderError::NoDevice) => { + if func_num == 0 { + if dev.num == 0 { + // println!("PCI {:>02X}: no bus", bus.num); + continue 'bus; + } else { + // println!("PCI {:>02X}/{:>02X}: no dev", bus.num, dev.num); + continue 'dev; + } + } + }, Err(PciHeaderError::UnknownHeaderType(id)) => { println!("pcid: unknown header type: {}", id); }