diff mbox series

hw/arm/virt: Extend nested and mte checks to hvf

Message ID 20211123122859.22452-1-agraf@csgraf.de (mailing list archive)
State New, archived
Headers show
Series hw/arm/virt: Extend nested and mte checks to hvf | expand

Commit Message

Alexander Graf Nov. 23, 2021, 12:28 p.m. UTC
The virt machine has properties to enable MTE and Nested Virtualization
support. However, its check to ensure the backing accel implementation
supports it today only looks for KVM and bails out if it finds it.

Extend the checks to HVF as well as it does not support either today.

Reported-by: saar amar <saaramar5@gmail.com>
Signed-off-by: Alexander Graf <agraf@csgraf.de>
---
 hw/arm/virt.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

Comments

Peter Maydell Nov. 23, 2021, 12:34 p.m. UTC | #1
On Tue, 23 Nov 2021 at 12:29, Alexander Graf <agraf@csgraf.de> wrote:
>
> The virt machine has properties to enable MTE and Nested Virtualization
> support. However, its check to ensure the backing accel implementation
> supports it today only looks for KVM and bails out if it finds it.
>
> Extend the checks to HVF as well as it does not support either today.
>
> Reported-by: saar amar <saaramar5@gmail.com>
> Signed-off-by: Alexander Graf <agraf@csgraf.de>

Without this check, what happens if you try to enable
both eg virtualization and hvf? Crash, unhelpful error
message, something else?

thanks
-- PMM
Alexander Graf Nov. 23, 2021, 2 p.m. UTC | #2
On 23.11.21 13:34, Peter Maydell wrote:
> On Tue, 23 Nov 2021 at 12:29, Alexander Graf <agraf@csgraf.de> wrote:
>> The virt machine has properties to enable MTE and Nested Virtualization
>> support. However, its check to ensure the backing accel implementation
>> supports it today only looks for KVM and bails out if it finds it.
>>
>> Extend the checks to HVF as well as it does not support either today.
>>
>> Reported-by: saar amar <saaramar5@gmail.com>
>> Signed-off-by: Alexander Graf <agraf@csgraf.de>
> Without this check, what happens if you try to enable
> both eg virtualization and hvf? Crash, unhelpful error
> message, something else?


The guest just never gets either feature enabled. No crash, no error 
message.


Alex
Peter Maydell Nov. 26, 2021, 4:52 p.m. UTC | #3
On Tue, 23 Nov 2021 at 14:00, Alexander Graf <agraf@csgraf.de> wrote:
>
>
> On 23.11.21 13:34, Peter Maydell wrote:
> > On Tue, 23 Nov 2021 at 12:29, Alexander Graf <agraf@csgraf.de> wrote:
> >> The virt machine has properties to enable MTE and Nested Virtualization
> >> support. However, its check to ensure the backing accel implementation
> >> supports it today only looks for KVM and bails out if it finds it.
> >>
> >> Extend the checks to HVF as well as it does not support either today.
> >>
> >> Reported-by: saar amar <saaramar5@gmail.com>
> >> Signed-off-by: Alexander Graf <agraf@csgraf.de>
> > Without this check, what happens if you try to enable
> > both eg virtualization and hvf? Crash, unhelpful error
> > message, something else?
>
>
> The guest just never gets either feature enabled. No crash, no error
> message.

Thanks; I've added that info to the commit message and applied this
to target-arm.next for 6.2.

-- PMM
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 369552ad45..30da05dfe0 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -49,6 +49,7 @@ 
 #include "sysemu/runstate.h"
 #include "sysemu/tpm.h"
 #include "sysemu/kvm.h"
+#include "sysemu/hvf.h"
 #include "hw/loader.h"
 #include "qapi/error.h"
 #include "qemu/bitops.h"
@@ -1969,15 +1970,17 @@  static void machvirt_init(MachineState *machine)
         exit(1);
     }
 
-    if (vms->virt && kvm_enabled()) {
-        error_report("mach-virt: KVM does not support providing "
-                     "Virtualization extensions to the guest CPU");
+    if (vms->virt && (kvm_enabled() || hvf_enabled())) {
+        error_report("mach-virt: %s does not support providing "
+                     "Virtualization extensions to the guest CPU",
+                     kvm_enabled() ? "KVM" : "HVF");
         exit(1);
     }
 
-    if (vms->mte && kvm_enabled()) {
-        error_report("mach-virt: KVM does not support providing "
-                     "MTE to the guest CPU");
+    if (vms->mte && (kvm_enabled() || hvf_enabled())) {
+        error_report("mach-virt: %s does not support providing "
+                     "MTE to the guest CPU",
+                     kvm_enabled() ? "KVM" : "HVF");
         exit(1);
     }