[PATCH kvmtool 14/15] arm/arm64: Treat --firmware-address when no --firmware as an error

Alexandru Elisei alexandru.elisei at arm.com
Thu Apr 28 08:56:01 PDT 2022


It makes little sense for the user to specify the firmware address when
loading a kernel instead of a firmware image. Treat it as an error.

Signed-off-by: Alexandru Elisei <alexandru.elisei at arm.com>
---
 arm/aarch32/kvm.c                 | 2 +-
 arm/aarch64/kvm.c                 | 2 +-
 arm/include/arm-common/kvm-arch.h | 3 +++
 arm/kvm.c                         | 8 ++++++++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/arm/aarch32/kvm.c b/arm/aarch32/kvm.c
index 768a56bbb5b4..a7bb3b79db8c 100644
--- a/arm/aarch32/kvm.c
+++ b/arm/aarch32/kvm.c
@@ -1,6 +1,6 @@
 #include "kvm/kvm.h"
 
-void kvm__arch_validate_cfg(struct kvm *kvm)
+void kvm__arm_validate_cfg(struct kvm *kvm)
 {
 	if (kvm->cfg.ram_size > ARM_LOMAP_MAX_MEMORY) {
 		die("RAM size 0x%llx exceeds maximum allowed 0x%llx",
diff --git a/arm/aarch64/kvm.c b/arm/aarch64/kvm.c
index 581c836eb6ae..8fb44a924aa4 100644
--- a/arm/aarch64/kvm.c
+++ b/arm/aarch64/kvm.c
@@ -10,7 +10,7 @@ u64 kvm__arch_default_ram_address(void)
 	return ARM_MEMORY_AREA;
 }
 
-void kvm__arch_validate_cfg(struct kvm *kvm)
+void kvm__arm_validate_cfg(struct kvm *kvm)
 {
 	if (kvm->cfg.arch.aarch32_guest &&
 	    kvm->cfg.ram_size > ARM_LOMAP_MAX_MEMORY) {
diff --git a/arm/include/arm-common/kvm-arch.h b/arm/include/arm-common/kvm-arch.h
index cbe2bb2381ef..1d1ccc8bb172 100644
--- a/arm/include/arm-common/kvm-arch.h
+++ b/arm/include/arm-common/kvm-arch.h
@@ -88,6 +88,9 @@ static inline bool arm_addr_in_ioport_region(u64 phys_addr)
 	return phys_addr >= KVM_IOPORT_AREA && phys_addr < limit;
 }
 
+struct kvm;
+void kvm__arm_validate_cfg(struct kvm *kvm);
+
 struct kvm_arch {
 	/*
 	 * We may have to align the guest memory for virtio, so keep the
diff --git a/arm/kvm.c b/arm/kvm.c
index 83df1c9a0cde..3edc6fdbcb5f 100644
--- a/arm/kvm.c
+++ b/arm/kvm.c
@@ -31,6 +31,14 @@ int fw_addr_parser(const struct option *opt, const char *arg, int unset)
 	return 0;
 }
 
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+	if (kvm->cfg.arch.fw_addr && !kvm->cfg.firmware_filename)
+		die("--firmware-address is only valid when loading a firmware image");
+
+	kvm__arm_validate_cfg(kvm);
+}
+
 bool kvm__arch_cpu_supports_vm(void)
 {
 	/* The KVM capability check is enough. */
-- 
2.36.0




More information about the linux-arm-kernel mailing list