vmm: move fw_cfg validation into PayloadConfig::validate()

Move FwCfgMissingKernel/Cmdline/Initramfs error variants from
ValidationError into PayloadConfigError. Change FwCfgConfig::validate()
to take &PayloadConfig instead of &VmConfig and return
PayloadConfigError. Wire the call through PayloadConfig::validate()
so both CLI and JSON API paths are covered.

Signed-off-by: Keith Adler <kadler@cloudflare.com>
This commit is contained in:
Keith Adler
2026-04-14 14:47:24 -05:00
committed by Rob Bradford
parent a10d9a3099
commit e4e3375a8d
2 changed files with 21 additions and 17 deletions

View File

@@ -747,6 +747,18 @@ pub enum PayloadConfigError {
/// Specifying a kernel or firmware is not supported when an igvm is provided.
#[error("Specifying a kernel or firmware is not supported when an igvm is provided")]
IgvmPlusOtherPayloads,
#[cfg(feature = "fw_cfg")]
/// FwCfg missing kernel
#[error("Error --fw-cfg-config: missing --kernel")]
FwCfgMissingKernel,
#[cfg(feature = "fw_cfg")]
/// FwCfg missing cmdline
#[error("Error --fw-cfg-config: missing --cmdline")]
FwCfgMissingCmdline,
#[cfg(feature = "fw_cfg")]
/// FwCfg missing initramfs
#[error("Error --fw-cfg-config: missing --initramfs")]
FwCfgMissingInitramfs,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
@@ -872,6 +884,11 @@ impl PayloadConfig {
(None, None) => Err(PayloadConfigError::MissingBootitem),
}?;
#[cfg(feature = "fw_cfg")]
if let Some(fw_cfg_config) = &self.fw_cfg_config {
fw_cfg_config.validate(self)?;
}
Ok(())
}
}