mirror of https://github.com/xemu-project/xemu.git
i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode
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>
This commit is contained in:
parent
7058fa0220
commit
e21be724ea
11
hw/i386/pc.c
11
hw/i386/pc.c
|
@ -90,6 +90,7 @@
|
||||||
#include "hw/virtio/virtio-iommu.h"
|
#include "hw/virtio/virtio-iommu.h"
|
||||||
#include "hw/virtio/virtio-pmem-pci.h"
|
#include "hw/virtio/virtio-pmem-pci.h"
|
||||||
#include "hw/virtio/virtio-mem-pci.h"
|
#include "hw/virtio/virtio-mem-pci.h"
|
||||||
|
#include "hw/i386/kvm/xen_overlay.h"
|
||||||
#include "hw/mem/memory-device.h"
|
#include "hw/mem/memory-device.h"
|
||||||
#include "sysemu/replay.h"
|
#include "sysemu/replay.h"
|
||||||
#include "target/i386/cpu.h"
|
#include "target/i386/cpu.h"
|
||||||
|
@ -1846,6 +1847,16 @@ static void pc_machine_initfn(Object *obj)
|
||||||
cxl_machine_init(obj, &pcms->cxl_devices_state);
|
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)
|
static void pc_machine_reset(MachineState *machine, ShutdownCause reason)
|
||||||
{
|
{
|
||||||
CPUState *cs;
|
CPUState *cs;
|
||||||
|
|
|
@ -291,12 +291,15 @@ extern const size_t pc_compat_1_5_len;
|
||||||
extern GlobalProperty pc_compat_1_4[];
|
extern GlobalProperty pc_compat_1_4[];
|
||||||
extern const size_t pc_compat_1_4_len;
|
extern const size_t pc_compat_1_4_len;
|
||||||
|
|
||||||
|
int pc_machine_kvm_type(MachineState *machine, const char *vm_type);
|
||||||
|
|
||||||
#define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \
|
#define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \
|
||||||
static void pc_machine_##suffix##_class_init(ObjectClass *oc, void *data) \
|
static void pc_machine_##suffix##_class_init(ObjectClass *oc, void *data) \
|
||||||
{ \
|
{ \
|
||||||
MachineClass *mc = MACHINE_CLASS(oc); \
|
MachineClass *mc = MACHINE_CLASS(oc); \
|
||||||
optsfn(mc); \
|
optsfn(mc); \
|
||||||
mc->init = initfn; \
|
mc->init = initfn; \
|
||||||
|
mc->kvm_type = pc_machine_kvm_type; \
|
||||||
} \
|
} \
|
||||||
static const TypeInfo pc_machine_type_##suffix = { \
|
static const TypeInfo pc_machine_type_##suffix = { \
|
||||||
.name = namestr TYPE_MACHINE_SUFFIX, \
|
.name = namestr TYPE_MACHINE_SUFFIX, \
|
||||||
|
|
Loading…
Reference in New Issue