Re: [PATCH] accel: Move Xen accelerator code under accel/xen/

2020-05-07 Thread Philippe Mathieu-Daudé

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é 
---
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 00..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  0x7fca778a5895 abort (libc.so.6)
#2  0x55f51ebd3e12 xen_hvm_modified_memory (qemu-system-aarch64)
#3  0x55f51ebd44c9 cpu_physical_memory_set_dirty_range 
(qemu-system-aarch64)

#4  0x55f51ebd9de4 ram_block_add (qemu-system-aarch64)
#5  0x55f51ebda2e3 qemu_ram_alloc_internal (qemu-system-aarch64)
#6  0x55f51ebda3be qemu_ram_alloc (qemu-system-aarch64)
#7  0x55f51ec3db9b memory_region_init_ram_shared_nomigrate 
(qemu-system-aarch64)

#8  0x55f51ef089e6 ram_backend_memory_alloc (qemu-system-aarch64)
#9  0x55f51ef081ae host_memory_backend_memory_complete 
(qemu-system-aarch64)

#10 0x55f51f2b624b user_creatable_complete (qemu-system-aarch64)
#11 0x55f51ed93382 create_default_memdev (qemu-system-aarch64)
#12 0x55f51ed96d1a qemu_init (qemu-system-aarch64)
#13 0x55f51f3b14bb main (qemu-system-aarch64)
#14 0x7fca778a6f43 __libc_start_main (libc.so.6)
#15 

Re: [PATCH] accel: Move Xen accelerator code under accel/xen/

2020-05-07 Thread no-reply
Patchew URL: https://patchew.org/QEMU/20200507155813.16169-1-phi...@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)
  TESTcheck-unit: tests/check-qdict
  TESTiotest-qcow2: 007
ERROR - too few tests run (expected 5, got 0)
make: *** [check-qtest-aarch64] Error 1
make: *** Waiting for unfinished jobs
  TESTcheck-qtest-x86_64: tests/qtest/fdc-test
  TESTcheck-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

real13m16.276s
user0m8.185s


The full log is available at
http://patchew.org/logs/20200507155813.16169-1-phi...@redhat.com/testing.docker-quick@centos7/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-de...@redhat.com

RE: [PATCH] accel: Move Xen accelerator code under accel/xen/

2020-05-07 Thread Paul Durrant
> -Original Message-
> From: Philippe Mathieu-Daudé 
> Sent: 07 May 2020 16:58
> To: qemu-devel@nongnu.org
> Cc: Philippe Mathieu-Daudé ; 
> xen-de...@lists.xenproject.org; Stefano Stabellini
> ; Aleksandar Markovic 
> ; Aurelien Jarno
> ; Paolo Bonzini ; Igor Mammedov 
> ;
> Eduardo Habkost ; Richard Henderson ; 
> Marcel Apfelbaum
> ; Dr. David Alan Gilbert ; 
> Juan Quintela
> ; Michael S. Tsirkin ; Paul Durrant 
> ; Anthony
> Perard 
> 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é 

Reviewed-by: Paul Durrant 




[PATCH] accel: Move Xen accelerator code under accel/xen/

2020-05-07 Thread Philippe Mathieu-Daudé
This code is not related to hardware emulation.
Move it under accel/ with the other hypervisors.

Signed-off-by: Philippe Mathieu-Daudé 
---
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 00..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