[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v11 08/59] xen-platform: allow its creation with XEN_EMULATE mode
From: |
David Woodhouse |
Subject: |
[PATCH v11 08/59] xen-platform: allow its creation with XEN_EMULATE mode |
Date: |
Thu, 16 Feb 2023 06:23:53 +0000 |
From: Joao Martins <joao.m.martins@oracle.com>
The only thing we need to fix to make this build is the PIO hack which
sets the BIOS memory areas to R/W v.s. R/O. Theoretically we could hook
that up to the PAM registers on the emulated PIIX, but in practice
nobody cares, so just leave it doing nothing.
Now it builds without actual Xen, move it to CONFIG_XEN_BUS to include it
in the KVM-only builds.
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
hw/i386/xen/meson.build | 5 ++++-
hw/i386/xen/xen_platform.c | 39 +++++++++++++++++++++++++-------------
2 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/hw/i386/xen/meson.build b/hw/i386/xen/meson.build
index 2fcc46e6ca..3dc4c4f106 100644
--- a/hw/i386/xen/meson.build
+++ b/hw/i386/xen/meson.build
@@ -1,6 +1,9 @@
i386_ss.add(when: 'CONFIG_XEN', if_true: files(
'xen-hvm.c',
'xen_apic.c',
- 'xen_platform.c',
'xen_pvdevice.c',
))
+
+i386_ss.add(when: 'CONFIG_XEN_BUS', if_true: files(
+ 'xen_platform.c',
+))
diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index d601a5509d..319049d80c 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -28,9 +28,9 @@
#include "hw/ide.h"
#include "hw/ide/pci.h"
#include "hw/pci/pci.h"
-#include "hw/xen/xen_common.h"
#include "migration/vmstate.h"
-#include "hw/xen/xen-legacy-backend.h"
+#include "hw/xen/xen.h"
+#include "net/net.h"
#include "trace.h"
#include "sysemu/xen.h"
#include "sysemu/block-backend.h"
@@ -38,6 +38,11 @@
#include "qemu/module.h"
#include "qom/object.h"
+#ifdef CONFIG_XEN
+#include "hw/xen/xen_common.h"
+#include "hw/xen/xen-legacy-backend.h"
+#endif
+
//#define DEBUG_PLATFORM
#ifdef DEBUG_PLATFORM
@@ -280,18 +285,26 @@ static void platform_fixed_ioport_writeb(void *opaque,
uint32_t addr, uint32_t v
PCIXenPlatformState *s = opaque;
switch (addr) {
- case 0: /* Platform flags */ {
- hvmmem_type_t mem_type = (val & PFFLAG_ROM_LOCK) ?
- HVMMEM_ram_ro : HVMMEM_ram_rw;
- if (xen_set_mem_type(xen_domid, mem_type, 0xc0, 0x40)) {
- DPRINTF("unable to change ro/rw state of ROM memory area!\n");
- } else {
+ case 0: /* Platform flags */
+ if (xen_mode == XEN_EMULATE) {
+ /* XX: Use i440gx/q35 PAM setup to do this? */
s->flags = val & PFFLAG_ROM_LOCK;
- DPRINTF("changed ro/rw state of ROM memory area. now is %s
state.\n",
- (mem_type == HVMMEM_ram_ro ? "ro":"rw"));
+#ifdef CONFIG_XEN
+ } else {
+ hvmmem_type_t mem_type = (val & PFFLAG_ROM_LOCK) ?
+ HVMMEM_ram_ro : HVMMEM_ram_rw;
+
+ if (xen_set_mem_type(xen_domid, mem_type, 0xc0, 0x40)) {
+ DPRINTF("unable to change ro/rw state of ROM memory area!\n");
+ } else {
+ s->flags = val & PFFLAG_ROM_LOCK;
+ DPRINTF("changed ro/rw state of ROM memory area. now is %s
state.\n",
+ (mem_type == HVMMEM_ram_ro ? "ro" : "rw"));
+ }
+#endif
}
break;
- }
+
case 2:
log_writeb(s, val);
break;
@@ -509,8 +522,8 @@ static void xen_platform_realize(PCIDevice *dev, Error
**errp)
uint8_t *pci_conf;
/* Device will crash on reset if xen is not initialized */
- if (!xen_enabled()) {
- error_setg(errp, "xen-platform device requires the Xen accelerator");
+ if (xen_mode == XEN_DISABLED) {
+ error_setg(errp, "xen-platform device requires a Xen guest");
return;
}
--
2.39.0
- [PATCH v11 32/59] hw/xen: Implement EVTCHNOP_bind_virq, (continued)
- [PATCH v11 32/59] hw/xen: Implement EVTCHNOP_bind_virq, David Woodhouse, 2023/02/16
- [PATCH v11 49/59] i386/xen: handle HVMOP_get_param, David Woodhouse, 2023/02/16
- [PATCH v11 42/59] kvm/i386: Add xen-gnttab-max-frames property, David Woodhouse, 2023/02/16
- [PATCH v11 40/59] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_GSI callback, David Woodhouse, 2023/02/16
- [PATCH v11 43/59] hw/xen: Add xen_gnttab device for grant table emulation, David Woodhouse, 2023/02/16
- [PATCH v11 15/59] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode, David Woodhouse, 2023/02/16
- [PATCH v11 26/59] i386/xen: implement HVMOP_set_param, David Woodhouse, 2023/02/16
- [PATCH v11 59/59] i386/xen: Document Xen HVM emulation, David Woodhouse, 2023/02/16
- [PATCH v11 44/59] hw/xen: Support mapping grant frames, David Woodhouse, 2023/02/16
- [PATCH v11 08/59] xen-platform: allow its creation with XEN_EMULATE mode,
David Woodhouse <=
- [PATCH v11 33/59] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2023/02/16
- [PATCH v11 17/59] i386/xen: implement HYPERVISOR_memory_op, David Woodhouse, 2023/02/16
- [PATCH v11 36/59] hw/xen: Implement EVTCHNOP_bind_interdomain, David Woodhouse, 2023/02/16