* [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
@ 2017-06-14 17:45 Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT Edgar E. Iglesias
` (9 more replies)
0 siblings, 10 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
Hi,
Paolo suggested offline that we send a pull request for this series.
Here it is, I've run it through my testsuite + tested the LQSPI testcase
on Zynq.
Cheers,
Edgar
The following changes since commit 3f0602927b120a480b35dcf58cf6f95435b3ae91:
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170613' into staging (2017-06-13 15:49:07 +0100)
are available in the git repository at:
git@github.com:edgarigl/qemu.git tags/edgar/mmio-exec.for-upstream
for you to fetch changes up to 63ef40dd6bc6cfdae5fa67ccac1cb11e7a5161b0:
xilinx_spips: allow mmio execution (2017-06-14 17:31:08 +0200)
----------------------------------------------------------------
mmio-exec.for-upstream
----------------------------------------------------------------
KONRAD Frederic (7):
cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
cputlb: move get_page_addr_code
cputlb: fix the way get_page_addr_code fills the tlb
qdev: add MemoryRegion property
introduce mmio_interface
exec: allow to get a pointer for some mmio memory region
xilinx_spips: allow mmio execution
cputlb.c | 82 ++++++++++++++-----------
hw/misc/Makefile.objs | 1 +
hw/misc/mmio_interface.c | 128 +++++++++++++++++++++++++++++++++++++++
hw/ssi/xilinx_spips.c | 74 ++++++++++++++++------
include/exec/memory.h | 35 +++++++++++
include/hw/misc/mmio_interface.h | 49 +++++++++++++++
include/hw/qdev-properties.h | 2 +
memory.c | 111 +++++++++++++++++++++++++++++++++
8 files changed, 428 insertions(+), 54 deletions(-)
create mode 100644 hw/misc/mmio_interface.c
create mode 100644 include/hw/misc/mmio_interface.h
^ permalink raw reply [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 2/7] cputlb: move get_page_addr_code Edgar E. Iglesias
` (8 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
This replaces env1 and page_index variables by env and index
so we can use VICTIM_TLB_HIT macro later.
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
cputlb.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/cputlb.c b/cputlb.c
index 743776a..1cc382d 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -751,21 +751,21 @@ static inline ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr)
* is actually a ram_addr_t (in system mode; the user mode emulation
* version of this function returns a guest virtual address).
*/
-tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
+tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
{
- int mmu_idx, page_index, pd;
+ int mmu_idx, index, pd;
void *p;
MemoryRegion *mr;
- CPUState *cpu = ENV_GET_CPU(env1);
+ CPUState *cpu = ENV_GET_CPU(env);
CPUIOTLBEntry *iotlbentry;
- page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
- mmu_idx = cpu_mmu_index(env1, true);
- if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
+ index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
+ mmu_idx = cpu_mmu_index(env, true);
+ if (unlikely(env->tlb_table[mmu_idx][index].addr_code !=
(addr & TARGET_PAGE_MASK))) {
- cpu_ldub_code(env1, addr);
+ cpu_ldub_code(env, addr);
}
- iotlbentry = &env1->iotlb[mmu_idx][page_index];
+ iotlbentry = &env->iotlb[mmu_idx][index];
pd = iotlbentry->addr & ~TARGET_PAGE_MASK;
mr = iotlb_to_region(cpu, pd, iotlbentry->attrs);
if (memory_region_is_unassigned(mr)) {
@@ -777,7 +777,7 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
report_bad_exec(cpu, addr);
exit(1);
}
- p = (void *)((uintptr_t)addr + env1->tlb_table[mmu_idx][page_index].addend);
+ p = (void *)((uintptr_t)addr + env->tlb_table[mmu_idx][index].addend);
return qemu_ram_addr_from_host_nofail(p);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 2/7] cputlb: move get_page_addr_code
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 3/7] cputlb: fix the way get_page_addr_code fills the tlb Edgar E. Iglesias
` (7 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
This just moves the code before VICTIM_TLB_HIT macro definition
so we can use it.
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
V2 -> V3:
* Rebase against cpu_unaligned access recent change.
---
cputlb.c | 70 ++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/cputlb.c b/cputlb.c
index 1cc382d..5d6c755 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -746,41 +746,6 @@ static inline ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr)
return ram_addr;
}
-/* NOTE: this function can trigger an exception */
-/* NOTE2: the returned address is not exactly the physical address: it
- * is actually a ram_addr_t (in system mode; the user mode emulation
- * version of this function returns a guest virtual address).
- */
-tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
-{
- int mmu_idx, index, pd;
- void *p;
- MemoryRegion *mr;
- CPUState *cpu = ENV_GET_CPU(env);
- CPUIOTLBEntry *iotlbentry;
-
- index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
- mmu_idx = cpu_mmu_index(env, true);
- if (unlikely(env->tlb_table[mmu_idx][index].addr_code !=
- (addr & TARGET_PAGE_MASK))) {
- cpu_ldub_code(env, addr);
- }
- iotlbentry = &env->iotlb[mmu_idx][index];
- pd = iotlbentry->addr & ~TARGET_PAGE_MASK;
- mr = iotlb_to_region(cpu, pd, iotlbentry->attrs);
- if (memory_region_is_unassigned(mr)) {
- cpu_unassigned_access(cpu, addr, false, true, 0, 4);
- /* The CPU's unassigned access hook might have longjumped out
- * with an exception. If it didn't (or there was no hook) then
- * we can't proceed further.
- */
- report_bad_exec(cpu, addr);
- exit(1);
- }
- p = (void *)((uintptr_t)addr + env->tlb_table[mmu_idx][index].addend);
- return qemu_ram_addr_from_host_nofail(p);
-}
-
static uint64_t io_readx(CPUArchState *env, CPUIOTLBEntry *iotlbentry,
target_ulong addr, uintptr_t retaddr, int size)
{
@@ -868,6 +833,41 @@ static bool victim_tlb_hit(CPUArchState *env, size_t mmu_idx, size_t index,
victim_tlb_hit(env, mmu_idx, index, offsetof(CPUTLBEntry, TY), \
(ADDR) & TARGET_PAGE_MASK)
+/* NOTE: this function can trigger an exception */
+/* NOTE2: the returned address is not exactly the physical address: it
+ * is actually a ram_addr_t (in system mode; the user mode emulation
+ * version of this function returns a guest virtual address).
+ */
+tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
+{
+ int mmu_idx, index, pd;
+ void *p;
+ MemoryRegion *mr;
+ CPUState *cpu = ENV_GET_CPU(env);
+ CPUIOTLBEntry *iotlbentry;
+
+ index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
+ mmu_idx = cpu_mmu_index(env, true);
+ if (unlikely(env->tlb_table[mmu_idx][index].addr_code !=
+ (addr & TARGET_PAGE_MASK))) {
+ cpu_ldub_code(env, addr);
+ }
+ iotlbentry = &env->iotlb[mmu_idx][index];
+ pd = iotlbentry->addr & ~TARGET_PAGE_MASK;
+ mr = iotlb_to_region(cpu, pd, iotlbentry->attrs);
+ if (memory_region_is_unassigned(mr)) {
+ cpu_unassigned_access(cpu, addr, false, true, 0, 4);
+ /* The CPU's unassigned access hook might have longjumped out
+ * with an exception. If it didn't (or there was no hook) then
+ * we can't proceed further.
+ */
+ report_bad_exec(cpu, addr);
+ exit(1);
+ }
+ p = (void *)((uintptr_t)addr + env->tlb_table[mmu_idx][index].addend);
+ return qemu_ram_addr_from_host_nofail(p);
+}
+
/* Probe for whether the specified guest write access is permitted.
* If it is not permitted then an exception will be taken in the same
* way as if this were a real write access (and we will not return).
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 3/7] cputlb: fix the way get_page_addr_code fills the tlb
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 2/7] cputlb: move get_page_addr_code Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 4/7] qdev: add MemoryRegion property Edgar E. Iglesias
` (6 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
get_page_addr_code(..) does a cpu_ldub_code to fill the tlb:
This can lead to some side effects if a device is mapped at this address.
So this patch replaces the cpu_memory_ld by a tlb_fill.
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
cputlb.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/cputlb.c b/cputlb.c
index 5d6c755..95265a0 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -849,8 +849,10 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
mmu_idx = cpu_mmu_index(env, true);
if (unlikely(env->tlb_table[mmu_idx][index].addr_code !=
- (addr & TARGET_PAGE_MASK))) {
- cpu_ldub_code(env, addr);
+ (addr & (TARGET_PAGE_MASK | TLB_INVALID_MASK)))) {
+ if (!VICTIM_TLB_HIT(addr_read, addr)) {
+ tlb_fill(ENV_GET_CPU(env), addr, MMU_INST_FETCH, mmu_idx, 0);
+ }
}
iotlbentry = &env->iotlb[mmu_idx][index];
pd = iotlbentry->addr & ~TARGET_PAGE_MASK;
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 4/7] qdev: add MemoryRegion property
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (2 preceding siblings ...)
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 3/7] cputlb: fix the way get_page_addr_code fills the tlb Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 5/7] introduce mmio_interface Edgar E. Iglesias
` (5 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
We need to pass a pointer to a MemoryRegion for mmio_interface.
So this just adds that.
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
include/hw/qdev-properties.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index d206fc9..0e9b492 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -171,6 +171,8 @@ extern PropertyInfo qdev_prop_arraylen;
DEFINE_PROP_DEFAULT(_n, _s, _f, 0, qdev_prop_blocksize, uint16_t)
#define DEFINE_PROP_PCI_HOST_DEVADDR(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_pci_host_devaddr, PCIHostDeviceAddress)
+#define DEFINE_PROP_MEMORY_REGION(_n, _s, _f) \
+ DEFINE_PROP(_n, _s, _f, qdev_prop_ptr, MemoryRegion *)
#define DEFINE_PROP_END_OF_LIST() \
{}
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 5/7] introduce mmio_interface
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (3 preceding siblings ...)
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 4/7] qdev: add MemoryRegion property Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 6/7] exec: allow to get a pointer for some mmio memory region Edgar E. Iglesias
` (4 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
This introduces mmio_interface object which contains a MemoryRegion
and can be hotplugged/hotunplugged.
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
V1 -> V2:
* Fix the qemu_log format.
---
hw/misc/Makefile.objs | 1 +
hw/misc/mmio_interface.c | 128 +++++++++++++++++++++++++++++++++++++++
include/hw/misc/mmio_interface.h | 49 +++++++++++++++
3 files changed, 178 insertions(+)
create mode 100644 hw/misc/mmio_interface.c
create mode 100644 include/hw/misc/mmio_interface.h
diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs
index 2019846..08a79c3 100644
--- a/hw/misc/Makefile.objs
+++ b/hw/misc/Makefile.objs
@@ -57,3 +57,4 @@ obj-$(CONFIG_EDU) += edu.o
obj-$(CONFIG_HYPERV_TESTDEV) += hyperv_testdev.o
obj-$(CONFIG_AUX) += auxbus.o
obj-$(CONFIG_ASPEED_SOC) += aspeed_scu.o aspeed_sdmc.o
+obj-y += mmio_interface.o
diff --git a/hw/misc/mmio_interface.c b/hw/misc/mmio_interface.c
new file mode 100644
index 0000000..6f004d2
--- /dev/null
+++ b/hw/misc/mmio_interface.c
@@ -0,0 +1,128 @@
+/*
+ * mmio_interface.c
+ *
+ * Copyright (C) 2017 : GreenSocs
+ * http://www.greensocs.com/ , email: info@greensocs.com
+ *
+ * Developed by :
+ * Frederic Konrad <fred.konrad@greensocs.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option)any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/log.h"
+#include "trace.h"
+#include "hw/qdev-properties.h"
+#include "hw/misc/mmio_interface.h"
+#include "qapi/error.h"
+
+#ifndef DEBUG_MMIO_INTERFACE
+#define DEBUG_MMIO_INTERFACE 0
+#endif
+
+static uint64_t mmio_interface_counter;
+
+#define DPRINTF(fmt, ...) do { \
+ if (DEBUG_MMIO_INTERFACE) { \
+ qemu_log("mmio_interface: 0x%" PRIX64 ": " fmt, s->id, ## __VA_ARGS__);\
+ } \
+} while (0);
+
+static void mmio_interface_init(Object *obj)
+{
+ MMIOInterface *s = MMIO_INTERFACE(obj);
+
+ if (DEBUG_MMIO_INTERFACE) {
+ s->id = mmio_interface_counter++;
+ }
+
+ DPRINTF("interface created\n");
+ s->host_ptr = 0;
+ s->subregion = 0;
+}
+
+static void mmio_interface_realize(DeviceState *dev, Error **errp)
+{
+ MMIOInterface *s = MMIO_INTERFACE(dev);
+
+ DPRINTF("realize from 0x%" PRIX64 " to 0x%" PRIX64 " map host pointer"
+ " %p\n", s->start, s->end, s->host_ptr);
+
+ if (!s->host_ptr) {
+ error_setg(errp, "host_ptr property must be set");
+ }
+
+ if (!s->subregion) {
+ error_setg(errp, "subregion property must be set");
+ }
+
+ memory_region_init_ram_ptr(&s->ram_mem, OBJECT(s), "ram",
+ s->end - s->start + 1, s->host_ptr);
+ memory_region_set_readonly(&s->ram_mem, s->ro);
+ memory_region_add_subregion(s->subregion, s->start, &s->ram_mem);
+}
+
+static void mmio_interface_unrealize(DeviceState *dev, Error **errp)
+{
+ MMIOInterface *s = MMIO_INTERFACE(dev);
+
+ DPRINTF("unrealize from 0x%" PRIX64 " to 0x%" PRIX64 " map host pointer"
+ " %p\n", s->start, s->end, s->host_ptr);
+ memory_region_del_subregion(s->subregion, &s->ram_mem);
+}
+
+static void mmio_interface_finalize(Object *obj)
+{
+ MMIOInterface *s = MMIO_INTERFACE(obj);
+
+ DPRINTF("finalize from 0x%" PRIX64 " to 0x%" PRIX64 " map host pointer"
+ " %p\n", s->start, s->end, s->host_ptr);
+ object_unparent(OBJECT(&s->ram_mem));
+}
+
+static Property mmio_interface_properties[] = {
+ DEFINE_PROP_UINT64("start", MMIOInterface, start, 0),
+ DEFINE_PROP_UINT64("end", MMIOInterface, end, 0),
+ DEFINE_PROP_PTR("host_ptr", MMIOInterface, host_ptr),
+ DEFINE_PROP_BOOL("ro", MMIOInterface, ro, false),
+ DEFINE_PROP_MEMORY_REGION("subregion", MMIOInterface, subregion),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+static void mmio_interface_class_init(ObjectClass *oc, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(oc);
+
+ dc->realize = mmio_interface_realize;
+ dc->unrealize = mmio_interface_unrealize;
+ dc->props = mmio_interface_properties;
+}
+
+static const TypeInfo mmio_interface_info = {
+ .name = TYPE_MMIO_INTERFACE,
+ .parent = TYPE_DEVICE,
+ .instance_size = sizeof(MMIOInterface),
+ .instance_init = mmio_interface_init,
+ .instance_finalize = mmio_interface_finalize,
+ .class_init = mmio_interface_class_init,
+};
+
+static void mmio_interface_register_types(void)
+{
+ type_register_static(&mmio_interface_info);
+}
+
+type_init(mmio_interface_register_types)
diff --git a/include/hw/misc/mmio_interface.h b/include/hw/misc/mmio_interface.h
new file mode 100644
index 0000000..90d34fb
--- /dev/null
+++ b/include/hw/misc/mmio_interface.h
@@ -0,0 +1,49 @@
+/*
+ * mmio_interface.h
+ *
+ * Copyright (C) 2017 : GreenSocs
+ * http://www.greensocs.com/ , email: info@greensocs.com
+ *
+ * Developed by :
+ * Frederic Konrad <fred.konrad@greensocs.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option)any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef MMIO_INTERFACE_H
+#define MMIO_INTERFACE_H
+
+#include "exec/memory.h"
+
+#define TYPE_MMIO_INTERFACE "mmio_interface"
+#define MMIO_INTERFACE(obj) OBJECT_CHECK(MMIOInterface, (obj), \
+ TYPE_MMIO_INTERFACE)
+
+typedef struct MMIOInterface {
+ DeviceState parent_obj;
+
+ MemoryRegion *subregion;
+ MemoryRegion ram_mem;
+ uint64_t start;
+ uint64_t end;
+ bool ro;
+ uint64_t id;
+ void *host_ptr;
+} MMIOInterface;
+
+void mmio_interface_map(MMIOInterface *s);
+void mmio_interface_unmap(MMIOInterface *s);
+
+#endif /* MMIO_INTERFACE_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 6/7] exec: allow to get a pointer for some mmio memory region
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (4 preceding siblings ...)
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 5/7] introduce mmio_interface Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 7/7] xilinx_spips: allow mmio execution Edgar E. Iglesias
` (3 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
This introduces a special callback which allows to run code from some MMIO
devices.
SysBusDevice with a MemoryRegion which implements the request_ptr callback will
be notified when the guest try to execute code from their offset. Then it will
be able to eg: pre-load some code from an SPI device or ask a pointer from an
external simulator, etc..
When the pointer or the data in it are no longer valid the device has to
invalidate it.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
V2 -> V3:
* Put the invalidate in an async work.
* Clear the dirty flag before dropping the mmio interface.
* Rebase against recent cpu_handle_unaligned changes.
RFC -> V1:
* Use mmio-interface instead of directly creating the subregion.
---
cputlb.c | 10 +++++
include/exec/memory.h | 35 ++++++++++++++++
memory.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 156 insertions(+)
diff --git a/cputlb.c b/cputlb.c
index 95265a0..1900936 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -858,6 +858,16 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
pd = iotlbentry->addr & ~TARGET_PAGE_MASK;
mr = iotlb_to_region(cpu, pd, iotlbentry->attrs);
if (memory_region_is_unassigned(mr)) {
+ qemu_mutex_lock_iothread();
+ if (memory_region_request_mmio_ptr(mr, addr)) {
+ qemu_mutex_unlock_iothread();
+ /* A MemoryRegion is potentially added so re-run the
+ * get_page_addr_code.
+ */
+ return get_page_addr_code(env, addr);
+ }
+ qemu_mutex_unlock_iothread();
+
cpu_unassigned_access(cpu, addr, false, true, 0, 4);
/* The CPU's unassigned access hook might have longjumped out
* with an exception. If it didn't (or there was no hook) then
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 80e605a..137339a 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -137,6 +137,15 @@ struct MemoryRegionOps {
uint64_t data,
unsigned size,
MemTxAttrs attrs);
+ /* Instruction execution pre-callback:
+ * @addr is the address of the access relative to the @mr.
+ * @size is the size of the area returned by the callback.
+ * @offset is the location of the pointer inside @mr.
+ *
+ * Returns a pointer to a location which contains guest code.
+ */
+ void *(*request_ptr)(void *opaque, hwaddr addr, unsigned *size,
+ unsigned *offset);
enum device_endian endianness;
/* Guest-visible constraints: */
@@ -1354,6 +1363,32 @@ void memory_global_dirty_log_stop(void);
void mtree_info(fprintf_function mon_printf, void *f, bool flatview);
/**
+ * memory_region_request_mmio_ptr: request a pointer to an mmio
+ * MemoryRegion. If it is possible map a RAM MemoryRegion with this pointer.
+ * When the device wants to invalidate the pointer it will call
+ * memory_region_invalidate_mmio_ptr.
+ *
+ * @mr: #MemoryRegion to check
+ * @addr: address within that region
+ *
+ * Returns true on success, false otherwise.
+ */
+bool memory_region_request_mmio_ptr(MemoryRegion *mr, hwaddr addr);
+
+/**
+ * memory_region_invalidate_mmio_ptr: invalidate the pointer to an mmio
+ * previously requested.
+ * In the end that means that if something wants to execute from this area it
+ * will need to request the pointer again.
+ *
+ * @mr: #MemoryRegion associated to the pointer.
+ * @addr: address within that region
+ * @size: size of that area.
+ */
+void memory_region_invalidate_mmio_ptr(MemoryRegion *mr, hwaddr offset,
+ unsigned size);
+
+/**
* memory_region_dispatch_read: perform a read directly to the specified
* MemoryRegion.
*
diff --git a/memory.c b/memory.c
index 0ddc4cc..9c89dd4 100644
--- a/memory.c
+++ b/memory.c
@@ -30,6 +30,8 @@
#include "exec/ram_addr.h"
#include "sysemu/kvm.h"
#include "sysemu/sysemu.h"
+#include "hw/misc/mmio_interface.h"
+#include "hw/qdev-properties.h"
//#define DEBUG_UNASSIGNED
@@ -2424,6 +2426,115 @@ void memory_listener_unregister(MemoryListener *listener)
listener->address_space = NULL;
}
+bool memory_region_request_mmio_ptr(MemoryRegion *mr, hwaddr addr)
+{
+ void *host;
+ unsigned size = 0;
+ unsigned offset = 0;
+ Object *new_interface;
+
+ if (!mr || !mr->ops->request_ptr) {
+ return false;
+ }
+
+ /*
+ * Avoid an update if the request_ptr call
+ * memory_region_invalidate_mmio_ptr which seems to be likely when we use
+ * a cache.
+ */
+ memory_region_transaction_begin();
+
+ host = mr->ops->request_ptr(mr->opaque, addr - mr->addr, &size, &offset);
+
+ if (!host || !size) {
+ memory_region_transaction_commit();
+ return false;
+ }
+
+ new_interface = object_new("mmio_interface");
+ qdev_prop_set_uint64(DEVICE(new_interface), "start", offset);
+ qdev_prop_set_uint64(DEVICE(new_interface), "end", offset + size - 1);
+ qdev_prop_set_bit(DEVICE(new_interface), "ro", true);
+ qdev_prop_set_ptr(DEVICE(new_interface), "host_ptr", host);
+ qdev_prop_set_ptr(DEVICE(new_interface), "subregion", mr);
+ object_property_set_bool(OBJECT(new_interface), true, "realized", NULL);
+
+ memory_region_transaction_commit();
+ return true;
+}
+
+typedef struct MMIOPtrInvalidate {
+ MemoryRegion *mr;
+ hwaddr offset;
+ unsigned size;
+ int busy;
+ int allocated;
+} MMIOPtrInvalidate;
+
+#define MAX_MMIO_INVALIDATE 10
+static MMIOPtrInvalidate mmio_ptr_invalidate_list[MAX_MMIO_INVALIDATE];
+
+static void memory_region_do_invalidate_mmio_ptr(CPUState *cpu,
+ run_on_cpu_data data)
+{
+ MMIOPtrInvalidate *invalidate_data = (MMIOPtrInvalidate *)data.host_ptr;
+ MemoryRegion *mr = invalidate_data->mr;
+ hwaddr offset = invalidate_data->offset;
+ unsigned size = invalidate_data->size;
+ MemoryRegionSection section = memory_region_find(mr, offset, size);
+
+ qemu_mutex_lock_iothread();
+
+ /* Reset dirty so this doesn't happen later. */
+ cpu_physical_memory_test_and_clear_dirty(offset, size, 1);
+
+ if (section.mr != mr) {
+ /* memory_region_find add a ref on section.mr */
+ memory_region_unref(section.mr);
+ if (MMIO_INTERFACE(section.mr->owner)) {
+ /* We found the interface just drop it. */
+ object_property_set_bool(section.mr->owner, false, "realized",
+ NULL);
+ object_unref(section.mr->owner);
+ object_unparent(section.mr->owner);
+ }
+ }
+
+ qemu_mutex_unlock_iothread();
+
+ if (invalidate_data->allocated) {
+ g_free(invalidate_data);
+ } else {
+ invalidate_data->busy = 0;
+ }
+}
+
+void memory_region_invalidate_mmio_ptr(MemoryRegion *mr, hwaddr offset,
+ unsigned size)
+{
+ size_t i;
+ MMIOPtrInvalidate *invalidate_data = NULL;
+
+ for (i = 0; i < MAX_MMIO_INVALIDATE; i++) {
+ if (atomic_cmpxchg(&(mmio_ptr_invalidate_list[i].busy), 0, 1) == 0) {
+ invalidate_data = &mmio_ptr_invalidate_list[i];
+ break;
+ }
+ }
+
+ if (!invalidate_data) {
+ invalidate_data = g_malloc0(sizeof(MMIOPtrInvalidate));
+ invalidate_data->allocated = 1;
+ }
+
+ invalidate_data->mr = mr;
+ invalidate_data->offset = offset;
+ invalidate_data->size = size;
+
+ async_safe_run_on_cpu(first_cpu, memory_region_do_invalidate_mmio_ptr,
+ RUN_ON_CPU_HOST_PTR(invalidate_data));
+}
+
void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name)
{
memory_region_ref(root);
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [Qemu-devel] [PULL v1 7/7] xilinx_spips: allow mmio execution
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (5 preceding siblings ...)
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 6/7] exec: allow to get a pointer for some mmio memory region Edgar E. Iglesias
@ 2017-06-14 17:45 ` Edgar E. Iglesias
2017-06-14 18:36 ` [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request no-reply
` (2 subsequent siblings)
9 siblings, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-14 17:45 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: fred.konrad, pbonzini, rth, edgar.iglesias
From: KONRAD Frederic <fred.konrad@greensocs.com>
This allows to execute from the lqspi area.
When the request_ptr is called the device loads 1024bytes from the SPI device.
Then this code can be executed by the guest.
Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
hw/ssi/xilinx_spips.c | 74 ++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 55 insertions(+), 19 deletions(-)
diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c
index da8adfa..e833028 100644
--- a/hw/ssi/xilinx_spips.c
+++ b/hw/ssi/xilinx_spips.c
@@ -496,6 +496,18 @@ static const MemoryRegionOps spips_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
+static void xilinx_qspips_invalidate_mmio_ptr(XilinxQSPIPS *q)
+{
+ XilinxSPIPS *s = &q->parent_obj;
+
+ if (q->lqspi_cached_addr != ~0ULL) {
+ /* Invalidate the current mapped mmio */
+ memory_region_invalidate_mmio_ptr(&s->mmlqspi, q->lqspi_cached_addr,
+ LQSPI_CACHE_SIZE);
+ q->lqspi_cached_addr = ~0ULL;
+ }
+}
+
static void xilinx_qspips_write(void *opaque, hwaddr addr,
uint64_t value, unsigned size)
{
@@ -505,7 +517,7 @@ static void xilinx_qspips_write(void *opaque, hwaddr addr,
addr >>= 2;
if (addr == R_LQSPI_CFG) {
- q->lqspi_cached_addr = ~0ULL;
+ xilinx_qspips_invalidate_mmio_ptr(q);
}
}
@@ -517,27 +529,20 @@ static const MemoryRegionOps qspips_ops = {
#define LQSPI_CACHE_SIZE 1024
-static uint64_t
-lqspi_read(void *opaque, hwaddr addr, unsigned int size)
+static void lqspi_load_cache(void *opaque, hwaddr addr)
{
- int i;
XilinxQSPIPS *q = opaque;
XilinxSPIPS *s = opaque;
- uint32_t ret;
-
- if (addr >= q->lqspi_cached_addr &&
- addr <= q->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) {
- uint8_t *retp = &q->lqspi_buf[addr - q->lqspi_cached_addr];
- ret = cpu_to_le32(*(uint32_t *)retp);
- DB_PRINT_L(1, "addr: %08x, data: %08x\n", (unsigned)addr,
- (unsigned)ret);
- return ret;
- } else {
- int flash_addr = (addr / num_effective_busses(s));
- int slave = flash_addr >> LQSPI_ADDRESS_BITS;
- int cache_entry = 0;
- uint32_t u_page_save = s->regs[R_LQSPI_STS] & ~LQSPI_CFG_U_PAGE;
-
+ int i;
+ int flash_addr = ((addr & ~(LQSPI_CACHE_SIZE - 1))
+ / num_effective_busses(s));
+ int slave = flash_addr >> LQSPI_ADDRESS_BITS;
+ int cache_entry = 0;
+ uint32_t u_page_save = s->regs[R_LQSPI_STS] & ~LQSPI_CFG_U_PAGE;
+
+ if (addr < q->lqspi_cached_addr ||
+ addr > q->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) {
+ xilinx_qspips_invalidate_mmio_ptr(q);
s->regs[R_LQSPI_STS] &= ~LQSPI_CFG_U_PAGE;
s->regs[R_LQSPI_STS] |= slave ? LQSPI_CFG_U_PAGE : 0;
@@ -589,12 +594,43 @@ lqspi_read(void *opaque, hwaddr addr, unsigned int size)
xilinx_spips_update_cs_lines(s);
q->lqspi_cached_addr = flash_addr * num_effective_busses(s);
+ }
+}
+
+static void *lqspi_request_mmio_ptr(void *opaque, hwaddr addr, unsigned *size,
+ unsigned *offset)
+{
+ XilinxQSPIPS *q = opaque;
+ hwaddr offset_within_the_region = addr & ~(LQSPI_CACHE_SIZE - 1);
+
+ lqspi_load_cache(opaque, offset_within_the_region);
+ *size = LQSPI_CACHE_SIZE;
+ *offset = offset_within_the_region;
+ return q->lqspi_buf;
+}
+
+static uint64_t
+lqspi_read(void *opaque, hwaddr addr, unsigned int size)
+{
+ XilinxQSPIPS *q = opaque;
+ uint32_t ret;
+
+ if (addr >= q->lqspi_cached_addr &&
+ addr <= q->lqspi_cached_addr + LQSPI_CACHE_SIZE - 4) {
+ uint8_t *retp = &q->lqspi_buf[addr - q->lqspi_cached_addr];
+ ret = cpu_to_le32(*(uint32_t *)retp);
+ DB_PRINT_L(1, "addr: %08x, data: %08x\n", (unsigned)addr,
+ (unsigned)ret);
+ return ret;
+ } else {
+ lqspi_load_cache(opaque, addr);
return lqspi_read(opaque, addr, size);
}
}
static const MemoryRegionOps lqspi_ops = {
.read = lqspi_read,
+ .request_ptr = lqspi_request_mmio_ptr,
.endianness = DEVICE_NATIVE_ENDIAN,
.valid = {
.min_access_size = 1,
--
2.7.4
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (6 preceding siblings ...)
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 7/7] xilinx_spips: allow mmio execution Edgar E. Iglesias
@ 2017-06-14 18:36 ` no-reply
2017-06-23 10:54 ` Peter Maydell
2017-07-17 16:33 ` Peter Maydell
9 siblings, 0 replies; 39+ messages in thread
From: no-reply @ 2017-06-14 18:36 UTC (permalink / raw)
To: edgar.iglesias
Cc: famz, qemu-devel, peter.maydell, edgar.iglesias, pbonzini, rth,
fred.konrad
Hi,
This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 1497462353-3432-1-git-send-email-edgar.iglesias@gmail.com
Subject: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
# master is broken, skip centos6...
#time make docker-test-quick@centos6
time make docker-test-mingw@fedora
time make docker-test-build@min-glib
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
9c10cd0 xilinx_spips: allow mmio execution
e3bdced exec: allow to get a pointer for some mmio memory region
fb62564 introduce mmio_interface
be2a31d qdev: add MemoryRegion property
ac05c0d cputlb: fix the way get_page_addr_code fills the tlb
60d124d cputlb: move get_page_addr_code
8f4c5fe cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-mzb938u9/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-mzb938u9/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-mingw in qemu:fedora
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.3.1-1.fc25.x86_64
gcc-c++-6.3.1-1.fc25.x86_64
git-2.9.3-2.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-5.fc24.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.1-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.2-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.1-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.2-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
package python2 is not installed
perl-5.24.1-385.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64
Environment variables:
FBR=f25
PACKAGES=ccache git tar PyYAML sparse flex bison python2 glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel gcc gcc-c++ clang make perl which bc findutils mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 mingw32-bzip2 mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 mingw64-bzip2
HOSTNAME=
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
HISTCONTROL=ignoredups
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25docker
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES=mingw clang pyyaml dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install
binary directory /var/tmp/qemu-build/install
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler x86_64-w64-mingw32-gcc
Host C compiler cc
C++ compiler x86_64-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -m64 -mcx16 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled yes
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
pixman system
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qmp-commands.h
GEN aarch64-softmmu/config-devices.mak.tmp
GEN qemu-options.def
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN aarch64-softmmu/config-devices.mak
GEN qapi-visit.c
GEN qapi-types.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_overlay.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_empty_tree.o
AR libfdt/libfdt.a
x86_64-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
RC version.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qobject/qnull.o
CC qapi/qapi-util.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qfloat.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-parser.o
CC trace/simple.o
CC trace/control.o
CC qobject/json-streamer.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/unicode.o
CC util/async.o
CC util/aiocb.o
CC util/thread-pool.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/qemu-timer.o
CC util/event_notifier-win32.o
CC util/qemu-thread-win32.o
CC util/oslib-win32.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/error.o
CC util/acl.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/uri.o
CC util/notify.o
CC util/qemu-sockets.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/crc32c.o
CC util/hexdump.o
CC util/uuid.o
CC util/throttle.o
CC util/readline.o
CC util/getauxval.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qht.o
CC util/qdist.o
CC util/range.o
CC util/systemd.o
CC util/trace.o
CC trace-root.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC backends/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/intc/trace.o
CC hw/char/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/pci/trace.o
CC hw/ppc/trace.o
CC hw/9pfs/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/ppc/trace.o
CC target/s390x/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
GEN qemu-img-cmds.h
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-cache.o
CC block/qcow2-snapshot.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-gencb.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/qed-table.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkverify.o
CC block/blkdebug.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/win32-aio.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/throttle-groups.o
CC block/io.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/backup.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC block/curl.o
CC block/ssh.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/aes.o
CC crypto/hmac-nettle.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscredsanon.o
CC crypto/tlscreds.o
CC crypto/tlssession.o
CC crypto/tlscredsx509.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC io/channel.o
CC crypto/block-luks.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-tls.o
CC io/channel-socket.o
CC io/channel-websock.o
CC io/channel-watch.o
CC io/channel-util.o
CC io/task.o
CC io/dns-resolver.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
CC qemu-io.o
CC blockdev.o
CC iothread.o
CC blockdev-nbd.o
CC device-hotplug.o
CC qdev-monitor.o
CC accel.o
CC os-win32.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/dsoundaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng-egd.o
CC backends/rng.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC chardev/msmouse.o
CC block/stream.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/pcihp.o
CC hw/acpi/piix4.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/gus.o
CC hw/audio/adlib.o
CC hw/audio/gusemu_hal.o
CC hw/audio/cs4231a.o
CC hw/audio/pcspk.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/block/block.o
CC hw/audio/soundhw.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/m25p80.o
CC hw/block/fdc.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/ecc.o
CC hw/block/pflash_cfi02.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/hci.o
CC hw/bt/sdp.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/bt/hid.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/imx_serial.o
CC hw/char/debugcon.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/reset.o
CC hw/core/bus.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/cirrus_vga.o
CC hw/display/ads7846.o
CC hw/display/ssd0303.o
CC hw/display/pl110.o
CC hw/display/ssd0323.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/vga-pci.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/tc6393xb.o
CC hw/display/framebuffer.o
CC hw/dma/pl330.o
CC hw/dma/pl080.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/gpio_key.o
CC hw/gpio/zaurus.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/isa.o
CC hw/ide/pci.o
CC hw/ide/microdrive.o
CC hw/ide/piix.o
CC hw/ide/ich.o
CC hw/ide/ahci.o
CC hw/input/lm832x.o
CC hw/input/hid.o
CC hw/input/pckbd.o
CC hw/input/ps2.o
CC hw/input/pl050.o
CC hw/input/tsc2005.o
CC hw/input/stellaris_input.o
CC hw/input/virtio-input.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259.o
CC hw/intc/i8259_common.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/ipack/ipack.o
CC hw/intc/intc.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/isa/isa-bus.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/max111x.o
CC hw/misc/applesmc.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/arm_l2x0.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_rx_pkt.o
CC hw/net/net_tx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/stellaris_enet.o
CC hw/net/cadence_gem.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/pci_host.o
CC hw/pci/slotid_cap.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptendian.o
CC hw/scsi/mptconfig.o
CC hw/scsi/megasas.o
CC hw/scsi/esp.o
CC hw/sd/pl181.o
CC hw/scsi/esp-pci.o
CC hw/scsi/vmw_pvscsi.o
CC hw/sd/sd.o
CC hw/sd/ssi-sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/smbios/smbios-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/ssi.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-failover.o
CC migration/colo.o
CC migration/colo-comm.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/postcopy-ram.o
CC migration/xbzrle.o
CC migration/qjson.o
CC migration/block.o
CC net/checksum.o
CC net/queue.o
CC net/net.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC qom/cpu.o
CC net/tap-win32.o
CC replay/replay-internal.o
CC replay/replay.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-net.o
CC replay/replay-snapshot.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/sbuf.o
CC slirp/misc.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/gtk.o
CC ui/vnc-jobs.o
CC chardev/char.o
CC chardev/char-console.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-ringbuf.o
CC chardev/char-pipe.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
CC chardev/char-win.o
CC chardev/char-win-stdio.o
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-win32.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
CC qga/channel-win32.o
BUILD optionrom/linuxboot_dma.raw
CC qga/service-win32.o
BUILD optionrom/kvmvapic.raw
SIGN optionrom/linuxboot_dma.bin
CC qga/vss-win32.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
SIGN optionrom/kvmvapic.bin
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
AR libqemuutil.a
AR libqemustub.a
CC qemu-img.o
LINK qemu-io.exe
LINK qemu-ga.exe
LINK qemu-img.exe
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands.h
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/translate-common.o
CC aarch64-softmmu/translate-all.o
CC aarch64-softmmu/cpu-exec.o
CC aarch64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/cpu-exec.o
CC x86_64-softmmu/translate-common.o
CC aarch64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC aarch64-softmmu/tcg-runtime.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC aarch64-softmmu/kvm-stub.o
CC x86_64-softmmu/tcg/optimize.o
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/qtest.o
CC x86_64-softmmu/tcg-runtime.o
CC aarch64-softmmu/bootdevice.o
CC aarch64-softmmu/memory.o
GEN x86_64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/cputlb.o
CC x86_64-softmmu/kvm-stub.o
CC aarch64-softmmu/memory_mapping.o
CC x86_64-softmmu/arch_init.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC x86_64-softmmu/cpus.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/gdbstub.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/qtest.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/bootdevice.o
CC x86_64-softmmu/cputlb.o
CC x86_64-softmmu/memory.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/hw/misc/vmport.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/target/i386/translate.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC x86_64-softmmu/target/i386/helper.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/misc/cbus.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC x86_64-softmmu/target/i386/kvm-stub.o
CC x86_64-softmmu/target/i386/monitor.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC x86_64-softmmu/target/i386/hax-all.o
CC x86_64-softmmu/target/i386/hax-mem.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/target/i386/hax-windows.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/virtio/virtio.o
LINK x86_64-softmmu/qemu-system-x86_64w.exe
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
CC aarch64-softmmu/target/arm/crypto_helper.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64w.exe
GEN x86_64-softmmu/qemu-system-x86_64.exe
GEN aarch64-softmmu/qemu-system-aarch64.exe
rm -f *.timestamp
make -C tests/tcg clean
make[1]: Entering directory '/var/tmp/qemu-build/tests/tcg'
rm -f *.timestamp
rm -f *~ *.o test-i386.out test-i386.ref \
test-x86_64.log test-x86_64.ref qruncom test_path hello-i386 linux-test testthread sha1-i386 test-i386 test-i386-fprem test-mmap run-test-x86_64
make[1]: Leaving directory '/var/tmp/qemu-build/tests/tcg'
rm -rf tests/check-qdict.exe tests/test-char.exe tests/check-qfloat.exe tests/check-qint.exe tests/check-qstring.exe tests/check-qlist.exe tests/check-qnull.exe tests/check-qjson.exe tests/test-qobject-output-visitor.exe tests/test-clone-visitor.exe tests/test-qobject-input-visitor.exe tests/test-qmp-commands.exe tests/test-string-input-visitor.exe tests/test-string-output-visitor.exe tests/test-qmp-event.exe tests/test-opts-visitor.exe tests/test-coroutine.exe tests/test-visitor-serialization.exe tests/test-iov.exe tests/test-aio.exe tests/test-aio-multithread.exe tests/test-throttle.exe tests/test-thread-pool.exe tests/test-hbitmap.exe tests/test-blockjob.exe tests/test-blockjob-txn.exe tests/test-x86-cpuid.exe tests/test-xbzrle.exe tests/test-cutils.exe tests/test-shift128.exe tests/test-mul64.exe tests/test-int128.exe tests/rcutorture.exe tests/test-rcu-list.exe tests/test-qdist.exe tests/test-qht.exe tests/test-qht-par.exe tests/test-bitops.exe tests/test-bitcnt.exe tests/test-qdev-global-props.exe tests/check-qom-interface.exe tests/check-qom-proplist.exe tests/test-qemu-opts.exe tests/test-keyval.exe tests/test-write-threshold.exe tests/test-crypto-hash.exe tests/test-crypto-hmac.exe tests/test-crypto-cipher.exe tests/test-crypto-secret.exe tests/test-crypto-tlscredsx509.exe tests/test-crypto-tlssession.exe tests/test-timed-average.exe tests/test-io-task.exe tests/test-io-channel-socket.exe tests/test-io-channel-file.exe tests/test-io-channel-tls.exe tests/test-io-channel-command.exe tests/test-io-channel-buffer.exe tests/test-base64.exe tests/test-crypto-pbkdf.exe tests/test-crypto-ivgen.exe tests/test-crypto-afsplit.exe tests/test-crypto-xts.exe tests/test-crypto-block.exe tests/test-logging.exe tests/test-replication.exe tests/test-bufferiszero.exe tests/test-uuid.exe tests/ptimer-test.exe tests/test-qapi-util.exe tests/*.o
rm -rf tests/ac97-test.exe tests/ahci-test.exe tests/bios-tables-test.exe tests/boot-order-test.exe tests/boot-serial-test.exe tests/device-introspect-test.exe tests/display-vga-test.exe tests/drive_del-test.exe tests/ds1338-test.exe tests/e1000-test.exe tests/e1000e-test.exe tests/eepro100-test.exe tests/endianness-test.exe tests/es1370-test.exe tests/fdc-test.exe tests/fw_cfg-test.exe tests/hd-geo-test.exe tests/i440fx-test.exe tests/i82801b11-test.exe tests/ide-test.exe tests/intel-hda-test.exe tests/ioh3420-test.exe tests/ipmi-bt-test.exe tests/ipmi-kcs-test.exe tests/ipoctal232-test.exe tests/m25p80-test.exe tests/ne2000-test.exe tests/numa-test.exe tests/nvme-test.exe tests/pc-cpu-test.exe tests/pcnet-test.exe tests/pnv-xscom-test.exe tests/postcopy-test.exe tests/prom-env-test.exe tests/pvpanic-test.exe tests/pxe-test.exe tests/q35-test.exe tests/qmp-test.exe tests/qom-test.exe tests/rtas-test.exe tests/rtc-test.exe tests/rtl8139-test.exe tests/spapr-phb-test.exe tests/tco-test.exe tests/test-arm-mptimer.exe tests/test-filter-mirror.exe tests/test-filter-redirector.exe tests/test-hmp.exe tests/test-netfilter.exe tests/test-x86-cpuid-compat.exe tests/tmp105-test.exe tests/tpci200-test.exe tests/usb-hcd-ehci-test.exe tests/usb-hcd-ohci-test.exe tests/usb-hcd-uhci-test.exe tests/usb-hcd-xhci-test.exe tests/virtio-balloon-test.exe tests/virtio-blk-test.exe tests/virtio-console-test.exe tests/virtio-net-test.exe tests/virtio-rng-test.exe tests/virtio-scsi-test.exe tests/virtio-serial-test.exe tests/vmxnet3-test.exe tests/wdt_ib700-test.exe
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
rm -f *.msi
find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f qemu-ga qemu-img.exe qemu-io.exe qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f trace/generated-tracers-dtrace.dtrace*
rm -f trace/generated-tracers-dtrace.h*
rm -f qemu-version.h qemu-version.h-timestamp config-host.h config-host.h-timestamp qemu-options.def qemu-options.def-timestamp qmp-commands.h qmp-commands.h-timestamp qapi-types.h qapi-types.h-timestamp qapi-visit.h qapi-visit.h-timestamp qapi-event.h qapi-event.h-timestamp qmp-marshal.c qmp-marshal.c-timestamp qapi-types.c qapi-types.c-timestamp qapi-visit.c qapi-visit.c-timestamp qapi-event.c qapi-event.c-timestamp qmp-introspect.h qmp-introspect.h-timestamp qmp-introspect.c qmp-introspect.c-timestamp trace/generated-tcg-tracers.h trace/generated-tcg-tracers.h-timestamp trace/generated-helpers-wrappers.h trace/generated-helpers-wrappers.h-timestamp trace/generated-helpers.h trace/generated-helpers.h-timestamp trace/generated-helpers.c trace/generated-helpers.c-timestamp module_block.h module_block.h-timestamp trace-root.h trace-root.h-timestamp util/trace.h util/trace.h-timestamp crypto/trace.h crypto/trace.h-timestamp io/trace.h io/trace.h-timestamp migration/trace.h migration/trace.h-timestamp block/trace.h block/trace.h-timestamp backends/trace.h backends/trace.h-timestamp chardev/trace.h chardev/trace.h-timestamp hw/block/trace.h hw/block/trace.h-timestamp hw/block/dataplane/trace.h hw/block/dataplane/trace.h-timestamp hw/char/trace.h hw/char/trace.h-timestamp hw/intc/trace.h hw/intc/trace.h-timestamp hw/net/trace.h hw/net/trace.h-timestamp hw/virtio/trace.h hw/virtio/trace.h-timestamp hw/audio/trace.h hw/audio/trace.h-timestamp hw/misc/trace.h hw/misc/trace.h-timestamp hw/usb/trace.h hw/usb/trace.h-timestamp hw/scsi/trace.h hw/scsi/trace.h-timestamp hw/nvram/trace.h hw/nvram/trace.h-timestamp hw/display/trace.h hw/display/trace.h-timestamp hw/input/trace.h hw/input/trace.h-timestamp hw/timer/trace.h hw/timer/trace.h-timestamp hw/dma/trace.h hw/dma/trace.h-timestamp hw/sparc/trace.h hw/sparc/trace.h-timestamp hw/sd/trace.h hw/sd/trace.h-timestamp hw/isa/trace.h hw/isa/trace.h-timestamp hw/mem/trace.h hw/mem/trace.h-timestamp hw/i386/trace.h hw/i386/trace.h-timestamp hw/i386/xen/trace.h hw/i386/xen/trace.h-timestamp hw/9pfs/trace.h hw/9pfs/trace.h-timestamp hw/ppc/trace.h hw/ppc/trace.h-timestamp hw/pci/trace.h hw/pci/trace.h-timestamp hw/s390x/trace.h hw/s390x/trace.h-timestamp hw/vfio/trace.h hw/vfio/trace.h-timestamp hw/acpi/trace.h hw/acpi/trace.h-timestamp hw/arm/trace.h hw/arm/trace.h-timestamp hw/alpha/trace.h hw/alpha/trace.h-timestamp hw/xen/trace.h hw/xen/trace.h-timestamp ui/trace.h ui/trace.h-timestamp audio/trace.h audio/trace.h-timestamp net/trace.h net/trace.h-timestamp target/arm/trace.h target/arm/trace.h-timestamp target/i386/trace.h target/i386/trace.h-timestamp target/mips/trace.h target/mips/trace.h-timestamp target/sparc/trace.h target/sparc/trace.h-timestamp target/s390x/trace.h target/s390x/trace.h-timestamp target/ppc/trace.h target/ppc/trace.h-timestamp qom/trace.h qom/trace.h-timestamp linux-user/trace.h linux-user/trace.h-timestamp qapi/trace.h qapi/trace.h-timestamp trace-root.c trace-root.c-timestamp util/trace.c util/trace.c-timestamp crypto/trace.c crypto/trace.c-timestamp io/trace.c io/trace.c-timestamp migration/trace.c migration/trace.c-timestamp block/trace.c block/trace.c-timestamp backends/trace.c backends/trace.c-timestamp chardev/trace.c chardev/trace.c-timestamp hw/block/trace.c hw/block/trace.c-timestamp hw/block/dataplane/trace.c hw/block/dataplane/trace.c-timestamp hw/char/trace.c hw/char/trace.c-timestamp hw/intc/trace.c hw/intc/trace.c-timestamp hw/net/trace.c hw/net/trace.c-timestamp hw/virtio/trace.c hw/virtio/trace.c-timestamp hw/audio/trace.c hw/audio/trace.c-timestamp hw/misc/trace.c hw/misc/trace.c-timestamp hw/usb/trace.c hw/usb/trace.c-timestamp hw/scsi/trace.c hw/scsi/trace.c-timestamp hw/nvram/trace.c hw/nvram/trace.c-timestamp hw/display/trace.c hw/display/trace.c-timestamp hw/input/trace.c hw/input/trace.c-timestamp hw/timer/trace.c hw/timer/trace.c-timestamp hw/dma/trace.c hw/dma/trace.c-timestamp hw/sparc/trace.c hw/sparc/trace.c-timestamp hw/sd/trace.c hw/sd/trace.c-timestamp hw/isa/trace.c hw/isa/trace.c-timestamp hw/mem/trace.c hw/mem/trace.c-timestamp hw/i386/trace.c hw/i386/trace.c-timestamp hw/i386/xen/trace.c hw/i386/xen/trace.c-timestamp hw/9pfs/trace.c hw/9pfs/trace.c-timestamp hw/ppc/trace.c hw/ppc/trace.c-timestamp hw/pci/trace.c hw/pci/trace.c-timestamp hw/s390x/trace.c hw/s390x/trace.c-timestamp hw/vfio/trace.c hw/vfio/trace.c-timestamp hw/acpi/trace.c hw/acpi/trace.c-timestamp hw/arm/trace.c hw/arm/trace.c-timestamp hw/alpha/trace.c hw/alpha/trace.c-timestamp hw/xen/trace.c hw/xen/trace.c-timestamp ui/trace.c ui/trace.c-timestamp audio/trace.c audio/trace.c-timestamp net/trace.c net/trace.c-timestamp target/arm/trace.c target/arm/trace.c-timestamp target/i386/trace.c target/i386/trace.c-timestamp target/mips/trace.c target/mips/trace.c-timestamp target/sparc/trace.c target/sparc/trace.c-timestamp target/s390x/trace.c target/s390x/trace.c-timestamp target/ppc/trace.c target/ppc/trace.c-timestamp qom/trace.c qom/trace.c-timestamp linux-user/trace.c linux-user/trace.c-timestamp qapi/trace.c qapi/trace.c-timestamp /var/tmp/qemu-build/trace-events-all /var/tmp/qemu-build/trace-events-all-timestamp tests/test-qapi-types.h tests/test-qapi-types.h-timestamp tests/test-qapi-visit.h tests/test-qapi-visit.h-timestamp tests/test-qmp-commands.h tests/test-qmp-commands.h-timestamp tests/test-qapi-event.h tests/test-qapi-event.h-timestamp tests/test-qmp-introspect.h tests/test-qmp-introspect.h-timestamp
rm -rf qapi-generated
rm -rf qga/qapi-generated
for d in x86_64-softmmu aarch64-softmmu pc-bios/optionrom; do \
if test -d $d; then make -C $d clean || exit 1; fi; \
rm -f $d/qemu-options.def; \
done
make[1]: Entering directory '/var/tmp/qemu-build/x86_64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-x86_64.exe qemu-system-x86_64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/x86_64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/aarch64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-aarch64.exe qemu-system-aarch64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/aarch64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f *.timestamp
rm -f *.o *.d *.raw *.img *.bin *~
make[1]: Leaving directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f x86_64-softmmu/config-devices.mak aarch64-softmmu/config-devices.mak config-all-devices.mak
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install --cross-prefix=i686-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install
binary directory /var/tmp/qemu-build/install
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler i686-w64-mingw32-gcc
Host C compiler cc
C++ compiler i686-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -m32 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m32 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU i386
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled yes
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
pixman system
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN aarch64-softmmu/config-devices.mak.tmp
GEN qemu-options.def
GEN qapi-types.h
GEN qmp-commands.h
GEN qapi-visit.h
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qapi-event.h
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
GEN qmp-marshal.c
GEN qapi-types.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
GEN qapi-visit.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
GEN qapi-event.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
GEN qmp-introspect.h
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
GEN qmp-introspect.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
GEN trace/generated-helpers.h
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
GEN trace/generated-helpers.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
GEN module_block.h
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
GEN tests/test-qapi-event.h
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
GEN tests/test-qmp-introspect.h
GEN trace-root.h
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
GEN util/trace.h
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
GEN crypto/trace.h
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
GEN io/trace.h
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
GEN chardev/trace.h
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
GEN hw/block/trace.h
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
GEN hw/block/dataplane/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
GEN hw/char/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
GEN hw/intc/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
GEN hw/net/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
GEN hw/virtio/trace.h
DEP /tmp/qemu-test/src/dtc/util.c
GEN hw/audio/trace.h
GEN hw/misc/trace.h
DEP /tmp/qemu-test/src/dtc/fdtput.c
GEN hw/usb/trace.h
DEP /tmp/qemu-test/src/dtc/fdtget.c
GEN hw/scsi/trace.h
DEP /tmp/qemu-test/src/dtc/fdtdump.c
DEP convert-dtsv0-lexer.lex.c
GEN hw/nvram/trace.h
DEP /tmp/qemu-test/src/dtc/srcpos.c
GEN hw/display/trace.h
DEP dtc-parser.tab.c
GEN hw/input/trace.h
DEP dtc-lexer.lex.c
GEN hw/timer/trace.h
DEP /tmp/qemu-test/src/dtc/treesource.c
GEN hw/dma/trace.h
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
GEN hw/sparc/trace.h
DEP /tmp/qemu-test/src/dtc/flattree.c
GEN hw/sd/trace.h
GEN hw/isa/trace.h
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN trace-root.c
GEN qapi/trace.h
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN qom/trace.c
GEN target/ppc/trace.c
GEN linux-user/trace.c
GEN config-all-devices.mak
GEN qapi/trace.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_overlay.o
CC libfdt/fdt_addresses.o
AR libfdt/libfdt.a
i686-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
RC version.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qga/qapi-generated/qga-qmp-commands.h
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qint.o
CC qobject/qlist.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/simple.o
CC trace/qmp.o
CC trace/control.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/bufferiszero.o
CC util/qemu-timer-common.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/event_notifier-win32.o
CC util/oslib-win32.o
CC util/qemu-thread-win32.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/acl.o
CC util/fifo8.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/notify.o
CC util/uri.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC backends/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC stubs/arch-query-cpu-def.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
GEN qemu-img-cmds.h
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-cluster.o
CC block/qcow2-refcount.o
CC block/qcow2-cache.o
CC block/qcow2-snapshot.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/null.o
CC block/win32-aio.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC block/curl.o
CC block/ssh.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/afsplit.o
CC crypto/ivgen-plain64.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/xts.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/dns-resolver.o
CC io/channel-util.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
CC blockdev.o
CC qemu-io.o
CC blockdev-nbd.o
CC qdev-monitor.o
CC device-hotplug.o
CC iothread.o
CC os-win32.o
CC accel.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC qmp-marshal.o
CC device_tree.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/dsoundaudio.o
CC audio/sdlaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC disas/arm.o
CC chardev/testdev.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/fmopl.o
CC hw/audio/ac97.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gus.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/adlib.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/wm8750.o
CC hw/audio/pcspk.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/onenand.o
CC hw/block/ecc.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/virtio-console.o
CC hw/char/serial-pci.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/irq.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/hotplug.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/platform-bus.o
CC hw/core/qdev-properties-system.o
CC hw/core/or-irq.o
CC hw/core/register.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/vga-isa.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/dma/pl330.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/isa.o
CC hw/ide/pci.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259.o
CC hw/intc/imx_avic.o
CC hw/intc/i8259_common.o
CC hw/intc/realview_gic.o
CC hw/intc/pl190.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/isa/isa-bus.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/pc-testdev.o
CC hw/misc/sga.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/net/ne2000.o
CC hw/misc/arm11scu.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/rtl8139.o
CC hw/net/e1000e_core.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/vmxnet3.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/stellaris_enet.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/net/rocker/rocker_desc.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/q35.o
CC hw/pci-host/piix.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/pci_host.o
CC hw/pci/slotid_cap.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/mptsas.o
CC hw/scsi/esp.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/armv7m_systick.o
CC hw/timer/i8254.o
CC hw/timer/i8254_common.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/usb/core.o
CC hw/tpm/tpm_tis.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_ib700.o
CC migration/migration.o
CC hw/watchdog/wdt_aspeed.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate-types.o
CC migration/vmstate.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/checksum.o
CC net/util.o
CC net/queue.o
CC net/hub.o
CC net/dump.o
CC net/socket.o
CC net/slirp.o
CC net/eth.o
CC net/filter.o
CC net/filter-buffer.o
CC net/colo-compare.o
CC net/filter-mirror.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC qom/cpu.o
CC replay/replay.o
CC net/tap-win32.o
CC replay/replay-events.o
CC replay/replay-internal.o
CC replay/replay-input.o
CC replay/replay-time.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/if.o
CC slirp/cksum.o
CC slirp/ip6_icmp.o
CC slirp/ip_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/slirp.o
CC slirp/dhcpv6.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/socket.o
CC slirp/sbuf.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC ui/keymaps.o
CC slirp/ncsi.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/gtk.o
CC chardev/char.o
CC chardev/char-console.o
CC ui/vnc-ws.o
CC chardev/char-fe.o
CC ui/vnc-jobs.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-pipe.o
CC chardev/char-file.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-udp.o
CC chardev/char-socket.o
CC chardev/char-win.o
CC chardev/char-stdio.o
CC chardev/char-win-stdio.o
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-win32.o
CC qga/channel-win32.o
CC qga/service-win32.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/vss-win32.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
AR libqemustub.a
CC qemu-img.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
AS optionrom/kvmvapic.o
CC optionrom/linuxboot_dma.o
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/kvmvapic.img
BUILD optionrom/kvmvapic.raw
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/multiboot.bin
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot.bin
LINK qemu-io.exe
LINK qemu-ga.exe
LINK qemu-img.exe
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/config-target.h
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands.h
CC aarch64-softmmu/translate-all.o
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/cpu-exec.o
CC aarch64-softmmu/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/translate-common.o
CC aarch64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg-runtime.o
CC aarch64-softmmu/disas.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/cpu-exec.o
CC aarch64-softmmu/kvm-stub.o
CC x86_64-softmmu/translate-common.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/disas.o
CC x86_64-softmmu/tcg-runtime.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/kvm-stub.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/monitor.o
CC x86_64-softmmu/gdbstub.o
CC aarch64-softmmu/arch_init.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/bootdevice.o
CC aarch64-softmmu/monitor.o
CC x86_64-softmmu/memory.o
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/balloon.o
CC x86_64-softmmu/cputlb.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/memory_mapping.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/bootdevice.o
CC aarch64-softmmu/memory.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/migration/ram.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/cputlb.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/hw/misc/edu.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC aarch64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC x86_64-softmmu/target/i386/monitor.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC x86_64-softmmu/target/i386/kvm-stub.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC x86_64-softmmu/target/i386/hax-all.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/target/i386/hax-mem.o
CC x86_64-softmmu/target/i386/hax-windows.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
LINK x86_64-softmmu/qemu-system-x86_64w.exe
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64w.exe
GEN aarch64-softmmu/qemu-system-aarch64.exe
GEN x86_64-softmmu/qemu-system-x86_64.exe
rm -f *.timestamp
make -C tests/tcg clean
make[1]: Entering directory '/var/tmp/qemu-build/tests/tcg'
rm -f *.timestamp
rm -f *~ *.o test-i386.out test-i386.ref \
test-x86_64.log test-x86_64.ref qruncom test_path hello-i386 linux-test testthread sha1-i386 test-i386 test-i386-fprem test-mmap
make[1]: Leaving directory '/var/tmp/qemu-build/tests/tcg'
rm -rf tests/check-qdict.exe tests/test-char.exe tests/check-qfloat.exe tests/check-qint.exe tests/check-qstring.exe tests/check-qlist.exe tests/check-qnull.exe tests/check-qjson.exe tests/test-qobject-output-visitor.exe tests/test-clone-visitor.exe tests/test-qobject-input-visitor.exe tests/test-qmp-commands.exe tests/test-string-input-visitor.exe tests/test-string-output-visitor.exe tests/test-qmp-event.exe tests/test-opts-visitor.exe tests/test-coroutine.exe tests/test-visitor-serialization.exe tests/test-iov.exe tests/test-aio.exe tests/test-aio-multithread.exe tests/test-throttle.exe tests/test-thread-pool.exe tests/test-hbitmap.exe tests/test-blockjob.exe tests/test-blockjob-txn.exe tests/test-x86-cpuid.exe tests/test-xbzrle.exe tests/test-cutils.exe tests/test-shift128.exe tests/test-mul64.exe tests/test-int128.exe tests/rcutorture.exe tests/test-rcu-list.exe tests/test-qdist.exe tests/test-qht.exe tests/test-qht-par.exe tests/test-bitops.exe tests/test-bitcnt.exe tests/test-qdev-global-props.exe tests/check-qom-interface.exe tests/check-qom-proplist.exe tests/test-qemu-opts.exe tests/test-keyval.exe tests/test-write-threshold.exe tests/test-crypto-hash.exe tests/test-crypto-hmac.exe tests/test-crypto-cipher.exe tests/test-crypto-secret.exe tests/test-crypto-tlscredsx509.exe tests/test-crypto-tlssession.exe tests/test-timed-average.exe tests/test-io-task.exe tests/test-io-channel-socket.exe tests/test-io-channel-file.exe tests/test-io-channel-tls.exe tests/test-io-channel-command.exe tests/test-io-channel-buffer.exe tests/test-base64.exe tests/test-crypto-pbkdf.exe tests/test-crypto-ivgen.exe tests/test-crypto-afsplit.exe tests/test-crypto-xts.exe tests/test-crypto-block.exe tests/test-logging.exe tests/test-replication.exe tests/test-bufferiszero.exe tests/test-uuid.exe tests/ptimer-test.exe tests/test-qapi-util.exe tests/*.o
rm -rf tests/ac97-test.exe tests/ahci-test.exe tests/bios-tables-test.exe tests/boot-order-test.exe tests/boot-serial-test.exe tests/device-introspect-test.exe tests/display-vga-test.exe tests/drive_del-test.exe tests/ds1338-test.exe tests/e1000-test.exe tests/e1000e-test.exe tests/eepro100-test.exe tests/endianness-test.exe tests/es1370-test.exe tests/fdc-test.exe tests/fw_cfg-test.exe tests/hd-geo-test.exe tests/i440fx-test.exe tests/i82801b11-test.exe tests/ide-test.exe tests/intel-hda-test.exe tests/ioh3420-test.exe tests/ipmi-bt-test.exe tests/ipmi-kcs-test.exe tests/ipoctal232-test.exe tests/m25p80-test.exe tests/ne2000-test.exe tests/numa-test.exe tests/nvme-test.exe tests/pc-cpu-test.exe tests/pcnet-test.exe tests/pnv-xscom-test.exe tests/postcopy-test.exe tests/prom-env-test.exe tests/pvpanic-test.exe tests/pxe-test.exe tests/q35-test.exe tests/qmp-test.exe tests/qom-test.exe tests/rtas-test.exe tests/rtc-test.exe tests/rtl8139-test.exe tests/spapr-phb-test.exe tests/tco-test.exe tests/test-arm-mptimer.exe tests/test-filter-mirror.exe tests/test-filter-redirector.exe tests/test-hmp.exe tests/test-netfilter.exe tests/test-x86-cpuid-compat.exe tests/tmp105-test.exe tests/tpci200-test.exe tests/usb-hcd-ehci-test.exe tests/usb-hcd-ohci-test.exe tests/usb-hcd-uhci-test.exe tests/usb-hcd-xhci-test.exe tests/virtio-balloon-test.exe tests/virtio-blk-test.exe tests/virtio-console-test.exe tests/virtio-net-test.exe tests/virtio-rng-test.exe tests/virtio-scsi-test.exe tests/virtio-serial-test.exe tests/vmxnet3-test.exe tests/wdt_ib700-test.exe
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
rm -f *.msi
find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f qemu-ga qemu-img.exe qemu-io.exe qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f trace/generated-tracers-dtrace.dtrace*
rm -f trace/generated-tracers-dtrace.h*
rm -f qemu-version.h qemu-version.h-timestamp config-host.h config-host.h-timestamp qemu-options.def qemu-options.def-timestamp qmp-commands.h qmp-commands.h-timestamp qapi-types.h qapi-types.h-timestamp qapi-visit.h qapi-visit.h-timestamp qapi-event.h qapi-event.h-timestamp qmp-marshal.c qmp-marshal.c-timestamp qapi-types.c qapi-types.c-timestamp qapi-visit.c qapi-visit.c-timestamp qapi-event.c qapi-event.c-timestamp qmp-introspect.h qmp-introspect.h-timestamp qmp-introspect.c qmp-introspect.c-timestamp trace/generated-tcg-tracers.h trace/generated-tcg-tracers.h-timestamp trace/generated-helpers-wrappers.h trace/generated-helpers-wrappers.h-timestamp trace/generated-helpers.h trace/generated-helpers.h-timestamp trace/generated-helpers.c trace/generated-helpers.c-timestamp module_block.h module_block.h-timestamp trace-root.h trace-root.h-timestamp util/trace.h util/trace.h-timestamp crypto/trace.h crypto/trace.h-timestamp io/trace.h io/trace.h-timestamp migration/trace.h migration/trace.h-timestamp block/trace.h block/trace.h-timestamp backends/trace.h backends/trace.h-timestamp chardev/trace.h chardev/trace.h-timestamp hw/block/trace.h hw/block/trace.h-timestamp hw/block/dataplane/trace.h hw/block/dataplane/trace.h-timestamp hw/char/trace.h hw/char/trace.h-timestamp hw/intc/trace.h hw/intc/trace.h-timestamp hw/net/trace.h hw/net/trace.h-timestamp hw/virtio/trace.h hw/virtio/trace.h-timestamp hw/audio/trace.h hw/audio/trace.h-timestamp hw/misc/trace.h hw/misc/trace.h-timestamp hw/usb/trace.h hw/usb/trace.h-timestamp hw/scsi/trace.h hw/scsi/trace.h-timestamp hw/nvram/trace.h hw/nvram/trace.h-timestamp hw/display/trace.h hw/display/trace.h-timestamp hw/input/trace.h hw/input/trace.h-timestamp hw/timer/trace.h hw/timer/trace.h-timestamp hw/dma/trace.h hw/dma/trace.h-timestamp hw/sparc/trace.h hw/sparc/trace.h-timestamp hw/sd/trace.h hw/sd/trace.h-timestamp hw/isa/trace.h hw/isa/trace.h-timestamp hw/mem/trace.h hw/mem/trace.h-timestamp hw/i386/trace.h hw/i386/trace.h-timestamp hw/i386/xen/trace.h hw/i386/xen/trace.h-timestamp hw/9pfs/trace.h hw/9pfs/trace.h-timestamp hw/ppc/trace.h hw/ppc/trace.h-timestamp hw/pci/trace.h hw/pci/trace.h-timestamp hw/s390x/trace.h hw/s390x/trace.h-timestamp hw/vfio/trace.h hw/vfio/trace.h-timestamp hw/acpi/trace.h hw/acpi/trace.h-timestamp hw/arm/trace.h hw/arm/trace.h-timestamp hw/alpha/trace.h hw/alpha/trace.h-timestamp hw/xen/trace.h hw/xen/trace.h-timestamp ui/trace.h ui/trace.h-timestamp audio/trace.h audio/trace.h-timestamp net/trace.h net/trace.h-timestamp target/arm/trace.h target/arm/trace.h-timestamp target/i386/trace.h target/i386/trace.h-timestamp target/mips/trace.h target/mips/trace.h-timestamp target/sparc/trace.h target/sparc/trace.h-timestamp target/s390x/trace.h target/s390x/trace.h-timestamp target/ppc/trace.h target/ppc/trace.h-timestamp qom/trace.h qom/trace.h-timestamp linux-user/trace.h linux-user/trace.h-timestamp qapi/trace.h qapi/trace.h-timestamp trace-root.c trace-root.c-timestamp util/trace.c util/trace.c-timestamp crypto/trace.c crypto/trace.c-timestamp io/trace.c io/trace.c-timestamp migration/trace.c migration/trace.c-timestamp block/trace.c block/trace.c-timestamp backends/trace.c backends/trace.c-timestamp chardev/trace.c chardev/trace.c-timestamp hw/block/trace.c hw/block/trace.c-timestamp hw/block/dataplane/trace.c hw/block/dataplane/trace.c-timestamp hw/char/trace.c hw/char/trace.c-timestamp hw/intc/trace.c hw/intc/trace.c-timestamp hw/net/trace.c hw/net/trace.c-timestamp hw/virtio/trace.c hw/virtio/trace.c-timestamp hw/audio/trace.c hw/audio/trace.c-timestamp hw/misc/trace.c hw/misc/trace.c-timestamp hw/usb/trace.c hw/usb/trace.c-timestamp hw/scsi/trace.c hw/scsi/trace.c-timestamp hw/nvram/trace.c hw/nvram/trace.c-timestamp hw/display/trace.c hw/display/trace.c-timestamp hw/input/trace.c hw/input/trace.c-timestamp hw/timer/trace.c hw/timer/trace.c-timestamp hw/dma/trace.c hw/dma/trace.c-timestamp hw/sparc/trace.c hw/sparc/trace.c-timestamp hw/sd/trace.c hw/sd/trace.c-timestamp hw/isa/trace.c hw/isa/trace.c-timestamp hw/mem/trace.c hw/mem/trace.c-timestamp hw/i386/trace.c hw/i386/trace.c-timestamp hw/i386/xen/trace.c hw/i386/xen/trace.c-timestamp hw/9pfs/trace.c hw/9pfs/trace.c-timestamp hw/ppc/trace.c hw/ppc/trace.c-timestamp hw/pci/trace.c hw/pci/trace.c-timestamp hw/s390x/trace.c hw/s390x/trace.c-timestamp hw/vfio/trace.c hw/vfio/trace.c-timestamp hw/acpi/trace.c hw/acpi/trace.c-timestamp hw/arm/trace.c hw/arm/trace.c-timestamp hw/alpha/trace.c hw/alpha/trace.c-timestamp hw/xen/trace.c hw/xen/trace.c-timestamp ui/trace.c ui/trace.c-timestamp audio/trace.c audio/trace.c-timestamp net/trace.c net/trace.c-timestamp target/arm/trace.c target/arm/trace.c-timestamp target/i386/trace.c target/i386/trace.c-timestamp target/mips/trace.c target/mips/trace.c-timestamp target/sparc/trace.c target/sparc/trace.c-timestamp target/s390x/trace.c target/s390x/trace.c-timestamp target/ppc/trace.c target/ppc/trace.c-timestamp qom/trace.c qom/trace.c-timestamp linux-user/trace.c linux-user/trace.c-timestamp qapi/trace.c qapi/trace.c-timestamp /var/tmp/qemu-build/trace-events-all /var/tmp/qemu-build/trace-events-all-timestamp tests/test-qapi-types.h tests/test-qapi-types.h-timestamp tests/test-qapi-visit.h tests/test-qapi-visit.h-timestamp tests/test-qmp-commands.h tests/test-qmp-commands.h-timestamp tests/test-qapi-event.h tests/test-qapi-event.h-timestamp tests/test-qmp-introspect.h tests/test-qmp-introspect.h-timestamp
rm -rf qapi-generated
rm -rf qga/qapi-generated
for d in x86_64-softmmu aarch64-softmmu pc-bios/optionrom; do \
if test -d $d; then make -C $d clean || exit 1; fi; \
rm -f $d/qemu-options.def; \
done
make[1]: Entering directory '/var/tmp/qemu-build/x86_64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-x86_64.exe qemu-system-x86_64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/x86_64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/aarch64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-aarch64.exe qemu-system-aarch64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/aarch64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f *.timestamp
rm -f *.o *.d *.raw *.img *.bin *~
make[1]: Leaving directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f x86_64-softmmu/config-devices.mak aarch64-softmmu/config-devices.mak config-all-devices.mak
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-mzb938u9/src'
real 8m17.404s
user 0m5.382s
sys 0m1.829s
BUILD min-glib
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-mzb938u9/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-build in qemu:min-glib
Environment variables:
HOSTNAME=fcdf9d7e215a
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
/tmp/qemu-test/src/configure: line 4683: c++: command not found
No C++ compiler available; disabling C++ specific optional code
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install/share/qemu
binary directory /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install/etc
local state directory /var/tmp/qemu-build/install/var
Manual directory /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
RDMA support no
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
GEN aarch64-softmmu/config-devices.mak.tmp
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qemu-options.def
GEN qapi-visit.h
GEN qapi-types.h
GEN qmp-commands.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
CHK version_gen.h
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
LEX dtc-lexer.lex.c
BISON dtc-parser.tab.c
UPD version_gen.h
make[1]: flex: Command not found
make[1]: bison: Command not found
DEP /tmp/qemu-test/src/dtc/util.c
LEX convert-dtsv0-lexer.lex.c
BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
CC libfdt/fdt_ro.o
CC libfdt/fdt.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-clone-visitor.o
CC qapi/qapi-util.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qnull.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qjson.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/control.o
CC util/osdep.o
CC trace/qmp.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/aiocb.o
CC util/lockcnt.o
CC util/thread-pool.o
CC util/async.o
CC util/main-loop.o
CC util/qemu-timer.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitops.o
CC util/hbitmap.o
CC util/bitmap.o
CC util/fifo8.o
CC util/error.o
CC util/acl.o
CC util/qemu-error.o
CC util/iov.o
CC util/id.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/throttle.o
CC util/uuid.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC backends/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/alpha/trace.o
CC hw/arm/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC target/arm/trace.o
CC net/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC qapi/trace.o
CC linux-user/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-get-monitor-def.o
CC stubs/target-monitor-defs.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkreplay.o
CC block/blkverify.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/backup.o
CC block/crypto.o
CC block/replication.o
CC block/write-threshold.o
CC nbd/server.o
CC nbd/client.o
CC crypto/init.o
CC nbd/common.o
CC crypto/hmac-glib.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-luks.o
CC crypto/block-qcow.o
CC io/channel-buffer.o
CC io/channel.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-tls.o
CC io/channel-socket.o
CC io/channel-watch.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/channel-websock.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC qdev-monitor.o
CC iothread.o
CC device-hotplug.o
CC os-posix.o
CC accel.o
CC bt-host.o
CC dma-helpers.o
CC vl.o
CC bt-vhci.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC fsdev/qemu-fsdev-opts.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/cs4231a.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi02.o
CC hw/block/pflash_cfi01.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/hci.o
CC hw/bt/sdp.o
CC hw/bt/hci-csr.o
CC hw/bt/hid.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev-properties.o
CC hw/core/qdev.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/ipack/ipack.o
CC hw/intc/intc.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/sga.o
CC hw/misc/debugexit.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/net/ne2000.o
CC hw/misc/arm11scu.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/cadence_gem.o
CC hw/net/imx_fec.o
CC hw/net/stellaris_enet.o
In file included from /tmp/qemu-test/src/hw/net/vmxnet3.c:30:
/tmp/qemu-test/src/include/migration/register.h:18: error: redefinition of typedef ‘LoadStateHandler’
/tmp/qemu-test/src/include/migration/vmstate.h:32: note: previous declaration of ‘LoadStateHandler’ was here
make: *** [hw/net/vmxnet3.o] Error 1
make: *** Waiting for unfinished jobs....
tests/docker/Makefile.include:118: recipe for target 'docker-run' failed
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-mzb938u9/src'
tests/docker/Makefile.include:149: recipe for target 'docker-run-test-build@min-glib' failed
make: *** [docker-run-test-build@min-glib] Error 2
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (7 preceding siblings ...)
2017-06-14 18:36 ` [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request no-reply
@ 2017-06-23 10:54 ` Peter Maydell
2017-06-23 12:34 ` KONRAD Frederic
2017-06-27 15:21 ` Edgar E. Iglesias
2017-07-17 16:33 ` Peter Maydell
9 siblings, 2 replies; 39+ messages in thread
From: Peter Maydell @ 2017-06-23 10:54 UTC (permalink / raw)
To: Edgar E. Iglesias
Cc: QEMU Developers, KONRAD Frédéric, Paolo Bonzini,
Richard Henderson, Edgar Iglesias
On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>
> Hi,
>
> Paolo suggested offline that we send a pull request for this series.
> Here it is, I've run it through my testsuite + tested the LQSPI testcase
> on Zynq.
>
> Cheers,
> Edgar
>
> The following changes since commit 3f0602927b120a480b35dcf58cf6f95435b3ae91:
>
> Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170613' into staging (2017-06-13 15:49:07 +0100)
>
> are available in the git repository at:
>
> git@github.com:edgarigl/qemu.git tags/edgar/mmio-exec.for-upstream
>
> for you to fetch changes up to 63ef40dd6bc6cfdae5fa67ccac1cb11e7a5161b0:
>
> xilinx_spips: allow mmio execution (2017-06-14 17:31:08 +0200)
>
> ----------------------------------------------------------------
> mmio-exec.for-upstream
>
> ----------------------------------------------------------------
> KONRAD Frederic (7):
> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> cputlb: move get_page_addr_code
> cputlb: fix the way get_page_addr_code fills the tlb
> qdev: add MemoryRegion property
> introduce mmio_interface
> exec: allow to get a pointer for some mmio memory region
> xilinx_spips: allow mmio execution
Hi Edgar -- since these patches have come via your tree they should
have your signed-off-by line, not just Fred's. They also seem to
still have all the V1->V2->V3 revision notes in the commit logs.
I'd be happier with a reviewed-by: from somebody for the exec:
patch, if possible...
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-06-23 10:54 ` Peter Maydell
@ 2017-06-23 12:34 ` KONRAD Frederic
2017-06-27 15:21 ` Edgar E. Iglesias
1 sibling, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-06-23 12:34 UTC (permalink / raw)
To: Peter Maydell, Edgar E. Iglesias
Cc: Edgar Iglesias, Paolo Bonzini, Richard Henderson,
QEMU Developers, KONRAD Frédéric
Le 06/23/2017 à 12:54 PM, Peter Maydell a écrit :
> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
>> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>>
>> Hi,
>>
>> Paolo suggested offline that we send a pull request for this series.
>> Here it is, I've run it through my testsuite + tested the LQSPI testcase
>> on Zynq.
>>
>> Cheers,
>> Edgar
>>
>> The following changes since commit 3f0602927b120a480b35dcf58cf6f95435b3ae91:
>>
>> Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170613' into staging (2017-06-13 15:49:07 +0100)
>>
>> are available in the git repository at:
>>
>> git@github.com:edgarigl/qemu.git tags/edgar/mmio-exec.for-upstream
>>
>> for you to fetch changes up to 63ef40dd6bc6cfdae5fa67ccac1cb11e7a5161b0:
>>
>> xilinx_spips: allow mmio execution (2017-06-14 17:31:08 +0200)
>>
>> ----------------------------------------------------------------
>> mmio-exec.for-upstream
>>
>> ----------------------------------------------------------------
>> KONRAD Frederic (7):
>> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
>> cputlb: move get_page_addr_code
>> cputlb: fix the way get_page_addr_code fills the tlb
>> qdev: add MemoryRegion property
>> introduce mmio_interface
>> exec: allow to get a pointer for some mmio memory region
>> xilinx_spips: allow mmio execution
>
> Hi Edgar -- since these patches have come via your tree they should
> have your signed-off-by line, not just Fred's. They also seem to
> still have all the V1->V2->V3 revision notes in the commit logs.
>
> I'd be happier with a reviewed-by: from somebody for the exec:
> patch, if possible...
>
> thanks
> -- PMM
>
Hi Peter,
Actually if I remember right Edgar reviewed them but put the
review-by tag in the cover letter.
Thanks,
Fred
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-06-23 10:54 ` Peter Maydell
2017-06-23 12:34 ` KONRAD Frederic
@ 2017-06-27 15:21 ` Edgar E. Iglesias
1 sibling, 0 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-06-27 15:21 UTC (permalink / raw)
To: Peter Maydell
Cc: QEMU Developers, KONRAD Frédéric, Paolo Bonzini,
Richard Henderson, Edgar Iglesias
On Fri, Jun 23, 2017 at 11:54:52AM +0100, Peter Maydell wrote:
> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
> > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> >
> > Hi,
> >
> > Paolo suggested offline that we send a pull request for this series.
> > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > on Zynq.
> >
> > Cheers,
> > Edgar
> >
> > The following changes since commit 3f0602927b120a480b35dcf58cf6f95435b3ae91:
> >
> > Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170613' into staging (2017-06-13 15:49:07 +0100)
> >
> > are available in the git repository at:
> >
> > git@github.com:edgarigl/qemu.git tags/edgar/mmio-exec.for-upstream
> >
> > for you to fetch changes up to 63ef40dd6bc6cfdae5fa67ccac1cb11e7a5161b0:
> >
> > xilinx_spips: allow mmio execution (2017-06-14 17:31:08 +0200)
> >
> > ----------------------------------------------------------------
> > mmio-exec.for-upstream
> >
> > ----------------------------------------------------------------
> > KONRAD Frederic (7):
> > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > cputlb: move get_page_addr_code
> > cputlb: fix the way get_page_addr_code fills the tlb
> > qdev: add MemoryRegion property
> > introduce mmio_interface
> > exec: allow to get a pointer for some mmio memory region
> > xilinx_spips: allow mmio execution
>
> Hi Edgar -- since these patches have come via your tree they should
> have your signed-off-by line, not just Fred's. They also seem to
> still have all the V1->V2->V3 revision notes in the commit logs.
OK thanks, I'll fix both things for v2.
>
> I'd be happier with a reviewed-by: from somebody for the exec:
> patch, if possible...
We must have lost mine. Anyway, I've had another review and it looks
good to me. Of course the more eyes the better...
I'll post a v2 in a moment.
Best regards,
Edgar
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
` (8 preceding siblings ...)
2017-06-23 10:54 ` Peter Maydell
@ 2017-07-17 16:33 ` Peter Maydell
2017-07-17 17:27 ` Edgar E. Iglesias
9 siblings, 1 reply; 39+ messages in thread
From: Peter Maydell @ 2017-07-17 16:33 UTC (permalink / raw)
To: Edgar E. Iglesias
Cc: QEMU Developers, Paolo Bonzini, Richard Henderson,
Edgar Iglesias, KONRAD Frederic, Dr. David Alan Gilbert
On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> Paolo suggested offline that we send a pull request for this series.
> Here it is, I've run it through my testsuite + tested the LQSPI testcase
> on Zynq.
> ----------------------------------------------------------------
> mmio-exec.for-upstream
>
> ----------------------------------------------------------------
> KONRAD Frederic (7):
> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> cputlb: move get_page_addr_code
> cputlb: fix the way get_page_addr_code fills the tlb
> qdev: add MemoryRegion property
> introduce mmio_interface
> exec: allow to get a pointer for some mmio memory region
> xilinx_spips: allow mmio execution
Hi Edgar -- can you or Fred explain how this code interacts with
VM migration? The mmio-interface device creates a RAM memory
region with memory_region_init_ram_ptr(), but it doesn't call
vmstate_register_ram(). On the other hand the core migration code
will try to migrate the contents of the RAMBlock anyway, just
without a name.
It's not clear to me how this works, and it would be nice to
get it clear so that we can make any necessary fixes before the
2.10 release hits and we lose the opportunity to make any
migration-compatibility-breaking changes.
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 16:33 ` Peter Maydell
@ 2017-07-17 17:27 ` Edgar E. Iglesias
2017-07-17 18:58 ` Dr. David Alan Gilbert
2017-07-18 7:34 ` KONRAD Frederic
0 siblings, 2 replies; 39+ messages in thread
From: Edgar E. Iglesias @ 2017-07-17 17:27 UTC (permalink / raw)
To: Peter Maydell
Cc: QEMU Developers, Paolo Bonzini, Richard Henderson,
KONRAD Frederic, Dr. David Alan Gilbert
On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
wrote:
> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
> wrote:
> > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > Paolo suggested offline that we send a pull request for this series.
> > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > on Zynq.
>
> > ----------------------------------------------------------------
> > mmio-exec.for-upstream
> >
> > ----------------------------------------------------------------
> > KONRAD Frederic (7):
> > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > cputlb: move get_page_addr_code
> > cputlb: fix the way get_page_addr_code fills the tlb
> > qdev: add MemoryRegion property
> > introduce mmio_interface
> > exec: allow to get a pointer for some mmio memory region
> > xilinx_spips: allow mmio execution
>
> Hi Edgar -- can you or Fred explain how this code interacts with
> VM migration? The mmio-interface device creates a RAM memory
> region with memory_region_init_ram_ptr(), but it doesn't call
> vmstate_register_ram(). On the other hand the core migration code
> will try to migrate the contents of the RAMBlock anyway, just
> without a name.
>
> It's not clear to me how this works, and it would be nice to
> get it clear so that we can make any necessary fixes before the
> 2.10 release hits and we lose the opportunity to make any
> migration-compatibility-breaking changes.
>
> thanks
> -- PMM
>
Hi Peter,
These temporary regions should be read-only and treated as temporary caches
AFAIU things.
I would say that they don't need to be migrated. After migration, the new
VM will recreate the ram areas from device backing.
Is there a way we can prevent migration of the RAMBlock?
Cheers,
Edgar
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 17:27 ` Edgar E. Iglesias
@ 2017-07-17 18:58 ` Dr. David Alan Gilbert
2017-07-17 19:57 ` Peter Maydell
2017-07-20 9:42 ` Peter Maydell
2017-07-18 7:34 ` KONRAD Frederic
1 sibling, 2 replies; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-17 18:58 UTC (permalink / raw)
To: Edgar E. Iglesias
Cc: Peter Maydell, QEMU Developers, Paolo Bonzini, Richard Henderson,
KONRAD Frederic, quintela
* Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
> On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
> wrote:
>
> > On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
> > wrote:
> > > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > > Paolo suggested offline that we send a pull request for this series.
> > > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > > on Zynq.
> >
> > > ----------------------------------------------------------------
> > > mmio-exec.for-upstream
> > >
> > > ----------------------------------------------------------------
> > > KONRAD Frederic (7):
> > > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > > cputlb: move get_page_addr_code
> > > cputlb: fix the way get_page_addr_code fills the tlb
> > > qdev: add MemoryRegion property
> > > introduce mmio_interface
> > > exec: allow to get a pointer for some mmio memory region
> > > xilinx_spips: allow mmio execution
> >
> > Hi Edgar -- can you or Fred explain how this code interacts with
> > VM migration? The mmio-interface device creates a RAM memory
> > region with memory_region_init_ram_ptr(), but it doesn't call
> > vmstate_register_ram(). On the other hand the core migration code
> > will try to migrate the contents of the RAMBlock anyway, just
> > without a name.
> >
> > It's not clear to me how this works, and it would be nice to
> > get it clear so that we can make any necessary fixes before the
> > 2.10 release hits and we lose the opportunity to make any
> > migration-compatibility-breaking changes.
> >
> > thanks
> > -- PMM
> >
>
> Hi Peter,
>
> These temporary regions should be read-only and treated as temporary caches
> AFAIU things.
> I would say that they don't need to be migrated. After migration, the new
> VM will recreate the ram areas from device backing.
>
> Is there a way we can prevent migration of the RAMBlock?
Not yet, I think we'd have to:
a) Add a flag to the RAMBlock
b) Set it/clear it on registration
c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
cases) with the RAMBLOCK_FOREACH_MIGRATABLE
e) Worry about the corner cases!
I've got a few worries about what happens when the kernel tries to
do dirty yncing - I'm not sure if we have to change anything on that
interface to skip those RAMBlocks.
Dave
> Cheers,
> Edgar
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 18:58 ` Dr. David Alan Gilbert
@ 2017-07-17 19:57 ` Peter Maydell
2017-07-18 14:53 ` Dr. David Alan Gilbert
2017-07-20 9:42 ` Peter Maydell
1 sibling, 1 reply; 39+ messages in thread
From: Peter Maydell @ 2017-07-17 19:57 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>> Is there a way we can prevent migration of the RAMBlock?
>
> Not yet, I think we'd have to:
> a) Add a flag to the RAMBlock
> b) Set it/clear it on registration
> c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> e) Worry about the corner cases!
>
> I've got a few worries about what happens when the kernel tries to
> do dirty yncing - I'm not sure if we have to change anything on that
> interface to skip those RAMBlocks.
Why would we need to skip those RAM blocks? We get correct
behaviour whether the memory is sync'd with the kernel
or not, because we're not going to migrate it anywhere.
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 17:27 ` Edgar E. Iglesias
2017-07-17 18:58 ` Dr. David Alan Gilbert
@ 2017-07-18 7:34 ` KONRAD Frederic
2017-07-19 12:29 ` Dr. David Alan Gilbert
1 sibling, 1 reply; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-18 7:34 UTC (permalink / raw)
To: Peter Maydell
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, Dr. David Alan Gilbert
On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
> On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
> wrote:
>
>> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
>> wrote:
>>> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>>> Paolo suggested offline that we send a pull request for this series.
>>> Here it is, I've run it through my testsuite + tested the LQSPI testcase
>>> on Zynq.
>>
>>> ----------------------------------------------------------------
>>> mmio-exec.for-upstream
>>>
>>> ----------------------------------------------------------------
>>> KONRAD Frederic (7):
>>> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
>>> cputlb: move get_page_addr_code
>>> cputlb: fix the way get_page_addr_code fills the tlb
>>> qdev: add MemoryRegion property
>>> introduce mmio_interface
>>> exec: allow to get a pointer for some mmio memory region
>>> xilinx_spips: allow mmio execution
>>
>> Hi Edgar -- can you or Fred explain how this code interacts with
>> VM migration? The mmio-interface device creates a RAM memory
>> region with memory_region_init_ram_ptr(), but it doesn't call
>> vmstate_register_ram(). On the other hand the core migration code
>> will try to migrate the contents of the RAMBlock anyway, just
>> without a name.
>>
>> It's not clear to me how this works, and it would be nice to
>> get it clear so that we can make any necessary fixes before the
>> 2.10 release hits and we lose the opportunity to make any
>> migration-compatibility-breaking changes.
>>
>> thanks
>> -- PMM
>>
>
> Hi Peter,
>
> These temporary regions should be read-only and treated as temporary caches
> AFAIU things.
> I would say that they don't need to be migrated. After migration, the new
> VM will recreate the ram areas from device backing.
>
> Is there a way we can prevent migration of the RAMBlock?
>
> Cheers,
> Edgar
>
Hi All,
Yes Edgar is right, they don't need to be migrated (as the old
Xilinx SPI cache).
And it will be the case for all the other stuff using this as
well.
Maybe we can simply drop the region before the migration?
Fred
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 19:57 ` Peter Maydell
@ 2017-07-18 14:53 ` Dr. David Alan Gilbert
0 siblings, 0 replies; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-18 14:53 UTC (permalink / raw)
To: Peter Maydell
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
* Peter Maydell (peter.maydell@linaro.org) wrote:
> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> > * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
> >> Is there a way we can prevent migration of the RAMBlock?
> >
> > Not yet, I think we'd have to:
> > a) Add a flag to the RAMBlock
> > b) Set it/clear it on registration
> > c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> > d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> > cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> > e) Worry about the corner cases!
> >
> > I've got a few worries about what happens when the kernel tries to
> > do dirty yncing - I'm not sure if we have to change anything on that
> > interface to skip those RAMBlocks.
>
> Why would we need to skip those RAM blocks? We get correct
> behaviour whether the memory is sync'd with the kernel
> or not, because we're not going to migrate it anywhere.
We have to make sure the count of dirty pages doesn't include the dirty
pages from those blocks, or migration will never finish.
Dave
> thanks
> -- PMM
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-18 7:34 ` KONRAD Frederic
@ 2017-07-19 12:29 ` Dr. David Alan Gilbert
2017-07-19 16:22 ` KONRAD Frederic
0 siblings, 1 reply; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-19 12:29 UTC (permalink / raw)
To: KONRAD Frederic
Cc: Peter Maydell, Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson
* KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>
>
> On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
> > On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
> > wrote:
> >
> > > On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
> > > wrote:
> > > > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > > > Paolo suggested offline that we send a pull request for this series.
> > > > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > > > on Zynq.
> > >
> > > > ----------------------------------------------------------------
> > > > mmio-exec.for-upstream
> > > >
> > > > ----------------------------------------------------------------
> > > > KONRAD Frederic (7):
> > > > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > > > cputlb: move get_page_addr_code
> > > > cputlb: fix the way get_page_addr_code fills the tlb
> > > > qdev: add MemoryRegion property
> > > > introduce mmio_interface
> > > > exec: allow to get a pointer for some mmio memory region
> > > > xilinx_spips: allow mmio execution
> > >
> > > Hi Edgar -- can you or Fred explain how this code interacts with
> > > VM migration? The mmio-interface device creates a RAM memory
> > > region with memory_region_init_ram_ptr(), but it doesn't call
> > > vmstate_register_ram(). On the other hand the core migration code
> > > will try to migrate the contents of the RAMBlock anyway, just
> > > without a name.
> > >
> > > It's not clear to me how this works, and it would be nice to
> > > get it clear so that we can make any necessary fixes before the
> > > 2.10 release hits and we lose the opportunity to make any
> > > migration-compatibility-breaking changes.
> > >
> > > thanks
> > > -- PMM
> > >
> >
> > Hi Peter,
> >
> > These temporary regions should be read-only and treated as temporary caches
> > AFAIU things.
> > I would say that they don't need to be migrated. After migration, the new
> > VM will recreate the ram areas from device backing.
> >
> > Is there a way we can prevent migration of the RAMBlock?
> >
> > Cheers,
> > Edgar
> >
>
> Hi All,
>
> Yes Edgar is right, they don't need to be migrated (as the old
> Xilinx SPI cache).
> And it will be the case for all the other stuff using this as
> well.
>
> Maybe we can simply drop the region before the migration?
Dont forget the VM is still running during migration, so you
can't drop anything that's needed for it to be able to execute.
Dave
> Fred
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-19 12:29 ` Dr. David Alan Gilbert
@ 2017-07-19 16:22 ` KONRAD Frederic
2017-07-19 16:25 ` Peter Maydell
2017-07-19 16:46 ` Dr. David Alan Gilbert
0 siblings, 2 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-19 16:22 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Peter Maydell, Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson
On 07/19/2017 02:29 PM, Dr. David Alan Gilbert wrote:
> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>
>>
>> On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
>>> On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
>>> wrote:
>>>
>>>> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
>>>> wrote:
>>>>> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>>>>> Paolo suggested offline that we send a pull request for this series.
>>>>> Here it is, I've run it through my testsuite + tested the LQSPI testcase
>>>>> on Zynq.
>>>>
>>>>> ----------------------------------------------------------------
>>>>> mmio-exec.for-upstream
>>>>>
>>>>> ----------------------------------------------------------------
>>>>> KONRAD Frederic (7):
>>>>> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
>>>>> cputlb: move get_page_addr_code
>>>>> cputlb: fix the way get_page_addr_code fills the tlb
>>>>> qdev: add MemoryRegion property
>>>>> introduce mmio_interface
>>>>> exec: allow to get a pointer for some mmio memory region
>>>>> xilinx_spips: allow mmio execution
>>>>
>>>> Hi Edgar -- can you or Fred explain how this code interacts with
>>>> VM migration? The mmio-interface device creates a RAM memory
>>>> region with memory_region_init_ram_ptr(), but it doesn't call
>>>> vmstate_register_ram(). On the other hand the core migration code
>>>> will try to migrate the contents of the RAMBlock anyway, just
>>>> without a name.
>>>>
>>>> It's not clear to me how this works, and it would be nice to
>>>> get it clear so that we can make any necessary fixes before the
>>>> 2.10 release hits and we lose the opportunity to make any
>>>> migration-compatibility-breaking changes.
>>>>
>>>> thanks
>>>> -- PMM
>>>>
>>>
>>> Hi Peter,
>>>
>>> These temporary regions should be read-only and treated as temporary caches
>>> AFAIU things.
>>> I would say that they don't need to be migrated. After migration, the new
>>> VM will recreate the ram areas from device backing.
>>>
>>> Is there a way we can prevent migration of the RAMBlock?
>>>
>>> Cheers,
>>> Edgar
>>>
>>
>> Hi All,
>>
>> Yes Edgar is right, they don't need to be migrated (as the old
>> Xilinx SPI cache).
>> And it will be the case for all the other stuff using this as
>> well.
>>
>> Maybe we can simply drop the region before the migration?
>
> Dont forget the VM is still running during migration, so you
> can't drop anything that's needed for it to be able to execute.
>
> Dave
Scary.. Yes your right. I still think it doesn't need to be
migrated.. But how..
BTW taking a look at this I found the comment below which seems
to implies that the content won't be migrated?
/**
* memory_region_init_ram_ptr: Initialize RAM memory region
from a
* user-provided pointer. Accesses
into the
* region will modify memory
directly.
*
* @mr: the #MemoryRegion to be initialized.
* @owner: the object that tracks the region's reference count
* @name: Region name, becomes part of RAMBlock name used in
migration stream
* must be unique within any device
* @size: size of the region.
* @ptr: memory to be mapped; must contain at least @size bytes.
*
* Note that this function does not do anything to cause the
data in the
* RAM memory region to be migrated; that is the responsibility
of the caller.
*/
And I guess we have the same issue when we try to unplug a device
during migration?
Fred
>
>> Fred
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-19 16:22 ` KONRAD Frederic
@ 2017-07-19 16:25 ` Peter Maydell
2017-07-20 7:55 ` KONRAD Frederic
2017-07-19 16:46 ` Dr. David Alan Gilbert
1 sibling, 1 reply; 39+ messages in thread
From: Peter Maydell @ 2017-07-19 16:25 UTC (permalink / raw)
To: KONRAD Frederic
Cc: Dr. David Alan Gilbert, Edgar E. Iglesias, QEMU Developers,
Paolo Bonzini, Richard Henderson
On 19 July 2017 at 17:22, KONRAD Frederic <frederic.konrad@adacore.com> wrote:
> Scary.. Yes your right. I still think it doesn't need to be
> migrated.. But how..
>
> BTW taking a look at this I found the comment below which seems
> to implies that the content won't be migrated?
That's a comment that I added just recently under a
slight misapprehension. Once we've figured out what
the right thing is we can fix it, or make the code do
what the comment says.
The actual current situation is "this function does nothing
to ensure the RAMBlock is correctly migrated, so if you
do nothing then you'll wind up with migration being silently
broken, if more than one thing is doing this at once in
the system, but if one and only one RAMblock is in this
situation then it'll work by luck". Which is definitely not
behaviour we are doing on purpose :-)
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-19 16:22 ` KONRAD Frederic
2017-07-19 16:25 ` Peter Maydell
@ 2017-07-19 16:46 ` Dr. David Alan Gilbert
2017-07-20 7:54 ` KONRAD Frederic
1 sibling, 1 reply; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-19 16:46 UTC (permalink / raw)
To: KONRAD Frederic
Cc: Peter Maydell, Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson
* KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>
>
> On 07/19/2017 02:29 PM, Dr. David Alan Gilbert wrote:
> > * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
> > >
> > >
> > > On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
> > > > On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
> > > > wrote:
> > > >
> > > > > On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
> > > > > wrote:
> > > > > > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
> > > > > > Paolo suggested offline that we send a pull request for this series.
> > > > > > Here it is, I've run it through my testsuite + tested the LQSPI testcase
> > > > > > on Zynq.
> > > > >
> > > > > > ----------------------------------------------------------------
> > > > > > mmio-exec.for-upstream
> > > > > >
> > > > > > ----------------------------------------------------------------
> > > > > > KONRAD Frederic (7):
> > > > > > cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
> > > > > > cputlb: move get_page_addr_code
> > > > > > cputlb: fix the way get_page_addr_code fills the tlb
> > > > > > qdev: add MemoryRegion property
> > > > > > introduce mmio_interface
> > > > > > exec: allow to get a pointer for some mmio memory region
> > > > > > xilinx_spips: allow mmio execution
> > > > >
> > > > > Hi Edgar -- can you or Fred explain how this code interacts with
> > > > > VM migration? The mmio-interface device creates a RAM memory
> > > > > region with memory_region_init_ram_ptr(), but it doesn't call
> > > > > vmstate_register_ram(). On the other hand the core migration code
> > > > > will try to migrate the contents of the RAMBlock anyway, just
> > > > > without a name.
> > > > >
> > > > > It's not clear to me how this works, and it would be nice to
> > > > > get it clear so that we can make any necessary fixes before the
> > > > > 2.10 release hits and we lose the opportunity to make any
> > > > > migration-compatibility-breaking changes.
> > > > >
> > > > > thanks
> > > > > -- PMM
> > > > >
> > > >
> > > > Hi Peter,
> > > >
> > > > These temporary regions should be read-only and treated as temporary caches
> > > > AFAIU things.
> > > > I would say that they don't need to be migrated. After migration, the new
> > > > VM will recreate the ram areas from device backing.
> > > >
> > > > Is there a way we can prevent migration of the RAMBlock?
> > > >
> > > > Cheers,
> > > > Edgar
> > > >
> > >
> > > Hi All,
> > >
> > > Yes Edgar is right, they don't need to be migrated (as the old
> > > Xilinx SPI cache).
> > > And it will be the case for all the other stuff using this as
> > > well.
> > >
> > > Maybe we can simply drop the region before the migration?
> >
> > Dont forget the VM is still running during migration, so you
> > can't drop anything that's needed for it to be able to execute.
> >
> > Dave
>
> Scary.. Yes your right. I still think it doesn't need to be
> migrated.. But how..
One question about the way your device works; being a cache, is
there something bad that the guest could do which would make
a reload into the cache fail - i.e the real program could
be reliant on running out of data in the cache?
i.e. could the state of the cache actually be system state
which really does need migrating.
(e.g. reprogram the flash via another route or something?)
(I've seen real code rely on an ARM TLB like this).
> BTW taking a look at this I found the comment below which seems
> to implies that the content won't be migrated?
>
> /**
>
> * memory_region_init_ram_ptr: Initialize RAM memory region from a
> * user-provided pointer. Accesses into the
> * region will modify memory directly.
> *
>
> * @mr: the #MemoryRegion to be initialized.
>
> * @owner: the object that tracks the region's reference count
>
> * @name: Region name, becomes part of RAMBlock name used in migration
> stream
> * must be unique within any device
>
> * @size: size of the region.
>
> * @ptr: memory to be mapped; must contain at least @size bytes.
>
> *
>
> * Note that this function does not do anything to cause the data in the
> * RAM memory region to be migrated; that is the responsibility of the
> caller.
> */
>
> And I guess we have the same issue when we try to unplug a device
> during migration?
plug/unplugging during a migration is a bad idea; I've sene suggestions
some of the code is safe for bits of it; I'm not convinced.
Dave
> Fred
>
> >
> > > Fred
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-19 16:46 ` Dr. David Alan Gilbert
@ 2017-07-20 7:54 ` KONRAD Frederic
0 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-20 7:54 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Peter Maydell, Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson
On 07/19/2017 06:46 PM, Dr. David Alan Gilbert wrote:
> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>
>>
>> On 07/19/2017 02:29 PM, Dr. David Alan Gilbert wrote:
>>> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>>>
>>>>
>>>> On 07/17/2017 07:27 PM, Edgar E. Iglesias wrote:
>>>>> On Mon, Jul 17, 2017 at 11:33 PM, Peter Maydell <peter.maydell@linaro.org>
>>>>> wrote:
>>>>>
>>>>>> On 14 June 2017 at 18:45, Edgar E. Iglesias <edgar.iglesias@gmail.com>
>>>>>> wrote:
>>>>>>> From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com>
>>>>>>> Paolo suggested offline that we send a pull request for this series.
>>>>>>> Here it is, I've run it through my testsuite + tested the LQSPI testcase
>>>>>>> on Zynq.
>>>>>>
>>>>>>> ----------------------------------------------------------------
>>>>>>> mmio-exec.for-upstream
>>>>>>>
>>>>>>> ----------------------------------------------------------------
>>>>>>> KONRAD Frederic (7):
>>>>>>> cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT
>>>>>>> cputlb: move get_page_addr_code
>>>>>>> cputlb: fix the way get_page_addr_code fills the tlb
>>>>>>> qdev: add MemoryRegion property
>>>>>>> introduce mmio_interface
>>>>>>> exec: allow to get a pointer for some mmio memory region
>>>>>>> xilinx_spips: allow mmio execution
>>>>>>
>>>>>> Hi Edgar -- can you or Fred explain how this code interacts with
>>>>>> VM migration? The mmio-interface device creates a RAM memory
>>>>>> region with memory_region_init_ram_ptr(), but it doesn't call
>>>>>> vmstate_register_ram(). On the other hand the core migration code
>>>>>> will try to migrate the contents of the RAMBlock anyway, just
>>>>>> without a name.
>>>>>>
>>>>>> It's not clear to me how this works, and it would be nice to
>>>>>> get it clear so that we can make any necessary fixes before the
>>>>>> 2.10 release hits and we lose the opportunity to make any
>>>>>> migration-compatibility-breaking changes.
>>>>>>
>>>>>> thanks
>>>>>> -- PMM
>>>>>>
>>>>>
>>>>> Hi Peter,
>>>>>
>>>>> These temporary regions should be read-only and treated as temporary caches
>>>>> AFAIU things.
>>>>> I would say that they don't need to be migrated. After migration, the new
>>>>> VM will recreate the ram areas from device backing.
>>>>>
>>>>> Is there a way we can prevent migration of the RAMBlock?
>>>>>
>>>>> Cheers,
>>>>> Edgar
>>>>>
>>>>
>>>> Hi All,
>>>>
>>>> Yes Edgar is right, they don't need to be migrated (as the old
>>>> Xilinx SPI cache).
>>>> And it will be the case for all the other stuff using this as
>>>> well.
>>>>
>>>> Maybe we can simply drop the region before the migration?
>>>
>>> Dont forget the VM is still running during migration, so you
>>> can't drop anything that's needed for it to be able to execute.
>>>
>>> Dave
>>
>> Scary.. Yes your right. I still think it doesn't need to be
>> migrated.. But how..
>
> One question about the way your device works; being a cache, is
> there something bad that the guest could do which would make
> a reload into the cache fail - i.e the real program could
> be reliant on running out of data in the cache?
> i.e. could the state of the cache actually be system state
> which really does need migrating.
> (e.g. reprogram the flash via another route or something?)
>
> (I've seen real code rely on an ARM TLB like this).
It can be reprogrammed through the SPI device.. At this point the
MemoryRegion is dropped and after the migration when an
instruction fetch happen on this area the cache will be recreated
and filled with new data from the drive. So I don't think it is
an issue especially for this SPI device.
Fred
>
>> BTW taking a look at this I found the comment below which seems
>> to implies that the content won't be migrated?
>>
>> /**
>>
>> * memory_region_init_ram_ptr: Initialize RAM memory region from a
>> * user-provided pointer. Accesses into the
>> * region will modify memory directly.
>> *
>>
>> * @mr: the #MemoryRegion to be initialized.
>>
>> * @owner: the object that tracks the region's reference count
>>
>> * @name: Region name, becomes part of RAMBlock name used in migration
>> stream
>> * must be unique within any device
>>
>> * @size: size of the region.
>>
>> * @ptr: memory to be mapped; must contain at least @size bytes.
>>
>> *
>>
>> * Note that this function does not do anything to cause the data in the
>> * RAM memory region to be migrated; that is the responsibility of the
>> caller.
>> */
>>
>> And I guess we have the same issue when we try to unplug a device
>> during migration?
>
> plug/unplugging during a migration is a bad idea; I've sene suggestions
> some of the code is safe for bits of it; I'm not convinced.
>
> Dave
>
>> Fred
>>
>>>
>>>> Fred
>>> --
>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-19 16:25 ` Peter Maydell
@ 2017-07-20 7:55 ` KONRAD Frederic
0 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-20 7:55 UTC (permalink / raw)
To: Peter Maydell
Cc: Dr. David Alan Gilbert, Edgar E. Iglesias, QEMU Developers,
Paolo Bonzini, Richard Henderson
On 07/19/2017 06:25 PM, Peter Maydell wrote:
> On 19 July 2017 at 17:22, KONRAD Frederic <frederic.konrad@adacore.com> wrote:
>> Scary.. Yes your right. I still think it doesn't need to be
>> migrated.. But how..
>>
>> BTW taking a look at this I found the comment below which seems
>> to implies that the content won't be migrated?
>
> That's a comment that I added just recently under a
> slight misapprehension. Once we've figured out what
> the right thing is we can fix it, or make the code do
> what the comment says.
>
> The actual current situation is "this function does nothing
> to ensure the RAMBlock is correctly migrated, so if you
> do nothing then you'll wind up with migration being silently
> broken, if more than one thing is doing this at once in
> the system, but if one and only one RAMblock is in this
> situation then it'll work by luck". Which is definitely not
> behaviour we are doing on purpose :-)
>
Ok thanks!
Fred
> thanks
> -- PMM
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-17 18:58 ` Dr. David Alan Gilbert
2017-07-17 19:57 ` Peter Maydell
@ 2017-07-20 9:42 ` Peter Maydell
2017-07-20 9:53 ` KONRAD Frederic
` (2 more replies)
1 sibling, 3 replies; 39+ messages in thread
From: Peter Maydell @ 2017-07-20 9:42 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>> Is there a way we can prevent migration of the RAMBlock?
>
> Not yet, I think we'd have to:
> a) Add a flag to the RAMBlock
> b) Set it/clear it on registration
> c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> e) Worry about the corner cases!
>
> I've got a few worries about what happens when the kernel tries to
> do dirty yncing - I'm not sure if we have to change anything on that
> interface to skip those RAMBlocks.
OK, so what should we do for 2.10 ?
We could:
* implement the changes you suggest above, and mark only
vmstate_register_ram'd blocks as migratable
(would probably need to fix some places which buggily
don't call vmstate_register_ram)
* implement the changes above, but special case mmio-interface
so only its ramblock is marked unmigratable
* postpone the changes above until 2.11, and for 2.10 register
a migration-blocker in mmio-interface so that we at least
give the user a useful error rather than having it fail
obscurely on vmload (and release note this)
(Or something else?)
I do think we definitely need to fix this for 2.11 at latest.
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-20 9:42 ` Peter Maydell
@ 2017-07-20 9:53 ` KONRAD Frederic
2017-07-20 10:02 ` Dr. David Alan Gilbert
2017-07-28 9:18 ` Peter Maydell
2 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-20 9:53 UTC (permalink / raw)
To: Peter Maydell, Dr. David Alan Gilbert
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, Juan Quintela
On 07/20/2017 11:42 AM, Peter Maydell wrote:
> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>>> Is there a way we can prevent migration of the RAMBlock?
>>
>> Not yet, I think we'd have to:
>> a) Add a flag to the RAMBlock
>> b) Set it/clear it on registration
>> c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
>> d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
>> cases) with the RAMBLOCK_FOREACH_MIGRATABLE
>> e) Worry about the corner cases!
>>
>> I've got a few worries about what happens when the kernel tries to
>> do dirty yncing - I'm not sure if we have to change anything on that
>> interface to skip those RAMBlocks.
>
> OK, so what should we do for 2.10 ?
>
> We could:
> * implement the changes you suggest above, and mark only
> vmstate_register_ram'd blocks as migratable
> (would probably need to fix some places which buggily
> don't call vmstate_register_ram)
> * implement the changes above, but special case mmio-interface
> so only its ramblock is marked unmigratable
> * postpone the changes above until 2.11, and for 2.10 register
> a migration-blocker in mmio-interface so that we at least
> give the user a useful error rather than having it fail
> obscurely on vmload (and release note this)
>
> (Or something else?)
>
> I do think we definitely need to fix this for 2.11 at latest.
I think we take less risks with the second one.
Maybe there is other problematic devices which don't call
vmstate_register_ram'd? Which would be broken by the first?
BTW the issue will show up only if ones execute code from the
LQSPI so maybe a mix between (3) and (2) ?
Fred
>
> thanks
> -- PMM
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-20 9:42 ` Peter Maydell
2017-07-20 9:53 ` KONRAD Frederic
@ 2017-07-20 10:02 ` Dr. David Alan Gilbert
2017-07-21 8:09 ` KONRAD Frederic
2017-07-28 9:18 ` Peter Maydell
2 siblings, 1 reply; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-20 10:02 UTC (permalink / raw)
To: Peter Maydell
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
* Peter Maydell (peter.maydell@linaro.org) wrote:
> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> > * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
> >> Is there a way we can prevent migration of the RAMBlock?
> >
> > Not yet, I think we'd have to:
> > a) Add a flag to the RAMBlock
> > b) Set it/clear it on registration
> > c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> > d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> > cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> > e) Worry about the corner cases!
> >
> > I've got a few worries about what happens when the kernel tries to
> > do dirty yncing - I'm not sure if we have to change anything on that
> > interface to skip those RAMBlocks.
>
> OK, so what should we do for 2.10 ?
>
> We could:
> * implement the changes you suggest above, and mark only
> vmstate_register_ram'd blocks as migratable
> (would probably need to fix some places which buggily
> don't call vmstate_register_ram)
> * implement the changes above, but special case mmio-interface
> so only its ramblock is marked unmigratable
I think either of these is too late for 2.10 - I don't fancy prodding
about in all of the migration RAM loops at this stage.
> * postpone the changes above until 2.11, and for 2.10 register
> a migration-blocker in mmio-interface so that we at least
> give the user a useful error rather than having it fail
> obscurely on vmload (and release note this)
I think that's best, especially because I've just thought of another nasty.
If I understand the way mmio-interface is working, you're dynamically
changing the RAMBlock list while the guest is running.
And while we are using QLIST_FOREACH_RCU I'm not convinced we're
actually safe against dynamic modification of that list.
> (Or something else?)
>
> I do think we definitely need to fix this for 2.11 at latest.
OK, I can do a-e OK, I'm more worried now about that dynamic
modification I just thought of.
Dave
> thanks
> -- PMM
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-20 10:02 ` Dr. David Alan Gilbert
@ 2017-07-21 8:09 ` KONRAD Frederic
2017-07-21 9:13 ` Dr. David Alan Gilbert
2017-07-21 9:27 ` Dr. David Alan Gilbert
0 siblings, 2 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-21 8:09 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Peter Maydell, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
On 07/20/2017 12:02 PM, Dr. David Alan Gilbert wrote:
> * Peter Maydell (peter.maydell@linaro.org) wrote:
>> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>>> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>>>> Is there a way we can prevent migration of the RAMBlock?
>>>
>>> Not yet, I think we'd have to:
>>> a) Add a flag to the RAMBlock
>>> b) Set it/clear it on registration
>>> c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
>>> d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
>>> cases) with the RAMBLOCK_FOREACH_MIGRATABLE
>>> e) Worry about the corner cases!
>>>
>>> I've got a few worries about what happens when the kernel tries to
>>> do dirty yncing - I'm not sure if we have to change anything on that
>>> interface to skip those RAMBlocks.
>>
>> OK, so what should we do for 2.10 ?
>>
>> We could:
>> * implement the changes you suggest above, and mark only
>> vmstate_register_ram'd blocks as migratable
>> (would probably need to fix some places which buggily
>> don't call vmstate_register_ram)
>> * implement the changes above, but special case mmio-interface
>> so only its ramblock is marked unmigratable
>
> I think either of these is too late for 2.10 - I don't fancy prodding
> about in all of the migration RAM loops at this stage.
>
>> * postpone the changes above until 2.11, and for 2.10 register
>> a migration-blocker in mmio-interface so that we at least
>> give the user a useful error rather than having it fail
>> obscurely on vmload (and release note this)
>
> I think that's best, especially because I've just thought of another nasty.
> If I understand the way mmio-interface is working, you're dynamically
> changing the RAMBlock list while the guest is running.
> And while we are using QLIST_FOREACH_RCU I'm not convinced we're
> actually safe against dynamic modification of that list.
Hi Dave,
Hmmm I'm not totally convinced..
Let's imagine somebody (eg: u-boot guest) wants to execute code
from the LQSPI area.
memory_region_request_mmio_ptr is called (the guest is not
running yet) it will create a mmio-interface which create the
ram memory region with a pointer provided by the device.
Then the guest can execute code from that and this somehow is
breaking migration because this ram memory region is migrated.
Now something is writing to the device.. The cache is no longer
valid, we have to drop this mmio-interface. This is done in an
async_safe work so cpu are stopped at this moment. So I think we
are safe for that.
>
>> (Or something else?)
>>
>> I do think we definitely need to fix this for 2.11 at latest.
>
> OK, I can do a-e OK, I'm more worried now about that dynamic
> modification I just thought of.
>
What's an a-e?
BTW sorry for this pain :( I didn't figure out that the
ram MemoryRegion would be migrated..
Thanks,
Fred
> Dave
>
>> thanks
>> -- PMM
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 8:09 ` KONRAD Frederic
@ 2017-07-21 9:13 ` Dr. David Alan Gilbert
2017-07-21 9:29 ` Peter Maydell
2017-07-27 19:07 ` Juan Quintela
2017-07-21 9:27 ` Dr. David Alan Gilbert
1 sibling, 2 replies; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-21 9:13 UTC (permalink / raw)
To: KONRAD Frederic
Cc: Peter Maydell, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
* KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>
>
> On 07/20/2017 12:02 PM, Dr. David Alan Gilbert wrote:
> > * Peter Maydell (peter.maydell@linaro.org) wrote:
> > > On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> > > > * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
> > > > > Is there a way we can prevent migration of the RAMBlock?
> > > >
> > > > Not yet, I think we'd have to:
> > > > a) Add a flag to the RAMBlock
> > > > b) Set it/clear it on registration
> > > > c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> > > > d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> > > > cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> > > > e) Worry about the corner cases!
> > > >
> > > > I've got a few worries about what happens when the kernel tries to
> > > > do dirty yncing - I'm not sure if we have to change anything on that
> > > > interface to skip those RAMBlocks.
> > >
> > > OK, so what should we do for 2.10 ?
> > >
> > > We could:
> > > * implement the changes you suggest above, and mark only
> > > vmstate_register_ram'd blocks as migratable
> > > (would probably need to fix some places which buggily
> > > don't call vmstate_register_ram)
> > > * implement the changes above, but special case mmio-interface
> > > so only its ramblock is marked unmigratable
> >
> > I think either of these is too late for 2.10 - I don't fancy prodding
> > about in all of the migration RAM loops at this stage.
> >
> > > * postpone the changes above until 2.11, and for 2.10 register
> > > a migration-blocker in mmio-interface so that we at least
> > > give the user a useful error rather than having it fail
> > > obscurely on vmload (and release note this)
> >
> > I think that's best, especially because I've just thought of another nasty.
> > If I understand the way mmio-interface is working, you're dynamically
> > changing the RAMBlock list while the guest is running.
> > And while we are using QLIST_FOREACH_RCU I'm not convinced we're
> > actually safe against dynamic modification of that list.
>
> Hi Dave,
>
> Hmmm I'm not totally convinced..
>
> Let's imagine somebody (eg: u-boot guest) wants to execute code
> from the LQSPI area.
>
> memory_region_request_mmio_ptr is called (the guest is not
> running yet) it will create a mmio-interface which create the
> ram memory region with a pointer provided by the device.
> Then the guest can execute code from that and this somehow is
> breaking migration because this ram memory region is migrated.
>
> Now something is writing to the device.. The cache is no longer
> valid, we have to drop this mmio-interface. This is done in an
> async_safe work so cpu are stopped at this moment. So I think we
> are safe for that.
I don't fully understand the way memory_region_do_invalidate_mmio_ptr
works; I see it dropping the memory region; if that's also dropping
the RAMBlock then it will upset migration. Even if the CPU is stopped
I dont think that stops the migration thread walking through the list of
RAMBlocks.
Even then, the problem is migration keeps a 'dirty_pages' count which is
calculated at the start of migration and updated as we dirty and send
pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
and we either never finish migration (since dirty_pages never reaches
zero) or finish early with some unsent data.
And then there's the 'received' bitmap currently being added for
postcopy which tracks each page that's been received (that's not in yet
though).
Dave
> >
> > > (Or something else?)
> > >
> > > I do think we definitely need to fix this for 2.11 at latest.
> >
> > OK, I can do a-e OK, I'm more worried now about that dynamic
> > modification I just thought of.
> >
>
> What's an a-e?
>
> BTW sorry for this pain :( I didn't figure out that the
> ram MemoryRegion would be migrated..
>
> Thanks,
> Fred
>
> > Dave
> >
> > > thanks
> > > -- PMM
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 8:09 ` KONRAD Frederic
2017-07-21 9:13 ` Dr. David Alan Gilbert
@ 2017-07-21 9:27 ` Dr. David Alan Gilbert
2017-07-21 9:34 ` KONRAD Frederic
1 sibling, 1 reply; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-21 9:27 UTC (permalink / raw)
To: KONRAD Frederic
Cc: Peter Maydell, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
* KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>
>
> On 07/20/2017 12:02 PM, Dr. David Alan Gilbert wrote:
> > * Peter Maydell (peter.maydell@linaro.org) wrote:
> > > On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> > > > * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
> > > > > Is there a way we can prevent migration of the RAMBlock?
> > > >
> > > > Not yet, I think we'd have to:
> > > > a) Add a flag to the RAMBlock
> > > > b) Set it/clear it on registration
> > > > c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
> > > > d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
> > > > cases) with the RAMBLOCK_FOREACH_MIGRATABLE
> > > > e) Worry about the corner cases!
> > > >
> > > > I've got a few worries about what happens when the kernel tries to
> > > > do dirty yncing - I'm not sure if we have to change anything on that
> > > > interface to skip those RAMBlocks.
> > >
> > > OK, so what should we do for 2.10 ?
> > >
> > > We could:
> > > * implement the changes you suggest above, and mark only
> > > vmstate_register_ram'd blocks as migratable
> > > (would probably need to fix some places which buggily
> > > don't call vmstate_register_ram)
> > > * implement the changes above, but special case mmio-interface
> > > so only its ramblock is marked unmigratable
> >
> > I think either of these is too late for 2.10 - I don't fancy prodding
> > about in all of the migration RAM loops at this stage.
> >
> > > * postpone the changes above until 2.11, and for 2.10 register
> > > a migration-blocker in mmio-interface so that we at least
> > > give the user a useful error rather than having it fail
> > > obscurely on vmload (and release note this)
> >
> > I think that's best, especially because I've just thought of another nasty.
> > If I understand the way mmio-interface is working, you're dynamically
> > changing the RAMBlock list while the guest is running.
> > And while we are using QLIST_FOREACH_RCU I'm not convinced we're
> > actually safe against dynamic modification of that list.
>
> Hi Dave,
>
> Hmmm I'm not totally convinced..
>
> Let's imagine somebody (eg: u-boot guest) wants to execute code
> from the LQSPI area.
>
> memory_region_request_mmio_ptr is called (the guest is not
> running yet) it will create a mmio-interface which create the
> ram memory region with a pointer provided by the device.
> Then the guest can execute code from that and this somehow is
> breaking migration because this ram memory region is migrated.
>
> Now something is writing to the device.. The cache is no longer
> valid, we have to drop this mmio-interface. This is done in an
> async_safe work so cpu are stopped at this moment. So I think we
> are safe for that.
>
> >
> > > (Or something else?)
> > >
> > > I do think we definitely need to fix this for 2.11 at latest.
> >
> > OK, I can do a-e OK, I'm more worried now about that dynamic
> > modification I just thought of.
> >
>
> What's an a-e?
Oh sorry, didn't answer that bit - it's the items a..e in the list
I posted above.
> BTW sorry for this pain :( I didn't figure out that the
> ram MemoryRegion would be migrated..
It's OK, these things happen.
Dave
> Thanks,
> Fred
>
> > Dave
> >
> > > thanks
> > > -- PMM
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:13 ` Dr. David Alan Gilbert
@ 2017-07-21 9:29 ` Peter Maydell
2017-07-21 9:38 ` KONRAD Frederic
` (2 more replies)
2017-07-27 19:07 ` Juan Quintela
1 sibling, 3 replies; 39+ messages in thread
From: Peter Maydell @ 2017-07-21 9:29 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: KONRAD Frederic, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
On 21 July 2017 at 10:13, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> I don't fully understand the way memory_region_do_invalidate_mmio_ptr
> works; I see it dropping the memory region; if that's also dropping
> the RAMBlock then it will upset migration. Even if the CPU is stopped
> I dont think that stops the migration thread walking through the list of
> RAMBlocks.
memory_region_do_invalidate_mmio_ptr() calls memory_region_unref(),
which will eventually result in memory_region_finalize() being
called, which will call the MR destructor, which in this case is
memory_region_destructor_ram(), which calls qemu_ram_free() on
the RAMBlock, which removes the RAMBlock from the list (after
taking the ramlist lock).
> Even then, the problem is migration keeps a 'dirty_pages' count which is
> calculated at the start of migration and updated as we dirty and send
> pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
> and we either never finish migration (since dirty_pages never reaches
> zero) or finish early with some unsent data.
> And then there's the 'received' bitmap currently being added for
> postcopy which tracks each page that's been received (that's not in yet
> though).
It sounds like we really need to make migration robust against
RAMBlock changes -- in the hotplug case it's certainly possible
for RAMBlocks to be newly created or destroyed while migration
is in progress.
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:27 ` Dr. David Alan Gilbert
@ 2017-07-21 9:34 ` KONRAD Frederic
0 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-21 9:34 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Peter Maydell, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
On 07/21/2017 11:27 AM, Dr. David Alan Gilbert wrote:
> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>
>>
>> On 07/20/2017 12:02 PM, Dr. David Alan Gilbert wrote:
>>> * Peter Maydell (peter.maydell@linaro.org) wrote:
>>>> On 17 July 2017 at 19:58, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>>>>> * Edgar E. Iglesias (edgar.iglesias@gmail.com) wrote:
>>>>>> Is there a way we can prevent migration of the RAMBlock?
>>>>>
>>>>> Not yet, I think we'd have to:
>>>>> a) Add a flag to the RAMBlock
>>>>> b) Set it/clear it on registration
>>>>> c) Have a RAMBLOCK_FOREACH_MIGRATABLE macro
>>>>> d) Replace all of the RAMBLOCK_FOREACH (and the couple of hand coded
>>>>> cases) with the RAMBLOCK_FOREACH_MIGRATABLE
>>>>> e) Worry about the corner cases!
>>>>>
>>>>> I've got a few worries about what happens when the kernel tries to
>>>>> do dirty yncing - I'm not sure if we have to change anything on that
>>>>> interface to skip those RAMBlocks.
>>>>
>>>> OK, so what should we do for 2.10 ?
>>>>
>>>> We could:
>>>> * implement the changes you suggest above, and mark only
>>>> vmstate_register_ram'd blocks as migratable
>>>> (would probably need to fix some places which buggily
>>>> don't call vmstate_register_ram)
>>>> * implement the changes above, but special case mmio-interface
>>>> so only its ramblock is marked unmigratable
>>>
>>> I think either of these is too late for 2.10 - I don't fancy prodding
>>> about in all of the migration RAM loops at this stage.
>>>
>>>> * postpone the changes above until 2.11, and for 2.10 register
>>>> a migration-blocker in mmio-interface so that we at least
>>>> give the user a useful error rather than having it fail
>>>> obscurely on vmload (and release note this)
>>>
>>> I think that's best, especially because I've just thought of another nasty.
>>> If I understand the way mmio-interface is working, you're dynamically
>>> changing the RAMBlock list while the guest is running.
>>> And while we are using QLIST_FOREACH_RCU I'm not convinced we're
>>> actually safe against dynamic modification of that list.
>>
>> Hi Dave,
>>
>> Hmmm I'm not totally convinced..
>>
>> Let's imagine somebody (eg: u-boot guest) wants to execute code
>> from the LQSPI area.
>>
>> memory_region_request_mmio_ptr is called (the guest is not
>> running yet) it will create a mmio-interface which create the
>> ram memory region with a pointer provided by the device.
>> Then the guest can execute code from that and this somehow is
>> breaking migration because this ram memory region is migrated.
>>
>> Now something is writing to the device.. The cache is no longer
>> valid, we have to drop this mmio-interface. This is done in an
>> async_safe work so cpu are stopped at this moment. So I think we
>> are safe for that.
>>
>>>
>>>> (Or something else?)
>>>>
>>>> I do think we definitely need to fix this for 2.11 at latest.
>>>
>>> OK, I can do a-e OK, I'm more worried now about that dynamic
>>> modification I just thought of.
>>>
>>
>> What's an a-e?
>
> Oh sorry, didn't answer that bit - it's the items a..e in the list
> I posted above.
>
>> BTW sorry for this pain :( I didn't figure out that the
>> ram MemoryRegion would be migrated..
>
> It's OK, these things happen.
>
> Dave
Ok thanks!
Fred
>
>> Thanks,
>> Fred
>>
>>> Dave
>>>
>>>> thanks
>>>> -- PMM
>>> --
>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:29 ` Peter Maydell
@ 2017-07-21 9:38 ` KONRAD Frederic
2017-07-21 10:31 ` Dr. David Alan Gilbert
2017-07-27 19:13 ` Juan Quintela
2 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-21 9:38 UTC (permalink / raw)
To: Peter Maydell, Dr. David Alan Gilbert
Cc: Juan Quintela, QEMU Developers, Paolo Bonzini, Edgar E. Iglesias,
Richard Henderson
On 07/21/2017 11:29 AM, Peter Maydell wrote:
> On 21 July 2017 at 10:13, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>> I don't fully understand the way memory_region_do_invalidate_mmio_ptr
>> works; I see it dropping the memory region; if that's also dropping
>> the RAMBlock then it will upset migration. Even if the CPU is stopped
>> I dont think that stops the migration thread walking through the list of
>> RAMBlocks.
>
> memory_region_do_invalidate_mmio_ptr() calls memory_region_unref(),
> which will eventually result in memory_region_finalize() being
> called, which will call the MR destructor, which in this case is
> memory_region_destructor_ram(), which calls qemu_ram_free() on
> the RAMBlock, which removes the RAMBlock from the list (after
> taking the ramlist lock).
>
>> Even then, the problem is migration keeps a 'dirty_pages' count which is
>> calculated at the start of migration and updated as we dirty and send
>> pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
>> and we either never finish migration (since dirty_pages never reaches
>> zero) or finish early with some unsent data.
>> And then there's the 'received' bitmap currently being added for
>> postcopy which tracks each page that's been received (that's not in yet
>> though).
>
> It sounds like we really need to make migration robust against
> RAMBlock changes -- in the hotplug case it's certainly possible
> for RAMBlocks to be newly created or destroyed while migration
> is in progress.
>
For the RAMBlock destruction maybe we can just ref the
MemoryRegion but I think I remember some strangeness like
memory_region_ref actually add a reference on the owner..
And it doesn't help for hotplug..
Fred
> thanks
> -- PMM
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:29 ` Peter Maydell
2017-07-21 9:38 ` KONRAD Frederic
@ 2017-07-21 10:31 ` Dr. David Alan Gilbert
2017-07-27 19:13 ` Juan Quintela
2 siblings, 0 replies; 39+ messages in thread
From: Dr. David Alan Gilbert @ 2017-07-21 10:31 UTC (permalink / raw)
To: Peter Maydell
Cc: KONRAD Frederic, Juan Quintela, QEMU Developers, Paolo Bonzini,
Edgar E. Iglesias, Richard Henderson
* Peter Maydell (peter.maydell@linaro.org) wrote:
> On 21 July 2017 at 10:13, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
> > I don't fully understand the way memory_region_do_invalidate_mmio_ptr
> > works; I see it dropping the memory region; if that's also dropping
> > the RAMBlock then it will upset migration. Even if the CPU is stopped
> > I dont think that stops the migration thread walking through the list of
> > RAMBlocks.
>
> memory_region_do_invalidate_mmio_ptr() calls memory_region_unref(),
> which will eventually result in memory_region_finalize() being
> called, which will call the MR destructor, which in this case is
> memory_region_destructor_ram(), which calls qemu_ram_free() on
> the RAMBlock, which removes the RAMBlock from the list (after
> taking the ramlist lock).
OK
> > Even then, the problem is migration keeps a 'dirty_pages' count which is
> > calculated at the start of migration and updated as we dirty and send
> > pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
> > and we either never finish migration (since dirty_pages never reaches
> > zero) or finish early with some unsent data.
> > And then there's the 'received' bitmap currently being added for
> > postcopy which tracks each page that's been received (that's not in yet
> > though).
>
> It sounds like we really need to make migration robust against
> RAMBlock changes -- in the hotplug case it's certainly possible
> for RAMBlocks to be newly created or destroyed while migration
> is in progress.
Juan recently added a patch that disables hotplug/unplug during
migration (b06424de) - although we did figure out later that it's
not quite enough because it stops the request to hotunplug, but
one of those might already be in flight.
Adding a RAMBlock isn't too bad a problem, removing one is much hairier.
a) Somehow it has to be coordinated with the destination - my
suggestion for this is to send a QMP command down the migration stream
to do the hot-add.
b) Migration traverses RAMBlock lists over quite a long time; we can't
hold an RCU lock for the whole period we're doing migration,
so the FOREACH_RCU isn't really protecting us from much.
(We probably should hold ram_list.mutex or the whole migration at
the moment)
c) RAMBlocks themselves aren't reference counted
d) We've got 2ndary structures such as that counter, a queue of
requests, bitmaps etc - that are all either based off RAMBlock list
data or actually contain pointers to RAMBlocks
e) Then the RAMBlocks are registered with the kernel for dirty
tracking.
None of those feel easily fixable.
Dave
> thanks
> -- PMM
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:13 ` Dr. David Alan Gilbert
2017-07-21 9:29 ` Peter Maydell
@ 2017-07-27 19:07 ` Juan Quintela
1 sibling, 0 replies; 39+ messages in thread
From: Juan Quintela @ 2017-07-27 19:07 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: KONRAD Frederic, Peter Maydell, QEMU Developers,
Edgar E. Iglesias, Paolo Bonzini, Richard Henderson
"Dr. David Alan Gilbert" <dgilbert@redhat.com> wrote:
> * KONRAD Frederic (frederic.konrad@adacore.com) wrote:
>>
>>
>>
>> Let's imagine somebody (eg: u-boot guest) wants to execute code
>> from the LQSPI area.
>>
>> memory_region_request_mmio_ptr is called (the guest is not
>> running yet) it will create a mmio-interface which create the
>> ram memory region with a pointer provided by the device.
>> Then the guest can execute code from that and this somehow is
>> breaking migration because this ram memory region is migrated.
>>
>> Now something is writing to the device.. The cache is no longer
>> valid, we have to drop this mmio-interface. This is done in an
>> async_safe work so cpu are stopped at this moment. So I think we
>> are safe for that.
>
> I don't fully understand the way memory_region_do_invalidate_mmio_ptr
> works; I see it dropping the memory region; if that's also dropping
> the RAMBlock then it will upset migration. Even if the CPU is stopped
> I dont think that stops the migration thread walking through the list of
> RAMBlocks.
I made sure that we don't allow Memory hot[un]plug during migration.
Basically we were already assuming that RAMBlocks are static during
migration, to relax that, we need to change other things, and it is too
late to investigate that.
> Even then, the problem is migration keeps a 'dirty_pages' count which is
> calculated at the start of migration and updated as we dirty and send
> pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
> and we either never finish migration (since dirty_pages never reaches
> zero) or finish early with some unsent data.
Yeap, that is trouble.
> And then there's the 'received' bitmap currently being added for
> postcopy which tracks each page that's been received (that's not in yet
> though).
Later, Juan.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-21 9:29 ` Peter Maydell
2017-07-21 9:38 ` KONRAD Frederic
2017-07-21 10:31 ` Dr. David Alan Gilbert
@ 2017-07-27 19:13 ` Juan Quintela
2 siblings, 0 replies; 39+ messages in thread
From: Juan Quintela @ 2017-07-27 19:13 UTC (permalink / raw)
To: Peter Maydell
Cc: Dr. David Alan Gilbert, QEMU Developers, KONRAD Frederic,
Edgar E. Iglesias, Paolo Bonzini, Richard Henderson
Peter Maydell <peter.maydell@linaro.org> wrote:
> On 21 July 2017 at 10:13, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote:
>> I don't fully understand the way memory_region_do_invalidate_mmio_ptr
>> works; I see it dropping the memory region; if that's also dropping
>> the RAMBlock then it will upset migration. Even if the CPU is stopped
>> I dont think that stops the migration thread walking through the list of
>> RAMBlocks.
>
> memory_region_do_invalidate_mmio_ptr() calls memory_region_unref(),
> which will eventually result in memory_region_finalize() being
> called, which will call the MR destructor, which in this case is
> memory_region_destructor_ram(), which calls qemu_ram_free() on
> the RAMBlock, which removes the RAMBlock from the list (after
> taking the ramlist lock).
>
>> Even then, the problem is migration keeps a 'dirty_pages' count which is
>> calculated at the start of migration and updated as we dirty and send
>> pages; if we add/remove a RAMBlock then that dirty_pages count is wrong
>> and we either never finish migration (since dirty_pages never reaches
>> zero) or finish early with some unsent data.
>> And then there's the 'received' bitmap currently being added for
>> postcopy which tracks each page that's been received (that's not in yet
>> though).
>
> It sounds like we really need to make migration robust against
> RAMBlock changes -- in the hotplug case it's certainly possible
> for RAMBlocks to be newly created or destroyed while migration
> is in progress.
There is code to disable hotplug while we are migrating. For 2.10 we
disabled *all* hotplug/unplug. If there are things that are safe, we
can add them as we do them.
The problem with ramblocks is that we do the equivalent of:
foreach ramblock
for each page in this ramblock
if page is dirty, send page
But we could take a lot of time/rounds sending a single ramblock,
because we go back/forth with top level migration functions/loops.
Later, Juan.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-20 9:42 ` Peter Maydell
2017-07-20 9:53 ` KONRAD Frederic
2017-07-20 10:02 ` Dr. David Alan Gilbert
@ 2017-07-28 9:18 ` Peter Maydell
2017-07-28 10:13 ` Peter Maydell
2 siblings, 1 reply; 39+ messages in thread
From: Peter Maydell @ 2017-07-28 9:18 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
On 20 July 2017 at 10:42, Peter Maydell <peter.maydell@linaro.org> wrote:
> OK, so what should we do for 2.10 ?
>
> We could:
> * implement the changes you suggest above, and mark only
> vmstate_register_ram'd blocks as migratable
> (would probably need to fix some places which buggily
> don't call vmstate_register_ram)
> * implement the changes above, but special case mmio-interface
> so only its ramblock is marked unmigratable
> * postpone the changes above until 2.11, and for 2.10 register
> a migration-blocker in mmio-interface so that we at least
> give the user a useful error rather than having it fail
> obscurely on vmload (and release note this)
>
> (Or something else?)
Talking to David about this on IRC, even "don't allow
migration" is a bit tricky, because you can't register
a migration-blocker if a migration is already in progress.
Two further options:
* disable this mmio-exec-in-place entirely for 2.10 as
being not completely baked yet, and fix it properly
in 2.11
* ditto, but allow the device to have an x-enable-exec-in-place
property which turned on the not-baked feature (the
property would go away in 2.11, which is OK because
of the x- experimental prefix)
I'm leaning towards disable-entirely at the moment...
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-28 9:18 ` Peter Maydell
@ 2017-07-28 10:13 ` Peter Maydell
2017-07-31 7:34 ` KONRAD Frederic
0 siblings, 1 reply; 39+ messages in thread
From: Peter Maydell @ 2017-07-28 10:13 UTC (permalink / raw)
To: Dr. David Alan Gilbert
Cc: Edgar E. Iglesias, QEMU Developers, Paolo Bonzini,
Richard Henderson, KONRAD Frederic, Juan Quintela
On 28 July 2017 at 10:18, Peter Maydell <peter.maydell@linaro.org> wrote:
> Talking to David about this on IRC, even "don't allow
> migration" is a bit tricky, because you can't register
> a migration-blocker if a migration is already in progress.
> Two further options:
> * disable this mmio-exec-in-place entirely for 2.10 as
> being not completely baked yet, and fix it properly
> in 2.11
> * ditto, but allow the device to have an x-enable-exec-in-place
> property which turned on the not-baked feature (the
> property would go away in 2.11, which is OK because
> of the x- experimental prefix)
>
> I'm leaning towards disable-entirely at the moment...
I've sent a for-2.10 patch which takes the simple "just
disable it" approach. If anybody wants to propose taking
a less blunt hammer to it, they're welcome to send a patch.
thanks
-- PMM
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request
2017-07-28 10:13 ` Peter Maydell
@ 2017-07-31 7:34 ` KONRAD Frederic
0 siblings, 0 replies; 39+ messages in thread
From: KONRAD Frederic @ 2017-07-31 7:34 UTC (permalink / raw)
To: Peter Maydell
Cc: Dr. David Alan Gilbert, Edgar E. Iglesias, QEMU Developers,
Paolo Bonzini, Richard Henderson, Juan Quintela
On 07/28/2017 12:13 PM, Peter Maydell wrote:
> On 28 July 2017 at 10:18, Peter Maydell <peter.maydell@linaro.org> wrote:
>> Talking to David about this on IRC, even "don't allow
>> migration" is a bit tricky, because you can't register
>> a migration-blocker if a migration is already in progress.
>> Two further options:
>> * disable this mmio-exec-in-place entirely for 2.10 as
>> being not completely baked yet, and fix it properly
>> in 2.11
>> * ditto, but allow the device to have an x-enable-exec-in-place
>> property which turned on the not-baked feature (the
>> property would go away in 2.11, which is OK because
>> of the x- experimental prefix)
>>
>> I'm leaning towards disable-entirely at the moment...
>
> I've sent a for-2.10 patch which takes the simple "just
> disable it" approach. If anybody wants to propose taking
> a less blunt hammer to it, they're welcome to send a patch.
>
> thanks
> -- PMM
>
Hi Peter,
I'll send a patch for this today or tomorrow.
Thanks,
Fred
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2017-07-31 7:34 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-14 17:45 [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 1/7] cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 2/7] cputlb: move get_page_addr_code Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 3/7] cputlb: fix the way get_page_addr_code fills the tlb Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 4/7] qdev: add MemoryRegion property Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 5/7] introduce mmio_interface Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 6/7] exec: allow to get a pointer for some mmio memory region Edgar E. Iglesias
2017-06-14 17:45 ` [Qemu-devel] [PULL v1 7/7] xilinx_spips: allow mmio execution Edgar E. Iglesias
2017-06-14 18:36 ` [Qemu-devel] [PULL v1 0/7] MMIO Exec pull request no-reply
2017-06-23 10:54 ` Peter Maydell
2017-06-23 12:34 ` KONRAD Frederic
2017-06-27 15:21 ` Edgar E. Iglesias
2017-07-17 16:33 ` Peter Maydell
2017-07-17 17:27 ` Edgar E. Iglesias
2017-07-17 18:58 ` Dr. David Alan Gilbert
2017-07-17 19:57 ` Peter Maydell
2017-07-18 14:53 ` Dr. David Alan Gilbert
2017-07-20 9:42 ` Peter Maydell
2017-07-20 9:53 ` KONRAD Frederic
2017-07-20 10:02 ` Dr. David Alan Gilbert
2017-07-21 8:09 ` KONRAD Frederic
2017-07-21 9:13 ` Dr. David Alan Gilbert
2017-07-21 9:29 ` Peter Maydell
2017-07-21 9:38 ` KONRAD Frederic
2017-07-21 10:31 ` Dr. David Alan Gilbert
2017-07-27 19:13 ` Juan Quintela
2017-07-27 19:07 ` Juan Quintela
2017-07-21 9:27 ` Dr. David Alan Gilbert
2017-07-21 9:34 ` KONRAD Frederic
2017-07-28 9:18 ` Peter Maydell
2017-07-28 10:13 ` Peter Maydell
2017-07-31 7:34 ` KONRAD Frederic
2017-07-18 7:34 ` KONRAD Frederic
2017-07-19 12:29 ` Dr. David Alan Gilbert
2017-07-19 16:22 ` KONRAD Frederic
2017-07-19 16:25 ` Peter Maydell
2017-07-20 7:55 ` KONRAD Frederic
2017-07-19 16:46 ` Dr. David Alan Gilbert
2017-07-20 7:54 ` KONRAD Frederic
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.