mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-11-05 03:21:13 +00:00
vmm: config: Require max and boot vCPUs to be equal for TDX
CPU hotplug is not possible with TDX Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
57c8c250fd
commit
835a31e283
@ -119,6 +119,9 @@ pub enum ValidationError {
|
|||||||
HugePageSizeWithoutHugePages,
|
HugePageSizeWithoutHugePages,
|
||||||
// Huge page size is not power of 2
|
// Huge page size is not power of 2
|
||||||
InvalidHugePageSize(u64),
|
InvalidHugePageSize(u64),
|
||||||
|
// CPU Hotplug not permitted with TDX
|
||||||
|
#[cfg(feature = "tdx")]
|
||||||
|
TdxNoCPUHotplug,
|
||||||
}
|
}
|
||||||
|
|
||||||
type ValidationResult<T> = std::result::Result<T, ValidationError>;
|
type ValidationResult<T> = std::result::Result<T, ValidationError>;
|
||||||
@ -154,6 +157,10 @@ impl fmt::Display for ValidationError {
|
|||||||
InvalidHugePageSize(s) => {
|
InvalidHugePageSize(s) => {
|
||||||
write!(f, "Huge page size is not power of 2: {}", s)
|
write!(f, "Huge page size is not power of 2: {}", s)
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "tdx")]
|
||||||
|
TdxNoCPUHotplug => {
|
||||||
|
write!(f, "CPU hotplug not possible with TDX")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1534,6 +1541,17 @@ impl VmConfig {
|
|||||||
#[cfg(not(feature = "tdx"))]
|
#[cfg(not(feature = "tdx"))]
|
||||||
self.kernel.as_ref().ok_or(ValidationError::KernelMissing)?;
|
self.kernel.as_ref().ok_or(ValidationError::KernelMissing)?;
|
||||||
|
|
||||||
|
#[cfg(feature = "tdx")]
|
||||||
|
{
|
||||||
|
let tdx_enabled = self.tdx.is_some();
|
||||||
|
if !tdx_enabled && self.kernel.is_none() {
|
||||||
|
return Err(ValidationError::KernelMissing);
|
||||||
|
}
|
||||||
|
if tdx_enabled && (self.cpus.max_vcpus != self.cpus.boot_vcpus) {
|
||||||
|
return Err(ValidationError::TdxNoCPUHotplug);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if self.console.mode == ConsoleOutputMode::Tty && self.serial.mode == ConsoleOutputMode::Tty
|
if self.console.mode == ConsoleOutputMode::Tty && self.serial.mode == ConsoleOutputMode::Tty
|
||||||
{
|
{
|
||||||
return Err(ValidationError::DoubleTtyMode);
|
return Err(ValidationError::DoubleTtyMode);
|
||||||
|
Loading…
Reference in New Issue
Block a user