@samitouri / QOSamiQemu / commits / 37ce6d8da7

whpx: i386: work around Hyper-V FP state oddities

On Hyper-V looks like we need to fetch both the legacy and new state instead of being able to rely on xsave. Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr> Link: https://lore.kernel.org/r/20260812082814.27217-6-mohamed@unpredictable.fr Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Mohamed Mediouni committed Aug 12, 2026 at 10:28 UTC 37ce6d8da75754f725db8cc27ae6c82a2e5b930e
1 file changed +3 -4
target/i386/whpx/whpx-all.c
+3 -4
@@ -614,9 +614,9 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLevel level)
614
615 if (whpx_is_xsave_enabled(cpu)) {
616 whpx_set_xsave_state(cpu);
617 - } else {
618 - whpx_set_legacy_fp_registers(cpu, level);
617 }
618 + whpx_set_legacy_fp_registers(cpu, level);
619 +
620 /* MSRs */
621 assert(whpx_register_names[idx] == WHvX64RegisterEfer);
622 vcxt.values[idx++].Reg64 = env->efer;
@@ -950,9 +950,8 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel level)
950
951 if (whpx_is_xsave_enabled(cpu)) {
952 whpx_get_xsave_state(cpu);
953 - } else {
954 - whpx_get_legacy_fp_registers(cpu, level);
953 }
954 + whpx_get_legacy_fp_registers(cpu, level);
955
956 /* MSRs */
957 assert(whpx_register_names[idx] == WHvX64RegisterEfer);