diff --git a/pci/src/bus.rs b/pci/src/bus.rs index 524410c5f..7cad62d8a 100644 --- a/pci/src/bus.rs +++ b/pci/src/bus.rs @@ -53,6 +53,7 @@ impl PciRoot { config: PciConfiguration::new( VENDOR_ID_INTEL, DEVICE_ID_INTEL_VIRT_PCIE_HOST, + 0, PciClassCode::BridgeDevice, &PciBridgeSubclass::HostBridge, None, diff --git a/pci/src/configuration.rs b/pci/src/configuration.rs index 71e583854..4fbd1d3d2 100755 --- a/pci/src/configuration.rs +++ b/pci/src/configuration.rs @@ -337,6 +337,7 @@ impl PciConfiguration { pub fn new( vendor_id: u16, device_id: u16, + revision_id: u8, class_code: PciClassCode, subclass: &dyn PciSubclass, programming_interface: Option<&dyn PciProgrammingInterface>, @@ -359,7 +360,8 @@ impl PciConfiguration { }; registers[2] = u32::from(class_code.get_register_value()) << 24 | u32::from(subclass.get_register_value()) << 16 - | u32::from(pi) << 8; + | u32::from(pi) << 8 + | u32::from(revision_id); writable_bits[3] = 0x0000_00ff; // Cacheline size (r/w) match header_type { PciHeaderType::Device => { @@ -862,6 +864,7 @@ mod tests { let mut cfg = PciConfiguration::new( 0x1234, 0x5678, + 0x1, PciClassCode::MultimediaController, &PciMultimediaSubclass::AudioController, None, @@ -917,6 +920,7 @@ mod tests { let cfg = PciConfiguration::new( 0x1234, 0x5678, + 0x1, PciClassCode::MultimediaController, &PciMultimediaSubclass::AudioController, Some(&TestPI::Test), diff --git a/vfio/src/vfio_pci.rs b/vfio/src/vfio_pci.rs index 1582d5ea1..c3de37377 100644 --- a/vfio/src/vfio_pci.rs +++ b/vfio/src/vfio_pci.rs @@ -297,6 +297,7 @@ impl VfioPciDevice { device.reset(); let configuration = PciConfiguration::new( + 0, 0, 0, PciClassCode::Other, diff --git a/vm-virtio/src/transport/pci_device.rs b/vm-virtio/src/transport/pci_device.rs index bdfce58ff..719f9f2bc 100755 --- a/vm-virtio/src/transport/pci_device.rs +++ b/vm-virtio/src/transport/pci_device.rs @@ -373,6 +373,7 @@ impl VirtioPciDevice { let configuration = PciConfiguration::new( VIRTIO_PCI_VENDOR_ID, pci_device_id, + 0x1, // For modern virtio-PCI devices class, subclass, None,