diff mbox series

[RFC,5/5] Enable the MTE support for KVM guest

Message ID a42721fa503d6d26995f451a8ca6d59ae7f3b138.1612747873.git.haibo.xu@linaro.org
State Superseded
Headers show
Series target/arm: Add MTE support to KVM guest | expand

Commit Message

Haibo Xu Feb. 8, 2021, 3:20 a.m. UTC
Signed-off-by: Haibo Xu <haibo.xu@linaro.org>

---
 hw/arm/virt.c | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

-- 
2.17.1

Comments

Haibo Xu March 12, 2021, 1:51 a.m. UTC | #1
++ more migration experts!

On Mon, 8 Feb 2021 at 11:20, Haibo Xu <haibo.xu@linaro.org> wrote:
>

> Signed-off-by: Haibo Xu <haibo.xu@linaro.org>

> ---

>  hw/arm/virt.c | 22 +++++++++++++++++++---

>  1 file changed, 19 insertions(+), 3 deletions(-)

>

> diff --git a/hw/arm/virt.c b/hw/arm/virt.c

> index 623d5e9397..c2358cf4c5 100644

> --- a/hw/arm/virt.c

> +++ b/hw/arm/virt.c

> @@ -79,6 +79,7 @@

>  #include "hw/virtio/virtio-iommu.h"

>  #include "hw/char/pl011.h"

>  #include "qemu/guest-random.h"

> +#include "migration/misc.h"

>

>  #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \

>      static void virt_##major##_##minor##_class_init(ObjectClass *oc, \

> @@ -821,6 +822,21 @@ static void virt_powerdown_req(Notifier *n, void *opaque)

>      }

>  }

>

> +static int virt_precopy_notify(NotifierWithReturn *n, void *data)

> +{

> +    PrecopyNotifyData *pnd = data;

> +

> +    switch (pnd->reason) {

> +    case PRECOPY_NOTIFY_SETUP:

> +        precopy_enable_metadata_migration();

> +        break;

> +    default:

> +        break;

> +    }

> +

> +    return 0;

> +}

> +

>  static void create_gpio_keys(const VirtMachineState *vms,

>                               DeviceState *pl061_dev,

>                               uint32_t phandle)

> @@ -1898,9 +1914,9 @@ static void machvirt_init(MachineState *machine)

>      }

>

>      if (vms->mte && kvm_enabled()) {

> -        error_report("mach-virt: KVM does not support providing "

> -                     "MTE to the guest CPU");

> -        exit(1);

> +        /* connect migration precopy request */

> +        vms->precopy_notifier.notify = virt_precopy_notify;

> +        precopy_add_notifier(&vms->precopy_notifier);

>      }

>

>      create_fdt(vms);

> --

> 2.17.1

>
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 623d5e9397..c2358cf4c5 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -79,6 +79,7 @@ 
 #include "hw/virtio/virtio-iommu.h"
 #include "hw/char/pl011.h"
 #include "qemu/guest-random.h"
+#include "migration/misc.h"
 
 #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \
     static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
@@ -821,6 +822,21 @@  static void virt_powerdown_req(Notifier *n, void *opaque)
     }
 }
 
+static int virt_precopy_notify(NotifierWithReturn *n, void *data)
+{
+    PrecopyNotifyData *pnd = data;
+
+    switch (pnd->reason) {
+    case PRECOPY_NOTIFY_SETUP:
+        precopy_enable_metadata_migration();
+        break;
+    default:
+        break;
+    }
+
+    return 0;
+}
+
 static void create_gpio_keys(const VirtMachineState *vms,
                              DeviceState *pl061_dev,
                              uint32_t phandle)
@@ -1898,9 +1914,9 @@  static void machvirt_init(MachineState *machine)
     }
 
     if (vms->mte && kvm_enabled()) {
-        error_report("mach-virt: KVM does not support providing "
-                     "MTE to the guest CPU");
-        exit(1);
+        /* connect migration precopy request */
+        vms->precopy_notifier.notify = virt_precopy_notify;
+        precopy_add_notifier(&vms->precopy_notifier);
     }
 
     create_fdt(vms);