Hey all, In the current MSHV accelerator code passing CPU features via the -cpu flag doesn't work as intended yet. When using the MSHV hypervisor we either silently discard the specified model/features and leave it up to the hypervisor to provide a sensible set of features or if the user selects -cpu host, the hypervisor might refuse to create a partition.
This changeset introduces a more comprehensive support for passing desired guest cpu features to the hypervisor. It's also a prerequisite for Live Migration support, in which we have to roundtrip CPU State explicitly Known issues: We will probably have to iterate a bit more on this, since recently support for CET_U/CET_S xstate bits has been introduced in QEMU, which doesn't harmonize with our current approach of configuring the hypervisor with static responses to cpuid queries. Drive-by fixes: - tiny fix in MAINTAINERS - adding packed attribute to inlined UAPI structs best, magnus Magnus Kulke (10): MAINTAINERS: fix magnuskulke email-address include/hw/hyperv: add QEMU_PACKED to uapi structs accel/mshv: use mshv_create_partition_v2 payload target/i386/mshv: fix cpuid propagation bug target/i386/mshv: fix various cpuid traversal bugs target/i386/mshv: change cpuid mask to UINT32_MAX target/i386/mshv: set cpu model name on -cpu host target/i386: query mshv accel for supported cpuids target/i386/mshv: populate xsave area offsets target/i386/mshv: filter out CET bits in cpuid MAINTAINERS | 4 +- accel/mshv/mshv-all.c | 35 ++++-- include/hw/hyperv/hvgdk_mini.h | 39 ++++-- include/hw/hyperv/hvhdk.h | 199 ++++++++++++++++++++++++++++- include/system/mshv.h | 3 + target/i386/cpu.c | 8 ++ target/i386/mshv/mshv-cpu.c | 221 ++++++++++++++++++++++++++------- 7 files changed, 438 insertions(+), 71 deletions(-) -- 2.34.1
