Commit 37ce6d8da7 for qemu.org
commit 37ce6d8da75754f725db8cc27ae6c82a2e5b930e
Author: Mohamed Mediouni <mohamed@unpredictable.fr>
Date: Wed Aug 12 10:28:13 2026 +0200
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>
diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
index 2739a80da3..56a8b16749 100644
--- a/target/i386/whpx/whpx-all.c
+++ b/target/i386/whpx/whpx-all.c
@@ -614,9 +614,9 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLevel level)
if (whpx_is_xsave_enabled(cpu)) {
whpx_set_xsave_state(cpu);
- } else {
- whpx_set_legacy_fp_registers(cpu, level);
}
+ whpx_set_legacy_fp_registers(cpu, level);
+
/* MSRs */
assert(whpx_register_names[idx] == WHvX64RegisterEfer);
vcxt.values[idx++].Reg64 = env->efer;
@@ -950,9 +950,8 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel level)
if (whpx_is_xsave_enabled(cpu)) {
whpx_get_xsave_state(cpu);
- } else {
- whpx_get_legacy_fp_registers(cpu, level);
}
+ whpx_get_legacy_fp_registers(cpu, level);
/* MSRs */
assert(whpx_register_names[idx] == WHvX64RegisterEfer);