diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 8e0c4232a..a1453a011 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -1195,8 +1195,8 @@ impl RateLimiterGroupConfig { } impl PciDeviceCommonConfig { - const OPTIONS: &[&str] = &["id", "pci_segment"]; - const OPTIONS_IOMMU: &[&str] = &["id", "iommu", "pci_segment"]; + const OPTIONS: &[&str] = &["id", "pci_segment", "pci_device_id"]; + const OPTIONS_IOMMU: &[&str] = &["id", "iommu", "pci_segment", "pci_device_id"]; pub fn parse(input: &str) -> Result { let mut parser = OptionParser::new(); @@ -1217,11 +1217,15 @@ impl PciDeviceCommonConfig { .convert("pci_segment") .map_err(Error::ParsePciDeviceCommonConfig)? .unwrap_or_default(); + let pci_device_id = parser + .convert::("pci_device_id") + .map_err(Error::ParsePciDeviceCommonConfig)?; Ok(Self { id, iommu, pci_segment, + pci_device_id, }) } diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs index 156650cb2..916204540 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs @@ -281,6 +281,8 @@ pub struct PciDeviceCommonConfig { pub iommu: bool, #[serde(default)] pub pci_segment: u16, + #[serde(default)] + pub pci_device_id: Option, } #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]