aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Elisei <alexandru.elisei@arm.com>2022-06-16 14:48:20 +0100
committerWill Deacon <will@kernel.org>2022-07-01 16:08:06 +0100
commitabe3f28a9c0700837aca75887f0cd65c6371e2e4 (patch)
tree606513ebdeecc3f6f13f739a7403a1cf5d34b205
parent28b96259fbdf602178d209fe93a0eddd3eec07d8 (diff)
downloadkvmtool-abe3f28a9c0700837aca75887f0cd65c6371e2e4.tar.gz
builtin-run: Add arch hook to validate VM configuration
Architectures are free to set their own command line options. Add an architecture specific hook to validate these options. For now, the hook does nothing, but it will be used in later patches. Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Reviewed-and-Tested-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20220616134828.129006-5-alexandru.elisei@arm.com Signed-off-by: Will Deacon <will@kernel.org>
-rw-r--r--Makefile1
-rw-r--r--arm/aarch32/kvm.c5
-rw-r--r--arm/aarch64/kvm.c4
-rw-r--r--builtin-run.c2
-rw-r--r--include/kvm/kvm.h1
-rw-r--r--mips/kvm.c4
-rw-r--r--powerpc/kvm.c4
-rw-r--r--riscv/kvm.c4
-rw-r--r--x86/kvm.c4
9 files changed, 29 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 6464446a..64bb9c95 100644
--- a/Makefile
+++ b/Makefile
@@ -170,6 +170,7 @@ ifeq ($(ARCH), arm)
OBJS += $(OBJS_ARM_COMMON)
OBJS += arm/aarch32/arm-cpu.o
OBJS += arm/aarch32/kvm-cpu.o
+ OBJS += arm/aarch32/kvm.o
ARCH_INCLUDE := $(HDRS_ARM_COMMON)
ARCH_INCLUDE += -Iarm/aarch32/include
CFLAGS += -march=armv7-a
diff --git a/arm/aarch32/kvm.c b/arm/aarch32/kvm.c
new file mode 100644
index 00000000..ae33ac92
--- /dev/null
+++ b/arm/aarch32/kvm.c
@@ -0,0 +1,5 @@
+#include "kvm/kvm.h"
+
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
diff --git a/arm/aarch64/kvm.c b/arm/aarch64/kvm.c
index f3fe854e..ca348f11 100644
--- a/arm/aarch64/kvm.c
+++ b/arm/aarch64/kvm.c
@@ -37,6 +37,10 @@ int vcpu_affinity_parser(const struct option *opt, const char *arg, int unset)
return 0;
}
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
+
/*
* Return the TEXT_OFFSET value that the guest kernel expects. Note
* that pre-3.17 kernels expose this value using the native endianness
diff --git a/builtin-run.c b/builtin-run.c
index e1770b3c..dcd08f73 100644
--- a/builtin-run.c
+++ b/builtin-run.c
@@ -531,6 +531,8 @@ static void kvm_run_validate_cfg(struct kvm *kvm)
(unsigned long long)available_ram >> MB_SHIFT);
}
}
+
+ kvm__arch_validate_cfg(kvm);
}
static struct kvm *kvm_cmd_run_init(int argc, const char **argv)
diff --git a/include/kvm/kvm.h b/include/kvm/kvm.h
index 7b14b33b..9f7b2fb2 100644
--- a/include/kvm/kvm.h
+++ b/include/kvm/kvm.h
@@ -187,6 +187,7 @@ int kvm__get_sock_by_instance(const char *name);
int kvm__enumerate_instances(int (*callback)(const char *name, int pid));
void kvm__remove_socket(const char *name);
+void kvm__arch_validate_cfg(struct kvm *kvm);
void kvm__arch_set_cmdline(char *cmdline, bool video);
void kvm__arch_init(struct kvm *kvm, const char *hugetlbfs_path, u64 ram_size);
void kvm__arch_delete_ram(struct kvm *kvm);
diff --git a/mips/kvm.c b/mips/kvm.c
index e668cbbe..cebec5ae 100644
--- a/mips/kvm.c
+++ b/mips/kvm.c
@@ -13,6 +13,10 @@ struct kvm_ext kvm_req_ext[] = {
{ 0, 0 }
};
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
+
void kvm__arch_read_term(struct kvm *kvm)
{
virtio_console__inject_interrupt(kvm);
diff --git a/powerpc/kvm.c b/powerpc/kvm.c
index 702d67dc..3215b579 100644
--- a/powerpc/kvm.c
+++ b/powerpc/kvm.c
@@ -48,6 +48,10 @@ struct kvm_ext kvm_req_ext[] = {
{ 0, 0 }
};
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
+
static uint32_t mfpvr(void)
{
uint32_t r;
diff --git a/riscv/kvm.c b/riscv/kvm.c
index 84e02779..7fb49628 100644
--- a/riscv/kvm.c
+++ b/riscv/kvm.c
@@ -13,6 +13,10 @@ struct kvm_ext kvm_req_ext[] = {
{ 0, 0 },
};
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
+
bool kvm__arch_cpu_supports_vm(void)
{
/* The KVM capability check is enough. */
diff --git a/x86/kvm.c b/x86/kvm.c
index 3e0f0b74..6683a5c8 100644
--- a/x86/kvm.c
+++ b/x86/kvm.c
@@ -35,6 +35,10 @@ struct kvm_ext kvm_req_ext[] = {
{ 0, 0 }
};
+void kvm__arch_validate_cfg(struct kvm *kvm)
+{
+}
+
bool kvm__arch_cpu_supports_vm(void)
{
struct cpuid_regs regs;