From: Magnus Kulke Date: Tue, 16 Sep 2025 16:48:32 +0000 (+0200) Subject: target/i386/mshv: Add CPU create and remove logic X-Git-Tag: v10.2.0-rc1~71^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ed605c06e743b2ec0bfe35954d88b8c64dd3767;p=thirdparty%2Fqemu.git target/i386/mshv: Add CPU create and remove logic Implement MSHV-specific hooks for vCPU creation and teardown in the i386 target. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20250916164847.77883-13-magnuskulke@linux.microsoft.com Signed-off-by: Paolo Bonzini --- diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 02d71ebc14..5069ab7a22 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -30,6 +30,8 @@ #include "trace-accel_mshv.h" #include "trace.h" +#include + int mshv_store_regs(CPUState *cpu) { error_report("unimplemented"); @@ -62,20 +64,29 @@ int mshv_run_vcpu(int vm_fd, CPUState *cpu, hv_message *msg, MshvVmExit *exit) void mshv_remove_vcpu(int vm_fd, int cpu_fd) { - error_report("unimplemented"); - abort(); + close(cpu_fd); } + int mshv_create_vcpu(int vm_fd, uint8_t vp_index, int *cpu_fd) { - error_report("unimplemented"); - abort(); + int ret; + struct mshv_create_vp vp_arg = { + .vp_index = vp_index, + }; + ret = ioctl(vm_fd, MSHV_CREATE_VP, &vp_arg); + if (ret < 0) { + error_report("failed to create mshv vcpu: %s", strerror(errno)); + return -1; + } + + *cpu_fd = ret; + + return 0; } void mshv_init_mmio_emu(void) { - error_report("unimplemented"); - abort(); } void mshv_arch_init_vcpu(CPUState *cpu)