* [PATCH] accel: Move Xen accelerator code under accel/xen/
@ 2020-05-07 15:58 Philippe Mathieu-Daudé
2020-05-07 17:40 ` Paul Durrant
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-05-07 15:58 UTC (permalink / raw)
To: qemu-devel
Cc: Stefano Stabellini, Eduardo Habkost, Igor Mammedov,
Juan Quintela, Dr. David Alan Gilbert, Paul Durrant,
Aleksandar Markovic, Michael S. Tsirkin, Paolo Bonzini,
Anthony Perard, xen-devel, Philippe Mathieu-Daudé,
Aurelien Jarno, Richard Henderson
This code is not related to hardware emulation.
Move it under accel/ with the other hypervisors.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
We could also move the memory management functions from
hw/i386/xen/xen-hvm.c but it is not trivial.
Necessary step to remove "exec/ram_addr.h" in the next series.
---
include/exec/ram_addr.h | 2 +-
include/hw/xen/xen.h | 11 ------
include/sysemu/xen.h | 40 ++++++++++++++++++++++
hw/xen/xen-common.c => accel/xen/xen-all.c | 3 ++
hw/acpi/piix4.c | 2 +-
hw/i386/pc.c | 1 +
hw/i386/pc_piix.c | 1 +
hw/i386/pc_q35.c | 1 +
hw/i386/xen/xen-hvm.c | 1 +
hw/i386/xen/xen_platform.c | 1 +
hw/isa/piix3.c | 1 +
hw/pci/msix.c | 1 +
migration/savevm.c | 2 +-
softmmu/vl.c | 2 +-
stubs/xen-hvm.c | 9 -----
target/i386/cpu.c | 2 +-
MAINTAINERS | 2 ++
accel/Makefile.objs | 1 +
accel/xen/Makefile.objs | 1 +
hw/xen/Makefile.objs | 2 +-
20 files changed, 60 insertions(+), 26 deletions(-)
create mode 100644 include/sysemu/xen.h
rename hw/xen/xen-common.c => accel/xen/xen-all.c (99%)
create mode 100644 accel/xen/Makefile.objs
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index 5e59a3d8d7..4e05292f91 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -21,7 +21,7 @@
#ifndef CONFIG_USER_ONLY
#include "cpu.h"
-#include "hw/xen/xen.h"
+#include "sysemu/xen.h"
#include "sysemu/tcg.h"
#include "exec/ramlist.h"
#include "exec/ramblock.h"
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 5ac1c6dc55..771dd447f2 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -20,13 +20,6 @@ extern uint32_t xen_domid;
extern enum xen_mode xen_mode;
extern bool xen_domid_restrict;
-extern bool xen_allowed;
-
-static inline bool xen_enabled(void)
-{
- return xen_allowed;
-}
-
int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);
void xen_piix3_set_irq(void *opaque, int irq_num, int level);
void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len);
@@ -39,10 +32,6 @@ void xenstore_store_pv_console_info(int i, struct Chardev *chr);
void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory);
-void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
- struct MemoryRegion *mr, Error **errp);
-void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
-
void xen_register_framebuffer(struct MemoryRegion *mr);
#endif /* QEMU_HW_XEN_H */
diff --git a/include/sysemu/xen.h b/include/sysemu/xen.h
new file mode 100644
index 0000000000..609d2d4184
--- /dev/null
+++ b/include/sysemu/xen.h
@@ -0,0 +1,40 @@
+/*
+ * QEMU Xen support
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef SYSEMU_XEN_H
+#define SYSEMU_XEN_H
+
+#ifdef CONFIG_XEN
+
+extern bool xen_allowed;
+
+#define xen_enabled() (xen_allowed)
+
+#ifndef CONFIG_USER_ONLY
+void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
+void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
+ struct MemoryRegion *mr, Error **errp);
+#endif
+
+#else /* !CONFIG_XEN */
+
+#define xen_enabled() 0
+#ifndef CONFIG_USER_ONLY
+static inline void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length)
+{
+ abort();
+}
+static inline void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
+ MemoryRegion *mr, Error **errp)
+{
+ abort();
+}
+#endif
+
+#endif /* CONFIG_XEN */
+
+#endif
diff --git a/hw/xen/xen-common.c b/accel/xen/xen-all.c
similarity index 99%
rename from hw/xen/xen-common.c
rename to accel/xen/xen-all.c
index a15070f7f6..5c64571cb8 100644
--- a/hw/xen/xen-common.c
+++ b/accel/xen/xen-all.c
@@ -16,6 +16,7 @@
#include "hw/xen/xen_pt.h"
#include "chardev/char.h"
#include "sysemu/accel.h"
+#include "sysemu/xen.h"
#include "sysemu/runstate.h"
#include "migration/misc.h"
#include "migration/global_state.h"
@@ -31,6 +32,8 @@
do { } while (0)
#endif
+bool xen_allowed;
+
xc_interface *xen_xc;
xenforeignmemory_handle *xen_fmem;
xendevicemodel_handle *xen_dmod;
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 964d6f5990..daed273687 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -30,6 +30,7 @@
#include "hw/acpi/acpi.h"
#include "sysemu/runstate.h"
#include "sysemu/sysemu.h"
+#include "sysemu/xen.h"
#include "qapi/error.h"
#include "qemu/range.h"
#include "exec/address-spaces.h"
@@ -41,7 +42,6 @@
#include "hw/mem/nvdimm.h"
#include "hw/acpi/memory_hotplug.h"
#include "hw/acpi/acpi_dev_interface.h"
-#include "hw/xen/xen.h"
#include "migration/vmstate.h"
#include "hw/core/cpu.h"
#include "trace.h"
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 97e345faea..1a599e1de9 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -56,6 +56,7 @@
#include "sysemu/tcg.h"
#include "sysemu/numa.h"
#include "sysemu/kvm.h"
+#include "sysemu/xen.h"
#include "sysemu/qtest.h"
#include "sysemu/reset.h"
#include "sysemu/runstate.h"
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 3862e5120e..c00472b4c5 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -53,6 +53,7 @@
#include "cpu.h"
#include "qapi/error.h"
#include "qemu/error-report.h"
+#include "sysemu/xen.h"
#ifdef CONFIG_XEN
#include <xen/hvm/hvm_info_table.h>
#include "hw/xen/xen_pt.h"
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 3349e38a4c..e929749d8e 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -36,6 +36,7 @@
#include "hw/rtc/mc146818rtc.h"
#include "hw/xen/xen.h"
#include "sysemu/kvm.h"
+#include "sysemu/xen.h"
#include "hw/kvm/clock.h"
#include "hw/pci-host/q35.h"
#include "hw/qdev-properties.h"
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 82ece6b9e7..041303a2fa 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -28,6 +28,7 @@
#include "qemu/range.h"
#include "sysemu/runstate.h"
#include "sysemu/sysemu.h"
+#include "sysemu/xen.h"
#include "sysemu/xen-mapcache.h"
#include "trace.h"
#include "exec/address-spaces.h"
diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index 0f7b05e5e1..a1492fdecd 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -33,6 +33,7 @@
#include "hw/xen/xen-legacy-backend.h"
#include "trace.h"
#include "exec/address-spaces.h"
+#include "sysemu/xen.h"
#include "sysemu/block-backend.h"
#include "qemu/error-report.h"
#include "qemu/module.h"
diff --git a/hw/isa/piix3.c b/hw/isa/piix3.c
index fd1c78879f..1a5267e19f 100644
--- a/hw/isa/piix3.c
+++ b/hw/isa/piix3.c
@@ -28,6 +28,7 @@
#include "hw/irq.h"
#include "hw/isa/isa.h"
#include "hw/xen/xen.h"
+#include "sysemu/xen.h"
#include "sysemu/sysemu.h"
#include "sysemu/reset.h"
#include "sysemu/runstate.h"
diff --git a/hw/pci/msix.c b/hw/pci/msix.c
index 29187898f2..2c7ead7667 100644
--- a/hw/pci/msix.c
+++ b/hw/pci/msix.c
@@ -19,6 +19,7 @@
#include "hw/pci/msix.h"
#include "hw/pci/pci.h"
#include "hw/xen/xen.h"
+#include "sysemu/xen.h"
#include "migration/qemu-file-types.h"
#include "migration/vmstate.h"
#include "qemu/range.h"
diff --git a/migration/savevm.c b/migration/savevm.c
index c00a6807d9..b979ea6e7f 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -28,7 +28,6 @@
#include "qemu/osdep.h"
#include "hw/boards.h"
-#include "hw/xen/xen.h"
#include "net/net.h"
#include "migration.h"
#include "migration/snapshot.h"
@@ -59,6 +58,7 @@
#include "sysemu/replay.h"
#include "sysemu/runstate.h"
#include "sysemu/sysemu.h"
+#include "sysemu/xen.h"
#include "qjson.h"
#include "migration/colo.h"
#include "qemu/bitmap.h"
diff --git a/softmmu/vl.c b/softmmu/vl.c
index afd2615fb3..0344e5fd2e 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -36,6 +36,7 @@
#include "sysemu/runstate.h"
#include "sysemu/seccomp.h"
#include "sysemu/tcg.h"
+#include "sysemu/xen.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
@@ -178,7 +179,6 @@ static NotifierList exit_notifiers =
static NotifierList machine_init_done_notifiers =
NOTIFIER_LIST_INITIALIZER(machine_init_done_notifiers);
-bool xen_allowed;
uint32_t xen_domid;
enum xen_mode xen_mode = XEN_EMULATE;
bool xen_domid_restrict;
diff --git a/stubs/xen-hvm.c b/stubs/xen-hvm.c
index b7d53b5e2f..6954a5b696 100644
--- a/stubs/xen-hvm.c
+++ b/stubs/xen-hvm.c
@@ -35,11 +35,6 @@ int xen_is_pirq_msi(uint32_t msi_data)
return 0;
}
-void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
- Error **errp)
-{
-}
-
qemu_irq *xen_interrupt_controller_init(void)
{
return NULL;
@@ -49,10 +44,6 @@ void xen_register_framebuffer(MemoryRegion *mr)
{
}
-void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length)
-{
-}
-
void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
{
}
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 9c256ab159..f9b3ef1ef2 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -29,6 +29,7 @@
#include "sysemu/reset.h"
#include "sysemu/hvf.h"
#include "sysemu/cpus.h"
+#include "sysemu/xen.h"
#include "kvm_i386.h"
#include "sev_i386.h"
@@ -54,7 +55,6 @@
#include "hw/i386/topology.h"
#ifndef CONFIG_USER_ONLY
#include "exec/address-spaces.h"
-#include "hw/xen/xen.h"
#include "hw/i386/apic_internal.h"
#include "hw/boards.h"
#endif
diff --git a/MAINTAINERS b/MAINTAINERS
index 1f84e3ae2c..95ddddfb1d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -438,6 +438,7 @@ M: Paul Durrant <paul@xen.org>
L: xen-devel@lists.xenproject.org
S: Supported
F: */xen*
+F: accel/xen/*
F: hw/9pfs/xen-9p*
F: hw/char/xen_console.c
F: hw/display/xenfb.c
@@ -451,6 +452,7 @@ F: hw/i386/xen/
F: hw/pci-host/xen_igd_pt.c
F: include/hw/block/dataplane/xen*
F: include/hw/xen/
+F: include/sysemu/xen.h
F: include/sysemu/xen-mapcache.h
Guest CPU Cores (HAXM)
diff --git a/accel/Makefile.objs b/accel/Makefile.objs
index 17e5ac6061..ff72f0d030 100644
--- a/accel/Makefile.objs
+++ b/accel/Makefile.objs
@@ -2,4 +2,5 @@ common-obj-$(CONFIG_SOFTMMU) += accel.o
obj-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_POSIX)) += qtest.o
obj-$(CONFIG_KVM) += kvm/
obj-$(CONFIG_TCG) += tcg/
+obj-$(CONFIG_XEN) += xen/
obj-y += stubs/
diff --git a/accel/xen/Makefile.objs b/accel/xen/Makefile.objs
new file mode 100644
index 0000000000..7482cfb436
--- /dev/null
+++ b/accel/xen/Makefile.objs
@@ -0,0 +1 @@
+obj-y += xen-all.o
diff --git a/hw/xen/Makefile.objs b/hw/xen/Makefile.objs
index 84df60a928..340b2c5096 100644
--- a/hw/xen/Makefile.objs
+++ b/hw/xen/Makefile.objs
@@ -1,5 +1,5 @@
# xen backend driver support
-common-obj-$(CONFIG_XEN) += xen-legacy-backend.o xen_devconfig.o xen_pvdev.o xen-common.o xen-bus.o xen-bus-helper.o xen-backend.o
+common-obj-$(CONFIG_XEN) += xen-legacy-backend.o xen_devconfig.o xen_pvdev.o xen-bus.o xen-bus-helper.o xen-backend.o
obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen-host-pci-device.o
obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pt.o xen_pt_config_init.o xen_pt_graphics.o xen_pt_msi.o
--
2.21.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [PATCH] accel: Move Xen accelerator code under accel/xen/
2020-05-07 15:58 [PATCH] accel: Move Xen accelerator code under accel/xen/ Philippe Mathieu-Daudé
@ 2020-05-07 17:40 ` Paul Durrant
2020-05-08 5:28 ` no-reply
2020-05-08 5:34 ` Philippe Mathieu-Daudé
2 siblings, 0 replies; 4+ messages in thread
From: Paul Durrant @ 2020-05-07 17:40 UTC (permalink / raw)
To: 'Philippe Mathieu-Daudé', qemu-devel
Cc: 'Stefano Stabellini', 'Eduardo Habkost',
'Juan Quintela', 'Michael S. Tsirkin',
'Dr. David Alan Gilbert', 'Aleksandar Markovic',
'Paolo Bonzini', 'Igor Mammedov',
'Anthony Perard', xen-devel, 'Aurelien Jarno',
'Richard Henderson'
> -----Original Message-----
> From: Philippe Mathieu-Daudé <philmd@redhat.com>
> Sent: 07 May 2020 16:58
> To: qemu-devel@nongnu.org
> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>; xen-devel@lists.xenproject.org; Stefano Stabellini
> <sstabellini@kernel.org>; Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>; Aurelien Jarno
> <aurelien@aurel32.net>; Paolo Bonzini <pbonzini@redhat.com>; Igor Mammedov <imammedo@redhat.com>;
> Eduardo Habkost <ehabkost@redhat.com>; Richard Henderson <rth@twiddle.net>; Marcel Apfelbaum
> <marcel.apfelbaum@gmail.com>; Dr. David Alan Gilbert <dgilbert@redhat.com>; Juan Quintela
> <quintela@redhat.com>; Michael S. Tsirkin <mst@redhat.com>; Paul Durrant <paul@xen.org>; Anthony
> Perard <anthony.perard@citrix.com>
> Subject: [PATCH] accel: Move Xen accelerator code under accel/xen/
>
> This code is not related to hardware emulation.
> Move it under accel/ with the other hypervisors.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] accel: Move Xen accelerator code under accel/xen/
2020-05-07 15:58 [PATCH] accel: Move Xen accelerator code under accel/xen/ Philippe Mathieu-Daudé
2020-05-07 17:40 ` Paul Durrant
@ 2020-05-08 5:28 ` no-reply
2020-05-08 5:34 ` Philippe Mathieu-Daudé
2 siblings, 0 replies; 4+ messages in thread
From: no-reply @ 2020-05-08 5:28 UTC (permalink / raw)
To: philmd
Cc: sstabellini, ehabkost, quintela, paul, dgilbert, qemu-devel,
xen-devel, aleksandar.qemu.devel, mst, pbonzini, anthony.perard,
imammedo, philmd, aurelien, rth
Patchew URL: https://patchew.org/QEMU/20200507155813.16169-1-philmd@redhat.com/
Hi,
This series failed the docker-quick@centos7 build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.
=== TEST SCRIPT BEGIN ===
#!/bin/bash
make docker-image-centos7 V=1 NETWORK=1
time make docker-test-quick@centos7 SHOW_ENV=1 J=14 NETWORK=1
=== TEST SCRIPT END ===
/tmp/qemu-test/src/tests/qtest/libqtest.c:175: kill_qemu() detected QEMU death from signal 6 (Aborted) (core dumped)
TEST check-unit: tests/check-qdict
TEST iotest-qcow2: 007
ERROR - too few tests run (expected 5, got 0)
make: *** [check-qtest-aarch64] Error 1
make: *** Waiting for unfinished jobs....
TEST check-qtest-x86_64: tests/qtest/fdc-test
TEST check-unit: tests/check-block-qdict
---
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', '-n', 'docker', 'run', '--label', 'com.qemu.instance.uuid=e594b974940444968b77f9424310ca3c', '-u', '1003', '--security-opt', 'seccomp=unconfined', '--rm', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=14', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/home/patchew2/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-p2n4ope2/src/docker-src.2020-05-08-01.15.14.21618:/var/tmp/qemu:z,ro', 'qemu:centos7', '/var/tmp/qemu/run', 'test-quick']' returned non-zero exit status 2.
filter=--filter=label=com.qemu.instance.uuid=e594b974940444968b77f9424310ca3c
make[1]: *** [docker-run] Error 1
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-p2n4ope2/src'
make: *** [docker-run-test-quick@centos7] Error 2
real 13m16.276s
user 0m8.185s
The full log is available at
http://patchew.org/logs/20200507155813.16169-1-philmd@redhat.com/testing.docker-quick@centos7/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] accel: Move Xen accelerator code under accel/xen/
2020-05-07 15:58 [PATCH] accel: Move Xen accelerator code under accel/xen/ Philippe Mathieu-Daudé
2020-05-07 17:40 ` Paul Durrant
2020-05-08 5:28 ` no-reply
@ 2020-05-08 5:34 ` Philippe Mathieu-Daudé
2 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-05-08 5:34 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini
Cc: Stefano Stabellini, Eduardo Habkost, Juan Quintela,
Michael S. Tsirkin, Dr. David Alan Gilbert, Paul Durrant,
Aleksandar Markovic, Igor Mammedov, Anthony Perard, xen-devel,
Aurelien Jarno, Richard Henderson
On 5/7/20 5:58 PM, Philippe Mathieu-Daudé wrote:
> This code is not related to hardware emulation.
> Move it under accel/ with the other hypervisors.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> We could also move the memory management functions from
> hw/i386/xen/xen-hvm.c but it is not trivial.
>
> Necessary step to remove "exec/ram_addr.h" in the next series.
> ---
> include/exec/ram_addr.h | 2 +-
> include/hw/xen/xen.h | 11 ------
> include/sysemu/xen.h | 40 ++++++++++++++++++++++
> hw/xen/xen-common.c => accel/xen/xen-all.c | 3 ++
> hw/acpi/piix4.c | 2 +-
> hw/i386/pc.c | 1 +
> hw/i386/pc_piix.c | 1 +
> hw/i386/pc_q35.c | 1 +
> hw/i386/xen/xen-hvm.c | 1 +
> hw/i386/xen/xen_platform.c | 1 +
> hw/isa/piix3.c | 1 +
> hw/pci/msix.c | 1 +
> migration/savevm.c | 2 +-
> softmmu/vl.c | 2 +-
> stubs/xen-hvm.c | 9 -----
> target/i386/cpu.c | 2 +-
> MAINTAINERS | 2 ++
> accel/Makefile.objs | 1 +
> accel/xen/Makefile.objs | 1 +
> hw/xen/Makefile.objs | 2 +-
> 20 files changed, 60 insertions(+), 26 deletions(-)
> create mode 100644 include/sysemu/xen.h
> rename hw/xen/xen-common.c => accel/xen/xen-all.c (99%)
> create mode 100644 accel/xen/Makefile.objs
>
> diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
> index 5e59a3d8d7..4e05292f91 100644
> --- a/include/exec/ram_addr.h
> +++ b/include/exec/ram_addr.h
> @@ -21,7 +21,7 @@
>
> #ifndef CONFIG_USER_ONLY
> #include "cpu.h"
> -#include "hw/xen/xen.h"
> +#include "sysemu/xen.h"
> #include "sysemu/tcg.h"
> #include "exec/ramlist.h"
> #include "exec/ramblock.h"
> diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
> index 5ac1c6dc55..771dd447f2 100644
> --- a/include/hw/xen/xen.h
> +++ b/include/hw/xen/xen.h
> @@ -20,13 +20,6 @@ extern uint32_t xen_domid;
> extern enum xen_mode xen_mode;
> extern bool xen_domid_restrict;
>
> -extern bool xen_allowed;
> -
> -static inline bool xen_enabled(void)
> -{
> - return xen_allowed;
> -}
> -
> int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);
> void xen_piix3_set_irq(void *opaque, int irq_num, int level);
> void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len);
> @@ -39,10 +32,6 @@ void xenstore_store_pv_console_info(int i, struct Chardev *chr);
>
> void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory);
>
> -void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
> - struct MemoryRegion *mr, Error **errp);
> -void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
> -
> void xen_register_framebuffer(struct MemoryRegion *mr);
>
> #endif /* QEMU_HW_XEN_H */
> diff --git a/include/sysemu/xen.h b/include/sysemu/xen.h
> new file mode 100644
> index 0000000000..609d2d4184
> --- /dev/null
> +++ b/include/sysemu/xen.h
> @@ -0,0 +1,40 @@
> +/*
> + * QEMU Xen support
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef SYSEMU_XEN_H
> +#define SYSEMU_XEN_H
> +
> +#ifdef CONFIG_XEN
> +
> +extern bool xen_allowed;
> +
> +#define xen_enabled() (xen_allowed)
> +
> +#ifndef CONFIG_USER_ONLY
> +void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
> +void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
> + struct MemoryRegion *mr, Error **errp);
> +#endif
> +
> +#else /* !CONFIG_XEN */
> +
> +#define xen_enabled() 0
> +#ifndef CONFIG_USER_ONLY
> +static inline void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length)
> +{
> + abort();
> +}
> +static inline void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
> + MemoryRegion *mr, Error **errp)
> +{
> + abort();
> +}
> +#endif
Unfortunately this triggers:
#1 0x00007fca778a5895 abort (libc.so.6)
#2 0x000055f51ebd3e12 xen_hvm_modified_memory (qemu-system-aarch64)
#3 0x000055f51ebd44c9 cpu_physical_memory_set_dirty_range
(qemu-system-aarch64)
#4 0x000055f51ebd9de4 ram_block_add (qemu-system-aarch64)
#5 0x000055f51ebda2e3 qemu_ram_alloc_internal (qemu-system-aarch64)
#6 0x000055f51ebda3be qemu_ram_alloc (qemu-system-aarch64)
#7 0x000055f51ec3db9b memory_region_init_ram_shared_nomigrate
(qemu-system-aarch64)
#8 0x000055f51ef089e6 ram_backend_memory_alloc (qemu-system-aarch64)
#9 0x000055f51ef081ae host_memory_backend_memory_complete
(qemu-system-aarch64)
#10 0x000055f51f2b624b user_creatable_complete (qemu-system-aarch64)
#11 0x000055f51ed93382 create_default_memdev (qemu-system-aarch64)
#12 0x000055f51ed96d1a qemu_init (qemu-system-aarch64)
#13 0x000055f51f3b14bb main (qemu-system-aarch64)
#14 0x00007fca778a6f43 __libc_start_main (libc.so.6)
#15 0x000055f51ebd27de _start (qemu-system-aarch64)
I'll resend adding the following patch checking for xen_enabled() before
calling, as we do with other accelerators:
-- >8 --
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
@@ -330,7 +330,9 @@ static inline void
cpu_physical_memory_set_dirty_range(ram_addr_t start,
}
}
- xen_hvm_modified_memory(start, length);
+ if (xen_enabled()) {
+ xen_hvm_modified_memory(start, length);
+ }
}
#if !defined(_WIN32)
@@ -388,7 +390,9 @@ static inline void
cpu_physical_memory_set_dirty_lebitmap(unsigned long *bitmap,
}
}
- xen_hvm_modified_memory(start, pages << TARGET_PAGE_BITS);
+ if (xen_enabled()) {
+ xen_hvm_modified_memory(start, pages << TARGET_PAGE_BITS);
+ }
} else {
uint8_t clients = tcg_enabled() ? DIRTY_CLIENTS_ALL :
DIRTY_CLIENTS_NOCODE;
---
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-05-08 5:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-07 15:58 [PATCH] accel: Move Xen accelerator code under accel/xen/ Philippe Mathieu-Daudé
2020-05-07 17:40 ` Paul Durrant
2020-05-08 5:28 ` no-reply
2020-05-08 5:34 ` Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).