qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v14 15/60] i386/xen: add pc_machine_kvm_type to initialize XE


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v14 15/60] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode
Date: Mon, 27 Feb 2023 23:37:15 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0

On 27/2/23 15:28, David Woodhouse wrote:
From: David Woodhouse <dwmw@amazon.co.uk>

The xen_overlay device (and later similar devices for event channels and
grant tables) need to be instantiated. Do this from a kvm_type method on
the PC machine derivatives, since KVM is only way to support Xen emulation
for now.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
  hw/i386/pc.c         | 11 +++++++++++
  include/hw/i386/pc.h |  3 +++
  2 files changed, 14 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index a7a2ededf9..9eb572b64b 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -89,6 +89,7 @@
  #include "hw/virtio/virtio-iommu.h"
  #include "hw/virtio/virtio-pmem-pci.h"
  #include "hw/virtio/virtio-mem-pci.h"
+#include "hw/i386/kvm/xen_overlay.h"
  #include "hw/mem/memory-device.h"
  #include "sysemu/replay.h"
  #include "target/i386/cpu.h"
@@ -1843,6 +1844,16 @@ static void pc_machine_initfn(Object *obj)
      cxl_machine_init(obj, &pcms->cxl_devices_state);
  }
+int pc_machine_kvm_type(MachineState *machine, const char *kvm_type)
+{
+#ifdef CONFIG_XEN_EMU
+    if (xen_mode == XEN_EMULATE) {
+        xen_overlay_create();
+    }
+#endif
+    return 0;
+}
+
  static void pc_machine_reset(MachineState *machine, ShutdownCause reason)
  {
      CPUState *cs;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 66e3d059ef..740497a961 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -291,12 +291,15 @@ extern const size_t pc_compat_1_5_len;
  extern GlobalProperty pc_compat_1_4[];
  extern const size_t pc_compat_1_4_len;
+extern int pc_machine_kvm_type(MachineState *machine, const char *vm_type);

No 'extern' qualifier for function prototype please.

  #define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \
      static void pc_machine_##suffix##_class_init(ObjectClass *oc, void *data) 
\
      { \
          MachineClass *mc = MACHINE_CLASS(oc); \
          optsfn(mc); \
          mc->init = initfn; \
+        mc->kvm_type = pc_machine_kvm_type; \
      } \
      static const TypeInfo pc_machine_type_##suffix = { \
          .name       = namestr TYPE_MACHINE_SUFFIX, \




reply via email to

[Prev in Thread] Current Thread [Next in Thread]