Commit f3364a1b04 for qemu.org
commit f3364a1b04ae6018ee2216446a2b0683ab21e07c
Author: Mohamed Mediouni <mohamed@unpredictable.fr>
Date: Mon Mar 23 09:51:01 2026 +0000
whpx: arm: enable more enlightenments
Unconditionally enable some more enlightenments for whpx. In
particular, linux uses AccessVpRegs without checking availability and
panics if it's not there, so it's important to expose it.
We also had a duplicate line where we set AccessHypercallRegs = 1
twice; remove the duplicate.
Microsoft’s VMM exposes SyncContext on arm64 and FastHypercallOutput
regardless of architecture unconditionally, so add those two to match
that configuration.
Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>
Message-id: 20260314221529.47841-4-mohamed@unpredictable.fr
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c
index 3df60a950d..9e5bc03a21 100644
--- a/target/arm/whpx/whpx-all.c
+++ b/target/arm/whpx/whpx-all.c
@@ -832,6 +832,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms)
UINT32 whpx_cap_size;
WHV_PARTITION_PROPERTY prop;
WHV_CAPABILITY_FEATURES features;
+ WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS synthetic_features;
MachineClass *mc = MACHINE_GET_CLASS(ms);
int pa_range = 0;
@@ -942,7 +943,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms)
}
/* Enable synthetic processor features */
- WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS synthetic_features;
memset(&synthetic_features, 0, sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS));
synthetic_features.BanksCount = 1;
@@ -953,13 +953,15 @@ int whpx_accel_init(AccelState *as, MachineState *ms)
synthetic_features.Bank0.AccessPartitionReferenceTsc = 1;
synthetic_features.Bank0.AccessHypercallRegs = 1;
synthetic_features.Bank0.AccessVpIndex = 1;
- synthetic_features.Bank0.AccessHypercallRegs = 1;
synthetic_features.Bank0.TbFlushHypercalls = 1;
synthetic_features.Bank0.AccessSynicRegs = 1;
synthetic_features.Bank0.AccessSyntheticTimerRegs = 1;
synthetic_features.Bank0.AccessIntrCtrlRegs = 1;
synthetic_features.Bank0.SyntheticClusterIpi = 1;
synthetic_features.Bank0.DirectSyntheticTimers = 1;
+ synthetic_features.Bank0.FastHypercallOutput = 1;
+ synthetic_features.Bank0.AccessVpRegs = 1;
+ synthetic_features.Bank0.SyncContext = 1;
/*
* On ARM64, have enlightenments off by default