@samitouri / QOSamiQemu / commits / 5c884c1874

whpx: i386: disable TbFlushHypercalls for emulated LAPIC

AccessHypercallRegs was present twice so clean that up. Remove TbFlushHypercalls (and its extended Gva range sub-feature) from the user-mode LAPIC case as it behaves oddly there. Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr> Link: https://lore.kernel.org/r/20260422214225.2242-5-mohamed@unpredictable.fr Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Mohamed Mediouni committed Apr 22, 2026 at 23:41 UTC 5c884c18745d18242a0365a8da3059d469b5140f
1 file changed +6 -3
target/i386/whpx/whpx-all.c
+6 -3
@@ -2577,10 +2577,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms)
2577 synthetic_features.Bank0.AccessPartitionReferenceTsc = 1;
2578 synthetic_features.Bank0.AccessHypercallRegs = 1;
2579 synthetic_features.Bank0.AccessFrequencyRegs = 1;
2580 - synthetic_features.Bank0.EnableExtendedGvaRangesForFlushVirtualAddressList = 1;
2580 synthetic_features.Bank0.AccessVpIndex = 1;
2582 - synthetic_features.Bank0.AccessHypercallRegs = 1;
2583 - synthetic_features.Bank0.TbFlushHypercalls = 1;
2581
2582 if (whpx_irqchip_in_kernel()) {
2583 synthetic_features.Bank0.AccessSynicRegs = 1;
@@ -2588,6 +2585,12 @@ int whpx_accel_init(AccelState *as, MachineState *ms)
2585 synthetic_features.Bank0.AccessIntrCtrlRegs = 1;
2586 synthetic_features.Bank0.SyntheticClusterIpi = 1;
2587 synthetic_features.Bank0.DirectSyntheticTimers = 1;
2588 + /*
2589 + * These technically work without the Hyper-V LAPIC
2590 + * but behave oddly for multi-core VMs.
2591 + */
2592 + synthetic_features.Bank0.TbFlushHypercalls = 1;
2593 + synthetic_features.Bank0.EnableExtendedGvaRangesForFlushVirtualAddressList = 1;
2594 }
2595
2596 if (is_modern_os && whpx->hyperv_enlightenments_allowed) {