[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v14 08/60] xen-platform: allow its creation with XEN_EMULATE mode
From: |
David Woodhouse |
Subject: |
[PATCH v14 08/60] xen-platform: allow its creation with XEN_EMULATE mode |
Date: |
Mon, 27 Feb 2023 14:28:16 +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 be84130300..2e64a34e16 100644
--- a/hw/i386/xen/meson.build
+++ b/hw/i386/xen/meson.build
@@ -2,6 +2,9 @@ i386_ss.add(when: 'CONFIG_XEN', if_true: files(
'xen-hvm.c',
'xen-mapcache.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 v14 33/60] hw/xen: Implement EVTCHNOP_bind_ipi, (continued)
- [PATCH v14 33/60] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2023/02/27
- [PATCH v14 56/60] hw/xen: Support GSI mapping to PIRQ, David Woodhouse, 2023/02/27
- [PATCH v14 03/60] xen: Add XEN_DISABLED mode and make it default, David Woodhouse, 2023/02/27
- [PATCH v14 14/60] xen: Permit --xen-domid argument when accel is KVM, David Woodhouse, 2023/02/27
- [PATCH v14 02/60] xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation, David Woodhouse, 2023/02/27
- [PATCH v14 24/60] i386/xen: implement HYPERVISOR_event_channel_op, David Woodhouse, 2023/02/27
- [PATCH v14 53/60] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests, David Woodhouse, 2023/02/27
- [PATCH v14 07/60] xen-platform: exclude vfio-pci from the PCI platform unplug, David Woodhouse, 2023/02/27
- [PATCH v14 11/60] i386/xen: implement HYPERVISOR_sched_op, SCHEDOP_shutdown, David Woodhouse, 2023/02/27
- [PATCH v14 42/60] kvm/i386: Add xen-gnttab-max-frames property, David Woodhouse, 2023/02/27
- [PATCH v14 08/60] xen-platform: allow its creation with XEN_EMULATE mode,
David Woodhouse <=
- [PATCH v14 46/60] hw/xen: Implement GNTTABOP_query_size, David Woodhouse, 2023/02/27
- [PATCH v14 06/60] i386/kvm: Set Xen vCPU ID in KVM, David Woodhouse, 2023/02/27
- [PATCH v14 58/60] kvm/i386: Add xen-evtchn-max-pirq property, David Woodhouse, 2023/02/27
- [PATCH v14 10/60] i386/xen: implement HYPERVISOR_xen_version, David Woodhouse, 2023/02/27
- [PATCH v14 22/60] i386/xen: handle VCPUOP_register_vcpu_time_info, David Woodhouse, 2023/02/27
- [PATCH v14 39/60] i386/xen: add monitor commands to test event injection, David Woodhouse, 2023/02/27
- [PATCH v14 57/60] hw/xen: Support MSI mapping to PIRQ, David Woodhouse, 2023/02/27
- [PATCH v14 26/60] i386/xen: implement HVMOP_set_param, David Woodhouse, 2023/02/27
- [PATCH v14 38/60] hw/xen: Implement EVTCHNOP_reset, David Woodhouse, 2023/02/27
- [PATCH v14 31/60] hw/xen: Implement EVTCHNOP_unmask, David Woodhouse, 2023/02/27