From 0fc3fad363ffe43708252c9094477a12e36e5c9f Mon Sep 17 00:00:00 2001 From: Michael Zhao Date: Mon, 21 Feb 2022 21:32:24 +0800 Subject: [PATCH] vmm: Limit "Dies" in VCPU topology on AArch64 `Dies per package` setting of VCPU topology doesnot apply on AArch64. Now we only accept `1` value. This way we can make the `dies` field transparent, avoid it from impacting the topology setting. Signed-off-by: Michael Zhao --- vmm/src/config.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 06e7ae9e8..fe72c5f12 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -132,6 +132,9 @@ pub enum ValidationError { CpuTopologyCount, /// One part of the CPU topology was zero CpuTopologyZeroPart, + #[cfg(target_arch = "aarch64")] + /// Dies per package must be 1 + CpuTopologyDiesPerPackage, /// Virtio needs a min of 2 queues VnetQueueLowerThan2, /// The input queue number for virtio_net must match the number of input fds @@ -181,6 +184,8 @@ impl fmt::Display for ValidationError { f, "Product of CPU topology parts does not match maximum vCPUs" ), + #[cfg(target_arch = "aarch64")] + CpuTopologyDiesPerPackage => write!(f, "Dies per package must be 1"), VnetQueueLowerThan2 => write!(f, "Number of queues to virtio_net less than 2"), VnetQueueFdMismatch => write!( f, @@ -2188,6 +2193,14 @@ impl VmConfig { return Err(ValidationError::CpuTopologyZeroPart); } + // The setting of dies doesen't apply on AArch64. + // Only '1' value is accepted, so its impact on the vcpu topology + // setting can be ignored. + #[cfg(target_arch = "aarch64")] + if t.dies_per_package != 1 { + return Err(ValidationError::CpuTopologyDiesPerPackage); + } + let total = t.threads_per_core * t.cores_per_die * t.dies_per_package * t.packages; if total != self.cpus.max_vcpus { return Err(ValidationError::CpuTopologyCount);