[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v12 15/60] i386/xen: add pc_machine_kvm_type to initialize XEN_EM
From: |
David Woodhouse |
Subject: |
[PATCH v12 15/60] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode |
Date: |
Mon, 20 Feb 2023 20:46:51 +0000 |
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 6e592bd969..9169305f4f 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"
@@ -1844,6 +1845,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);
+
#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, \
--
2.39.0
- [PATCH v12 23/60] i386/xen: handle VCPUOP_register_runstate_memory_area, (continued)
- [PATCH v12 23/60] i386/xen: handle VCPUOP_register_runstate_memory_area, David Woodhouse, 2023/02/20
- [PATCH v12 49/60] i386/xen: handle HVMOP_get_param, David Woodhouse, 2023/02/20
- [PATCH v12 48/60] i386/xen: Reserve Xen special pages for console, xenstore rings, David Woodhouse, 2023/02/20
- [PATCH v12 11/60] i386/xen: implement HYPERVISOR_sched_op, SCHEDOP_shutdown, David Woodhouse, 2023/02/20
- [PATCH v12 14/60] xen: Permit --xen-domid argument when accel is KVM, David Woodhouse, 2023/02/20
- [PATCH v12 34/60] hw/xen: Implement EVTCHNOP_send, David Woodhouse, 2023/02/20
- [PATCH v12 52/60] hw/xen: Add basic ring handling to xenstore, David Woodhouse, 2023/02/20
- [PATCH v12 33/60] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2023/02/20
- [PATCH v12 04/60] i386/kvm: Add xen-version KVM accelerator property and init KVM Xen support, David Woodhouse, 2023/02/20
- [PATCH v12 19/60] i386/xen: implement HYPERVISOR_hvm_op, David Woodhouse, 2023/02/20
- [PATCH v12 15/60] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode,
David Woodhouse <=
- [PATCH v12 25/60] i386/xen: implement HVMOP_set_evtchn_upcall_vector, David Woodhouse, 2023/02/20
- [PATCH v12 59/60] i386/xen: Document Xen HVM emulation, David Woodhouse, 2023/02/20
- [PATCH v12 18/60] i386/xen: implement XENMEM_add_to_physmap_batch, David Woodhouse, 2023/02/20
- [PATCH v12 43/60] hw/xen: Add xen_gnttab device for grant table emulation, David Woodhouse, 2023/02/20
- [PATCH v12 12/60] i386/xen: Implement SCHEDOP_poll and SCHEDOP_yield, David Woodhouse, 2023/02/20
- [PATCH v12 13/60] hw/xen: Add xen_overlay device for emulating shared xenheap pages, David Woodhouse, 2023/02/20
- [PATCH v12 50/60] hw/xen: Add backend implementation of interdomain event channel support, David Woodhouse, 2023/02/20
- [PATCH v12 27/60] hw/xen: Add xen_evtchn device for event channel emulation, David Woodhouse, 2023/02/20
- [PATCH v12 51/60] hw/xen: Add xen_xenstore device for xenstore emulation, David Woodhouse, 2023/02/20
- [PATCH v12 06/60] i386/hvm: Set Xen vCPU ID in KVM, David Woodhouse, 2023/02/20