diff mbox series

[5/6] target/arm: Fix '-cpu max' for HVF

Message ID 20220204165506.2846058-6-peter.maydell@linaro.org
State Superseded
Headers show
Series target/arm: -cpu host/max KVM and HVF fixes | expand

Commit Message

Peter Maydell Feb. 4, 2022, 4:55 p.m. UTC
Currently when using hvf we mishandle '-cpu max': we fall through to
the TCG version of its initfn, which then sets a lot of feature bits
that the real host CPU doesn't have. The hvf accelerator code then
exposes these bogus ID register values to the guest because it
doesn't check that the host really has the features.

Make '-cpu host' be like '-cpu max' for hvf, as we do with kvm.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 target/arm/cpu64.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Richard Henderson Feb. 6, 2022, 12:21 a.m. UTC | #1
On 2/5/22 03:55, Peter Maydell wrote:
> Currently when using hvf we mishandle '-cpu max': we fall through to
> the TCG version of its initfn, which then sets a lot of feature bits
> that the real host CPU doesn't have. The hvf accelerator code then
> exposes these bogus ID register values to the guest because it
> doesn't check that the host really has the features.
> 
> Make '-cpu host' be like '-cpu max' for hvf, as we do with kvm.
> 
> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
> ---
>   target/arm/cpu64.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
diff mbox series

Patch

diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index bc25a2567bf..fd611c97116 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -29,6 +29,7 @@ 
 #include "hw/loader.h"
 #endif
 #include "sysemu/kvm.h"
+#include "sysemu/hvf.h"
 #include "kvm_arm.h"
 #include "hvf_arm.h"
 #include "qapi/visitor.h"
@@ -710,8 +711,8 @@  static void aarch64_max_initfn(Object *obj)
     uint64_t t;
     uint32_t u;
 
-    if (kvm_enabled()) {
-        /* With KVM, '-cpu max' is identical to '-cpu host' */
+    if (kvm_enabled() || hvf_enabled()) {
+        /* With KVM or HVF, '-cpu max' is identical to '-cpu host' */
         aarch64_host_initfn(obj);
         return;
     }