diff --git a/arch/src/lib.rs b/arch/src/lib.rs index a7c0ffdca..c1c197366 100644 --- a/arch/src/lib.rs +++ b/arch/src/lib.rs @@ -120,6 +120,7 @@ pub struct NumaNode { pub pci_segments: Vec, pub distances: BTreeMap, pub memory_zones: Vec, + pub device_id: Option, } pub type NumaNodes = BTreeMap; diff --git a/vmm/src/api/openapi/cloud-hypervisor.yaml b/vmm/src/api/openapi/cloud-hypervisor.yaml index 1fa3d9b51..d1c67c97f 100644 --- a/vmm/src/api/openapi/cloud-hypervisor.yaml +++ b/vmm/src/api/openapi/cloud-hypervisor.yaml @@ -1203,6 +1203,8 @@ components: items: type: integer format: int32 + device_id: + type: string VmResize: type: object diff --git a/vmm/src/config.rs b/vmm/src/config.rs index af9c4ce9a..3244d1bc0 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -2185,6 +2185,7 @@ impl VsockConfig { impl NumaConfig { pub const SYNTAX: &'static str = "Settings related to a given NUMA node \ \"guest_numa_id=,cpus=,distances=,\ + device_id=,\ memory_zones=,\ pci_segments=\""; @@ -2194,6 +2195,7 @@ impl NumaConfig { .add("guest_numa_id") .add("cpus") .add("distances") + .add("device_id") .add("memory_zones") .add("pci_segments"); @@ -2222,6 +2224,7 @@ impl NumaConfig { }) .collect() }); + let device_id = parser.get("device_id"); let memory_zones = parser .convert::("memory_zones") .map_err(Error::ParseNuma)? @@ -2234,6 +2237,7 @@ impl NumaConfig { guest_numa_id, cpus, distances, + device_id, memory_zones, pci_segments, }) @@ -4118,6 +4122,7 @@ mod unit_tests { guest_numa_id: 0, cpus: None, distances: None, + device_id: None, memory_zones: None, pci_segments: None, } diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs index 954ab16fc..e0e74cb4a 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs @@ -685,6 +685,8 @@ pub struct NumaConfig { pub memory_zones: Option>, #[serde(default)] pub pci_segments: Option>, + #[serde(default)] + pub device_id: Option, } /// Errors describing a misconfigured payload, i.e., a configuration that