All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/7] MIPS Boston board support
@ 2016-08-19 19:08 Paul Burton
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved Paul Burton
                   ` (7 more replies)
  0 siblings, 8 replies; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:08 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

This series introduces support for the MIPS Boston development board. It begins
by introducing support for moving MIPS Coherence Manager GCRs which Boston
software typically does to avoid conflicting with its flash memory region. An
API is then added to retrieve the emulated MIPS GIC timer frequency, which is
used to report system clock frequency to software via "platform registers"
which the Boston board provides. An issue with the MIPS GIC that current Boston
Linux kernels encounter is fixed, and an API introduced to allow the board to
determine whether the MIPS CPS hardware is supported.

The last 3 patches are more extensive, providing support for the FIT image
format used with Boston, the Xilinx PCIe controller which Boston boards include
3 of, and finally the Boston board support itself.

This can be tested with either U-Boot or Linux if desired. U-Boot support is
available in the following patchset:

  https://www.mail-archive.com/u-boot@lists.denx.de/msg221003.html

Linux kernel support will hopefully be submitted for v4.9, but an older version
of it can be found in the "eng" branch of:

  git://git.linux-mips.org/pub/scm/linux-mti.git

The vmlinux.gz.itb make target should be used when building a Linux kernel to
run on the Boston board.

Paul Burton (7):
  hw/mips_cmgcr: allow GCR base to be moved
  hw/mips_gictimer: provide API for retrieving frequency
  hw/mips_gic: Update pin state on mask changes
  target-mips: Provide function to test if a CPU supports an ISA
  loader: Support Flattened Image Trees (FIT images)
  hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
  hw/mips: MIPS Boston board support

 default-configs/mips-softmmu-common.mak |   2 +
 hw/core/Makefile.objs                   |   1 +
 hw/core/loader-fit.c                    | 287 +++++++++++++++++
 hw/core/loader.c                        |   3 +-
 hw/intc/mips_gic.c                      |  56 ++--
 hw/mips/Makefile.objs                   |   1 +
 hw/mips/boston.c                        | 526 ++++++++++++++++++++++++++++++++
 hw/misc/mips_cmgcr.c                    |  17 ++
 hw/pci-host/Makefile.objs               |   1 +
 hw/pci-host/xilinx-pcie.c               | 310 +++++++++++++++++++
 hw/timer/mips_gictimer.c                |   5 +
 include/hw/loader-fit.h                 |  41 +++
 include/hw/loader.h                     |   2 +
 include/hw/misc/mips_cmgcr.h            |   3 +
 include/hw/pci-host/xilinx-pcie.h       | 102 +++++++
 include/hw/timer/mips_gictimer.h        |   1 +
 target-mips/cpu.h                       |   1 +
 target-mips/translate.c                 |  10 +
 18 files changed, 1342 insertions(+), 27 deletions(-)
 create mode 100644 hw/core/loader-fit.c
 create mode 100644 hw/mips/boston.c
 create mode 100644 hw/pci-host/xilinx-pcie.c
 create mode 100644 include/hw/loader-fit.h
 create mode 100644 include/hw/pci-host/xilinx-pcie.h

-- 
2.9.3

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
@ 2016-08-19 19:08 ` Paul Burton
  2016-09-07 13:09   ` Leon Alrae
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency Paul Burton
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:08 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Support moving the GCR base address & updating the CPU's CP0 CMGCRBase
register appropriately. This is required if a platform needs to move its
GCRs away from other memory, as the MIPS Boston development board does
to avoid its flash memory.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 hw/misc/mips_cmgcr.c         | 17 +++++++++++++++++
 include/hw/misc/mips_cmgcr.h |  3 +++
 2 files changed, 20 insertions(+)

diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c
index b3ba166..a1edb53 100644
--- a/hw/misc/mips_cmgcr.c
+++ b/hw/misc/mips_cmgcr.c
@@ -29,6 +29,20 @@ static inline bool is_gic_connected(MIPSGCRState *s)
     return s->gic_mr != NULL;
 }
 
+static inline void update_gcr_base(MIPSGCRState *gcr, uint64_t val)
+{
+    CPUState *cpu;
+    MIPSCPU *mips_cpu;
+
+    gcr->gcr_base = val & GCR_BASE_GCRBASE_MSK;
+    memory_region_set_address(&gcr->iomem, gcr->gcr_base);
+
+    CPU_FOREACH(cpu) {
+        mips_cpu = MIPS_CPU(cpu);
+        mips_cpu->env.CP0_CMGCRBase = gcr->gcr_base >> 4;
+    }
+}
+
 static inline void update_cpc_base(MIPSGCRState *gcr, uint64_t val)
 {
     if (is_cpc_connected(gcr)) {
@@ -117,6 +131,9 @@ static void gcr_write(void *opaque, hwaddr addr, uint64_t data, unsigned size)
     MIPSGCRVPState *other_vps = &gcr->vps[current_vps->other];
 
     switch (addr) {
+    case GCR_BASE_OFS:
+        update_gcr_base(gcr, data);
+        break;
     case GCR_GIC_BASE_OFS:
         update_gic_base(gcr, data);
         break;
diff --git a/include/hw/misc/mips_cmgcr.h b/include/hw/misc/mips_cmgcr.h
index a209d91..31bda6a 100644
--- a/include/hw/misc/mips_cmgcr.h
+++ b/include/hw/misc/mips_cmgcr.h
@@ -41,6 +41,9 @@
 #define GCR_L2_CONFIG_BYPASS_SHF    20
 #define GCR_L2_CONFIG_BYPASS_MSK    ((0x1ULL) << GCR_L2_CONFIG_BYPASS_SHF)
 
+/* GCR_BASE register fields */
+#define GCR_BASE_GCRBASE_MSK     0xffffffff8000ULL;
+
 /* GCR_GIC_BASE register fields */
 #define GCR_GIC_BASE_GICEN_MSK   1
 #define GCR_GIC_BASE_GICBASE_MSK 0xFFFFFFFE0000ULL
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved Paul Burton
@ 2016-08-19 19:08 ` Paul Burton
  2016-09-07 13:13   ` Leon Alrae
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes Paul Burton
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:08 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Provide a new function mips_gictimer_get_freq() which returns the
frequency at which a GIC timer will count. This will be useful for
boards which perform setup based upon this frequency.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 hw/timer/mips_gictimer.c         | 5 +++++
 include/hw/timer/mips_gictimer.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/hw/timer/mips_gictimer.c b/hw/timer/mips_gictimer.c
index 3698889..f5c5806 100644
--- a/hw/timer/mips_gictimer.c
+++ b/hw/timer/mips_gictimer.c
@@ -14,6 +14,11 @@
 
 #define TIMER_PERIOD 10 /* 10 ns period for 100 Mhz frequency */
 
+uint32_t mips_gictimer_get_freq(MIPSGICTimerState *gic)
+{
+    return NANOSECONDS_PER_SECOND / TIMER_PERIOD;
+}
+
 static void gic_vptimer_update(MIPSGICTimerState *gictimer,
                                    uint32_t vp_index, uint64_t now)
 {
diff --git a/include/hw/timer/mips_gictimer.h b/include/hw/timer/mips_gictimer.h
index c8bc5d2..c7ca6c8 100644
--- a/include/hw/timer/mips_gictimer.h
+++ b/include/hw/timer/mips_gictimer.h
@@ -31,6 +31,7 @@ struct MIPSGICTimerState {
     MIPSGICTimerCB *cb;
 };
 
+uint32_t mips_gictimer_get_freq(MIPSGICTimerState *gic);
 uint32_t mips_gictimer_get_sh_count(MIPSGICTimerState *gic);
 void mips_gictimer_store_sh_count(MIPSGICTimerState *gic, uint64_t count);
 uint32_t mips_gictimer_get_vp_compare(MIPSGICTimerState *gictimer,
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved Paul Burton
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency Paul Burton
@ 2016-08-19 19:08 ` Paul Burton
  2016-09-07 13:40   ` Leon Alrae
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA Paul Burton
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:08 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

If the GIC interrupt mask is changed by a write to the smask (set mask)
or rmask (reset mask) registers, we need to re-evaluate the state of the
pins/IRQs fed to the CPU. Without doing so we risk leaving a pin high
despite the interrupt that led to that state being masked, or losing
interrupts if an already pending interrupt is unmasked.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 hw/intc/mips_gic.c | 56 ++++++++++++++++++++++++++++++------------------------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
index 6e25773..15e6e40 100644
--- a/hw/intc/mips_gic.c
+++ b/hw/intc/mips_gic.c
@@ -20,31 +20,29 @@
 #include "kvm_mips.h"
 #include "hw/intc/mips_gic.h"
 
-static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin, int level)
+static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin)
 {
-    int ored_level = level;
+    int ored_level = 0;
     int i;
 
     /* ORing pending registers sharing same pin */
-    if (!ored_level) {
-        for (i = 0; i < gic->num_irq; i++) {
-            if ((gic->irq_state[i].map_pin & GIC_MAP_MSK) == pin &&
-                    gic->irq_state[i].map_vp == vp &&
-                    gic->irq_state[i].enabled) {
-                ored_level |= gic->irq_state[i].pending;
-            }
-            if (ored_level) {
-                /* no need to iterate all interrupts */
-                break;
-            }
+    for (i = 0; i < gic->num_irq; i++) {
+        if ((gic->irq_state[i].map_pin & GIC_MAP_MSK) == pin &&
+                gic->irq_state[i].map_vp == vp &&
+                gic->irq_state[i].enabled) {
+            ored_level |= gic->irq_state[i].pending;
         }
-        if (((gic->vps[vp].compare_map & GIC_MAP_MSK) == pin) &&
-                (gic->vps[vp].mask & GIC_VP_MASK_CMP_MSK)) {
-            /* ORing with local pending register (count/compare) */
-            ored_level |= (gic->vps[vp].pend & GIC_VP_MASK_CMP_MSK) >>
-                          GIC_VP_MASK_CMP_SHF;
+        if (ored_level) {
+            /* no need to iterate all interrupts */
+            break;
         }
     }
+    if (((gic->vps[vp].compare_map & GIC_MAP_MSK) == pin) &&
+            (gic->vps[vp].mask & GIC_VP_MASK_CMP_MSK)) {
+        /* ORing with local pending register (count/compare) */
+        ored_level |= (gic->vps[vp].pend & GIC_VP_MASK_CMP_MSK) >>
+                      GIC_VP_MASK_CMP_SHF;
+    }
     if (kvm_enabled())  {
         kvm_mips_set_ipi_interrupt(mips_env_get_cpu(gic->vps[vp].env),
                                    pin + GIC_CPU_PIN_OFFSET,
@@ -55,21 +53,27 @@ static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin, int level)
     }
 }
 
-static void gic_set_irq(void *opaque, int n_IRQ, int level)
+static void gic_update_pin_for_irq(MIPSGICState *gic, int n_IRQ)
 {
-    MIPSGICState *gic = (MIPSGICState *) opaque;
     int vp = gic->irq_state[n_IRQ].map_vp;
     int pin = gic->irq_state[n_IRQ].map_pin & GIC_MAP_MSK;
 
+    if (vp < 0 || vp >= gic->num_vps) {
+        return;
+    }
+    mips_gic_set_vp_irq(gic, vp, pin);
+}
+
+static void gic_set_irq(void *opaque, int n_IRQ, int level)
+{
+    MIPSGICState *gic = (MIPSGICState *) opaque;
+
     gic->irq_state[n_IRQ].pending = (uint8_t) level;
     if (!gic->irq_state[n_IRQ].enabled) {
         /* GIC interrupt source disabled */
         return;
     }
-    if (vp < 0 || vp >= gic->num_vps) {
-        return;
-    }
-    mips_gic_set_vp_irq(gic, vp, pin, level);
+    gic_update_pin_for_irq(gic, n_IRQ);
 }
 
 #define OFFSET_CHECK(c)                         \
@@ -209,7 +213,7 @@ static void gic_timer_store_vp_compare(MIPSGICState *gic, uint32_t vp_index,
     gic->vps[vp_index].pend &= ~(1 << GIC_LOCAL_INT_COMPARE);
     if (gic->vps[vp_index].compare_map & GIC_MAP_TO_PIN_MSK) {
         uint32_t pin = (gic->vps[vp_index].compare_map & GIC_MAP_MSK);
-        mips_gic_set_vp_irq(gic, vp_index, pin, 0);
+        mips_gic_set_vp_irq(gic, vp_index, pin);
     }
     mips_gictimer_store_vp_compare(gic->gic_timer, vp_index, compare);
 }
@@ -286,6 +290,7 @@ static void gic_write(void *opaque, hwaddr addr, uint64_t data, unsigned size)
         OFFSET_CHECK((base + size * 8) <= gic->num_irq);
         for (i = 0; i < size * 8; i++) {
             gic->irq_state[base + i].enabled &= !((data >> i) & 1);
+            gic_update_pin_for_irq(gic, base + i);
         }
         break;
     case GIC_SH_WEDGE_OFS:
@@ -305,6 +310,7 @@ static void gic_write(void *opaque, hwaddr addr, uint64_t data, unsigned size)
         OFFSET_CHECK((base + size * 8) <= gic->num_irq);
         for (i = 0; i < size * 8; i++) {
             gic->irq_state[base + i].enabled |= (data >> i) & 1;
+            gic_update_pin_for_irq(gic, base + i);
         }
         break;
     case GIC_SH_MAP0_PIN_OFS ... GIC_SH_MAP255_PIN_OFS:
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
                   ` (2 preceding siblings ...)
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes Paul Burton
@ 2016-08-19 19:09 ` Paul Burton
  2016-09-07 13:48   ` Leon Alrae
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 5/7] loader: Support Flattened Image Trees (FIT images) Paul Burton
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:09 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Provide a new cpu_supports_isa function which allows callers to
determine whether a CPU supports one of the ISA_ flags, by testing
whether the associated struct mips_def_t sets the ISA flags in its
insn_flags field.

An example use of this is to allow boards which generate bootloader code
to determine the properties of the CPU that will be used, for example
whether the CPU is 64 bit or which architecture revision it implements.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 target-mips/cpu.h       |  1 +
 target-mips/translate.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/target-mips/cpu.h b/target-mips/cpu.h
index 5182dc7..cbd17df 100644
--- a/target-mips/cpu.h
+++ b/target-mips/cpu.h
@@ -812,6 +812,7 @@ int cpu_mips_signal_handler(int host_signum, void *pinfo, void *puc);
 
 #define cpu_init(cpu_model) CPU(cpu_mips_init(cpu_model))
 bool cpu_supports_cps_smp(const char *cpu_model);
+bool cpu_supports_isa(const char *cpu_model, unsigned int isa);
 void cpu_set_exception_base(int vp_index, target_ulong address);
 
 /* TODO QOM'ify CPU reset and remove */
diff --git a/target-mips/translate.c b/target-mips/translate.c
index bab52cb..c212e4f 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -20192,6 +20192,16 @@ bool cpu_supports_cps_smp(const char *cpu_model)
     return (def->CP0_Config3 & (1 << CP0C3_CMGCR)) != 0;
 }
 
+bool cpu_supports_isa(const char *cpu_model, unsigned int isa)
+{
+    const mips_def_t *def = cpu_mips_find_by_name(cpu_model);
+    if (!def) {
+        return false;
+    }
+
+    return (def->insn_flags & isa) != 0;
+}
+
 void cpu_set_exception_base(int vp_index, target_ulong address)
 {
     MIPSCPU *vp = MIPS_CPU(qemu_get_cpu(vp_index));
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 5/7] loader: Support Flattened Image Trees (FIT images)
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
                   ` (3 preceding siblings ...)
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA Paul Burton
@ 2016-08-19 19:09 ` Paul Burton
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller Paul Burton
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:09 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Introduce support for loading Flattened Image Trees, as used by modern
U-Boot. FIT images are essentially flattened device tree files which
contain binary images such as kernels, FDTs or ramdisks along with one
or more configuration nodes describing boot configurations.

The MIPS Boston board typically boots kernels in the form of FIT images,
and will make use of this code.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 hw/core/Makefile.objs   |   1 +
 hw/core/loader-fit.c    | 287 ++++++++++++++++++++++++++++++++++++++++++++++++
 hw/core/loader.c        |   3 +-
 include/hw/loader-fit.h |  41 +++++++
 include/hw/loader.h     |   2 +
 5 files changed, 332 insertions(+), 2 deletions(-)
 create mode 100644 hw/core/loader-fit.c
 create mode 100644 include/hw/loader-fit.h

diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs
index cfd4840..4adb860 100644
--- a/hw/core/Makefile.objs
+++ b/hw/core/Makefile.objs
@@ -14,6 +14,7 @@ common-obj-$(CONFIG_SOFTMMU) += sysbus.o
 common-obj-$(CONFIG_SOFTMMU) += machine.o
 common-obj-$(CONFIG_SOFTMMU) += null-machine.o
 common-obj-$(CONFIG_SOFTMMU) += loader.o
+common-obj-$(CONFIG_SOFTMMU) += loader-fit.o
 common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
 common-obj-$(CONFIG_SOFTMMU) += register.o
 common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o
diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c
new file mode 100644
index 0000000..479a7fb
--- /dev/null
+++ b/hw/core/loader-fit.c
@@ -0,0 +1,287 @@
+/*
+ * Flattened Image Tree loader.
+ *
+ * Copyright (c) 2016 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "exec/address-spaces.h"
+#include "exec/memory.h"
+#include "hw/loader.h"
+#include "hw/loader-fit.h"
+#include "qemu/cutils.h"
+#include "qemu/error-report.h"
+#include "sysemu/device_tree.h"
+#include "sysemu/sysemu.h"
+
+#include <libfdt.h>
+#include <zlib.h>
+
+static const void *fit_load_image(const void *itb, const char *name,
+                                  int *poff, size_t *psz)
+{
+    const void *data;
+    const char *comp;
+    void *uncomp_data;
+    char path[128];
+    int off, sz;
+    ssize_t uncomp_len;
+
+    snprintf(path, sizeof(path), "/images/%s", name);
+
+    off = fdt_path_offset(itb, path);
+    if (off < 0) {
+        return NULL;
+    }
+    if (poff) {
+        *poff = off;
+    }
+
+    data = fdt_getprop(itb, off, "data", &sz);
+    if (!data) {
+        return NULL;
+    }
+
+    comp = fdt_getprop(itb, off, "compression", NULL);
+    if (!comp || !strcmp(comp, "none")) {
+        if (psz) {
+            *psz = sz;
+        }
+        return data;
+    }
+
+    if (!strcmp(comp, "gzip")) {
+        uncomp_len = 64 << 20;
+        uncomp_data = g_malloc(uncomp_len);
+
+        uncomp_len = gunzip(uncomp_data, uncomp_len, (void *)data, sz);
+        if (uncomp_len < 0) {
+            error_printf("unable to decompress %s image\n", name);
+            g_free(uncomp_data);
+            return NULL;
+        }
+
+        data = g_realloc(uncomp_data, uncomp_len);
+        if (psz) {
+            *psz = uncomp_len;
+        }
+        return data;
+    }
+
+    error_printf("unknown compression '%s'\n", comp);
+    return NULL;
+}
+
+static int fit_image_addr(const void *itb, int img, const char *name,
+                          hwaddr *addr)
+{
+    const void *prop;
+    int len;
+
+    prop = fdt_getprop(itb, img, name, &len);
+    if (!prop) {
+        return -ENOENT;
+    }
+
+    switch (len) {
+    case 4:
+        *addr = fdt32_to_cpu(*(fdt32_t *)prop);
+        return 0;
+    case 8:
+        *addr = fdt64_to_cpu(*(fdt64_t *)prop);
+        return 0;
+    default:
+        error_printf("invalid %s address length %d\n", name, len);
+        return -EINVAL;
+    }
+}
+
+static int fit_load_kernel(const struct fit_loader *ldr, const void *itb,
+                           int cfg, void *opaque, hwaddr *pend)
+{
+    const char *name;
+    const void *data;
+    hwaddr load_addr, entry_addr;
+    int img_off, err;
+    size_t sz;
+
+    name = fdt_getprop(itb, cfg, "kernel", NULL);
+    if (!name) {
+        error_printf("no kernel specified by FIT configuration\n");
+        return -EINVAL;
+    }
+
+    data = fit_load_image(itb, name, &img_off, &sz);
+    if (!data) {
+        error_printf("unable to load kernel image from FIT\n");
+        return -EINVAL;
+    }
+
+    err = fit_image_addr(itb, img_off, "load", &load_addr);
+    if (err) {
+        error_printf("unable to read kernel load address from FIT\n");
+        return err;
+    }
+
+    err = fit_image_addr(itb, img_off, "entry", &entry_addr);
+    if (err) {
+        return err;
+    }
+
+    if (ldr->kernel_filter) {
+        data = ldr->kernel_filter(opaque, data, &load_addr, &entry_addr);
+    }
+
+    if (pend) {
+        *pend = load_addr + sz;
+    }
+
+    load_addr = ldr->addr_to_phys(opaque, load_addr);
+    rom_add_blob_fixed(name, data, sz, load_addr);
+
+    return 0;
+}
+
+static int fit_load_fdt(const struct fit_loader *ldr, const void *itb,
+                        int cfg, void *opaque, const void *match_data,
+                        hwaddr kernel_end)
+{
+    const char *name;
+    const void *data;
+    hwaddr load_addr;
+    int img_off, err;
+    size_t sz;
+
+    name = fdt_getprop(itb, cfg, "fdt", NULL);
+    if (!name) {
+        return 0;
+    }
+
+    data = fit_load_image(itb, name, &img_off, &sz);
+    if (!data) {
+        error_printf("unable to load FDT image from FIT\n");
+        return -EINVAL;
+    }
+
+    err = fit_image_addr(itb, img_off, "load", &load_addr);
+    if (err == -ENOENT) {
+        load_addr = ROUND_UP(kernel_end, 64 * K_BYTE) + (10 * M_BYTE);
+    } else if (err) {
+        return err;
+    }
+
+    if (ldr->fdt_filter) {
+        data = ldr->fdt_filter(opaque, data, match_data, &load_addr);
+    }
+
+    load_addr = ldr->addr_to_phys(opaque, load_addr);
+    sz = fdt_totalsize(data);
+    rom_add_blob_fixed(name, data, sz, load_addr);
+
+    return 0;
+}
+
+static bool fit_cfg_compatible(const void *itb, int cfg, const char *compat)
+{
+    const void *fdt;
+    const char *fdt_name;
+
+    fdt_name = fdt_getprop(itb, cfg, "fdt", NULL);
+    if (!fdt_name) {
+        return false;
+    }
+
+    fdt = fit_load_image(itb, fdt_name, NULL, NULL);
+    if (!fdt) {
+        return false;
+    }
+
+    if (fdt_check_header(fdt)) {
+        return false;
+    }
+
+    if (fdt_node_check_compatible(fdt, 0, compat)) {
+        return false;
+    }
+
+    return true;
+}
+
+int load_fit(const struct fit_loader *ldr, const char *filename, void *opaque)
+{
+    const struct fit_loader_match *match;
+    const void *itb, *match_data = NULL;
+    const char *def_cfg_name;
+    char path[128];
+    int itb_size, configs, cfg_off, off, err;
+    hwaddr kernel_end;
+
+    itb = load_device_tree(filename, &itb_size);
+    if (!itb) {
+        return -EINVAL;
+    }
+
+    configs = fdt_path_offset(itb, "/configurations");
+    if (configs < 0) {
+        return configs;
+    }
+
+    cfg_off = -FDT_ERR_NOTFOUND;
+
+    if (ldr->matches) {
+        for (match = ldr->matches; match->compatible; match++) {
+            off = fdt_first_subnode(itb, configs);
+            while (off >= 0) {
+                if (fit_cfg_compatible(itb, off, match->compatible)) {
+                    cfg_off = off;
+                    match_data = match->data;
+                    break;
+                }
+
+                off = fdt_next_subnode(itb, off);
+            }
+
+            if (cfg_off >= 0) {
+                break;
+            }
+        }
+    }
+
+    if (cfg_off < 0) {
+        def_cfg_name = fdt_getprop(itb, configs, "default", NULL);
+        if (def_cfg_name) {
+            snprintf(path, sizeof(path), "/configurations/%s", def_cfg_name);
+            cfg_off = fdt_path_offset(itb, path);
+        }
+    }
+
+    if (cfg_off < 0) {
+        /* couldn't find a configuration to use */
+        return cfg_off;
+    }
+
+    err = fit_load_kernel(ldr, itb, cfg_off, opaque, &kernel_end);
+    if (err) {
+        return err;
+    }
+
+    err = fit_load_fdt(ldr, itb, cfg_off, opaque, match_data, kernel_end);
+    if (err) {
+        return err;
+    }
+
+    return 0;
+}
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 53e0e41..54a5189 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -513,8 +513,7 @@ static void zfree(void *x, void *addr)
  * overflow on real hardware too. */
 #define UBOOT_MAX_GUNZIP_BYTES (64 << 20)
 
-static ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src,
-                      size_t srclen)
+ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src, size_t srclen)
 {
     z_stream s;
     ssize_t dstbytes;
diff --git a/include/hw/loader-fit.h b/include/hw/loader-fit.h
new file mode 100644
index 0000000..9e2a068
--- /dev/null
+++ b/include/hw/loader-fit.h
@@ -0,0 +1,41 @@
+/*
+ * Flattened Image Tree loader.
+ *
+ * Copyright (c) 2016 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef HW_LOADER_FIT_H
+#define HW_LOADER_FIT_H
+
+#include <exec/hwaddr.h>
+
+struct fit_loader_match {
+    const char *compatible;
+    const void *data;
+};
+
+struct fit_loader {
+    const struct fit_loader_match *matches;
+    hwaddr (*addr_to_phys)(void *opaque, uint64_t addr);
+    const void *(*fdt_filter)(void *opaque, const void *fdt,
+                              const void *match_data, hwaddr *load_addr);
+    const void *(*kernel_filter)(void *opaque, const void *kernel,
+                                 hwaddr *load_addr, hwaddr *entry_addr);
+};
+
+int load_fit(const struct fit_loader *ldr, const char *filename, void *opaque);
+
+#endif /* HW_LOADER_FIT_H */
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 4879b63..ed8d6e0 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -107,6 +107,8 @@ int load_uimage(const char *filename, hwaddr *ep,
  */
 int load_ramdisk(const char *filename, hwaddr addr, uint64_t max_sz);
 
+ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src, size_t srclen);
+
 ssize_t read_targphys(const char *name,
                       int fd, hwaddr dst_addr, size_t nbytes);
 void pstrcpy_targphys(const char *name,
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
                   ` (4 preceding siblings ...)
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 5/7] loader: Support Flattened Image Trees (FIT images) Paul Burton
@ 2016-08-19 19:09 ` Paul Burton
  2016-11-25 13:57   ` Yongbok Kim
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 7/7] hw/mips: MIPS Boston board support Paul Burton
  2016-08-19 19:25 ` [Qemu-devel] [PATCH 0/7] " no-reply
  7 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:09 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Add support for emulating the Xilinx AXI Root Port Bridge for PCI
Express as described by Xilinx' PG055 document. This is a PCIe
controller that can be used with certain series of Xilinx FPGAs, and is
used on the MIPS Boston board which will make use of this code.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 hw/pci-host/Makefile.objs         |   1 +
 hw/pci-host/xilinx-pcie.c         | 310 ++++++++++++++++++++++++++++++++++++++
 include/hw/pci-host/xilinx-pcie.h | 102 +++++++++++++
 3 files changed, 413 insertions(+)
 create mode 100644 hw/pci-host/xilinx-pcie.c
 create mode 100644 include/hw/pci-host/xilinx-pcie.h

diff --git a/hw/pci-host/Makefile.objs b/hw/pci-host/Makefile.objs
index 45f1f0e..9c7909c 100644
--- a/hw/pci-host/Makefile.objs
+++ b/hw/pci-host/Makefile.objs
@@ -16,3 +16,4 @@ common-obj-$(CONFIG_FULONG) += bonito.o
 common-obj-$(CONFIG_PCI_PIIX) += piix.o
 common-obj-$(CONFIG_PCI_Q35) += q35.o
 common-obj-$(CONFIG_PCI_GENERIC) += gpex.o
+common-obj-$(CONFIG_PCI_XILINX) += xilinx-pcie.o
diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c
new file mode 100644
index 0000000..2f3a712
--- /dev/null
+++ b/hw/pci-host/xilinx-pcie.c
@@ -0,0 +1,310 @@
+/*
+ * Xilinx PCIe host controller emulation.
+ *
+ * Copyright (c) 2016 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "hw/pci/pci_bridge.h"
+#include "hw/pci-host/xilinx-pcie.h"
+
+enum root_cfg_reg {
+    ROOTCFG_INTDEC              = 0x138,
+
+    ROOTCFG_INTMASK             = 0x13c,
+#define ROOTCFG_INTMASK_INTX    (1 << 16)
+#define ROOTCFG_INTMASK_MSI     (1 << 17)
+
+    ROOTCFG_PSCR                = 0x144,
+#define ROOTCFG_PSCR_LINK       (1 << 11)
+
+    ROOTCFG_RPSCR               = 0x148,
+#define ROOTCFG_RPSCR_BRIDGEEN  (1 << 0)
+#define ROOTCFG_RPSCR_INTNEMPTY (1 << 18)
+#define ROOTCFG_RPSCR_INTOVF    (1 << 19)
+
+    ROOTCFG_RPIFR1              = 0x158,
+    ROOTCFG_RPIFR2              = 0x15c,
+};
+
+static void xilinx_pcie_update_intr(XilinxPCIEHost *s,
+                                    uint32_t set, uint32_t clear)
+{
+    int level;
+
+    s->intr |= set;
+    s->intr &= ~clear;
+
+    if (s->intr_fifo_r != s->intr_fifo_w) {
+        s->intr |= ROOTCFG_INTMASK_INTX;
+    }
+
+    level = !!(s->intr & s->intr_mask);
+    qemu_set_irq(s->irq, level);
+}
+
+static void xilinx_pcie_queue_intr(XilinxPCIEHost *s,
+                                   uint32_t fifo_reg1, uint32_t fifo_reg2)
+{
+    XilinxPCIEInt *intr;
+    unsigned int new_w;
+
+    new_w = (s->intr_fifo_w + 1) % ARRAY_SIZE(s->intr_fifo);
+    if (new_w == s->intr_fifo_r) {
+        s->rpscr |= ROOTCFG_RPSCR_INTOVF;
+        return;
+    }
+
+    intr = &s->intr_fifo[s->intr_fifo_w];
+    s->intr_fifo_w = new_w;
+
+    intr->fifo_reg1 = fifo_reg1;
+    intr->fifo_reg2 = fifo_reg2;
+
+    xilinx_pcie_update_intr(s, ROOTCFG_INTMASK_INTX, 0);
+}
+
+static void xilinx_pcie_set_irq(void *opaque, int irq_num, int level)
+{
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(opaque);
+
+    if (!level) {
+        return;
+    }
+
+    xilinx_pcie_queue_intr(s, (irq_num << 27) | (level << 29) | (1 << 31), 0);
+}
+
+static void xilinx_pcie_host_realize(DeviceState *dev, Error **errp)
+{
+    PCIHostState *pci = PCI_HOST_BRIDGE(dev);
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(dev);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
+    PCIExpressHost *pex = PCIE_HOST_BRIDGE(dev);
+
+    snprintf(s->name, sizeof(s->name), "pcie%u", s->bus_nr);
+
+    /* PCI configuration space */
+    pcie_host_mmcfg_init(pex, s->cfg_size);
+
+    /* MMIO region */
+    memory_region_init(&s->mmio, OBJECT(s), "mmio", UINT64_MAX);
+    memory_region_set_enabled(&s->mmio, false);
+
+    /* dummy I/O region */
+    memory_region_init_ram(&s->io, OBJECT(s), "io", 16, NULL);
+    memory_region_set_enabled(&s->io, false);
+
+    sysbus_init_mmio(sbd, &pex->mmio);
+    sysbus_init_mmio(sbd, &s->mmio);
+
+    pci->bus = pci_register_bus(dev, s->name, xilinx_pcie_set_irq,
+                                pci_swizzle_map_irq_fn, s, &s->mmio,
+                                &s->io, 0, 4, TYPE_PCIE_BUS);
+
+    qdev_set_parent_bus(DEVICE(&s->root), BUS(pci->bus));
+    qdev_init_nofail(DEVICE(&s->root));
+}
+
+static const char *xilinx_pcie_host_root_bus_path(PCIHostState *host_bridge,
+                                                  PCIBus *rootbus)
+{
+    return "0000:00";
+}
+
+static void xilinx_pcie_host_init(Object *obj)
+{
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(obj);
+    XilinxPCIERoot *root = &s->root;
+
+    object_initialize(root, sizeof(*root), TYPE_XILINX_PCIE_ROOT);
+    object_property_add_child(obj, "root", OBJECT(root), NULL);
+    qdev_prop_set_uint32(DEVICE(root), "addr", PCI_DEVFN(0, 0));
+    qdev_prop_set_bit(DEVICE(root), "multifunction", false);
+}
+
+static Property xilinx_pcie_host_props[] = {
+    DEFINE_PROP_UINT32("bus_nr", XilinxPCIEHost, bus_nr, 0),
+    DEFINE_PROP_SIZE("cfg_base", XilinxPCIEHost, cfg_base, 0),
+    DEFINE_PROP_SIZE("cfg_size", XilinxPCIEHost, cfg_size, 32 << 20),
+    DEFINE_PROP_SIZE("mmio_base", XilinxPCIEHost, mmio_base, 0),
+    DEFINE_PROP_SIZE("mmio_size", XilinxPCIEHost, mmio_size, 1 << 20),
+    DEFINE_PROP_PTR("irq", XilinxPCIEHost, irq_void),
+    DEFINE_PROP_BOOL("link_up", XilinxPCIEHost, link_up, true),
+    DEFINE_PROP_END_OF_LIST(),
+};
+
+static void xilinx_pcie_host_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    PCIHostBridgeClass *hc = PCI_HOST_BRIDGE_CLASS(klass);
+
+    hc->root_bus_path = xilinx_pcie_host_root_bus_path;
+    dc->realize = xilinx_pcie_host_realize;
+    set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
+    dc->fw_name = "pci";
+    dc->props = xilinx_pcie_host_props;
+}
+
+static const TypeInfo xilinx_pcie_host_info = {
+    .name       = TYPE_XILINX_PCIE_HOST,
+    .parent     = TYPE_PCIE_HOST_BRIDGE,
+    .instance_size = sizeof(XilinxPCIEHost),
+    .instance_init = xilinx_pcie_host_init,
+    .class_init = xilinx_pcie_host_class_init,
+};
+
+static uint32_t xilinx_pcie_root_config_read(PCIDevice *d,
+                                             uint32_t address, int len)
+{
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(OBJECT(d)->parent);
+    uint32_t val;
+
+    switch (address) {
+    case ROOTCFG_INTDEC:
+        return s->intr;
+
+    case ROOTCFG_INTMASK:
+        return s->intr_mask;
+
+    case ROOTCFG_PSCR:
+        val = s->link_up ? ROOTCFG_PSCR_LINK : 0;
+        return val;
+
+    case ROOTCFG_RPSCR:
+        if (s->intr_fifo_r != s->intr_fifo_w) {
+            s->rpscr &= ~ROOTCFG_RPSCR_INTNEMPTY;
+        } else {
+            s->rpscr |= ROOTCFG_RPSCR_INTNEMPTY;
+        }
+        return s->rpscr;
+
+    case ROOTCFG_RPIFR1:
+        if (s->intr_fifo_w == s->intr_fifo_r) {
+            /* FIFO empty */
+            return 0;
+        }
+        return s->intr_fifo[s->intr_fifo_r].fifo_reg1;
+
+    case ROOTCFG_RPIFR2:
+        if (s->intr_fifo_w == s->intr_fifo_r) {
+            /* FIFO empty */
+            return 0;
+        }
+        return s->intr_fifo[s->intr_fifo_r].fifo_reg2;
+
+    default:
+        return pci_default_read_config(d, address, len);
+    }
+}
+
+static void xilinx_pcie_root_config_write(PCIDevice *d, uint32_t address,
+                                          uint32_t val, int len)
+{
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(OBJECT(d)->parent);
+
+    switch (address) {
+    case ROOTCFG_INTDEC:
+        xilinx_pcie_update_intr(s, 0, val);
+        break;
+
+    case ROOTCFG_INTMASK:
+        s->intr_mask = val;
+        xilinx_pcie_update_intr(s, 0, 0);
+        break;
+
+    case ROOTCFG_RPSCR:
+        s->rpscr &= ~ROOTCFG_RPSCR_BRIDGEEN;
+        s->rpscr |= val & ROOTCFG_RPSCR_BRIDGEEN;
+        memory_region_set_enabled(&s->mmio, val & ROOTCFG_RPSCR_BRIDGEEN);
+
+        if (val & ROOTCFG_INTMASK_INTX) {
+            s->rpscr &= ~ROOTCFG_INTMASK_INTX;
+        }
+        break;
+
+    case ROOTCFG_RPIFR1:
+    case ROOTCFG_RPIFR2:
+        if (s->intr_fifo_w == s->intr_fifo_r) {
+            /* FIFO empty */
+            return;
+        }
+        s->intr_fifo_r = (s->intr_fifo_r + 1) % ARRAY_SIZE(s->intr_fifo);
+        break;
+
+    default:
+        pci_default_write_config(d, address, val, len);
+        break;
+    }
+}
+
+static int xilinx_pcie_root_init(PCIDevice *dev)
+{
+    BusState *bus = qdev_get_parent_bus(DEVICE(dev));
+    XilinxPCIEHost *s = XILINX_PCIE_HOST(bus->parent);
+
+    dev->config[PCI_COMMAND] = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER;
+    stw_le_p(&dev->config[PCI_MEMORY_BASE], s->mmio_base >> 16);
+    stw_le_p(&dev->config[PCI_MEMORY_LIMIT],
+             ((s->mmio_base + s->mmio_size - 1) >> 16) & 0xfff0);
+
+    pci_bridge_initfn(dev, TYPE_PCI_BUS);
+
+    if (pcie_endpoint_cap_v1_init(dev, 0x80) < 0) {
+        hw_error("Failed to initialize PCIe capability");
+    }
+
+    return 0;
+}
+
+static void xilinx_pcie_root_class_init(ObjectClass *klass, void *data)
+{
+    PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
+    DeviceClass *dc = DEVICE_CLASS(klass);
+
+    set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
+    dc->desc = "Xilinx AXI-PCIe Host Bridge";
+    k->vendor_id = 0x10ee;
+    k->device_id = 0x7021;
+    k->revision = 0;
+    k->class_id = PCI_CLASS_BRIDGE_HOST;
+    k->is_express = true;
+    k->is_bridge = true;
+    k->init = xilinx_pcie_root_init;
+    k->exit = pci_bridge_exitfn;
+    dc->reset = pci_bridge_reset;
+    k->config_read = xilinx_pcie_root_config_read;
+    k->config_write = xilinx_pcie_root_config_write;
+    /*
+     * PCI-facing part of the host bridge, not usable without the
+     * host-facing part, which can't be device_add'ed, yet.
+     */
+    dc->cannot_instantiate_with_device_add_yet = true;
+}
+
+static const TypeInfo xilinx_pcie_root_info = {
+    .name = TYPE_XILINX_PCIE_ROOT,
+    .parent = TYPE_PCI_BRIDGE,
+    .instance_size = sizeof(XilinxPCIERoot),
+    .class_init = xilinx_pcie_root_class_init,
+};
+
+static void xilinx_pcie_register(void)
+{
+    type_register_static(&xilinx_pcie_root_info);
+    type_register_static(&xilinx_pcie_host_info);
+}
+type_init(xilinx_pcie_register)
diff --git a/include/hw/pci-host/xilinx-pcie.h b/include/hw/pci-host/xilinx-pcie.h
new file mode 100644
index 0000000..443c1a6
--- /dev/null
+++ b/include/hw/pci-host/xilinx-pcie.h
@@ -0,0 +1,102 @@
+/*
+ * Xilinx PCIe host controller emulation.
+ *
+ * Copyright (c) 2016 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef HW_XILINX_PCIE_H
+#define HW_XILINX_PCIE_H
+
+#include "hw/hw.h"
+#include "hw/sysbus.h"
+#include "hw/pci/pci.h"
+#include "hw/pci/pci_bus.h"
+#include "hw/pci/pcie_host.h"
+
+#define TYPE_XILINX_PCIE_HOST "xilinx-pcie-host"
+#define XILINX_PCIE_HOST(obj) \
+     OBJECT_CHECK(XilinxPCIEHost, (obj), TYPE_XILINX_PCIE_HOST)
+
+#define TYPE_XILINX_PCIE_ROOT "xilinx-pcie-root"
+#define XILINX_PCIE_ROOT(obj) \
+     OBJECT_CHECK(XilinxPCIERoot, (obj), TYPE_XILINX_PCIE_ROOT)
+
+typedef struct XilinxPCIERoot {
+    PCIBridge parent_obj;
+} XilinxPCIERoot;
+
+typedef struct XilinxPCIEInt {
+    uint32_t fifo_reg1;
+    uint32_t fifo_reg2;
+} XilinxPCIEInt;
+
+typedef struct XilinxPCIEHost {
+    PCIExpressHost parent_obj;
+
+    char name[16];
+
+    uint32_t bus_nr;
+    uint64_t cfg_base, cfg_size;
+    uint64_t mmio_base, mmio_size;
+    bool link_up;
+
+    union {
+        qemu_irq irq;
+        void *irq_void;
+    };
+
+    MemoryRegion mmio, io;
+
+    XilinxPCIERoot root;
+
+    uint32_t intr;
+    uint32_t intr_mask;
+    XilinxPCIEInt intr_fifo[16];
+    unsigned int intr_fifo_r, intr_fifo_w;
+    uint32_t rpscr;
+} XilinxPCIEHost;
+
+static inline XilinxPCIEHost *
+xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr,
+                 hwaddr cfg_base, uint64_t cfg_size,
+                 hwaddr mmio_base, uint64_t mmio_size,
+                 qemu_irq irq, bool link_up)
+{
+    DeviceState *dev;
+    MemoryRegion *cfg, *mmio;
+
+    dev = qdev_create(NULL, TYPE_XILINX_PCIE_HOST);
+
+    qdev_prop_set_uint32(dev, "bus_nr", bus_nr);
+    qdev_prop_set_uint64(dev, "cfg_base", cfg_base);
+    qdev_prop_set_uint64(dev, "cfg_size", cfg_size);
+    qdev_prop_set_uint64(dev, "mmio_base", mmio_base);
+    qdev_prop_set_uint64(dev, "mmio_size", mmio_size);
+    qdev_prop_set_ptr(dev, "irq", irq);
+    qdev_prop_set_bit(dev, "link_up", link_up);
+
+    qdev_init_nofail(dev);
+
+    cfg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0);
+    memory_region_add_subregion_overlap(sys_mem, cfg_base, cfg, 0);
+
+    mmio = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1);
+    memory_region_add_subregion_overlap(sys_mem, 0, mmio, 0);
+
+    return XILINX_PCIE_HOST(dev);
+}
+
+#endif /* HW_XILINX_PCIE_H */
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 7/7] hw/mips: MIPS Boston board support
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
                   ` (5 preceding siblings ...)
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller Paul Burton
@ 2016-08-19 19:09 ` Paul Burton
  2016-08-19 19:25 ` [Qemu-devel] [PATCH 0/7] " no-reply
  7 siblings, 0 replies; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:09 UTC (permalink / raw)
  To: qemu-devel, Aurelien Jarno, Leon Alrae; +Cc: Paul Burton

Introduce support for emulating the MIPS Boston development board. The
Boston board is built around an FPGA & 3 PCIe controllers, one of which
is connected to an Intel EG20T Platform Controller Hub. It is used
during the development & debug of new CPUs and the software intended to
run on them, and is essentially the successor to the older MIPS Malta
board.

This patch does not implement the EG20T, instead connecting an already
supported ICH-9 AHCI controller. Whilst this isn't accurate it's enough
for typical stock Boston software (eg. Linux kernels) to work with hard
disks given that both the ICH-9 & EG20T implement the AHCI
specification.

Boston boards typically boot kernels in the FIT image format, and this
patch will treat kernels provided to QEMU as such. When loading a kernel
directly, the board code will generate minimal firmware much as the
Malta board code does. This firmware will set up the CM, CPC & GIC
register base addresses then set argument registers & jump to the kernel
entry point. Alternatively, bootloader code may be loaded using the bios
argument in which case no firmware will be generated & execution will
proceed from the start of the boot code at the default MIPS boot
exception vector (offset 0x1fc00000 into (c)kseg1).

Currently real Boston boards are always used with FPGA bitfiles that
include a Global Interrupt Controller (GIC), so the interrupt
configuration is only defined for such cases. Therefore the board will
only allow use of CPUs which implement the CPS components, including the
GIC, and will otherwise exit with a message.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
---
 default-configs/mips-softmmu-common.mak |   2 +
 hw/mips/Makefile.objs                   |   1 +
 hw/mips/boston.c                        | 526 ++++++++++++++++++++++++++++++++
 3 files changed, 529 insertions(+)
 create mode 100644 hw/mips/boston.c

diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak
index 0394514..09b7334 100644
--- a/default-configs/mips-softmmu-common.mak
+++ b/default-configs/mips-softmmu-common.mak
@@ -32,3 +32,5 @@ CONFIG_ISA_TESTDEV=y
 CONFIG_EMPTY_SLOT=y
 CONFIG_MIPS_CPS=y
 CONFIG_MIPS_ITU=y
+CONFIG_MIPS_BOSTON=y
+CONFIG_PCI_XILINX=y
diff --git a/hw/mips/Makefile.objs b/hw/mips/Makefile.objs
index 9352a1c..48cd2ef 100644
--- a/hw/mips/Makefile.objs
+++ b/hw/mips/Makefile.objs
@@ -4,3 +4,4 @@ obj-$(CONFIG_JAZZ) += mips_jazz.o
 obj-$(CONFIG_FULONG) += mips_fulong2e.o
 obj-y += gt64xxx_pci.o
 obj-$(CONFIG_MIPS_CPS) += cps.o
+obj-$(CONFIG_MIPS_BOSTON) += boston.o
diff --git a/hw/mips/boston.c b/hw/mips/boston.c
new file mode 100644
index 0000000..4e02907
--- /dev/null
+++ b/hw/mips/boston.c
@@ -0,0 +1,526 @@
+/*
+ * MIPS Boston development board emulation.
+ *
+ * Copyright (c) 2016 Imagination Technologies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+
+#include "exec/address-spaces.h"
+#include "hw/boards.h"
+#include "hw/char/serial.h"
+#include "hw/hw.h"
+#include "hw/ide/pci.h"
+#include "hw/ide/ahci.h"
+#include "hw/loader.h"
+#include "hw/loader-fit.h"
+#include "hw/mips/cps.h"
+#include "hw/mips/cpudevs.h"
+#include "hw/pci-host/xilinx-pcie.h"
+#include "qapi/error.h"
+#include "qemu/cutils.h"
+#include "qemu/error-report.h"
+#include "qemu/log.h"
+#include "sysemu/char.h"
+#include "sysemu/device_tree.h"
+#include "sysemu/sysemu.h"
+
+#include <libfdt.h>
+
+#define TYPE_MIPS_BOSTON "mips-boston"
+#define BOSTON(obj) OBJECT_CHECK(BostonState, (obj), TYPE_MIPS_BOSTON)
+
+typedef struct {
+    SysBusDevice parent_obj;
+
+    MachineState *mach;
+    MIPSCPSState *cps;
+    SerialState *uart;
+
+    CharDriverState *lcd_display;
+    char lcd_content[8];
+
+    hwaddr kernel_entry;
+    hwaddr fdt_base;
+} BostonState;
+
+enum boston_plat_reg {
+    PLAT_FPGA_BUILD     = 0x00,
+    PLAT_CORE_CL        = 0x04,
+    PLAT_WRAPPER_CL     = 0x08,
+    PLAT_SYSCLK_STATUS  = 0x0c,
+    PLAT_SOFTRST_CTL    = 0x10,
+#define PLAT_SOFTRST_CTL_SYSRESET       (1 << 4)
+    PLAT_DDR3_STATUS    = 0x14,
+#define PLAT_DDR3_STATUS_LOCKED         (1 << 0)
+#define PLAT_DDR3_STATUS_CALIBRATED     (1 << 2)
+    PLAT_PCIE_STATUS    = 0x18,
+#define PLAT_PCIE_STATUS_PCIE0_LOCKED   (1 << 0)
+#define PLAT_PCIE_STATUS_PCIE1_LOCKED   (1 << 8)
+#define PLAT_PCIE_STATUS_PCIE2_LOCKED   (1 << 16)
+    PLAT_FLASH_CTL      = 0x1c,
+    PLAT_SPARE0         = 0x20,
+    PLAT_SPARE1         = 0x24,
+    PLAT_SPARE2         = 0x28,
+    PLAT_SPARE3         = 0x2c,
+    PLAT_MMCM_DIV       = 0x30,
+#define PLAT_MMCM_DIV_CLK0DIV_SHIFT     0
+#define PLAT_MMCM_DIV_INPUT_SHIFT       8
+#define PLAT_MMCM_DIV_MUL_SHIFT         16
+#define PLAT_MMCM_DIV_CLK1DIV_SHIFT     24
+    PLAT_BUILD_CFG      = 0x34,
+#define PLAT_BUILD_CFG_IOCU_EN          (1 << 0)
+#define PLAT_BUILD_CFG_PCIE0_EN         (1 << 1)
+#define PLAT_BUILD_CFG_PCIE1_EN         (1 << 2)
+#define PLAT_BUILD_CFG_PCIE2_EN         (1 << 3)
+    PLAT_DDR_CFG        = 0x38,
+#define PLAT_DDR_CFG_SIZE               (0xf << 0)
+#define PLAT_DDR_CFG_MHZ                (0xfff << 4)
+    PLAT_NOC_PCIE0_ADDR = 0x3c,
+    PLAT_NOC_PCIE1_ADDR = 0x40,
+    PLAT_NOC_PCIE2_ADDR = 0x44,
+    PLAT_SYS_CTL        = 0x48,
+};
+
+static void boston_lcd_init(CharDriverState *chr)
+{
+    qemu_chr_fe_printf(chr, "        ");
+}
+
+static uint64_t boston_lcd_read(void *opaque, hwaddr addr,
+                                unsigned size)
+{
+    BostonState *s = opaque;
+    uint64_t val = 0;
+
+    switch (size) {
+    case 8:
+        val |= (uint64_t)s->lcd_content[(addr + 7) & 0x7] << 56;
+        val |= (uint64_t)s->lcd_content[(addr + 6) & 0x7] << 48;
+        val |= (uint64_t)s->lcd_content[(addr + 5) & 0x7] << 40;
+        val |= (uint64_t)s->lcd_content[(addr + 4) & 0x7] << 32;
+    case 4:
+        val |= (uint64_t)s->lcd_content[(addr + 3) & 0x7] << 24;
+        val |= (uint64_t)s->lcd_content[(addr + 2) & 0x7] << 16;
+    case 2:
+        val |= (uint64_t)s->lcd_content[(addr + 1) & 0x7] << 8;
+    case 1:
+        val |= (uint64_t)s->lcd_content[(addr + 0) & 0x7];
+        break;
+    }
+
+    return val;
+}
+
+static void boston_lcd_write(void *opaque, hwaddr addr,
+                             uint64_t val, unsigned size)
+{
+    BostonState *s = opaque;
+
+    switch (size) {
+    case 8:
+        s->lcd_content[(addr + 7) & 0x7] = val >> 56;
+        s->lcd_content[(addr + 6) & 0x7] = val >> 48;
+        s->lcd_content[(addr + 5) & 0x7] = val >> 40;
+        s->lcd_content[(addr + 4) & 0x7] = val >> 32;
+    case 4:
+        s->lcd_content[(addr + 3) & 0x7] = val >> 24;
+        s->lcd_content[(addr + 2) & 0x7] = val >> 16;
+    case 2:
+        s->lcd_content[(addr + 1) & 0x7] = val >> 8;
+    case 1:
+        s->lcd_content[(addr + 0) & 0x7] = val;
+        break;
+    }
+
+    qemu_chr_fe_printf(s->lcd_display,
+                       "\r%-8.8s", s->lcd_content);
+}
+
+static const MemoryRegionOps boston_lcd_ops = {
+    .read = boston_lcd_read,
+    .write = boston_lcd_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+};
+
+static uint64_t boston_platreg_read(void *opaque, hwaddr addr,
+                                    unsigned size)
+{
+    BostonState *s = opaque;
+    uint32_t gic_freq, val;
+
+    if (size != 4) {
+        qemu_log_mask(LOG_UNIMP, "%uB platform register read", size);
+        return 0;
+    }
+
+    switch (addr & 0xffff) {
+    case PLAT_FPGA_BUILD:
+    case PLAT_CORE_CL:
+    case PLAT_WRAPPER_CL:
+        return 0;
+    case PLAT_DDR3_STATUS:
+        return PLAT_DDR3_STATUS_LOCKED | PLAT_DDR3_STATUS_CALIBRATED;
+    case PLAT_MMCM_DIV:
+        gic_freq = mips_gictimer_get_freq(s->cps->gic.gic_timer) / 1000000;
+        val = gic_freq << PLAT_MMCM_DIV_INPUT_SHIFT;
+        val |= 1 << PLAT_MMCM_DIV_MUL_SHIFT;
+        val |= 1 << PLAT_MMCM_DIV_CLK0DIV_SHIFT;
+        val |= 1 << PLAT_MMCM_DIV_CLK1DIV_SHIFT;
+        return val;
+    case PLAT_BUILD_CFG:
+        val = PLAT_BUILD_CFG_PCIE0_EN;
+        val |= PLAT_BUILD_CFG_PCIE1_EN;
+        val |= PLAT_BUILD_CFG_PCIE2_EN;
+        return val;
+    case PLAT_DDR_CFG:
+        val = s->mach->ram_size / G_BYTE;
+        assert(!(val & ~PLAT_DDR_CFG_SIZE));
+        val |= PLAT_DDR_CFG_MHZ;
+        return val;
+    default:
+        qemu_log_mask(LOG_UNIMP, "Read platform register 0x%" HWADDR_PRIx,
+                      addr & 0xffff);
+        return 0;
+    }
+}
+
+static void boston_platreg_write(void *opaque, hwaddr addr,
+                                 uint64_t val, unsigned size)
+{
+    if (size != 4) {
+        qemu_log_mask(LOG_UNIMP, "%uB platform register write", size);
+        return;
+    }
+
+    switch (addr & 0xffff) {
+    case PLAT_FPGA_BUILD:
+    case PLAT_CORE_CL:
+    case PLAT_WRAPPER_CL:
+    case PLAT_DDR3_STATUS:
+    case PLAT_PCIE_STATUS:
+    case PLAT_MMCM_DIV:
+    case PLAT_BUILD_CFG:
+    case PLAT_DDR_CFG:
+        /* read only */
+        break;
+    case PLAT_SOFTRST_CTL:
+        if (val & PLAT_SOFTRST_CTL_SYSRESET) {
+            qemu_system_reset_request();
+        }
+        break;
+    default:
+        qemu_log_mask(LOG_UNIMP, "Write platform register 0x%" HWADDR_PRIx
+                      " = 0x%" PRIx64, addr & 0xffff, val);
+        break;
+    }
+}
+
+static const MemoryRegionOps boston_platreg_ops = {
+    .read = boston_platreg_read,
+    .write = boston_platreg_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+};
+
+static void boston_flash_write(void *opaque, hwaddr addr,
+                               uint64_t val, unsigned size)
+{
+}
+
+static const MemoryRegionOps boston_flash_ops = {
+    .write = boston_flash_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+};
+
+static const TypeInfo boston_device = {
+    .name          = TYPE_MIPS_BOSTON,
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(BostonState),
+};
+
+static void boston_register_types(void)
+{
+    type_register_static(&boston_device);
+}
+type_init(boston_register_types)
+
+static void gen_firmware(uint32_t *p, hwaddr kernel_entry, hwaddr fdt_addr,
+                         bool is_64b)
+{
+    const uint32_t cm_base = 0x16100000;
+    const uint32_t gic_base = 0x16120000;
+    const uint32_t cpc_base = 0x16200000;
+
+    /* Move CM GCRs */
+    if (is_64b) {
+        stl_p(p++, 0x40287803);                 /* dmfc0 $8, CMGCRBase */
+        stl_p(p++, 0x00084138);                 /* dsll $8, $8, 4 */
+    } else {
+        stl_p(p++, 0x40087803);                 /* mfc0 $8, CMGCRBase */
+        stl_p(p++, 0x00084100);                 /* sll  $8, $8, 4 */
+    }
+    stl_p(p++, 0x3c09a000);                     /* lui  $9, 0xa000 */
+    stl_p(p++, 0x01094025);                     /* or   $8, $9 */
+    stl_p(p++, 0x3c0a0000 | (cm_base >> 16));   /* lui  $10, cm_base >> 16 */
+    if (is_64b) {
+        stl_p(p++, 0xfd0a0008);                 /* sd   $10, 0x8($8) */
+    } else {
+        stl_p(p++, 0xad0a0008);                 /* sw   $10, 0x8($8) */
+    }
+    stl_p(p++, 0x012a4025);                     /* or   $8, $10 */
+
+    /* Move & enable GIC GCRs */
+    stl_p(p++, 0x3c090000 | (gic_base >> 16));  /* lui  $9, gic_base >> 16 */
+    stl_p(p++, 0x35290001);                     /* ori  $9, 0x1 */
+    if (is_64b) {
+        stl_p(p++, 0xfd090080);                 /* sd   $9, 0x80($8) */
+    } else {
+        stl_p(p++, 0xad090080);                 /* sw   $9, 0x80($8) */
+    }
+
+    /* Move & enable CPC GCRs */
+    stl_p(p++, 0x3c090000 | (cpc_base >> 16));  /* lui  $9, cpc_base >> 16 */
+    stl_p(p++, 0x35290001);                     /* ori  $9, 0x1 */
+    if (is_64b) {
+        stl_p(p++, 0xfd090088);                 /* sd   $9, 0x88($8) */
+    } else {
+        stl_p(p++, 0xad090088);                 /* sw   $9, 0x88($8) */
+    }
+
+    /*
+     * Setup argument registers to follow the UHI boot protocol:
+     *
+     * a0/$4 = -2
+     * a1/$5 = virtual address of FDT
+     * a2/$6 = 0
+     * a3/$7 = 0
+     */
+    stl_p(p++, 0x2404fffe);                     /* li   $4, -2 */
+                                                /* lui  $5, hi(fdt_addr) */
+    stl_p(p++, 0x3c050000 | ((fdt_addr >> 16) & 0xffff));
+    if (fdt_addr & 0xffff) {                    /* ori  $5, lo(fdt_addr) */
+        stl_p(p++, 0x34a50000 | (fdt_addr & 0xffff));
+    }
+    stl_p(p++, 0x34060000);                     /* li   $6, 0 */
+    stl_p(p++, 0x34070000);                     /* li   $7, 0 */
+
+    /* Load kernel entry address & jump to it */
+                                                /* lui  $25, hi(kernel_entry) */
+    stl_p(p++, 0x3c190000 | ((kernel_entry >> 16) & 0xffff));
+                                                /* ori  $25, lo(kernel_entry) */
+    stl_p(p++, 0x37390000 | (kernel_entry & 0xffff));
+    stl_p(p++, 0x03200009);                     /* jr   $25 */
+}
+
+static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,
+                                     const void *match_data, hwaddr *load_addr)
+{
+    BostonState *s = BOSTON(opaque);
+    MachineState *machine = s->mach;
+    const char *cmdline;
+    int err;
+    void *fdt;
+    size_t fdt_sz, ram_low_sz, ram_high_sz;
+
+    fdt_sz = fdt_totalsize(fdt_orig) * 2;
+    fdt = g_malloc0(fdt_sz);
+
+    err = fdt_open_into(fdt_orig, fdt, fdt_sz);
+    if (err) {
+        fprintf(stderr, "unable to open FDT\n");
+        return NULL;
+    }
+
+    cmdline = (machine->kernel_cmdline && machine->kernel_cmdline[0])
+            ? machine->kernel_cmdline : " ";
+    err = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline);
+    if (err < 0) {
+        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        return NULL;
+    }
+
+    ram_low_sz = MIN(256 * M_BYTE, machine->ram_size);
+    ram_high_sz = machine->ram_size - ram_low_sz;
+    qemu_fdt_setprop_sized_cells(fdt, "/memory@0", "reg",
+                                 1, 0x00000000, 1, ram_low_sz,
+                                 1, 0x90000000, 1, ram_high_sz);
+
+    fdt = g_realloc(fdt, fdt_totalsize(fdt));
+    qemu_fdt_dumpdtb(fdt, fdt_sz);
+
+    s->fdt_base = *load_addr;
+
+    return fdt;
+}
+
+static const void *boston_kernel_filter(void *opaque, const void *kernel,
+                                        hwaddr *load_addr, hwaddr *entry_addr)
+{
+    BostonState *s = BOSTON(opaque);
+
+    s->kernel_entry = *entry_addr;
+
+    return kernel;
+}
+
+static const struct fit_loader_match boston_matches[] = {
+    { "img,boston" },
+    { NULL },
+};
+
+static const struct fit_loader boston_fit_loader = {
+    .matches = boston_matches,
+    .addr_to_phys = cpu_mips_kseg0_to_phys,
+    .fdt_filter = boston_fdt_filter,
+    .kernel_filter = boston_kernel_filter,
+};
+
+static void boston_mach_init(MachineState *machine)
+{
+    DeviceState *dev;
+    BostonState *s;
+    Error *err = NULL;
+    const char *cpu_model;
+    MemoryRegion *flash, *ddr, *ddr_low_alias, *lcd, *platreg;
+    MemoryRegion *sys_mem = get_system_memory();
+    XilinxPCIEHost *pcie2;
+    PCIDevice *ahci;
+    DriveInfo *hd[6];
+    int fw_size, fit_err;
+    bool is_64b;
+
+    if (machine->ram_size % G_BYTE) {
+        error_report("Memory size must be a multiple of 1GB");
+        exit(1);
+    }
+
+    cpu_model = machine->cpu_model ?: "I6400";
+
+    dev = qdev_create(NULL, TYPE_MIPS_BOSTON);
+    qdev_init_nofail(dev);
+
+    s = BOSTON(dev);
+    s->mach = machine;
+    s->cps = g_new0(MIPSCPSState, 1);
+
+    if (!cpu_supports_cps_smp(cpu_model)) {
+        error_report("Boston requires CPUs which support CPS");
+        exit(1);
+    }
+
+    is_64b = cpu_supports_isa(cpu_model, ISA_MIPS64);
+
+    object_initialize(s->cps, sizeof(MIPSCPSState), TYPE_MIPS_CPS);
+    qdev_set_parent_bus(DEVICE(s->cps), sysbus_get_default());
+
+    object_property_set_str(OBJECT(s->cps), cpu_model, "cpu-model", &err);
+    object_property_set_int(OBJECT(s->cps), smp_cpus, "num-vp", &err);
+    object_property_set_bool(OBJECT(s->cps), true, "realized", &err);
+
+    if (err != NULL) {
+        error_report("%s", error_get_pretty(err));
+        exit(1);
+    }
+
+    sysbus_mmio_map_overlap(SYS_BUS_DEVICE(s->cps), 0, 0, 1);
+
+    flash =  g_new(MemoryRegion, 1);
+    memory_region_init_rom_device(flash, NULL, &boston_flash_ops, s,
+                                  "boston.flash", 128 * M_BYTE, &err);
+    memory_region_add_subregion_overlap(sys_mem, 0x18000000, flash, 0);
+
+    ddr = g_new(MemoryRegion, 1);
+    memory_region_allocate_system_memory(ddr, NULL, "boston.ddr",
+                                         machine->ram_size);
+    memory_region_add_subregion_overlap(sys_mem, 0x80000000, ddr, 0);
+
+    ddr_low_alias = g_new(MemoryRegion, 1);
+    memory_region_init_alias(ddr_low_alias, NULL, "boston_low.ddr",
+                             ddr, 0, MIN(machine->ram_size, (256 * M_BYTE)));
+    memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0);
+
+    xilinx_pcie_init(sys_mem, 0,
+                     0x10000000, 32 * M_BYTE,
+                     0x40000000, 1 * G_BYTE,
+                     get_cps_irq(s->cps, 2), false);
+
+    xilinx_pcie_init(sys_mem, 1,
+                     0x12000000, 32 * M_BYTE,
+                     0x20000000, 512 * M_BYTE,
+                     get_cps_irq(s->cps, 1), false);
+
+    pcie2 = xilinx_pcie_init(sys_mem, 2,
+                             0x14000000, 32 * M_BYTE,
+                             0x16000000, 1 * M_BYTE,
+                             get_cps_irq(s->cps, 0), true);
+
+    platreg = g_new(MemoryRegion, 1);
+    memory_region_init_io(platreg, NULL, &boston_platreg_ops, s,
+                          "boston-platregs", 0x1000);
+    memory_region_add_subregion_overlap(sys_mem, 0x17ffd000, platreg, 0);
+
+    if (!serial_hds[0]) {
+            serial_hds[0] = qemu_chr_new("serial0", "null", NULL);
+    }
+
+    s->uart = serial_mm_init(sys_mem, 0x17ffe000, 2,
+                             get_cps_irq(s->cps, 3), 10000000,
+                             serial_hds[0], DEVICE_NATIVE_ENDIAN);
+
+    lcd = g_new(MemoryRegion, 1);
+    memory_region_init_io(lcd, NULL, &boston_lcd_ops, s, "boston-lcd", 0x8);
+    memory_region_add_subregion_overlap(sys_mem, 0x17fff000, lcd, 0);
+    s->lcd_display = qemu_chr_new("lcd", "vc:320x240", boston_lcd_init);
+
+    ahci = pci_create_simple_multifunction(&PCI_BRIDGE(&pcie2->root)->sec_bus,
+                                           PCI_DEVFN(0, 0),
+                                           true, TYPE_ICH9_AHCI);
+    g_assert(ARRAY_SIZE(hd) == ICH_AHCI(ahci)->ahci.ports);
+    ide_drive_get(hd, ICH_AHCI(ahci)->ahci.ports);
+    ahci_ide_create_devs(ahci, hd);
+
+    if (machine->firmware) {
+        fw_size = load_image_targphys(machine->firmware,
+                                      0x1fc00000, 4 * M_BYTE);
+        if (fw_size == -1) {
+            error_printf("unable to load firmware image '%s'\n",
+                          machine->firmware);
+            exit(1);
+        }
+    } else if (machine->kernel_filename) {
+        fit_err = load_fit(&boston_fit_loader, machine->kernel_filename, s);
+        if (fit_err) {
+            error_printf("unable to load FIT image\n");
+            exit(1);
+        }
+
+        gen_firmware(memory_region_get_ram_ptr(flash) + 0x7c00000,
+                     s->kernel_entry, s->fdt_base, is_64b);
+    } else {
+        error_printf("Please provide either a -kernel or -bios argument\n");
+        exit(1);
+    }
+}
+
+static void boston_mach_class_init(MachineClass *mc)
+{
+    mc->desc = "MIPS Boston";
+    mc->init = boston_mach_init;
+    mc->default_ram_size = 2 * G_BYTE;
+    mc->max_cpus = 16;
+}
+DEFINE_MACHINE("boston", boston_mach_class_init)
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
  2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
                   ` (6 preceding siblings ...)
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 7/7] hw/mips: MIPS Boston board support Paul Burton
@ 2016-08-19 19:25 ` no-reply
  2016-08-19 19:40   ` Paul Burton
  7 siblings, 1 reply; 18+ messages in thread
From: no-reply @ 2016-08-19 19:25 UTC (permalink / raw)
  To: paul.burton; +Cc: famz, qemu-devel, aurelien, leon.alrae

Hi,

Your 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.

Message-id: 20160819190903.10974-1-paul.burton@imgtec.com
Subject: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
make J=8 docker-test-quick@centos6

# we need CURL DPRINTF patch
# http://patchew.org/QEMU/1470027888-24381-1-git-send-email-famz%40redhat.com/
#make J=8 docker-test-mingw@fedora
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
1821581 hw/mips: MIPS Boston board support
9b44da9 hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
fe513d4 loader: Support Flattened Image Trees (FIT images)
d0296cc target-mips: Provide function to test if a CPU supports an ISA
52c4cc5 hw/mips_gic: Update pin state on mask changes
402000d hw/mips_gictimer: provide API for retrieving frequency
a80d326 hw/mips_cmgcr: allow GCR base to be moved

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into 'dtc'...
Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
  BUILD centos6
  ARCHIVE qemu.tgz
  ARCHIVE dtc.tgz
  COPY RUNNER
  RUN test-quick in centos6
No C++ compiler available; disabling C++ specific optional code
Install prefix    /tmp/qemu-test/src/tests/docker/install
BIOS directory    /tmp/qemu-test/src/tests/docker/install/share/qemu
binary directory  /tmp/qemu-test/src/tests/docker/install/bin
library directory /tmp/qemu-test/src/tests/docker/install/lib
module directory  /tmp/qemu-test/src/tests/docker/install/lib/qemu
libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
include directory /tmp/qemu-test/src/tests/docker/install/include
config directory  /tmp/qemu-test/src/tests/docker/install/etc
local state directory   /tmp/qemu-test/src/tests/docker/install/var
Manual directory  /tmp/qemu-test/src/tests/docker/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 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -g 
QEMU_CFLAGS       -I/usr/include/pixman-1    -fPIE -DPIE -m64 -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  -Wendif-labels -Wmissing-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
RDMA support      no
TCG interpreter   no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
uuid support      no
libcap-ng support no
vhost-net support yes
vhost-scsi 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
GlusterFS support no
Archipelago support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   yes
QOM debugging     yes
vhdx              no
lzo support       no
snappy support    no
bzip2 support     no
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
  GEN   x86_64-softmmu/config-devices.mak.tmp
  GEN   aarch64-softmmu/config-devices.mak.tmp
  GEN   config-host.h
  GEN   qemu-options.def
  GEN   qmp-commands.h
  GEN   qapi-types.h
  GEN   qapi-visit.h
  GEN   qapi-event.h
  GEN   x86_64-softmmu/config-devices.mak
  GEN   aarch64-softmmu/config-devices.mak
  GEN   qmp-introspect.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   config-all-devices.mak
  GEN   trace/generated-events.h
  GEN   trace/generated-tracers.h
  GEN   trace/generated-tcg-tracers.h
  GEN   trace/generated-helpers-wrappers.h
  GEN   trace/generated-helpers.h
  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-qmp-commands.h
  GEN   qga/qapi-generated/qga-qapi-types.c
  GEN   qga/qapi-generated/qga-qapi-visit.c
  GEN   qga/qapi-generated/qga-qmp-marshal.c
  GEN   qmp-introspect.c
  GEN   qapi-types.c
  GEN   qapi-visit.c
  GEN   qapi-event.c
  CC    qapi/qapi-visit-core.o
  CC    qapi/qapi-dealloc-visitor.o
  CC    qapi/qmp-input-visitor.o
  CC    qapi/qmp-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/qint.o
  CC    qobject/qstring.o
  CC    qobject/qdict.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
  GEN   trace/generated-events.c
  CC    trace/control.o
  CC    trace/qmp.o
  CC    util/osdep.o
  CC    util/cutils.o
  CC    util/unicode.o
  CC    util/qemu-timer-common.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/bitmap.o
  CC    util/bitops.o
  CC    util/hbitmap.o
  CC    util/fifo8.o
  CC    util/acl.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/uri.o
  CC    util/notify.o
  CC    util/qemu-option.o
  CC    util/qemu-progress.o
  CC    util/hexdump.o
  CC    util/crc32c.o
  CC    util/throttle.o
  CC    util/getauxval.o
  CC    util/readline.o
  CC    util/rfifolock.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    crypto/pbkdf-stub.o
  CC    stubs/arch-query-cpu-def.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
/tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
/tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
  CC    stubs/cpu-get-icount.o
  CC    stubs/dump.o
  CC    stubs/fdset-add-fd.o
  CC    stubs/fdset-find-fd.o
  CC    stubs/fdset-get-fd.o
  CC    stubs/fdset-remove-fd.o
  CC    stubs/gdbstub.o
  CC    stubs/get-fd.o
  CC    stubs/get-next-serial.o
  CC    stubs/get-vm-name.o
  CC    stubs/iothread-lock.o
  CC    stubs/is-daemonized.o
  CC    stubs/machine-init-done.o
  CC    stubs/migr-blocker.o
  CC    stubs/mon-is-qmp.o
  CC    stubs/mon-printf.o
  CC    stubs/monitor-init.o
  CC    stubs/qtest.o
  CC    stubs/notify-event.o
  CC    stubs/replay.o
  CC    stubs/replay-user.o
  CC    stubs/reset.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/cpus.o
  CC    stubs/kvm.o
  CC    stubs/qmp_pc_dimm_device_list.o
  CC    stubs/target-monitor-defs.o
  CC    stubs/target-get-monitor-def.o
  CC    stubs/vhost.o
  CC    stubs/iohandler.o
  CC    stubs/smbios_type_38.o
  CC    stubs/ipmi.o
  CC    stubs/pc_madt_cpu_entry.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    async.o
  CC    thread-pool.o
  CC    block.o
  CC    blockjob.o
  CC    main-loop.o
  CC    iohandler.o
  CC    qemu-timer.o
  CC    aio-posix.o
  CC    qemu-io-cmds.o
  CC    block/raw_bsd.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/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/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/raw-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/write-threshold.o
  CC    block/crypto.o
  CC    nbd/server.o
  CC    nbd/client.o
  CC    nbd/common.o
  CC    block/dmg.o
  CC    crypto/init.o
  CC    crypto/hash.o
  CC    crypto/hash-glib.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.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    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/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
  GEN   qemu-img-cmds.h
  CC    qemu-io.o
  CC    qemu-bridge-helper.o
  CC    blockdev.o
  CC    blockdev-nbd.o
  CC    iothread.o
  CC    qdev-monitor.o
  CC    device-hotplug.o
  CC    os-posix.o
  CC    qemu-char.o
  CC    page_cache.o
  CC    accel.o
  CC    bt-host.o
  CC    bt-vhci.o
  CC    dma-helpers.o
  CC    vl.o
  CC    tpm.o
  CC    device_tree.o
  GEN   qmp-marshal.c
  CC    qmp.o
  CC    hmp.o
  CC    tcg-runtime.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/msmouse.o
  CC    backends/testdev.o
  CC    backends/tpm.o
  CC    backends/hostmem.o
  CC    backends/hostmem-ram.o
  CC    backends/hostmem-file.o
  CC    block/stream.o
  CC    block/backup.o
  CC    disas/arm.o
  CC    disas/i386.o
  CC    fsdev/qemu-fsdev-dummy.o
  CC    fsdev/qemu-fsdev-opts.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/memory_hotplug_acpi_table.o
  CC    hw/acpi/cpu.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/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/gusemu_mixer.o
  CC    hw/audio/cs4231a.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/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/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/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/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.o
  CC    hw/core/qdev-properties.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/ptimer.o
  CC    hw/core/sysbus.o
  CC    hw/core/machine.o
  CC    hw/core/null-machine.o
  CC    hw/core/loader.o
  CC    hw/core/loader-fit.o
  CC    hw/core/qdev-properties-system.o
  CC    hw/core/register.o
  CC    hw/core/platform-bus.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/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/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/debugexit.o
  CC    hw/misc/sga.o
  CC    hw/misc/pc-testdev.o
  CC    hw/misc/pci-testdev.o
  CC    hw/misc/arm_l2x0.o
  CC    hw/misc/arm_integrator_debug.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_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/imx_fec.o
  CC    hw/net/cadence_gem.o
  CC    hw/net/stellaris_enet.o
  CC    hw/net/rocker/rocker.o
  CC    hw/net/rocker/rocker_fp.o
  CC    hw/net/rocker/rocker_desc.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/pci-bridge/pci_bridge_dev.o
  CC    hw/pci-bridge/pci_expander_bridge.o
  CC    hw/pci-bridge/xio3130_upstream.o
/tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
/tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
  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/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/slotid_cap.o
  CC    hw/pci/pci_host.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/mptconfig.o
  CC    hw/scsi/mptendian.o
  CC    hw/scsi/megasas.o
  CC    hw/scsi/vmw_pvscsi.o
  CC    hw/scsi/esp.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/sd/sdhci.o
  CC    hw/smbios/smbios.o
  CC    hw/smbios/smbios_type_38.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/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/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/tpm/tpm_passthrough.o
  CC    hw/tpm/tpm_util.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/desc-msos.o
  CC    hw/usb/hcd-uhci.o
  CC    hw/usb/hcd-ohci.o
  CC    hw/usb/hcd-ehci.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-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-network.o
  CC    hw/usb/dev-bluetooth.o
  CC    hw/usb/dev-smartcard-reader.o
  CC    hw/usb/dev-mtp.o
  CC    hw/usb/host-stub.o
  CC    hw/virtio/virtio-rng.o
  CC    hw/virtio/virtio-pci.o
  CC    hw/virtio/virtio-bus.o
  CC    hw/virtio/virtio-mmio.o
  CC    hw/watchdog/watchdog.o
  CC    hw/watchdog/wdt_i6300esb.o
  CC    hw/watchdog/wdt_ib700.o
  CC    migration/migration.o
  CC    migration/socket.o
  CC    migration/fd.o
  CC    migration/exec.o
  CC    migration/tls.o
  CC    migration/vmstate.o
  CC    migration/qemu-file.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/queue.o
  CC    net/checksum.o
  CC    net/util.o
  CC    net/hub.o
  CC    net/socket.o
  CC    net/dump.o
  CC    net/eth.o
  CC    net/l2tpv3.o
  CC    net/tap.o
  CC    net/vhost-user.o
  CC    net/tap-linux.o
  CC    net/slirp.o
  CC    net/filter.o
  CC    net/filter-buffer.o
  CC    net/filter-mirror.o
  CC    qom/cpu.o
  CC    replay/replay.o
  CC    replay/replay-events.o
  CC    replay/replay-internal.o
  CC    replay/replay-time.o
  CC    replay/replay-input.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
  CC    replay/replay-char.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/ip_input.o
  CC    slirp/ip6_output.o
  CC    slirp/ip_output.o
  CC    slirp/dnssearch.o
  CC    slirp/dhcpv6.o
  CC    slirp/mbuf.o
  CC    slirp/slirp.o
  CC    slirp/misc.o
  CC    slirp/sbuf.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
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
  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    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/input-linux.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/vnc-jobs.o
  LINK  tests/qemu-iotests/socket_scm_helper
  CC    qga/commands.o
  CC    qga/guest-agent-command-state.o
  CC    qga/main.o
  CC    qga/commands-posix.o
  CC    qga/channel-posix.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
  CC    qmp-introspect.o
  CC    qapi-types.o
  CC    qapi-visit.o
  CC    qapi-event.o
  AR    libqemustub.a
  AS    optionrom/multiboot.o
  CC    qemu-img.o
  CC    qmp-marshal.o
  AS    optionrom/linuxboot.o
  CC    optionrom/linuxboot_dma.o
  AS    optionrom/kvmvapic.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
  CC    trace/generated-events.o
  Building optionrom/multiboot.img
  Building optionrom/linuxboot_dma.img
  Building optionrom/multiboot.raw
  Building optionrom/linuxboot.img
  Building optionrom/linuxboot_dma.raw
  Building optionrom/kvmvapic.img
  Building optionrom/linuxboot.raw
  Building optionrom/kvmvapic.raw
  Signing optionrom/multiboot.bin
  Signing optionrom/linuxboot.bin
  Signing optionrom/linuxboot_dma.bin
  Signing optionrom/kvmvapic.bin
  AR    libqemuutil.a
  LINK  qemu-ga
  LINK  ivshmem-client
  LINK  ivshmem-server
  LINK  qemu-nbd
  LINK  qemu-img
  LINK  qemu-io
  LINK  qemu-bridge-helper
  GEN   x86_64-softmmu/hmp-commands-info.h
  GEN   x86_64-softmmu/hmp-commands.h
  GEN   x86_64-softmmu/qmp-commands-old.h
  GEN   x86_64-softmmu/config-target.h
  GEN   aarch64-softmmu/hmp-commands.h
  GEN   aarch64-softmmu/hmp-commands-info.h
  GEN   aarch64-softmmu/qmp-commands-old.h
  GEN   aarch64-softmmu/config-target.h
  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/exec.o
  CC    x86_64-softmmu/cpu-exec-common.o
  CC    aarch64-softmmu/translate-all.o
  CC    aarch64-softmmu/cpu-exec.o
  CC    x86_64-softmmu/tcg/tcg.o
  CC    x86_64-softmmu/tcg/tcg-op.o
  CC    x86_64-softmmu/tcg/optimize.o
  CC    aarch64-softmmu/translate-common.o
  CC    x86_64-softmmu/tcg/tcg-common.o
  CC    x86_64-softmmu/fpu/softfloat.o
  CC    x86_64-softmmu/disas.o
  CC    x86_64-softmmu/arch_init.o
  CC    x86_64-softmmu/cpus.o
  CC    x86_64-softmmu/monitor.o
  CC    x86_64-softmmu/gdbstub.o
  CC    aarch64-softmmu/cpu-exec-common.o
  CC    x86_64-softmmu/balloon.o
  CC    x86_64-softmmu/ioport.o
  CC    x86_64-softmmu/numa.o
  CC    x86_64-softmmu/qtest.o
  CC    aarch64-softmmu/tcg/tcg.o
  CC    aarch64-softmmu/tcg/tcg-op.o
  CC    x86_64-softmmu/bootdevice.o
  CC    aarch64-softmmu/tcg/optimize.o
  CC    x86_64-softmmu/kvm-all.o
  CC    x86_64-softmmu/memory.o
  CC    aarch64-softmmu/tcg/tcg-common.o
  CC    aarch64-softmmu/fpu/softfloat.o
  CC    aarch64-softmmu/disas.o
  GEN   aarch64-softmmu/gdbstub-xml.c
  CC    aarch64-softmmu/kvm-stub.o
  CC    x86_64-softmmu/cputlb.o
  CC    aarch64-softmmu/arch_init.o
  CC    x86_64-softmmu/memory_mapping.o
  CC    x86_64-softmmu/dump.o
  CC    x86_64-softmmu/migration/ram.o
  CC    x86_64-softmmu/migration/savevm.o
  CC    aarch64-softmmu/cpus.o
  CC    aarch64-softmmu/monitor.o
  CC    x86_64-softmmu/xen-common-stub.o
  CC    x86_64-softmmu/xen-hvm-stub.o
  CC    x86_64-softmmu/hw/acpi/nvdimm.o
  CC    x86_64-softmmu/hw/block/virtio-blk.o
  CC    aarch64-softmmu/gdbstub.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/nmi.o
  CC    x86_64-softmmu/hw/cpu/core.o
  CC    aarch64-softmmu/balloon.o
  CC    aarch64-softmmu/ioport.o
  CC    x86_64-softmmu/hw/display/vga.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    aarch64-softmmu/numa.o
  CC    x86_64-softmmu/hw/display/virtio-vga.o
  CC    aarch64-softmmu/qtest.o
  CC    aarch64-softmmu/bootdevice.o
  CC    x86_64-softmmu/hw/intc/apic.o
  CC    x86_64-softmmu/hw/intc/apic_common.o
  CC    aarch64-softmmu/memory.o
  CC    x86_64-softmmu/hw/intc/ioapic.o
  CC    aarch64-softmmu/cputlb.o
  CC    aarch64-softmmu/memory_mapping.o
  CC    x86_64-softmmu/hw/isa/lpc_ich9.o
  CC    x86_64-softmmu/hw/misc/vmport.o
  CC    aarch64-softmmu/dump.o
  CC    aarch64-softmmu/migration/ram.o
  CC    aarch64-softmmu/migration/savevm.o
  CC    aarch64-softmmu/xen-common-stub.o
  CC    x86_64-softmmu/hw/misc/ivshmem.o
  CC    aarch64-softmmu/xen-hvm-stub.o
  CC    x86_64-softmmu/hw/misc/pvpanic.o
  CC    x86_64-softmmu/hw/misc/edu.o
  CC    aarch64-softmmu/hw/block/virtio-blk.o
  CC    x86_64-softmmu/hw/misc/hyperv_testdev.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/block/dataplane/virtio-blk.o
  CC    x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC    aarch64-softmmu/hw/char/exynos4210_uart.o
  CC    x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC    x86_64-softmmu/hw/timer/mc146818rtc.o
  CC    aarch64-softmmu/hw/char/omap_uart.o
  CC    x86_64-softmmu/hw/vfio/common.o
  CC    aarch64-softmmu/hw/char/digic-uart.o
  CC    x86_64-softmmu/hw/vfio/pci.o
  CC    aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC    x86_64-softmmu/hw/vfio/pci-quirks.o
  CC    aarch64-softmmu/hw/char/bcm2835_aux.o
  CC    x86_64-softmmu/hw/vfio/platform.o
  CC    aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC    x86_64-softmmu/hw/vfio/calxeda-xgmac.o
  CC    x86_64-softmmu/hw/vfio/amd-xgbe.o
  CC    x86_64-softmmu/hw/vfio/spapr.o
  CC    aarch64-softmmu/hw/core/nmi.o
  CC    aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC    aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC    x86_64-softmmu/hw/virtio/virtio.o
  CC    aarch64-softmmu/hw/cpu/a9mpcore.o
  CC    x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC    aarch64-softmmu/hw/cpu/a15mpcore.o
  CC    aarch64-softmmu/hw/cpu/core.o
  CC    aarch64-softmmu/hw/display/omap_dss.o
  CC    x86_64-softmmu/hw/virtio/vhost.o
  CC    x86_64-softmmu/hw/virtio/vhost-backend.o
  CC    aarch64-softmmu/hw/display/omap_lcdc.o
  CC    aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC    x86_64-softmmu/hw/virtio/vhost-user.o
  CC    aarch64-softmmu/hw/display/bcm2835_fb.o
  CC    x86_64-softmmu/hw/i386/multiboot.o
  CC    aarch64-softmmu/hw/display/vga.o
  CC    x86_64-softmmu/hw/i386/pc.o
  CC    aarch64-softmmu/hw/display/virtio-gpu.o
  CC    aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC    aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC    aarch64-softmmu/hw/display/dpcd.o
  CC    aarch64-softmmu/hw/display/xlnx_dp.o
  CC    x86_64-softmmu/hw/i386/pc_piix.o
  CC    aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC    aarch64-softmmu/hw/dma/omap_dma.o
  CC    x86_64-softmmu/hw/i386/pc_q35.o
  CC    aarch64-softmmu/hw/dma/soc_dma.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    aarch64-softmmu/hw/i2c/omap_i2c.o
  CC    aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC    aarch64-softmmu/hw/input/tsc210x.o
  CC    aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC    aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC    aarch64-softmmu/hw/intc/exynos4210_combiner.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
  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/ivshmem.o
  CC    aarch64-softmmu/hw/misc/arm_sysctl.o
  CC    x86_64-softmmu/hw/i386/pc_sysfw.o
  CC    aarch64-softmmu/hw/misc/cbus.o
  CC    aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC    aarch64-softmmu/hw/misc/imx_ccm.o
  CC    aarch64-softmmu/hw/misc/imx31_ccm.o
  CC    x86_64-softmmu/hw/i386/x86-iommu.o
  CC    aarch64-softmmu/hw/misc/imx25_ccm.o
  CC    x86_64-softmmu/hw/i386/intel_iommu.o
  CC    x86_64-softmmu/hw/i386/kvmvapic.o
  CC    x86_64-softmmu/hw/i386/acpi-build.o
  CC    x86_64-softmmu/hw/i386/pci-assign-load-rom.o
  CC    x86_64-softmmu/hw/i386/kvm/clock.o
  CC    x86_64-softmmu/hw/i386/kvm/apic.o
  CC    aarch64-softmmu/hw/misc/imx6_ccm.o
  CC    aarch64-softmmu/hw/misc/imx6_src.o
  CC    x86_64-softmmu/hw/i386/kvm/i8259.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1037: warning: ‘pch_rev_id’ may be used uninitialized in this function
  CC    x86_64-softmmu/hw/i386/kvm/ioapic.o
  CC    aarch64-softmmu/hw/misc/mst_fpga.o
  CC    x86_64-softmmu/hw/i386/kvm/i8254.o
  CC    x86_64-softmmu/hw/i386/kvm/pci-assign.o
  CC    aarch64-softmmu/hw/misc/omap_clk.o
  CC    aarch64-softmmu/hw/misc/omap_gpmc.o
  CC    x86_64-softmmu/target-i386/translate.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/zynq_slcr.o
  CC    aarch64-softmmu/hw/misc/zynq-xadc.o
  CC    aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC    aarch64-softmmu/hw/misc/edu.o
  CC    aarch64-softmmu/hw/misc/auxbus.o
  CC    x86_64-softmmu/target-i386/helper.o
  CC    x86_64-softmmu/target-i386/cpu.o
  CC    aarch64-softmmu/hw/misc/aspeed_scu.o
  CC    x86_64-softmmu/target-i386/bpt_helper.o
  CC    x86_64-softmmu/target-i386/excp_helper.o
  CC    x86_64-softmmu/target-i386/fpu_helper.o
  CC    x86_64-softmmu/target-i386/cc_helper.o
  CC    x86_64-softmmu/target-i386/int_helper.o
  CC    x86_64-softmmu/target-i386/svm_helper.o
  CC    x86_64-softmmu/target-i386/smm_helper.o
  CC    aarch64-softmmu/hw/net/virtio-net.o
  CC    x86_64-softmmu/target-i386/misc_helper.o
  CC    aarch64-softmmu/hw/net/vhost_net.o
  CC    aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC    x86_64-softmmu/target-i386/mem_helper.o
  CC    aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC    x86_64-softmmu/target-i386/seg_helper.o
  CC    aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC    aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC    aarch64-softmmu/hw/sd/omap_mmc.o
  CC    x86_64-softmmu/target-i386/mpx_helper.o
  CC    x86_64-softmmu/target-i386/gdbstub.o
  CC    x86_64-softmmu/target-i386/machine.o
  CC    aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC    aarch64-softmmu/hw/ssi/omap_spi.o
  CC    x86_64-softmmu/target-i386/arch_memory_mapping.o
  CC    aarch64-softmmu/hw/ssi/imx_spi.o
  CC    x86_64-softmmu/target-i386/arch_dump.o
  CC    aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC    x86_64-softmmu/target-i386/monitor.o
  CC    aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC    x86_64-softmmu/target-i386/kvm.o
  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    x86_64-softmmu/target-i386/hyperv.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
  GEN   trace/generated-helpers.c
  CC    aarch64-softmmu/hw/usb/tusb6010.o
  CC    x86_64-softmmu/trace/control-target.o
  CC    aarch64-softmmu/hw/vfio/common.o
  CC    aarch64-softmmu/hw/vfio/pci.o
  CC    aarch64-softmmu/hw/vfio/pci-quirks.o
  CC    aarch64-softmmu/hw/vfio/platform.o
  CC    aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC    aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC    aarch64-softmmu/hw/vfio/spapr.o
  CC    aarch64-softmmu/hw/virtio/virtio.o
  CC    aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC    aarch64-softmmu/hw/virtio/vhost.o
  CC    aarch64-softmmu/hw/virtio/vhost-backend.o
  CC    aarch64-softmmu/hw/virtio/vhost-user.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/omap_sx1.o
  CC    aarch64-softmmu/hw/arm/palm.o
  CC    x86_64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:471: warning: ‘notify_method’ may be used uninitialized in this function
  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
  LINK  x86_64-softmmu/qemu-system-x86_64
  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/omap1.o
  CC    aarch64-softmmu/hw/arm/omap2.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-zynqmp.o
  CC    aarch64-softmmu/hw/arm/xlnx-ep108.o
  CC    aarch64-softmmu/hw/arm/fsl-imx25.o
  CC    aarch64-softmmu/hw/arm/imx25_pdk.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/ast2400.o
  CC    aarch64-softmmu/hw/arm/sabrelite.o
  CC    aarch64-softmmu/hw/arm/palmetto-bmc.o
  CC    aarch64-softmmu/target-arm/arm-semi.o
  CC    aarch64-softmmu/target-arm/machine.o
  CC    aarch64-softmmu/target-arm/psci.o
  CC    aarch64-softmmu/target-arm/arch_dump.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
../hw/core/loader-fit.o: In function `load_fit':
/tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
/tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-x86_64] Error 1
make: *** [subdir-x86_64-softmmu] Error 2
make: *** Waiting for unfinished jobs....
  CC    aarch64-softmmu/target-arm/iwmmxt_helper.o
  CC    aarch64-softmmu/target-arm/cpu.o
  CC    aarch64-softmmu/target-arm/neon_helper.o
  CC    aarch64-softmmu/target-arm/gdbstub.o
  CC    aarch64-softmmu/target-arm/cpu64.o
  CC    aarch64-softmmu/target-arm/translate-a64.o
/tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target-arm/translate-a64.c:6308: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target-arm/translate-a64.c:8035: warning: ‘rmode’ may be used uninitialized in this function
  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-aarch64
../hw/core/loader-fit.o: In function `load_fit':
/tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
/tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-aarch64] Error 1
make: *** [subdir-aarch64-softmmu] Error 2
tests/docker/Makefile.include:104: recipe for target 'docker-run-test-quick@centos6' failed
make: *** [docker-run-test-quick@centos6] Error 1
=== 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] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
  2016-08-19 19:25 ` [Qemu-devel] [PATCH 0/7] " no-reply
@ 2016-08-19 19:40   ` Paul Burton
  2016-09-08  8:57     ` Leon Alrae
  0 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-08-19 19:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: famz, aurelien, leon.alrae

On 19/08/16 20:25, no-reply@patchew.org wrote:
> Hi,
> 
> Your 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.
> 
> Message-id: 20160819190903.10974-1-paul.burton@imgtec.com
> Subject: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
> Type: series

FYI, this build failure occurs because dtc/libfdt is missing this commit:


https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/version.lds?id=a4b093f7366fdb429ca1781144d3985fa50d0fbb

Unfortunately the last release of dtc seems to be very old despite there
being fixes like that present in it for well over a year. I'm open to
suggestions about how to handle that...

Thanks,
    Paul

> 
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> set -e
> git submodule update --init dtc
> make J=8 docker-test-quick@centos6
> 
> # we need CURL DPRINTF patch
> # http://patchew.org/QEMU/1470027888-24381-1-git-send-email-famz%40redhat.com/
> #make J=8 docker-test-mingw@fedora
> === TEST SCRIPT END ===
> 
> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> Switched to a new branch 'test'
> 1821581 hw/mips: MIPS Boston board support
> 9b44da9 hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
> fe513d4 loader: Support Flattened Image Trees (FIT images)
> d0296cc target-mips: Provide function to test if a CPU supports an ISA
> 52c4cc5 hw/mips_gic: Update pin state on mask changes
> 402000d hw/mips_gictimer: provide API for retrieving frequency
> a80d326 hw/mips_cmgcr: allow GCR base to be moved
> 
> === OUTPUT BEGIN ===
> Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
> Cloning into 'dtc'...
> Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
>   BUILD centos6
>   ARCHIVE qemu.tgz
>   ARCHIVE dtc.tgz
>   COPY RUNNER
>   RUN test-quick in centos6
> No C++ compiler available; disabling C++ specific optional code
> Install prefix    /tmp/qemu-test/src/tests/docker/install
> BIOS directory    /tmp/qemu-test/src/tests/docker/install/share/qemu
> binary directory  /tmp/qemu-test/src/tests/docker/install/bin
> library directory /tmp/qemu-test/src/tests/docker/install/lib
> module directory  /tmp/qemu-test/src/tests/docker/install/lib/qemu
> libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
> include directory /tmp/qemu-test/src/tests/docker/install/include
> config directory  /tmp/qemu-test/src/tests/docker/install/etc
> local state directory   /tmp/qemu-test/src/tests/docker/install/var
> Manual directory  /tmp/qemu-test/src/tests/docker/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 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -g 
> QEMU_CFLAGS       -I/usr/include/pixman-1    -fPIE -DPIE -m64 -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  -Wendif-labels -Wmissing-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
> RDMA support      no
> TCG interpreter   no
> fdt support       yes
> preadv support    yes
> fdatasync         yes
> madvise           yes
> posix_madvise     yes
> uuid support      no
> libcap-ng support no
> vhost-net support yes
> vhost-scsi 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
> GlusterFS support no
> Archipelago support no
> gcov              gcov
> gcov enabled      no
> TPM support       yes
> libssh2 support   no
> TPM passthrough   yes
> QOM debugging     yes
> vhdx              no
> lzo support       no
> snappy support    no
> bzip2 support     no
> NUMA host support no
> tcmalloc support  no
> jemalloc support  no
> avx2 optimization no
>   GEN   x86_64-softmmu/config-devices.mak.tmp
>   GEN   aarch64-softmmu/config-devices.mak.tmp
>   GEN   config-host.h
>   GEN   qemu-options.def
>   GEN   qmp-commands.h
>   GEN   qapi-types.h
>   GEN   qapi-visit.h
>   GEN   qapi-event.h
>   GEN   x86_64-softmmu/config-devices.mak
>   GEN   aarch64-softmmu/config-devices.mak
>   GEN   qmp-introspect.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   config-all-devices.mak
>   GEN   trace/generated-events.h
>   GEN   trace/generated-tracers.h
>   GEN   trace/generated-tcg-tracers.h
>   GEN   trace/generated-helpers-wrappers.h
>   GEN   trace/generated-helpers.h
>   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-qmp-commands.h
>   GEN   qga/qapi-generated/qga-qapi-types.c
>   GEN   qga/qapi-generated/qga-qapi-visit.c
>   GEN   qga/qapi-generated/qga-qmp-marshal.c
>   GEN   qmp-introspect.c
>   GEN   qapi-types.c
>   GEN   qapi-visit.c
>   GEN   qapi-event.c
>   CC    qapi/qapi-visit-core.o
>   CC    qapi/qapi-dealloc-visitor.o
>   CC    qapi/qmp-input-visitor.o
>   CC    qapi/qmp-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/qint.o
>   CC    qobject/qstring.o
>   CC    qobject/qdict.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
>   GEN   trace/generated-events.c
>   CC    trace/control.o
>   CC    trace/qmp.o
>   CC    util/osdep.o
>   CC    util/cutils.o
>   CC    util/unicode.o
>   CC    util/qemu-timer-common.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/bitmap.o
>   CC    util/bitops.o
>   CC    util/hbitmap.o
>   CC    util/fifo8.o
>   CC    util/acl.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/uri.o
>   CC    util/notify.o
>   CC    util/qemu-option.o
>   CC    util/qemu-progress.o
>   CC    util/hexdump.o
>   CC    util/crc32c.o
>   CC    util/throttle.o
>   CC    util/getauxval.o
>   CC    util/readline.o
>   CC    util/rfifolock.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    crypto/pbkdf-stub.o
>   CC    stubs/arch-query-cpu-def.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
> /tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
> /tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
>   CC    stubs/cpu-get-icount.o
>   CC    stubs/dump.o
>   CC    stubs/fdset-add-fd.o
>   CC    stubs/fdset-find-fd.o
>   CC    stubs/fdset-get-fd.o
>   CC    stubs/fdset-remove-fd.o
>   CC    stubs/gdbstub.o
>   CC    stubs/get-fd.o
>   CC    stubs/get-next-serial.o
>   CC    stubs/get-vm-name.o
>   CC    stubs/iothread-lock.o
>   CC    stubs/is-daemonized.o
>   CC    stubs/machine-init-done.o
>   CC    stubs/migr-blocker.o
>   CC    stubs/mon-is-qmp.o
>   CC    stubs/mon-printf.o
>   CC    stubs/monitor-init.o
>   CC    stubs/qtest.o
>   CC    stubs/notify-event.o
>   CC    stubs/replay.o
>   CC    stubs/replay-user.o
>   CC    stubs/reset.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/cpus.o
>   CC    stubs/kvm.o
>   CC    stubs/qmp_pc_dimm_device_list.o
>   CC    stubs/target-monitor-defs.o
>   CC    stubs/target-get-monitor-def.o
>   CC    stubs/vhost.o
>   CC    stubs/iohandler.o
>   CC    stubs/smbios_type_38.o
>   CC    stubs/ipmi.o
>   CC    stubs/pc_madt_cpu_entry.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    async.o
>   CC    thread-pool.o
>   CC    block.o
>   CC    blockjob.o
>   CC    main-loop.o
>   CC    iohandler.o
>   CC    qemu-timer.o
>   CC    aio-posix.o
>   CC    qemu-io-cmds.o
>   CC    block/raw_bsd.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/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/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/raw-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/write-threshold.o
>   CC    block/crypto.o
>   CC    nbd/server.o
>   CC    nbd/client.o
>   CC    nbd/common.o
>   CC    block/dmg.o
>   CC    crypto/init.o
>   CC    crypto/hash.o
>   CC    crypto/hash-glib.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.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    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/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
>   GEN   qemu-img-cmds.h
>   CC    qemu-io.o
>   CC    qemu-bridge-helper.o
>   CC    blockdev.o
>   CC    blockdev-nbd.o
>   CC    iothread.o
>   CC    qdev-monitor.o
>   CC    device-hotplug.o
>   CC    os-posix.o
>   CC    qemu-char.o
>   CC    page_cache.o
>   CC    accel.o
>   CC    bt-host.o
>   CC    bt-vhci.o
>   CC    dma-helpers.o
>   CC    vl.o
>   CC    tpm.o
>   CC    device_tree.o
>   GEN   qmp-marshal.c
>   CC    qmp.o
>   CC    hmp.o
>   CC    tcg-runtime.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/msmouse.o
>   CC    backends/testdev.o
>   CC    backends/tpm.o
>   CC    backends/hostmem.o
>   CC    backends/hostmem-ram.o
>   CC    backends/hostmem-file.o
>   CC    block/stream.o
>   CC    block/backup.o
>   CC    disas/arm.o
>   CC    disas/i386.o
>   CC    fsdev/qemu-fsdev-dummy.o
>   CC    fsdev/qemu-fsdev-opts.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/memory_hotplug_acpi_table.o
>   CC    hw/acpi/cpu.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/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/gusemu_mixer.o
>   CC    hw/audio/cs4231a.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/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/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/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/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.o
>   CC    hw/core/qdev-properties.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/ptimer.o
>   CC    hw/core/sysbus.o
>   CC    hw/core/machine.o
>   CC    hw/core/null-machine.o
>   CC    hw/core/loader.o
>   CC    hw/core/loader-fit.o
>   CC    hw/core/qdev-properties-system.o
>   CC    hw/core/register.o
>   CC    hw/core/platform-bus.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/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/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/debugexit.o
>   CC    hw/misc/sga.o
>   CC    hw/misc/pc-testdev.o
>   CC    hw/misc/pci-testdev.o
>   CC    hw/misc/arm_l2x0.o
>   CC    hw/misc/arm_integrator_debug.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_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/imx_fec.o
>   CC    hw/net/cadence_gem.o
>   CC    hw/net/stellaris_enet.o
>   CC    hw/net/rocker/rocker.o
>   CC    hw/net/rocker/rocker_fp.o
>   CC    hw/net/rocker/rocker_desc.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/pci-bridge/pci_bridge_dev.o
>   CC    hw/pci-bridge/pci_expander_bridge.o
>   CC    hw/pci-bridge/xio3130_upstream.o
> /tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
> /tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
>   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/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/slotid_cap.o
>   CC    hw/pci/pci_host.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/mptconfig.o
>   CC    hw/scsi/mptendian.o
>   CC    hw/scsi/megasas.o
>   CC    hw/scsi/vmw_pvscsi.o
>   CC    hw/scsi/esp.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/sd/sdhci.o
>   CC    hw/smbios/smbios.o
>   CC    hw/smbios/smbios_type_38.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/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/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/tpm/tpm_passthrough.o
>   CC    hw/tpm/tpm_util.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/desc-msos.o
>   CC    hw/usb/hcd-uhci.o
>   CC    hw/usb/hcd-ohci.o
>   CC    hw/usb/hcd-ehci.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-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-network.o
>   CC    hw/usb/dev-bluetooth.o
>   CC    hw/usb/dev-smartcard-reader.o
>   CC    hw/usb/dev-mtp.o
>   CC    hw/usb/host-stub.o
>   CC    hw/virtio/virtio-rng.o
>   CC    hw/virtio/virtio-pci.o
>   CC    hw/virtio/virtio-bus.o
>   CC    hw/virtio/virtio-mmio.o
>   CC    hw/watchdog/watchdog.o
>   CC    hw/watchdog/wdt_i6300esb.o
>   CC    hw/watchdog/wdt_ib700.o
>   CC    migration/migration.o
>   CC    migration/socket.o
>   CC    migration/fd.o
>   CC    migration/exec.o
>   CC    migration/tls.o
>   CC    migration/vmstate.o
>   CC    migration/qemu-file.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/queue.o
>   CC    net/checksum.o
>   CC    net/util.o
>   CC    net/hub.o
>   CC    net/socket.o
>   CC    net/dump.o
>   CC    net/eth.o
>   CC    net/l2tpv3.o
>   CC    net/tap.o
>   CC    net/vhost-user.o
>   CC    net/tap-linux.o
>   CC    net/slirp.o
>   CC    net/filter.o
>   CC    net/filter-buffer.o
>   CC    net/filter-mirror.o
>   CC    qom/cpu.o
>   CC    replay/replay.o
>   CC    replay/replay-events.o
>   CC    replay/replay-internal.o
>   CC    replay/replay-time.o
>   CC    replay/replay-input.o
> /tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
> /tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
>   CC    replay/replay-char.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/ip_input.o
>   CC    slirp/ip6_output.o
>   CC    slirp/ip_output.o
>   CC    slirp/dnssearch.o
>   CC    slirp/dhcpv6.o
>   CC    slirp/mbuf.o
>   CC    slirp/slirp.o
>   CC    slirp/misc.o
>   CC    slirp/sbuf.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
> /tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
>   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    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/input-linux.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/vnc-jobs.o
>   LINK  tests/qemu-iotests/socket_scm_helper
>   CC    qga/commands.o
>   CC    qga/guest-agent-command-state.o
>   CC    qga/main.o
>   CC    qga/commands-posix.o
>   CC    qga/channel-posix.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
>   CC    qmp-introspect.o
>   CC    qapi-types.o
>   CC    qapi-visit.o
>   CC    qapi-event.o
>   AR    libqemustub.a
>   AS    optionrom/multiboot.o
>   CC    qemu-img.o
>   CC    qmp-marshal.o
>   AS    optionrom/linuxboot.o
>   CC    optionrom/linuxboot_dma.o
>   AS    optionrom/kvmvapic.o
> cc: unrecognized option '-no-integrated-as'
> cc: unrecognized option '-no-integrated-as'
>   CC    trace/generated-events.o
>   Building optionrom/multiboot.img
>   Building optionrom/linuxboot_dma.img
>   Building optionrom/multiboot.raw
>   Building optionrom/linuxboot.img
>   Building optionrom/linuxboot_dma.raw
>   Building optionrom/kvmvapic.img
>   Building optionrom/linuxboot.raw
>   Building optionrom/kvmvapic.raw
>   Signing optionrom/multiboot.bin
>   Signing optionrom/linuxboot.bin
>   Signing optionrom/linuxboot_dma.bin
>   Signing optionrom/kvmvapic.bin
>   AR    libqemuutil.a
>   LINK  qemu-ga
>   LINK  ivshmem-client
>   LINK  ivshmem-server
>   LINK  qemu-nbd
>   LINK  qemu-img
>   LINK  qemu-io
>   LINK  qemu-bridge-helper
>   GEN   x86_64-softmmu/hmp-commands-info.h
>   GEN   x86_64-softmmu/hmp-commands.h
>   GEN   x86_64-softmmu/qmp-commands-old.h
>   GEN   x86_64-softmmu/config-target.h
>   GEN   aarch64-softmmu/hmp-commands.h
>   GEN   aarch64-softmmu/hmp-commands-info.h
>   GEN   aarch64-softmmu/qmp-commands-old.h
>   GEN   aarch64-softmmu/config-target.h
>   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/exec.o
>   CC    x86_64-softmmu/cpu-exec-common.o
>   CC    aarch64-softmmu/translate-all.o
>   CC    aarch64-softmmu/cpu-exec.o
>   CC    x86_64-softmmu/tcg/tcg.o
>   CC    x86_64-softmmu/tcg/tcg-op.o
>   CC    x86_64-softmmu/tcg/optimize.o
>   CC    aarch64-softmmu/translate-common.o
>   CC    x86_64-softmmu/tcg/tcg-common.o
>   CC    x86_64-softmmu/fpu/softfloat.o
>   CC    x86_64-softmmu/disas.o
>   CC    x86_64-softmmu/arch_init.o
>   CC    x86_64-softmmu/cpus.o
>   CC    x86_64-softmmu/monitor.o
>   CC    x86_64-softmmu/gdbstub.o
>   CC    aarch64-softmmu/cpu-exec-common.o
>   CC    x86_64-softmmu/balloon.o
>   CC    x86_64-softmmu/ioport.o
>   CC    x86_64-softmmu/numa.o
>   CC    x86_64-softmmu/qtest.o
>   CC    aarch64-softmmu/tcg/tcg.o
>   CC    aarch64-softmmu/tcg/tcg-op.o
>   CC    x86_64-softmmu/bootdevice.o
>   CC    aarch64-softmmu/tcg/optimize.o
>   CC    x86_64-softmmu/kvm-all.o
>   CC    x86_64-softmmu/memory.o
>   CC    aarch64-softmmu/tcg/tcg-common.o
>   CC    aarch64-softmmu/fpu/softfloat.o
>   CC    aarch64-softmmu/disas.o
>   GEN   aarch64-softmmu/gdbstub-xml.c
>   CC    aarch64-softmmu/kvm-stub.o
>   CC    x86_64-softmmu/cputlb.o
>   CC    aarch64-softmmu/arch_init.o
>   CC    x86_64-softmmu/memory_mapping.o
>   CC    x86_64-softmmu/dump.o
>   CC    x86_64-softmmu/migration/ram.o
>   CC    x86_64-softmmu/migration/savevm.o
>   CC    aarch64-softmmu/cpus.o
>   CC    aarch64-softmmu/monitor.o
>   CC    x86_64-softmmu/xen-common-stub.o
>   CC    x86_64-softmmu/xen-hvm-stub.o
>   CC    x86_64-softmmu/hw/acpi/nvdimm.o
>   CC    x86_64-softmmu/hw/block/virtio-blk.o
>   CC    aarch64-softmmu/gdbstub.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/nmi.o
>   CC    x86_64-softmmu/hw/cpu/core.o
>   CC    aarch64-softmmu/balloon.o
>   CC    aarch64-softmmu/ioport.o
>   CC    x86_64-softmmu/hw/display/vga.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    aarch64-softmmu/numa.o
>   CC    x86_64-softmmu/hw/display/virtio-vga.o
>   CC    aarch64-softmmu/qtest.o
>   CC    aarch64-softmmu/bootdevice.o
>   CC    x86_64-softmmu/hw/intc/apic.o
>   CC    x86_64-softmmu/hw/intc/apic_common.o
>   CC    aarch64-softmmu/memory.o
>   CC    x86_64-softmmu/hw/intc/ioapic.o
>   CC    aarch64-softmmu/cputlb.o
>   CC    aarch64-softmmu/memory_mapping.o
>   CC    x86_64-softmmu/hw/isa/lpc_ich9.o
>   CC    x86_64-softmmu/hw/misc/vmport.o
>   CC    aarch64-softmmu/dump.o
>   CC    aarch64-softmmu/migration/ram.o
>   CC    aarch64-softmmu/migration/savevm.o
>   CC    aarch64-softmmu/xen-common-stub.o
>   CC    x86_64-softmmu/hw/misc/ivshmem.o
>   CC    aarch64-softmmu/xen-hvm-stub.o
>   CC    x86_64-softmmu/hw/misc/pvpanic.o
>   CC    x86_64-softmmu/hw/misc/edu.o
>   CC    aarch64-softmmu/hw/block/virtio-blk.o
>   CC    x86_64-softmmu/hw/misc/hyperv_testdev.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/block/dataplane/virtio-blk.o
>   CC    x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
>   CC    aarch64-softmmu/hw/char/exynos4210_uart.o
>   CC    x86_64-softmmu/hw/scsi/vhost-scsi.o
>   CC    x86_64-softmmu/hw/timer/mc146818rtc.o
>   CC    aarch64-softmmu/hw/char/omap_uart.o
>   CC    x86_64-softmmu/hw/vfio/common.o
>   CC    aarch64-softmmu/hw/char/digic-uart.o
>   CC    x86_64-softmmu/hw/vfio/pci.o
>   CC    aarch64-softmmu/hw/char/stm32f2xx_usart.o
>   CC    x86_64-softmmu/hw/vfio/pci-quirks.o
>   CC    aarch64-softmmu/hw/char/bcm2835_aux.o
>   CC    x86_64-softmmu/hw/vfio/platform.o
>   CC    aarch64-softmmu/hw/char/virtio-serial-bus.o
>   CC    x86_64-softmmu/hw/vfio/calxeda-xgmac.o
>   CC    x86_64-softmmu/hw/vfio/amd-xgbe.o
>   CC    x86_64-softmmu/hw/vfio/spapr.o
>   CC    aarch64-softmmu/hw/core/nmi.o
>   CC    aarch64-softmmu/hw/cpu/arm11mpcore.o
>   CC    aarch64-softmmu/hw/cpu/realview_mpcore.o
>   CC    x86_64-softmmu/hw/virtio/virtio.o
>   CC    aarch64-softmmu/hw/cpu/a9mpcore.o
>   CC    x86_64-softmmu/hw/virtio/virtio-balloon.o
>   CC    aarch64-softmmu/hw/cpu/a15mpcore.o
>   CC    aarch64-softmmu/hw/cpu/core.o
>   CC    aarch64-softmmu/hw/display/omap_dss.o
>   CC    x86_64-softmmu/hw/virtio/vhost.o
>   CC    x86_64-softmmu/hw/virtio/vhost-backend.o
>   CC    aarch64-softmmu/hw/display/omap_lcdc.o
>   CC    aarch64-softmmu/hw/display/pxa2xx_lcd.o
>   CC    x86_64-softmmu/hw/virtio/vhost-user.o
>   CC    aarch64-softmmu/hw/display/bcm2835_fb.o
>   CC    x86_64-softmmu/hw/i386/multiboot.o
>   CC    aarch64-softmmu/hw/display/vga.o
>   CC    x86_64-softmmu/hw/i386/pc.o
>   CC    aarch64-softmmu/hw/display/virtio-gpu.o
>   CC    aarch64-softmmu/hw/display/virtio-gpu-3d.o
>   CC    aarch64-softmmu/hw/display/virtio-gpu-pci.o
>   CC    aarch64-softmmu/hw/display/dpcd.o
>   CC    aarch64-softmmu/hw/display/xlnx_dp.o
>   CC    x86_64-softmmu/hw/i386/pc_piix.o
>   CC    aarch64-softmmu/hw/dma/xlnx_dpdma.o
>   CC    aarch64-softmmu/hw/dma/omap_dma.o
>   CC    x86_64-softmmu/hw/i386/pc_q35.o
>   CC    aarch64-softmmu/hw/dma/soc_dma.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    aarch64-softmmu/hw/i2c/omap_i2c.o
>   CC    aarch64-softmmu/hw/input/pxa2xx_keypad.o
>   CC    aarch64-softmmu/hw/input/tsc210x.o
>   CC    aarch64-softmmu/hw/intc/armv7m_nvic.o
>   CC    aarch64-softmmu/hw/intc/exynos4210_gic.o
>   CC    aarch64-softmmu/hw/intc/exynos4210_combiner.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
>   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/ivshmem.o
>   CC    aarch64-softmmu/hw/misc/arm_sysctl.o
>   CC    x86_64-softmmu/hw/i386/pc_sysfw.o
>   CC    aarch64-softmmu/hw/misc/cbus.o
>   CC    aarch64-softmmu/hw/misc/exynos4210_pmu.o
>   CC    aarch64-softmmu/hw/misc/imx_ccm.o
>   CC    aarch64-softmmu/hw/misc/imx31_ccm.o
>   CC    x86_64-softmmu/hw/i386/x86-iommu.o
>   CC    aarch64-softmmu/hw/misc/imx25_ccm.o
>   CC    x86_64-softmmu/hw/i386/intel_iommu.o
>   CC    x86_64-softmmu/hw/i386/kvmvapic.o
>   CC    x86_64-softmmu/hw/i386/acpi-build.o
>   CC    x86_64-softmmu/hw/i386/pci-assign-load-rom.o
>   CC    x86_64-softmmu/hw/i386/kvm/clock.o
>   CC    x86_64-softmmu/hw/i386/kvm/apic.o
>   CC    aarch64-softmmu/hw/misc/imx6_ccm.o
>   CC    aarch64-softmmu/hw/misc/imx6_src.o
>   CC    x86_64-softmmu/hw/i386/kvm/i8259.o
> /tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
> /tmp/qemu-test/src/hw/i386/pc_piix.c:1037: warning: ‘pch_rev_id’ may be used uninitialized in this function
>   CC    x86_64-softmmu/hw/i386/kvm/ioapic.o
>   CC    aarch64-softmmu/hw/misc/mst_fpga.o
>   CC    x86_64-softmmu/hw/i386/kvm/i8254.o
>   CC    x86_64-softmmu/hw/i386/kvm/pci-assign.o
>   CC    aarch64-softmmu/hw/misc/omap_clk.o
>   CC    aarch64-softmmu/hw/misc/omap_gpmc.o
>   CC    x86_64-softmmu/target-i386/translate.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/zynq_slcr.o
>   CC    aarch64-softmmu/hw/misc/zynq-xadc.o
>   CC    aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
>   CC    aarch64-softmmu/hw/misc/edu.o
>   CC    aarch64-softmmu/hw/misc/auxbus.o
>   CC    x86_64-softmmu/target-i386/helper.o
>   CC    x86_64-softmmu/target-i386/cpu.o
>   CC    aarch64-softmmu/hw/misc/aspeed_scu.o
>   CC    x86_64-softmmu/target-i386/bpt_helper.o
>   CC    x86_64-softmmu/target-i386/excp_helper.o
>   CC    x86_64-softmmu/target-i386/fpu_helper.o
>   CC    x86_64-softmmu/target-i386/cc_helper.o
>   CC    x86_64-softmmu/target-i386/int_helper.o
>   CC    x86_64-softmmu/target-i386/svm_helper.o
>   CC    x86_64-softmmu/target-i386/smm_helper.o
>   CC    aarch64-softmmu/hw/net/virtio-net.o
>   CC    x86_64-softmmu/target-i386/misc_helper.o
>   CC    aarch64-softmmu/hw/net/vhost_net.o
>   CC    aarch64-softmmu/hw/pcmcia/pxa2xx.o
>   CC    x86_64-softmmu/target-i386/mem_helper.o
>   CC    aarch64-softmmu/hw/scsi/virtio-scsi.o
>   CC    x86_64-softmmu/target-i386/seg_helper.o
>   CC    aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
>   CC    aarch64-softmmu/hw/scsi/vhost-scsi.o
>   CC    aarch64-softmmu/hw/sd/omap_mmc.o
>   CC    x86_64-softmmu/target-i386/mpx_helper.o
>   CC    x86_64-softmmu/target-i386/gdbstub.o
>   CC    x86_64-softmmu/target-i386/machine.o
>   CC    aarch64-softmmu/hw/sd/pxa2xx_mmci.o
>   CC    aarch64-softmmu/hw/ssi/omap_spi.o
>   CC    x86_64-softmmu/target-i386/arch_memory_mapping.o
>   CC    aarch64-softmmu/hw/ssi/imx_spi.o
>   CC    x86_64-softmmu/target-i386/arch_dump.o
>   CC    aarch64-softmmu/hw/timer/exynos4210_mct.o
>   CC    x86_64-softmmu/target-i386/monitor.o
>   CC    aarch64-softmmu/hw/timer/exynos4210_pwm.o
>   CC    x86_64-softmmu/target-i386/kvm.o
>   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    x86_64-softmmu/target-i386/hyperv.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
>   GEN   trace/generated-helpers.c
>   CC    aarch64-softmmu/hw/usb/tusb6010.o
>   CC    x86_64-softmmu/trace/control-target.o
>   CC    aarch64-softmmu/hw/vfio/common.o
>   CC    aarch64-softmmu/hw/vfio/pci.o
>   CC    aarch64-softmmu/hw/vfio/pci-quirks.o
>   CC    aarch64-softmmu/hw/vfio/platform.o
>   CC    aarch64-softmmu/hw/vfio/calxeda-xgmac.o
>   CC    aarch64-softmmu/hw/vfio/amd-xgbe.o
>   CC    aarch64-softmmu/hw/vfio/spapr.o
>   CC    aarch64-softmmu/hw/virtio/virtio.o
>   CC    aarch64-softmmu/hw/virtio/virtio-balloon.o
>   CC    aarch64-softmmu/hw/virtio/vhost.o
>   CC    aarch64-softmmu/hw/virtio/vhost-backend.o
>   CC    aarch64-softmmu/hw/virtio/vhost-user.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/omap_sx1.o
>   CC    aarch64-softmmu/hw/arm/palm.o
>   CC    x86_64-softmmu/trace/generated-helpers.o
> /tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
> /tmp/qemu-test/src/hw/i386/acpi-build.c:471: warning: ‘notify_method’ may be used uninitialized in this function
>   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
>   LINK  x86_64-softmmu/qemu-system-x86_64
>   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/omap1.o
>   CC    aarch64-softmmu/hw/arm/omap2.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-zynqmp.o
>   CC    aarch64-softmmu/hw/arm/xlnx-ep108.o
>   CC    aarch64-softmmu/hw/arm/fsl-imx25.o
>   CC    aarch64-softmmu/hw/arm/imx25_pdk.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/ast2400.o
>   CC    aarch64-softmmu/hw/arm/sabrelite.o
>   CC    aarch64-softmmu/hw/arm/palmetto-bmc.o
>   CC    aarch64-softmmu/target-arm/arm-semi.o
>   CC    aarch64-softmmu/target-arm/machine.o
>   CC    aarch64-softmmu/target-arm/psci.o
>   CC    aarch64-softmmu/target-arm/arch_dump.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
> ../hw/core/loader-fit.o: In function `load_fit':
> /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
> /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
> collect2: ld returned 1 exit status
> make[1]: *** [qemu-system-x86_64] Error 1
> make: *** [subdir-x86_64-softmmu] Error 2
> make: *** Waiting for unfinished jobs....
>   CC    aarch64-softmmu/target-arm/iwmmxt_helper.o
>   CC    aarch64-softmmu/target-arm/cpu.o
>   CC    aarch64-softmmu/target-arm/neon_helper.o
>   CC    aarch64-softmmu/target-arm/gdbstub.o
>   CC    aarch64-softmmu/target-arm/cpu64.o
>   CC    aarch64-softmmu/target-arm/translate-a64.o
> /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
> /tmp/qemu-test/src/target-arm/translate-a64.c:6308: warning: ‘tcg_src_hi’ may be used uninitialized in this function
> /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
> /tmp/qemu-test/src/target-arm/translate-a64.c:8035: warning: ‘rmode’ may be used uninitialized in this function
>   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-aarch64
> ../hw/core/loader-fit.o: In function `load_fit':
> /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
> /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
> collect2: ld returned 1 exit status
> make[1]: *** [qemu-system-aarch64] Error 1
> make: *** [subdir-aarch64-softmmu] Error 2
> tests/docker/Makefile.include:104: recipe for target 'docker-run-test-quick@centos6' failed
> make: *** [docker-run-test-quick@centos6] Error 1
> === 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] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved Paul Burton
@ 2016-09-07 13:09   ` Leon Alrae
  0 siblings, 0 replies; 18+ messages in thread
From: Leon Alrae @ 2016-09-07 13:09 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, Aurelien Jarno

On Fri, Aug 19, 2016 at 08:08:57PM +0100, Paul Burton wrote:
> Support moving the GCR base address & updating the CPU's CP0 CMGCRBase
> register appropriately. This is required if a platform needs to move its
> GCRs away from other memory, as the MIPS Boston development board does
> to avoid its flash memory.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> ---
>  hw/misc/mips_cmgcr.c         | 17 +++++++++++++++++
>  include/hw/misc/mips_cmgcr.h |  3 +++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c
> index b3ba166..a1edb53 100644
> --- a/hw/misc/mips_cmgcr.c
> +++ b/hw/misc/mips_cmgcr.c
> @@ -29,6 +29,20 @@ static inline bool is_gic_connected(MIPSGCRState *s)
>      return s->gic_mr != NULL;
>  }
>  
> +static inline void update_gcr_base(MIPSGCRState *gcr, uint64_t val)
> +{
> +    CPUState *cpu;
> +    MIPSCPU *mips_cpu;
> +
> +    gcr->gcr_base = val & GCR_BASE_GCRBASE_MSK;
> +    memory_region_set_address(&gcr->iomem, gcr->gcr_base);
> +
> +    CPU_FOREACH(cpu) {
> +        mips_cpu = MIPS_CPU(cpu);
> +        mips_cpu->env.CP0_CMGCRBase = gcr->gcr_base >> 4;
> +    }
> +}
> +
>  static inline void update_cpc_base(MIPSGCRState *gcr, uint64_t val)
>  {
>      if (is_cpc_connected(gcr)) {
> @@ -117,6 +131,9 @@ static void gcr_write(void *opaque, hwaddr addr, uint64_t data, unsigned size)
>      MIPSGCRVPState *other_vps = &gcr->vps[current_vps->other];
>  
>      switch (addr) {
> +    case GCR_BASE_OFS:
> +        update_gcr_base(gcr, data);
> +        break;
>      case GCR_GIC_BASE_OFS:
>          update_gic_base(gcr, data);
>          break;
> diff --git a/include/hw/misc/mips_cmgcr.h b/include/hw/misc/mips_cmgcr.h
> index a209d91..31bda6a 100644
> --- a/include/hw/misc/mips_cmgcr.h
> +++ b/include/hw/misc/mips_cmgcr.h
> @@ -41,6 +41,9 @@
>  #define GCR_L2_CONFIG_BYPASS_SHF    20
>  #define GCR_L2_CONFIG_BYPASS_MSK    ((0x1ULL) << GCR_L2_CONFIG_BYPASS_SHF)
>  
> +/* GCR_BASE register fields */
> +#define GCR_BASE_GCRBASE_MSK     0xffffffff8000ULL;

Unnecessary semicolon?

Otherwise

Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency Paul Burton
@ 2016-09-07 13:13   ` Leon Alrae
  0 siblings, 0 replies; 18+ messages in thread
From: Leon Alrae @ 2016-09-07 13:13 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, Aurelien Jarno

On Fri, Aug 19, 2016 at 08:08:58PM +0100, Paul Burton wrote:
> Provide a new function mips_gictimer_get_freq() which returns the
> frequency at which a GIC timer will count. This will be useful for
> boards which perform setup based upon this frequency.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> ---
>  hw/timer/mips_gictimer.c         | 5 +++++
>  include/hw/timer/mips_gictimer.h | 1 +
>  2 files changed, 6 insertions(+)

Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes
  2016-08-19 19:08 ` [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes Paul Burton
@ 2016-09-07 13:40   ` Leon Alrae
  0 siblings, 0 replies; 18+ messages in thread
From: Leon Alrae @ 2016-09-07 13:40 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, Aurelien Jarno

On Fri, Aug 19, 2016 at 08:08:59PM +0100, Paul Burton wrote:
> If the GIC interrupt mask is changed by a write to the smask (set mask)
> or rmask (reset mask) registers, we need to re-evaluate the state of the
> pins/IRQs fed to the CPU. Without doing so we risk leaving a pin high
> despite the interrupt that led to that state being masked, or losing
> interrupts if an already pending interrupt is unmasked.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> ---
>  hw/intc/mips_gic.c | 56 ++++++++++++++++++++++++++++++------------------------
>  1 file changed, 31 insertions(+), 25 deletions(-)

Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA Paul Burton
@ 2016-09-07 13:48   ` Leon Alrae
  0 siblings, 0 replies; 18+ messages in thread
From: Leon Alrae @ 2016-09-07 13:48 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, Aurelien Jarno

On Fri, Aug 19, 2016 at 08:09:00PM +0100, Paul Burton wrote:
> Provide a new cpu_supports_isa function which allows callers to
> determine whether a CPU supports one of the ISA_ flags, by testing
> whether the associated struct mips_def_t sets the ISA flags in its
> insn_flags field.
> 
> An example use of this is to allow boards which generate bootloader code
> to determine the properties of the CPU that will be used, for example
> whether the CPU is 64 bit or which architecture revision it implements.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> ---
>  target-mips/cpu.h       |  1 +
>  target-mips/translate.c | 10 ++++++++++
>  2 files changed, 11 insertions(+)

Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
  2016-08-19 19:40   ` Paul Burton
@ 2016-09-08  8:57     ` Leon Alrae
  2016-09-08 10:46       ` Paul Burton
  0 siblings, 1 reply; 18+ messages in thread
From: Leon Alrae @ 2016-09-08  8:57 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, famz, aurelien

On Fri, Aug 19, 2016 at 08:40:32PM +0100, Paul Burton wrote:
> On 19/08/16 20:25, no-reply@patchew.org wrote:
> > Hi,
> > 
> > Your 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.
> > 
> > Message-id: 20160819190903.10974-1-paul.burton@imgtec.com
> > Subject: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
> > Type: series
> 
> FYI, this build failure occurs because dtc/libfdt is missing this commit:
> 
> 
> https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/version.lds?id=a4b093f7366fdb429ca1781144d3985fa50d0fbb
> 
> Unfortunately the last release of dtc seems to be very old despite there
> being fixes like that present in it for well over a year. I'm open to
> suggestions about how to handle that...

Looks like 1.4.2 has appeared recently and it contains above commit.

One way would be just to bump our minimal dtc version requirement from
1.4.0 to 1.4.2 (and update qemu's dtc submodule as well)...

Thanks,
Leon

> 
> Thanks,
>     Paul
> 
> > 
> > === TEST SCRIPT BEGIN ===
> > #!/bin/bash
> > set -e
> > git submodule update --init dtc
> > make J=8 docker-test-quick@centos6
> > 
> > # we need CURL DPRINTF patch
> > # http://patchew.org/QEMU/1470027888-24381-1-git-send-email-famz%40redhat.com/
> > #make J=8 docker-test-mingw@fedora
> > === TEST SCRIPT END ===
> > 
> > Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> > Switched to a new branch 'test'
> > 1821581 hw/mips: MIPS Boston board support
> > 9b44da9 hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
> > fe513d4 loader: Support Flattened Image Trees (FIT images)
> > d0296cc target-mips: Provide function to test if a CPU supports an ISA
> > 52c4cc5 hw/mips_gic: Update pin state on mask changes
> > 402000d hw/mips_gictimer: provide API for retrieving frequency
> > a80d326 hw/mips_cmgcr: allow GCR base to be moved
> > 
> > === OUTPUT BEGIN ===
> > Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
> > Cloning into 'dtc'...
> > Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
> >   BUILD centos6
> >   ARCHIVE qemu.tgz
> >   ARCHIVE dtc.tgz
> >   COPY RUNNER
> >   RUN test-quick in centos6
> > No C++ compiler available; disabling C++ specific optional code
> > Install prefix    /tmp/qemu-test/src/tests/docker/install
> > BIOS directory    /tmp/qemu-test/src/tests/docker/install/share/qemu
> > binary directory  /tmp/qemu-test/src/tests/docker/install/bin
> > library directory /tmp/qemu-test/src/tests/docker/install/lib
> > module directory  /tmp/qemu-test/src/tests/docker/install/lib/qemu
> > libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
> > include directory /tmp/qemu-test/src/tests/docker/install/include
> > config directory  /tmp/qemu-test/src/tests/docker/install/etc
> > local state directory   /tmp/qemu-test/src/tests/docker/install/var
> > Manual directory  /tmp/qemu-test/src/tests/docker/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 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -g 
> > QEMU_CFLAGS       -I/usr/include/pixman-1    -fPIE -DPIE -m64 -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  -Wendif-labels -Wmissing-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
> > RDMA support      no
> > TCG interpreter   no
> > fdt support       yes
> > preadv support    yes
> > fdatasync         yes
> > madvise           yes
> > posix_madvise     yes
> > uuid support      no
> > libcap-ng support no
> > vhost-net support yes
> > vhost-scsi 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
> > GlusterFS support no
> > Archipelago support no
> > gcov              gcov
> > gcov enabled      no
> > TPM support       yes
> > libssh2 support   no
> > TPM passthrough   yes
> > QOM debugging     yes
> > vhdx              no
> > lzo support       no
> > snappy support    no
> > bzip2 support     no
> > NUMA host support no
> > tcmalloc support  no
> > jemalloc support  no
> > avx2 optimization no
> >   GEN   x86_64-softmmu/config-devices.mak.tmp
> >   GEN   aarch64-softmmu/config-devices.mak.tmp
> >   GEN   config-host.h
> >   GEN   qemu-options.def
> >   GEN   qmp-commands.h
> >   GEN   qapi-types.h
> >   GEN   qapi-visit.h
> >   GEN   qapi-event.h
> >   GEN   x86_64-softmmu/config-devices.mak
> >   GEN   aarch64-softmmu/config-devices.mak
> >   GEN   qmp-introspect.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   config-all-devices.mak
> >   GEN   trace/generated-events.h
> >   GEN   trace/generated-tracers.h
> >   GEN   trace/generated-tcg-tracers.h
> >   GEN   trace/generated-helpers-wrappers.h
> >   GEN   trace/generated-helpers.h
> >   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-qmp-commands.h
> >   GEN   qga/qapi-generated/qga-qapi-types.c
> >   GEN   qga/qapi-generated/qga-qapi-visit.c
> >   GEN   qga/qapi-generated/qga-qmp-marshal.c
> >   GEN   qmp-introspect.c
> >   GEN   qapi-types.c
> >   GEN   qapi-visit.c
> >   GEN   qapi-event.c
> >   CC    qapi/qapi-visit-core.o
> >   CC    qapi/qapi-dealloc-visitor.o
> >   CC    qapi/qmp-input-visitor.o
> >   CC    qapi/qmp-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/qint.o
> >   CC    qobject/qstring.o
> >   CC    qobject/qdict.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
> >   GEN   trace/generated-events.c
> >   CC    trace/control.o
> >   CC    trace/qmp.o
> >   CC    util/osdep.o
> >   CC    util/cutils.o
> >   CC    util/unicode.o
> >   CC    util/qemu-timer-common.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/bitmap.o
> >   CC    util/bitops.o
> >   CC    util/hbitmap.o
> >   CC    util/fifo8.o
> >   CC    util/acl.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/uri.o
> >   CC    util/notify.o
> >   CC    util/qemu-option.o
> >   CC    util/qemu-progress.o
> >   CC    util/hexdump.o
> >   CC    util/crc32c.o
> >   CC    util/throttle.o
> >   CC    util/getauxval.o
> >   CC    util/readline.o
> >   CC    util/rfifolock.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    crypto/pbkdf-stub.o
> >   CC    stubs/arch-query-cpu-def.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
> > /tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
> > /tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
> >   CC    stubs/cpu-get-icount.o
> >   CC    stubs/dump.o
> >   CC    stubs/fdset-add-fd.o
> >   CC    stubs/fdset-find-fd.o
> >   CC    stubs/fdset-get-fd.o
> >   CC    stubs/fdset-remove-fd.o
> >   CC    stubs/gdbstub.o
> >   CC    stubs/get-fd.o
> >   CC    stubs/get-next-serial.o
> >   CC    stubs/get-vm-name.o
> >   CC    stubs/iothread-lock.o
> >   CC    stubs/is-daemonized.o
> >   CC    stubs/machine-init-done.o
> >   CC    stubs/migr-blocker.o
> >   CC    stubs/mon-is-qmp.o
> >   CC    stubs/mon-printf.o
> >   CC    stubs/monitor-init.o
> >   CC    stubs/qtest.o
> >   CC    stubs/notify-event.o
> >   CC    stubs/replay.o
> >   CC    stubs/replay-user.o
> >   CC    stubs/reset.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/cpus.o
> >   CC    stubs/kvm.o
> >   CC    stubs/qmp_pc_dimm_device_list.o
> >   CC    stubs/target-monitor-defs.o
> >   CC    stubs/target-get-monitor-def.o
> >   CC    stubs/vhost.o
> >   CC    stubs/iohandler.o
> >   CC    stubs/smbios_type_38.o
> >   CC    stubs/ipmi.o
> >   CC    stubs/pc_madt_cpu_entry.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    async.o
> >   CC    thread-pool.o
> >   CC    block.o
> >   CC    blockjob.o
> >   CC    main-loop.o
> >   CC    iohandler.o
> >   CC    qemu-timer.o
> >   CC    aio-posix.o
> >   CC    qemu-io-cmds.o
> >   CC    block/raw_bsd.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/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/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/raw-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/write-threshold.o
> >   CC    block/crypto.o
> >   CC    nbd/server.o
> >   CC    nbd/client.o
> >   CC    nbd/common.o
> >   CC    block/dmg.o
> >   CC    crypto/init.o
> >   CC    crypto/hash.o
> >   CC    crypto/hash-glib.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.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    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/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
> >   GEN   qemu-img-cmds.h
> >   CC    qemu-io.o
> >   CC    qemu-bridge-helper.o
> >   CC    blockdev.o
> >   CC    blockdev-nbd.o
> >   CC    iothread.o
> >   CC    qdev-monitor.o
> >   CC    device-hotplug.o
> >   CC    os-posix.o
> >   CC    qemu-char.o
> >   CC    page_cache.o
> >   CC    accel.o
> >   CC    bt-host.o
> >   CC    bt-vhci.o
> >   CC    dma-helpers.o
> >   CC    vl.o
> >   CC    tpm.o
> >   CC    device_tree.o
> >   GEN   qmp-marshal.c
> >   CC    qmp.o
> >   CC    hmp.o
> >   CC    tcg-runtime.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/msmouse.o
> >   CC    backends/testdev.o
> >   CC    backends/tpm.o
> >   CC    backends/hostmem.o
> >   CC    backends/hostmem-ram.o
> >   CC    backends/hostmem-file.o
> >   CC    block/stream.o
> >   CC    block/backup.o
> >   CC    disas/arm.o
> >   CC    disas/i386.o
> >   CC    fsdev/qemu-fsdev-dummy.o
> >   CC    fsdev/qemu-fsdev-opts.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/memory_hotplug_acpi_table.o
> >   CC    hw/acpi/cpu.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/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/gusemu_mixer.o
> >   CC    hw/audio/cs4231a.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/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/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/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/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.o
> >   CC    hw/core/qdev-properties.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/ptimer.o
> >   CC    hw/core/sysbus.o
> >   CC    hw/core/machine.o
> >   CC    hw/core/null-machine.o
> >   CC    hw/core/loader.o
> >   CC    hw/core/loader-fit.o
> >   CC    hw/core/qdev-properties-system.o
> >   CC    hw/core/register.o
> >   CC    hw/core/platform-bus.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/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/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/debugexit.o
> >   CC    hw/misc/sga.o
> >   CC    hw/misc/pc-testdev.o
> >   CC    hw/misc/pci-testdev.o
> >   CC    hw/misc/arm_l2x0.o
> >   CC    hw/misc/arm_integrator_debug.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_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/imx_fec.o
> >   CC    hw/net/cadence_gem.o
> >   CC    hw/net/stellaris_enet.o
> >   CC    hw/net/rocker/rocker.o
> >   CC    hw/net/rocker/rocker_fp.o
> >   CC    hw/net/rocker/rocker_desc.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/pci-bridge/pci_bridge_dev.o
> >   CC    hw/pci-bridge/pci_expander_bridge.o
> >   CC    hw/pci-bridge/xio3130_upstream.o
> > /tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
> > /tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
> >   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/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/slotid_cap.o
> >   CC    hw/pci/pci_host.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/mptconfig.o
> >   CC    hw/scsi/mptendian.o
> >   CC    hw/scsi/megasas.o
> >   CC    hw/scsi/vmw_pvscsi.o
> >   CC    hw/scsi/esp.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/sd/sdhci.o
> >   CC    hw/smbios/smbios.o
> >   CC    hw/smbios/smbios_type_38.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/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/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/tpm/tpm_passthrough.o
> >   CC    hw/tpm/tpm_util.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/desc-msos.o
> >   CC    hw/usb/hcd-uhci.o
> >   CC    hw/usb/hcd-ohci.o
> >   CC    hw/usb/hcd-ehci.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-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-network.o
> >   CC    hw/usb/dev-bluetooth.o
> >   CC    hw/usb/dev-smartcard-reader.o
> >   CC    hw/usb/dev-mtp.o
> >   CC    hw/usb/host-stub.o
> >   CC    hw/virtio/virtio-rng.o
> >   CC    hw/virtio/virtio-pci.o
> >   CC    hw/virtio/virtio-bus.o
> >   CC    hw/virtio/virtio-mmio.o
> >   CC    hw/watchdog/watchdog.o
> >   CC    hw/watchdog/wdt_i6300esb.o
> >   CC    hw/watchdog/wdt_ib700.o
> >   CC    migration/migration.o
> >   CC    migration/socket.o
> >   CC    migration/fd.o
> >   CC    migration/exec.o
> >   CC    migration/tls.o
> >   CC    migration/vmstate.o
> >   CC    migration/qemu-file.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/queue.o
> >   CC    net/checksum.o
> >   CC    net/util.o
> >   CC    net/hub.o
> >   CC    net/socket.o
> >   CC    net/dump.o
> >   CC    net/eth.o
> >   CC    net/l2tpv3.o
> >   CC    net/tap.o
> >   CC    net/vhost-user.o
> >   CC    net/tap-linux.o
> >   CC    net/slirp.o
> >   CC    net/filter.o
> >   CC    net/filter-buffer.o
> >   CC    net/filter-mirror.o
> >   CC    qom/cpu.o
> >   CC    replay/replay.o
> >   CC    replay/replay-events.o
> >   CC    replay/replay-internal.o
> >   CC    replay/replay-time.o
> >   CC    replay/replay-input.o
> > /tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
> > /tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
> >   CC    replay/replay-char.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/ip_input.o
> >   CC    slirp/ip6_output.o
> >   CC    slirp/ip_output.o
> >   CC    slirp/dnssearch.o
> >   CC    slirp/dhcpv6.o
> >   CC    slirp/mbuf.o
> >   CC    slirp/slirp.o
> >   CC    slirp/misc.o
> >   CC    slirp/sbuf.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
> > /tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
> > /tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
> >   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    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/input-linux.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/vnc-jobs.o
> >   LINK  tests/qemu-iotests/socket_scm_helper
> >   CC    qga/commands.o
> >   CC    qga/guest-agent-command-state.o
> >   CC    qga/main.o
> >   CC    qga/commands-posix.o
> >   CC    qga/channel-posix.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
> >   CC    qmp-introspect.o
> >   CC    qapi-types.o
> >   CC    qapi-visit.o
> >   CC    qapi-event.o
> >   AR    libqemustub.a
> >   AS    optionrom/multiboot.o
> >   CC    qemu-img.o
> >   CC    qmp-marshal.o
> >   AS    optionrom/linuxboot.o
> >   CC    optionrom/linuxboot_dma.o
> >   AS    optionrom/kvmvapic.o
> > cc: unrecognized option '-no-integrated-as'
> > cc: unrecognized option '-no-integrated-as'
> >   CC    trace/generated-events.o
> >   Building optionrom/multiboot.img
> >   Building optionrom/linuxboot_dma.img
> >   Building optionrom/multiboot.raw
> >   Building optionrom/linuxboot.img
> >   Building optionrom/linuxboot_dma.raw
> >   Building optionrom/kvmvapic.img
> >   Building optionrom/linuxboot.raw
> >   Building optionrom/kvmvapic.raw
> >   Signing optionrom/multiboot.bin
> >   Signing optionrom/linuxboot.bin
> >   Signing optionrom/linuxboot_dma.bin
> >   Signing optionrom/kvmvapic.bin
> >   AR    libqemuutil.a
> >   LINK  qemu-ga
> >   LINK  ivshmem-client
> >   LINK  ivshmem-server
> >   LINK  qemu-nbd
> >   LINK  qemu-img
> >   LINK  qemu-io
> >   LINK  qemu-bridge-helper
> >   GEN   x86_64-softmmu/hmp-commands-info.h
> >   GEN   x86_64-softmmu/hmp-commands.h
> >   GEN   x86_64-softmmu/qmp-commands-old.h
> >   GEN   x86_64-softmmu/config-target.h
> >   GEN   aarch64-softmmu/hmp-commands.h
> >   GEN   aarch64-softmmu/hmp-commands-info.h
> >   GEN   aarch64-softmmu/qmp-commands-old.h
> >   GEN   aarch64-softmmu/config-target.h
> >   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/exec.o
> >   CC    x86_64-softmmu/cpu-exec-common.o
> >   CC    aarch64-softmmu/translate-all.o
> >   CC    aarch64-softmmu/cpu-exec.o
> >   CC    x86_64-softmmu/tcg/tcg.o
> >   CC    x86_64-softmmu/tcg/tcg-op.o
> >   CC    x86_64-softmmu/tcg/optimize.o
> >   CC    aarch64-softmmu/translate-common.o
> >   CC    x86_64-softmmu/tcg/tcg-common.o
> >   CC    x86_64-softmmu/fpu/softfloat.o
> >   CC    x86_64-softmmu/disas.o
> >   CC    x86_64-softmmu/arch_init.o
> >   CC    x86_64-softmmu/cpus.o
> >   CC    x86_64-softmmu/monitor.o
> >   CC    x86_64-softmmu/gdbstub.o
> >   CC    aarch64-softmmu/cpu-exec-common.o
> >   CC    x86_64-softmmu/balloon.o
> >   CC    x86_64-softmmu/ioport.o
> >   CC    x86_64-softmmu/numa.o
> >   CC    x86_64-softmmu/qtest.o
> >   CC    aarch64-softmmu/tcg/tcg.o
> >   CC    aarch64-softmmu/tcg/tcg-op.o
> >   CC    x86_64-softmmu/bootdevice.o
> >   CC    aarch64-softmmu/tcg/optimize.o
> >   CC    x86_64-softmmu/kvm-all.o
> >   CC    x86_64-softmmu/memory.o
> >   CC    aarch64-softmmu/tcg/tcg-common.o
> >   CC    aarch64-softmmu/fpu/softfloat.o
> >   CC    aarch64-softmmu/disas.o
> >   GEN   aarch64-softmmu/gdbstub-xml.c
> >   CC    aarch64-softmmu/kvm-stub.o
> >   CC    x86_64-softmmu/cputlb.o
> >   CC    aarch64-softmmu/arch_init.o
> >   CC    x86_64-softmmu/memory_mapping.o
> >   CC    x86_64-softmmu/dump.o
> >   CC    x86_64-softmmu/migration/ram.o
> >   CC    x86_64-softmmu/migration/savevm.o
> >   CC    aarch64-softmmu/cpus.o
> >   CC    aarch64-softmmu/monitor.o
> >   CC    x86_64-softmmu/xen-common-stub.o
> >   CC    x86_64-softmmu/xen-hvm-stub.o
> >   CC    x86_64-softmmu/hw/acpi/nvdimm.o
> >   CC    x86_64-softmmu/hw/block/virtio-blk.o
> >   CC    aarch64-softmmu/gdbstub.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/nmi.o
> >   CC    x86_64-softmmu/hw/cpu/core.o
> >   CC    aarch64-softmmu/balloon.o
> >   CC    aarch64-softmmu/ioport.o
> >   CC    x86_64-softmmu/hw/display/vga.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    aarch64-softmmu/numa.o
> >   CC    x86_64-softmmu/hw/display/virtio-vga.o
> >   CC    aarch64-softmmu/qtest.o
> >   CC    aarch64-softmmu/bootdevice.o
> >   CC    x86_64-softmmu/hw/intc/apic.o
> >   CC    x86_64-softmmu/hw/intc/apic_common.o
> >   CC    aarch64-softmmu/memory.o
> >   CC    x86_64-softmmu/hw/intc/ioapic.o
> >   CC    aarch64-softmmu/cputlb.o
> >   CC    aarch64-softmmu/memory_mapping.o
> >   CC    x86_64-softmmu/hw/isa/lpc_ich9.o
> >   CC    x86_64-softmmu/hw/misc/vmport.o
> >   CC    aarch64-softmmu/dump.o
> >   CC    aarch64-softmmu/migration/ram.o
> >   CC    aarch64-softmmu/migration/savevm.o
> >   CC    aarch64-softmmu/xen-common-stub.o
> >   CC    x86_64-softmmu/hw/misc/ivshmem.o
> >   CC    aarch64-softmmu/xen-hvm-stub.o
> >   CC    x86_64-softmmu/hw/misc/pvpanic.o
> >   CC    x86_64-softmmu/hw/misc/edu.o
> >   CC    aarch64-softmmu/hw/block/virtio-blk.o
> >   CC    x86_64-softmmu/hw/misc/hyperv_testdev.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/block/dataplane/virtio-blk.o
> >   CC    x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
> >   CC    aarch64-softmmu/hw/char/exynos4210_uart.o
> >   CC    x86_64-softmmu/hw/scsi/vhost-scsi.o
> >   CC    x86_64-softmmu/hw/timer/mc146818rtc.o
> >   CC    aarch64-softmmu/hw/char/omap_uart.o
> >   CC    x86_64-softmmu/hw/vfio/common.o
> >   CC    aarch64-softmmu/hw/char/digic-uart.o
> >   CC    x86_64-softmmu/hw/vfio/pci.o
> >   CC    aarch64-softmmu/hw/char/stm32f2xx_usart.o
> >   CC    x86_64-softmmu/hw/vfio/pci-quirks.o
> >   CC    aarch64-softmmu/hw/char/bcm2835_aux.o
> >   CC    x86_64-softmmu/hw/vfio/platform.o
> >   CC    aarch64-softmmu/hw/char/virtio-serial-bus.o
> >   CC    x86_64-softmmu/hw/vfio/calxeda-xgmac.o
> >   CC    x86_64-softmmu/hw/vfio/amd-xgbe.o
> >   CC    x86_64-softmmu/hw/vfio/spapr.o
> >   CC    aarch64-softmmu/hw/core/nmi.o
> >   CC    aarch64-softmmu/hw/cpu/arm11mpcore.o
> >   CC    aarch64-softmmu/hw/cpu/realview_mpcore.o
> >   CC    x86_64-softmmu/hw/virtio/virtio.o
> >   CC    aarch64-softmmu/hw/cpu/a9mpcore.o
> >   CC    x86_64-softmmu/hw/virtio/virtio-balloon.o
> >   CC    aarch64-softmmu/hw/cpu/a15mpcore.o
> >   CC    aarch64-softmmu/hw/cpu/core.o
> >   CC    aarch64-softmmu/hw/display/omap_dss.o
> >   CC    x86_64-softmmu/hw/virtio/vhost.o
> >   CC    x86_64-softmmu/hw/virtio/vhost-backend.o
> >   CC    aarch64-softmmu/hw/display/omap_lcdc.o
> >   CC    aarch64-softmmu/hw/display/pxa2xx_lcd.o
> >   CC    x86_64-softmmu/hw/virtio/vhost-user.o
> >   CC    aarch64-softmmu/hw/display/bcm2835_fb.o
> >   CC    x86_64-softmmu/hw/i386/multiboot.o
> >   CC    aarch64-softmmu/hw/display/vga.o
> >   CC    x86_64-softmmu/hw/i386/pc.o
> >   CC    aarch64-softmmu/hw/display/virtio-gpu.o
> >   CC    aarch64-softmmu/hw/display/virtio-gpu-3d.o
> >   CC    aarch64-softmmu/hw/display/virtio-gpu-pci.o
> >   CC    aarch64-softmmu/hw/display/dpcd.o
> >   CC    aarch64-softmmu/hw/display/xlnx_dp.o
> >   CC    x86_64-softmmu/hw/i386/pc_piix.o
> >   CC    aarch64-softmmu/hw/dma/xlnx_dpdma.o
> >   CC    aarch64-softmmu/hw/dma/omap_dma.o
> >   CC    x86_64-softmmu/hw/i386/pc_q35.o
> >   CC    aarch64-softmmu/hw/dma/soc_dma.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    aarch64-softmmu/hw/i2c/omap_i2c.o
> >   CC    aarch64-softmmu/hw/input/pxa2xx_keypad.o
> >   CC    aarch64-softmmu/hw/input/tsc210x.o
> >   CC    aarch64-softmmu/hw/intc/armv7m_nvic.o
> >   CC    aarch64-softmmu/hw/intc/exynos4210_gic.o
> >   CC    aarch64-softmmu/hw/intc/exynos4210_combiner.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
> >   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/ivshmem.o
> >   CC    aarch64-softmmu/hw/misc/arm_sysctl.o
> >   CC    x86_64-softmmu/hw/i386/pc_sysfw.o
> >   CC    aarch64-softmmu/hw/misc/cbus.o
> >   CC    aarch64-softmmu/hw/misc/exynos4210_pmu.o
> >   CC    aarch64-softmmu/hw/misc/imx_ccm.o
> >   CC    aarch64-softmmu/hw/misc/imx31_ccm.o
> >   CC    x86_64-softmmu/hw/i386/x86-iommu.o
> >   CC    aarch64-softmmu/hw/misc/imx25_ccm.o
> >   CC    x86_64-softmmu/hw/i386/intel_iommu.o
> >   CC    x86_64-softmmu/hw/i386/kvmvapic.o
> >   CC    x86_64-softmmu/hw/i386/acpi-build.o
> >   CC    x86_64-softmmu/hw/i386/pci-assign-load-rom.o
> >   CC    x86_64-softmmu/hw/i386/kvm/clock.o
> >   CC    x86_64-softmmu/hw/i386/kvm/apic.o
> >   CC    aarch64-softmmu/hw/misc/imx6_ccm.o
> >   CC    aarch64-softmmu/hw/misc/imx6_src.o
> >   CC    x86_64-softmmu/hw/i386/kvm/i8259.o
> > /tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
> > /tmp/qemu-test/src/hw/i386/pc_piix.c:1037: warning: ‘pch_rev_id’ may be used uninitialized in this function
> >   CC    x86_64-softmmu/hw/i386/kvm/ioapic.o
> >   CC    aarch64-softmmu/hw/misc/mst_fpga.o
> >   CC    x86_64-softmmu/hw/i386/kvm/i8254.o
> >   CC    x86_64-softmmu/hw/i386/kvm/pci-assign.o
> >   CC    aarch64-softmmu/hw/misc/omap_clk.o
> >   CC    aarch64-softmmu/hw/misc/omap_gpmc.o
> >   CC    x86_64-softmmu/target-i386/translate.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/zynq_slcr.o
> >   CC    aarch64-softmmu/hw/misc/zynq-xadc.o
> >   CC    aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
> >   CC    aarch64-softmmu/hw/misc/edu.o
> >   CC    aarch64-softmmu/hw/misc/auxbus.o
> >   CC    x86_64-softmmu/target-i386/helper.o
> >   CC    x86_64-softmmu/target-i386/cpu.o
> >   CC    aarch64-softmmu/hw/misc/aspeed_scu.o
> >   CC    x86_64-softmmu/target-i386/bpt_helper.o
> >   CC    x86_64-softmmu/target-i386/excp_helper.o
> >   CC    x86_64-softmmu/target-i386/fpu_helper.o
> >   CC    x86_64-softmmu/target-i386/cc_helper.o
> >   CC    x86_64-softmmu/target-i386/int_helper.o
> >   CC    x86_64-softmmu/target-i386/svm_helper.o
> >   CC    x86_64-softmmu/target-i386/smm_helper.o
> >   CC    aarch64-softmmu/hw/net/virtio-net.o
> >   CC    x86_64-softmmu/target-i386/misc_helper.o
> >   CC    aarch64-softmmu/hw/net/vhost_net.o
> >   CC    aarch64-softmmu/hw/pcmcia/pxa2xx.o
> >   CC    x86_64-softmmu/target-i386/mem_helper.o
> >   CC    aarch64-softmmu/hw/scsi/virtio-scsi.o
> >   CC    x86_64-softmmu/target-i386/seg_helper.o
> >   CC    aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
> >   CC    aarch64-softmmu/hw/scsi/vhost-scsi.o
> >   CC    aarch64-softmmu/hw/sd/omap_mmc.o
> >   CC    x86_64-softmmu/target-i386/mpx_helper.o
> >   CC    x86_64-softmmu/target-i386/gdbstub.o
> >   CC    x86_64-softmmu/target-i386/machine.o
> >   CC    aarch64-softmmu/hw/sd/pxa2xx_mmci.o
> >   CC    aarch64-softmmu/hw/ssi/omap_spi.o
> >   CC    x86_64-softmmu/target-i386/arch_memory_mapping.o
> >   CC    aarch64-softmmu/hw/ssi/imx_spi.o
> >   CC    x86_64-softmmu/target-i386/arch_dump.o
> >   CC    aarch64-softmmu/hw/timer/exynos4210_mct.o
> >   CC    x86_64-softmmu/target-i386/monitor.o
> >   CC    aarch64-softmmu/hw/timer/exynos4210_pwm.o
> >   CC    x86_64-softmmu/target-i386/kvm.o
> >   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    x86_64-softmmu/target-i386/hyperv.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
> >   GEN   trace/generated-helpers.c
> >   CC    aarch64-softmmu/hw/usb/tusb6010.o
> >   CC    x86_64-softmmu/trace/control-target.o
> >   CC    aarch64-softmmu/hw/vfio/common.o
> >   CC    aarch64-softmmu/hw/vfio/pci.o
> >   CC    aarch64-softmmu/hw/vfio/pci-quirks.o
> >   CC    aarch64-softmmu/hw/vfio/platform.o
> >   CC    aarch64-softmmu/hw/vfio/calxeda-xgmac.o
> >   CC    aarch64-softmmu/hw/vfio/amd-xgbe.o
> >   CC    aarch64-softmmu/hw/vfio/spapr.o
> >   CC    aarch64-softmmu/hw/virtio/virtio.o
> >   CC    aarch64-softmmu/hw/virtio/virtio-balloon.o
> >   CC    aarch64-softmmu/hw/virtio/vhost.o
> >   CC    aarch64-softmmu/hw/virtio/vhost-backend.o
> >   CC    aarch64-softmmu/hw/virtio/vhost-user.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/omap_sx1.o
> >   CC    aarch64-softmmu/hw/arm/palm.o
> >   CC    x86_64-softmmu/trace/generated-helpers.o
> > /tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
> > /tmp/qemu-test/src/hw/i386/acpi-build.c:471: warning: ‘notify_method’ may be used uninitialized in this function
> >   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
> >   LINK  x86_64-softmmu/qemu-system-x86_64
> >   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/omap1.o
> >   CC    aarch64-softmmu/hw/arm/omap2.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-zynqmp.o
> >   CC    aarch64-softmmu/hw/arm/xlnx-ep108.o
> >   CC    aarch64-softmmu/hw/arm/fsl-imx25.o
> >   CC    aarch64-softmmu/hw/arm/imx25_pdk.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/ast2400.o
> >   CC    aarch64-softmmu/hw/arm/sabrelite.o
> >   CC    aarch64-softmmu/hw/arm/palmetto-bmc.o
> >   CC    aarch64-softmmu/target-arm/arm-semi.o
> >   CC    aarch64-softmmu/target-arm/machine.o
> >   CC    aarch64-softmmu/target-arm/psci.o
> >   CC    aarch64-softmmu/target-arm/arch_dump.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
> > ../hw/core/loader-fit.o: In function `load_fit':
> > /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
> > /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
> > collect2: ld returned 1 exit status
> > make[1]: *** [qemu-system-x86_64] Error 1
> > make: *** [subdir-x86_64-softmmu] Error 2
> > make: *** Waiting for unfinished jobs....
> >   CC    aarch64-softmmu/target-arm/iwmmxt_helper.o
> >   CC    aarch64-softmmu/target-arm/cpu.o
> >   CC    aarch64-softmmu/target-arm/neon_helper.o
> >   CC    aarch64-softmmu/target-arm/gdbstub.o
> >   CC    aarch64-softmmu/target-arm/cpu64.o
> >   CC    aarch64-softmmu/target-arm/translate-a64.o
> > /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
> > /tmp/qemu-test/src/target-arm/translate-a64.c:6308: warning: ‘tcg_src_hi’ may be used uninitialized in this function
> > /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
> > /tmp/qemu-test/src/target-arm/translate-a64.c:8035: warning: ‘rmode’ may be used uninitialized in this function
> >   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-aarch64
> > ../hw/core/loader-fit.o: In function `load_fit':
> > /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
> > /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
> > collect2: ld returned 1 exit status
> > make[1]: *** [qemu-system-aarch64] Error 1
> > make: *** [subdir-aarch64-softmmu] Error 2
> > tests/docker/Makefile.include:104: recipe for target 'docker-run-test-quick@centos6' failed
> > make: *** [docker-run-test-quick@centos6] Error 1
> > === 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] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
  2016-09-08  8:57     ` Leon Alrae
@ 2016-09-08 10:46       ` Paul Burton
  2016-09-08 12:01         ` Leon Alrae
  0 siblings, 1 reply; 18+ messages in thread
From: Paul Burton @ 2016-09-08 10:46 UTC (permalink / raw)
  To: Leon Alrae; +Cc: qemu-devel, famz, aurelien

On 08/09/16 09:57, Leon Alrae wrote:
> On Fri, Aug 19, 2016 at 08:40:32PM +0100, Paul Burton wrote:
>> On 19/08/16 20:25, no-reply@patchew.org wrote:
>>> Hi,
>>>
>>> Your 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.
>>>
>>> Message-id: 20160819190903.10974-1-paul.burton@imgtec.com
>>> Subject: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
>>> Type: series
>>
>> FYI, this build failure occurs because dtc/libfdt is missing this commit:
>>
>>
>> https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/version.lds?id=a4b093f7366fdb429ca1781144d3985fa50d0fbb
>>
>> Unfortunately the last release of dtc seems to be very old despite there
>> being fixes like that present in it for well over a year. I'm open to
>> suggestions about how to handle that...
> 
> Looks like 1.4.2 has appeared recently and it contains above commit.

Hi Leon,

Great - that's good timing! :)

> 
> One way would be just to bump our minimal dtc version requirement from
> 1.4.0 to 1.4.2 (and update qemu's dtc submodule as well)...

Would you like me to submit a v2 which does that & removes the
extraneous semicolon from patch 1?

Thanks for reviewing some of this,

    Paul

> 
> Thanks,
> Leon
> 
>>
>> Thanks,
>>     Paul
>>
>>>
>>> === TEST SCRIPT BEGIN ===
>>> #!/bin/bash
>>> set -e
>>> git submodule update --init dtc
>>> make J=8 docker-test-quick@centos6
>>>
>>> # we need CURL DPRINTF patch
>>> # http://patchew.org/QEMU/1470027888-24381-1-git-send-email-famz%40redhat.com/
>>> #make J=8 docker-test-mingw@fedora
>>> === TEST SCRIPT END ===
>>>
>>> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
>>> Switched to a new branch 'test'
>>> 1821581 hw/mips: MIPS Boston board support
>>> 9b44da9 hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
>>> fe513d4 loader: Support Flattened Image Trees (FIT images)
>>> d0296cc target-mips: Provide function to test if a CPU supports an ISA
>>> 52c4cc5 hw/mips_gic: Update pin state on mask changes
>>> 402000d hw/mips_gictimer: provide API for retrieving frequency
>>> a80d326 hw/mips_cmgcr: allow GCR base to be moved
>>>
>>> === OUTPUT BEGIN ===
>>> Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
>>> Cloning into 'dtc'...
>>> Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
>>>   BUILD centos6
>>>   ARCHIVE qemu.tgz
>>>   ARCHIVE dtc.tgz
>>>   COPY RUNNER
>>>   RUN test-quick in centos6
>>> No C++ compiler available; disabling C++ specific optional code
>>> Install prefix    /tmp/qemu-test/src/tests/docker/install
>>> BIOS directory    /tmp/qemu-test/src/tests/docker/install/share/qemu
>>> binary directory  /tmp/qemu-test/src/tests/docker/install/bin
>>> library directory /tmp/qemu-test/src/tests/docker/install/lib
>>> module directory  /tmp/qemu-test/src/tests/docker/install/lib/qemu
>>> libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
>>> include directory /tmp/qemu-test/src/tests/docker/install/include
>>> config directory  /tmp/qemu-test/src/tests/docker/install/etc
>>> local state directory   /tmp/qemu-test/src/tests/docker/install/var
>>> Manual directory  /tmp/qemu-test/src/tests/docker/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 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -g 
>>> QEMU_CFLAGS       -I/usr/include/pixman-1    -fPIE -DPIE -m64 -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  -Wendif-labels -Wmissing-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
>>> RDMA support      no
>>> TCG interpreter   no
>>> fdt support       yes
>>> preadv support    yes
>>> fdatasync         yes
>>> madvise           yes
>>> posix_madvise     yes
>>> uuid support      no
>>> libcap-ng support no
>>> vhost-net support yes
>>> vhost-scsi 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
>>> GlusterFS support no
>>> Archipelago support no
>>> gcov              gcov
>>> gcov enabled      no
>>> TPM support       yes
>>> libssh2 support   no
>>> TPM passthrough   yes
>>> QOM debugging     yes
>>> vhdx              no
>>> lzo support       no
>>> snappy support    no
>>> bzip2 support     no
>>> NUMA host support no
>>> tcmalloc support  no
>>> jemalloc support  no
>>> avx2 optimization no
>>>   GEN   x86_64-softmmu/config-devices.mak.tmp
>>>   GEN   aarch64-softmmu/config-devices.mak.tmp
>>>   GEN   config-host.h
>>>   GEN   qemu-options.def
>>>   GEN   qmp-commands.h
>>>   GEN   qapi-types.h
>>>   GEN   qapi-visit.h
>>>   GEN   qapi-event.h
>>>   GEN   x86_64-softmmu/config-devices.mak
>>>   GEN   aarch64-softmmu/config-devices.mak
>>>   GEN   qmp-introspect.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   config-all-devices.mak
>>>   GEN   trace/generated-events.h
>>>   GEN   trace/generated-tracers.h
>>>   GEN   trace/generated-tcg-tracers.h
>>>   GEN   trace/generated-helpers-wrappers.h
>>>   GEN   trace/generated-helpers.h
>>>   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-qmp-commands.h
>>>   GEN   qga/qapi-generated/qga-qapi-types.c
>>>   GEN   qga/qapi-generated/qga-qapi-visit.c
>>>   GEN   qga/qapi-generated/qga-qmp-marshal.c
>>>   GEN   qmp-introspect.c
>>>   GEN   qapi-types.c
>>>   GEN   qapi-visit.c
>>>   GEN   qapi-event.c
>>>   CC    qapi/qapi-visit-core.o
>>>   CC    qapi/qapi-dealloc-visitor.o
>>>   CC    qapi/qmp-input-visitor.o
>>>   CC    qapi/qmp-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/qint.o
>>>   CC    qobject/qstring.o
>>>   CC    qobject/qdict.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
>>>   GEN   trace/generated-events.c
>>>   CC    trace/control.o
>>>   CC    trace/qmp.o
>>>   CC    util/osdep.o
>>>   CC    util/cutils.o
>>>   CC    util/unicode.o
>>>   CC    util/qemu-timer-common.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/bitmap.o
>>>   CC    util/bitops.o
>>>   CC    util/hbitmap.o
>>>   CC    util/fifo8.o
>>>   CC    util/acl.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/uri.o
>>>   CC    util/notify.o
>>>   CC    util/qemu-option.o
>>>   CC    util/qemu-progress.o
>>>   CC    util/hexdump.o
>>>   CC    util/crc32c.o
>>>   CC    util/throttle.o
>>>   CC    util/getauxval.o
>>>   CC    util/readline.o
>>>   CC    util/rfifolock.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    crypto/pbkdf-stub.o
>>>   CC    stubs/arch-query-cpu-def.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
>>> /tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
>>> /tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
>>>   CC    stubs/cpu-get-icount.o
>>>   CC    stubs/dump.o
>>>   CC    stubs/fdset-add-fd.o
>>>   CC    stubs/fdset-find-fd.o
>>>   CC    stubs/fdset-get-fd.o
>>>   CC    stubs/fdset-remove-fd.o
>>>   CC    stubs/gdbstub.o
>>>   CC    stubs/get-fd.o
>>>   CC    stubs/get-next-serial.o
>>>   CC    stubs/get-vm-name.o
>>>   CC    stubs/iothread-lock.o
>>>   CC    stubs/is-daemonized.o
>>>   CC    stubs/machine-init-done.o
>>>   CC    stubs/migr-blocker.o
>>>   CC    stubs/mon-is-qmp.o
>>>   CC    stubs/mon-printf.o
>>>   CC    stubs/monitor-init.o
>>>   CC    stubs/qtest.o
>>>   CC    stubs/notify-event.o
>>>   CC    stubs/replay.o
>>>   CC    stubs/replay-user.o
>>>   CC    stubs/reset.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/cpus.o
>>>   CC    stubs/kvm.o
>>>   CC    stubs/qmp_pc_dimm_device_list.o
>>>   CC    stubs/target-monitor-defs.o
>>>   CC    stubs/target-get-monitor-def.o
>>>   CC    stubs/vhost.o
>>>   CC    stubs/iohandler.o
>>>   CC    stubs/smbios_type_38.o
>>>   CC    stubs/ipmi.o
>>>   CC    stubs/pc_madt_cpu_entry.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    async.o
>>>   CC    thread-pool.o
>>>   CC    block.o
>>>   CC    blockjob.o
>>>   CC    main-loop.o
>>>   CC    iohandler.o
>>>   CC    qemu-timer.o
>>>   CC    aio-posix.o
>>>   CC    qemu-io-cmds.o
>>>   CC    block/raw_bsd.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/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/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/raw-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/write-threshold.o
>>>   CC    block/crypto.o
>>>   CC    nbd/server.o
>>>   CC    nbd/client.o
>>>   CC    nbd/common.o
>>>   CC    block/dmg.o
>>>   CC    crypto/init.o
>>>   CC    crypto/hash.o
>>>   CC    crypto/hash-glib.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.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    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/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
>>>   GEN   qemu-img-cmds.h
>>>   CC    qemu-io.o
>>>   CC    qemu-bridge-helper.o
>>>   CC    blockdev.o
>>>   CC    blockdev-nbd.o
>>>   CC    iothread.o
>>>   CC    qdev-monitor.o
>>>   CC    device-hotplug.o
>>>   CC    os-posix.o
>>>   CC    qemu-char.o
>>>   CC    page_cache.o
>>>   CC    accel.o
>>>   CC    bt-host.o
>>>   CC    bt-vhci.o
>>>   CC    dma-helpers.o
>>>   CC    vl.o
>>>   CC    tpm.o
>>>   CC    device_tree.o
>>>   GEN   qmp-marshal.c
>>>   CC    qmp.o
>>>   CC    hmp.o
>>>   CC    tcg-runtime.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/msmouse.o
>>>   CC    backends/testdev.o
>>>   CC    backends/tpm.o
>>>   CC    backends/hostmem.o
>>>   CC    backends/hostmem-ram.o
>>>   CC    backends/hostmem-file.o
>>>   CC    block/stream.o
>>>   CC    block/backup.o
>>>   CC    disas/arm.o
>>>   CC    disas/i386.o
>>>   CC    fsdev/qemu-fsdev-dummy.o
>>>   CC    fsdev/qemu-fsdev-opts.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/memory_hotplug_acpi_table.o
>>>   CC    hw/acpi/cpu.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/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/gusemu_mixer.o
>>>   CC    hw/audio/cs4231a.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/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/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/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/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.o
>>>   CC    hw/core/qdev-properties.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/ptimer.o
>>>   CC    hw/core/sysbus.o
>>>   CC    hw/core/machine.o
>>>   CC    hw/core/null-machine.o
>>>   CC    hw/core/loader.o
>>>   CC    hw/core/loader-fit.o
>>>   CC    hw/core/qdev-properties-system.o
>>>   CC    hw/core/register.o
>>>   CC    hw/core/platform-bus.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/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/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/debugexit.o
>>>   CC    hw/misc/sga.o
>>>   CC    hw/misc/pc-testdev.o
>>>   CC    hw/misc/pci-testdev.o
>>>   CC    hw/misc/arm_l2x0.o
>>>   CC    hw/misc/arm_integrator_debug.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_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/imx_fec.o
>>>   CC    hw/net/cadence_gem.o
>>>   CC    hw/net/stellaris_enet.o
>>>   CC    hw/net/rocker/rocker.o
>>>   CC    hw/net/rocker/rocker_fp.o
>>>   CC    hw/net/rocker/rocker_desc.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/pci-bridge/pci_bridge_dev.o
>>>   CC    hw/pci-bridge/pci_expander_bridge.o
>>>   CC    hw/pci-bridge/xio3130_upstream.o
>>> /tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
>>> /tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
>>>   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/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/slotid_cap.o
>>>   CC    hw/pci/pci_host.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/mptconfig.o
>>>   CC    hw/scsi/mptendian.o
>>>   CC    hw/scsi/megasas.o
>>>   CC    hw/scsi/vmw_pvscsi.o
>>>   CC    hw/scsi/esp.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/sd/sdhci.o
>>>   CC    hw/smbios/smbios.o
>>>   CC    hw/smbios/smbios_type_38.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/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/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/tpm/tpm_passthrough.o
>>>   CC    hw/tpm/tpm_util.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/desc-msos.o
>>>   CC    hw/usb/hcd-uhci.o
>>>   CC    hw/usb/hcd-ohci.o
>>>   CC    hw/usb/hcd-ehci.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-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-network.o
>>>   CC    hw/usb/dev-bluetooth.o
>>>   CC    hw/usb/dev-smartcard-reader.o
>>>   CC    hw/usb/dev-mtp.o
>>>   CC    hw/usb/host-stub.o
>>>   CC    hw/virtio/virtio-rng.o
>>>   CC    hw/virtio/virtio-pci.o
>>>   CC    hw/virtio/virtio-bus.o
>>>   CC    hw/virtio/virtio-mmio.o
>>>   CC    hw/watchdog/watchdog.o
>>>   CC    hw/watchdog/wdt_i6300esb.o
>>>   CC    hw/watchdog/wdt_ib700.o
>>>   CC    migration/migration.o
>>>   CC    migration/socket.o
>>>   CC    migration/fd.o
>>>   CC    migration/exec.o
>>>   CC    migration/tls.o
>>>   CC    migration/vmstate.o
>>>   CC    migration/qemu-file.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/queue.o
>>>   CC    net/checksum.o
>>>   CC    net/util.o
>>>   CC    net/hub.o
>>>   CC    net/socket.o
>>>   CC    net/dump.o
>>>   CC    net/eth.o
>>>   CC    net/l2tpv3.o
>>>   CC    net/tap.o
>>>   CC    net/vhost-user.o
>>>   CC    net/tap-linux.o
>>>   CC    net/slirp.o
>>>   CC    net/filter.o
>>>   CC    net/filter-buffer.o
>>>   CC    net/filter-mirror.o
>>>   CC    qom/cpu.o
>>>   CC    replay/replay.o
>>>   CC    replay/replay-events.o
>>>   CC    replay/replay-internal.o
>>>   CC    replay/replay-time.o
>>>   CC    replay/replay-input.o
>>> /tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
>>> /tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
>>>   CC    replay/replay-char.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/ip_input.o
>>>   CC    slirp/ip6_output.o
>>>   CC    slirp/ip_output.o
>>>   CC    slirp/dnssearch.o
>>>   CC    slirp/dhcpv6.o
>>>   CC    slirp/mbuf.o
>>>   CC    slirp/slirp.o
>>>   CC    slirp/misc.o
>>>   CC    slirp/sbuf.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
>>> /tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
>>>   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    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/input-linux.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/vnc-jobs.o
>>>   LINK  tests/qemu-iotests/socket_scm_helper
>>>   CC    qga/commands.o
>>>   CC    qga/guest-agent-command-state.o
>>>   CC    qga/main.o
>>>   CC    qga/commands-posix.o
>>>   CC    qga/channel-posix.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
>>>   CC    qmp-introspect.o
>>>   CC    qapi-types.o
>>>   CC    qapi-visit.o
>>>   CC    qapi-event.o
>>>   AR    libqemustub.a
>>>   AS    optionrom/multiboot.o
>>>   CC    qemu-img.o
>>>   CC    qmp-marshal.o
>>>   AS    optionrom/linuxboot.o
>>>   CC    optionrom/linuxboot_dma.o
>>>   AS    optionrom/kvmvapic.o
>>> cc: unrecognized option '-no-integrated-as'
>>> cc: unrecognized option '-no-integrated-as'
>>>   CC    trace/generated-events.o
>>>   Building optionrom/multiboot.img
>>>   Building optionrom/linuxboot_dma.img
>>>   Building optionrom/multiboot.raw
>>>   Building optionrom/linuxboot.img
>>>   Building optionrom/linuxboot_dma.raw
>>>   Building optionrom/kvmvapic.img
>>>   Building optionrom/linuxboot.raw
>>>   Building optionrom/kvmvapic.raw
>>>   Signing optionrom/multiboot.bin
>>>   Signing optionrom/linuxboot.bin
>>>   Signing optionrom/linuxboot_dma.bin
>>>   Signing optionrom/kvmvapic.bin
>>>   AR    libqemuutil.a
>>>   LINK  qemu-ga
>>>   LINK  ivshmem-client
>>>   LINK  ivshmem-server
>>>   LINK  qemu-nbd
>>>   LINK  qemu-img
>>>   LINK  qemu-io
>>>   LINK  qemu-bridge-helper
>>>   GEN   x86_64-softmmu/hmp-commands-info.h
>>>   GEN   x86_64-softmmu/hmp-commands.h
>>>   GEN   x86_64-softmmu/qmp-commands-old.h
>>>   GEN   x86_64-softmmu/config-target.h
>>>   GEN   aarch64-softmmu/hmp-commands.h
>>>   GEN   aarch64-softmmu/hmp-commands-info.h
>>>   GEN   aarch64-softmmu/qmp-commands-old.h
>>>   GEN   aarch64-softmmu/config-target.h
>>>   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/exec.o
>>>   CC    x86_64-softmmu/cpu-exec-common.o
>>>   CC    aarch64-softmmu/translate-all.o
>>>   CC    aarch64-softmmu/cpu-exec.o
>>>   CC    x86_64-softmmu/tcg/tcg.o
>>>   CC    x86_64-softmmu/tcg/tcg-op.o
>>>   CC    x86_64-softmmu/tcg/optimize.o
>>>   CC    aarch64-softmmu/translate-common.o
>>>   CC    x86_64-softmmu/tcg/tcg-common.o
>>>   CC    x86_64-softmmu/fpu/softfloat.o
>>>   CC    x86_64-softmmu/disas.o
>>>   CC    x86_64-softmmu/arch_init.o
>>>   CC    x86_64-softmmu/cpus.o
>>>   CC    x86_64-softmmu/monitor.o
>>>   CC    x86_64-softmmu/gdbstub.o
>>>   CC    aarch64-softmmu/cpu-exec-common.o
>>>   CC    x86_64-softmmu/balloon.o
>>>   CC    x86_64-softmmu/ioport.o
>>>   CC    x86_64-softmmu/numa.o
>>>   CC    x86_64-softmmu/qtest.o
>>>   CC    aarch64-softmmu/tcg/tcg.o
>>>   CC    aarch64-softmmu/tcg/tcg-op.o
>>>   CC    x86_64-softmmu/bootdevice.o
>>>   CC    aarch64-softmmu/tcg/optimize.o
>>>   CC    x86_64-softmmu/kvm-all.o
>>>   CC    x86_64-softmmu/memory.o
>>>   CC    aarch64-softmmu/tcg/tcg-common.o
>>>   CC    aarch64-softmmu/fpu/softfloat.o
>>>   CC    aarch64-softmmu/disas.o
>>>   GEN   aarch64-softmmu/gdbstub-xml.c
>>>   CC    aarch64-softmmu/kvm-stub.o
>>>   CC    x86_64-softmmu/cputlb.o
>>>   CC    aarch64-softmmu/arch_init.o
>>>   CC    x86_64-softmmu/memory_mapping.o
>>>   CC    x86_64-softmmu/dump.o
>>>   CC    x86_64-softmmu/migration/ram.o
>>>   CC    x86_64-softmmu/migration/savevm.o
>>>   CC    aarch64-softmmu/cpus.o
>>>   CC    aarch64-softmmu/monitor.o
>>>   CC    x86_64-softmmu/xen-common-stub.o
>>>   CC    x86_64-softmmu/xen-hvm-stub.o
>>>   CC    x86_64-softmmu/hw/acpi/nvdimm.o
>>>   CC    x86_64-softmmu/hw/block/virtio-blk.o
>>>   CC    aarch64-softmmu/gdbstub.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/nmi.o
>>>   CC    x86_64-softmmu/hw/cpu/core.o
>>>   CC    aarch64-softmmu/balloon.o
>>>   CC    aarch64-softmmu/ioport.o
>>>   CC    x86_64-softmmu/hw/display/vga.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    aarch64-softmmu/numa.o
>>>   CC    x86_64-softmmu/hw/display/virtio-vga.o
>>>   CC    aarch64-softmmu/qtest.o
>>>   CC    aarch64-softmmu/bootdevice.o
>>>   CC    x86_64-softmmu/hw/intc/apic.o
>>>   CC    x86_64-softmmu/hw/intc/apic_common.o
>>>   CC    aarch64-softmmu/memory.o
>>>   CC    x86_64-softmmu/hw/intc/ioapic.o
>>>   CC    aarch64-softmmu/cputlb.o
>>>   CC    aarch64-softmmu/memory_mapping.o
>>>   CC    x86_64-softmmu/hw/isa/lpc_ich9.o
>>>   CC    x86_64-softmmu/hw/misc/vmport.o
>>>   CC    aarch64-softmmu/dump.o
>>>   CC    aarch64-softmmu/migration/ram.o
>>>   CC    aarch64-softmmu/migration/savevm.o
>>>   CC    aarch64-softmmu/xen-common-stub.o
>>>   CC    x86_64-softmmu/hw/misc/ivshmem.o
>>>   CC    aarch64-softmmu/xen-hvm-stub.o
>>>   CC    x86_64-softmmu/hw/misc/pvpanic.o
>>>   CC    x86_64-softmmu/hw/misc/edu.o
>>>   CC    aarch64-softmmu/hw/block/virtio-blk.o
>>>   CC    x86_64-softmmu/hw/misc/hyperv_testdev.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/block/dataplane/virtio-blk.o
>>>   CC    x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
>>>   CC    aarch64-softmmu/hw/char/exynos4210_uart.o
>>>   CC    x86_64-softmmu/hw/scsi/vhost-scsi.o
>>>   CC    x86_64-softmmu/hw/timer/mc146818rtc.o
>>>   CC    aarch64-softmmu/hw/char/omap_uart.o
>>>   CC    x86_64-softmmu/hw/vfio/common.o
>>>   CC    aarch64-softmmu/hw/char/digic-uart.o
>>>   CC    x86_64-softmmu/hw/vfio/pci.o
>>>   CC    aarch64-softmmu/hw/char/stm32f2xx_usart.o
>>>   CC    x86_64-softmmu/hw/vfio/pci-quirks.o
>>>   CC    aarch64-softmmu/hw/char/bcm2835_aux.o
>>>   CC    x86_64-softmmu/hw/vfio/platform.o
>>>   CC    aarch64-softmmu/hw/char/virtio-serial-bus.o
>>>   CC    x86_64-softmmu/hw/vfio/calxeda-xgmac.o
>>>   CC    x86_64-softmmu/hw/vfio/amd-xgbe.o
>>>   CC    x86_64-softmmu/hw/vfio/spapr.o
>>>   CC    aarch64-softmmu/hw/core/nmi.o
>>>   CC    aarch64-softmmu/hw/cpu/arm11mpcore.o
>>>   CC    aarch64-softmmu/hw/cpu/realview_mpcore.o
>>>   CC    x86_64-softmmu/hw/virtio/virtio.o
>>>   CC    aarch64-softmmu/hw/cpu/a9mpcore.o
>>>   CC    x86_64-softmmu/hw/virtio/virtio-balloon.o
>>>   CC    aarch64-softmmu/hw/cpu/a15mpcore.o
>>>   CC    aarch64-softmmu/hw/cpu/core.o
>>>   CC    aarch64-softmmu/hw/display/omap_dss.o
>>>   CC    x86_64-softmmu/hw/virtio/vhost.o
>>>   CC    x86_64-softmmu/hw/virtio/vhost-backend.o
>>>   CC    aarch64-softmmu/hw/display/omap_lcdc.o
>>>   CC    aarch64-softmmu/hw/display/pxa2xx_lcd.o
>>>   CC    x86_64-softmmu/hw/virtio/vhost-user.o
>>>   CC    aarch64-softmmu/hw/display/bcm2835_fb.o
>>>   CC    x86_64-softmmu/hw/i386/multiboot.o
>>>   CC    aarch64-softmmu/hw/display/vga.o
>>>   CC    x86_64-softmmu/hw/i386/pc.o
>>>   CC    aarch64-softmmu/hw/display/virtio-gpu.o
>>>   CC    aarch64-softmmu/hw/display/virtio-gpu-3d.o
>>>   CC    aarch64-softmmu/hw/display/virtio-gpu-pci.o
>>>   CC    aarch64-softmmu/hw/display/dpcd.o
>>>   CC    aarch64-softmmu/hw/display/xlnx_dp.o
>>>   CC    x86_64-softmmu/hw/i386/pc_piix.o
>>>   CC    aarch64-softmmu/hw/dma/xlnx_dpdma.o
>>>   CC    aarch64-softmmu/hw/dma/omap_dma.o
>>>   CC    x86_64-softmmu/hw/i386/pc_q35.o
>>>   CC    aarch64-softmmu/hw/dma/soc_dma.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    aarch64-softmmu/hw/i2c/omap_i2c.o
>>>   CC    aarch64-softmmu/hw/input/pxa2xx_keypad.o
>>>   CC    aarch64-softmmu/hw/input/tsc210x.o
>>>   CC    aarch64-softmmu/hw/intc/armv7m_nvic.o
>>>   CC    aarch64-softmmu/hw/intc/exynos4210_gic.o
>>>   CC    aarch64-softmmu/hw/intc/exynos4210_combiner.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
>>>   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/ivshmem.o
>>>   CC    aarch64-softmmu/hw/misc/arm_sysctl.o
>>>   CC    x86_64-softmmu/hw/i386/pc_sysfw.o
>>>   CC    aarch64-softmmu/hw/misc/cbus.o
>>>   CC    aarch64-softmmu/hw/misc/exynos4210_pmu.o
>>>   CC    aarch64-softmmu/hw/misc/imx_ccm.o
>>>   CC    aarch64-softmmu/hw/misc/imx31_ccm.o
>>>   CC    x86_64-softmmu/hw/i386/x86-iommu.o
>>>   CC    aarch64-softmmu/hw/misc/imx25_ccm.o
>>>   CC    x86_64-softmmu/hw/i386/intel_iommu.o
>>>   CC    x86_64-softmmu/hw/i386/kvmvapic.o
>>>   CC    x86_64-softmmu/hw/i386/acpi-build.o
>>>   CC    x86_64-softmmu/hw/i386/pci-assign-load-rom.o
>>>   CC    x86_64-softmmu/hw/i386/kvm/clock.o
>>>   CC    x86_64-softmmu/hw/i386/kvm/apic.o
>>>   CC    aarch64-softmmu/hw/misc/imx6_ccm.o
>>>   CC    aarch64-softmmu/hw/misc/imx6_src.o
>>>   CC    x86_64-softmmu/hw/i386/kvm/i8259.o
>>> /tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
>>> /tmp/qemu-test/src/hw/i386/pc_piix.c:1037: warning: ‘pch_rev_id’ may be used uninitialized in this function
>>>   CC    x86_64-softmmu/hw/i386/kvm/ioapic.o
>>>   CC    aarch64-softmmu/hw/misc/mst_fpga.o
>>>   CC    x86_64-softmmu/hw/i386/kvm/i8254.o
>>>   CC    x86_64-softmmu/hw/i386/kvm/pci-assign.o
>>>   CC    aarch64-softmmu/hw/misc/omap_clk.o
>>>   CC    aarch64-softmmu/hw/misc/omap_gpmc.o
>>>   CC    x86_64-softmmu/target-i386/translate.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/zynq_slcr.o
>>>   CC    aarch64-softmmu/hw/misc/zynq-xadc.o
>>>   CC    aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
>>>   CC    aarch64-softmmu/hw/misc/edu.o
>>>   CC    aarch64-softmmu/hw/misc/auxbus.o
>>>   CC    x86_64-softmmu/target-i386/helper.o
>>>   CC    x86_64-softmmu/target-i386/cpu.o
>>>   CC    aarch64-softmmu/hw/misc/aspeed_scu.o
>>>   CC    x86_64-softmmu/target-i386/bpt_helper.o
>>>   CC    x86_64-softmmu/target-i386/excp_helper.o
>>>   CC    x86_64-softmmu/target-i386/fpu_helper.o
>>>   CC    x86_64-softmmu/target-i386/cc_helper.o
>>>   CC    x86_64-softmmu/target-i386/int_helper.o
>>>   CC    x86_64-softmmu/target-i386/svm_helper.o
>>>   CC    x86_64-softmmu/target-i386/smm_helper.o
>>>   CC    aarch64-softmmu/hw/net/virtio-net.o
>>>   CC    x86_64-softmmu/target-i386/misc_helper.o
>>>   CC    aarch64-softmmu/hw/net/vhost_net.o
>>>   CC    aarch64-softmmu/hw/pcmcia/pxa2xx.o
>>>   CC    x86_64-softmmu/target-i386/mem_helper.o
>>>   CC    aarch64-softmmu/hw/scsi/virtio-scsi.o
>>>   CC    x86_64-softmmu/target-i386/seg_helper.o
>>>   CC    aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
>>>   CC    aarch64-softmmu/hw/scsi/vhost-scsi.o
>>>   CC    aarch64-softmmu/hw/sd/omap_mmc.o
>>>   CC    x86_64-softmmu/target-i386/mpx_helper.o
>>>   CC    x86_64-softmmu/target-i386/gdbstub.o
>>>   CC    x86_64-softmmu/target-i386/machine.o
>>>   CC    aarch64-softmmu/hw/sd/pxa2xx_mmci.o
>>>   CC    aarch64-softmmu/hw/ssi/omap_spi.o
>>>   CC    x86_64-softmmu/target-i386/arch_memory_mapping.o
>>>   CC    aarch64-softmmu/hw/ssi/imx_spi.o
>>>   CC    x86_64-softmmu/target-i386/arch_dump.o
>>>   CC    aarch64-softmmu/hw/timer/exynos4210_mct.o
>>>   CC    x86_64-softmmu/target-i386/monitor.o
>>>   CC    aarch64-softmmu/hw/timer/exynos4210_pwm.o
>>>   CC    x86_64-softmmu/target-i386/kvm.o
>>>   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    x86_64-softmmu/target-i386/hyperv.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
>>>   GEN   trace/generated-helpers.c
>>>   CC    aarch64-softmmu/hw/usb/tusb6010.o
>>>   CC    x86_64-softmmu/trace/control-target.o
>>>   CC    aarch64-softmmu/hw/vfio/common.o
>>>   CC    aarch64-softmmu/hw/vfio/pci.o
>>>   CC    aarch64-softmmu/hw/vfio/pci-quirks.o
>>>   CC    aarch64-softmmu/hw/vfio/platform.o
>>>   CC    aarch64-softmmu/hw/vfio/calxeda-xgmac.o
>>>   CC    aarch64-softmmu/hw/vfio/amd-xgbe.o
>>>   CC    aarch64-softmmu/hw/vfio/spapr.o
>>>   CC    aarch64-softmmu/hw/virtio/virtio.o
>>>   CC    aarch64-softmmu/hw/virtio/virtio-balloon.o
>>>   CC    aarch64-softmmu/hw/virtio/vhost.o
>>>   CC    aarch64-softmmu/hw/virtio/vhost-backend.o
>>>   CC    aarch64-softmmu/hw/virtio/vhost-user.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/omap_sx1.o
>>>   CC    aarch64-softmmu/hw/arm/palm.o
>>>   CC    x86_64-softmmu/trace/generated-helpers.o
>>> /tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
>>> /tmp/qemu-test/src/hw/i386/acpi-build.c:471: warning: ‘notify_method’ may be used uninitialized in this function
>>>   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
>>>   LINK  x86_64-softmmu/qemu-system-x86_64
>>>   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/omap1.o
>>>   CC    aarch64-softmmu/hw/arm/omap2.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-zynqmp.o
>>>   CC    aarch64-softmmu/hw/arm/xlnx-ep108.o
>>>   CC    aarch64-softmmu/hw/arm/fsl-imx25.o
>>>   CC    aarch64-softmmu/hw/arm/imx25_pdk.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/ast2400.o
>>>   CC    aarch64-softmmu/hw/arm/sabrelite.o
>>>   CC    aarch64-softmmu/hw/arm/palmetto-bmc.o
>>>   CC    aarch64-softmmu/target-arm/arm-semi.o
>>>   CC    aarch64-softmmu/target-arm/machine.o
>>>   CC    aarch64-softmmu/target-arm/psci.o
>>>   CC    aarch64-softmmu/target-arm/arch_dump.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
>>> ../hw/core/loader-fit.o: In function `load_fit':
>>> /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
>>> /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
>>> collect2: ld returned 1 exit status
>>> make[1]: *** [qemu-system-x86_64] Error 1
>>> make: *** [subdir-x86_64-softmmu] Error 2
>>> make: *** Waiting for unfinished jobs....
>>>   CC    aarch64-softmmu/target-arm/iwmmxt_helper.o
>>>   CC    aarch64-softmmu/target-arm/cpu.o
>>>   CC    aarch64-softmmu/target-arm/neon_helper.o
>>>   CC    aarch64-softmmu/target-arm/gdbstub.o
>>>   CC    aarch64-softmmu/target-arm/cpu64.o
>>>   CC    aarch64-softmmu/target-arm/translate-a64.o
>>> /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
>>> /tmp/qemu-test/src/target-arm/translate-a64.c:6308: warning: ‘tcg_src_hi’ may be used uninitialized in this function
>>> /tmp/qemu-test/src/target-arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
>>> /tmp/qemu-test/src/target-arm/translate-a64.c:8035: warning: ‘rmode’ may be used uninitialized in this function
>>>   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-aarch64
>>> ../hw/core/loader-fit.o: In function `load_fit':
>>> /tmp/qemu-test/src/hw/core/loader-fit.c:246: undefined reference to `fdt_first_subnode'
>>> /tmp/qemu-test/src/hw/core/loader-fit.c:254: undefined reference to `fdt_next_subnode'
>>> collect2: ld returned 1 exit status
>>> make[1]: *** [qemu-system-aarch64] Error 1
>>> make: *** [subdir-aarch64-softmmu] Error 2
>>> tests/docker/Makefile.include:104: recipe for target 'docker-run-test-quick@centos6' failed
>>> make: *** [docker-run-test-quick@centos6] Error 1
>>> === 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] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
  2016-09-08 10:46       ` Paul Burton
@ 2016-09-08 12:01         ` Leon Alrae
  0 siblings, 0 replies; 18+ messages in thread
From: Leon Alrae @ 2016-09-08 12:01 UTC (permalink / raw)
  To: Paul Burton; +Cc: qemu-devel, famz, aurelien

On Thu, Sep 08, 2016 at 11:46:38AM +0100, Paul Burton wrote:
> On 08/09/16 09:57, Leon Alrae wrote:
> > On Fri, Aug 19, 2016 at 08:40:32PM +0100, Paul Burton wrote:
> >> On 19/08/16 20:25, no-reply@patchew.org wrote:
> >>> Hi,
> >>>
> >>> Your 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.
> >>>
> >>> Message-id: 20160819190903.10974-1-paul.burton@imgtec.com
> >>> Subject: [Qemu-devel] [PATCH 0/7] MIPS Boston board support
> >>> Type: series
> >>
> >> FYI, this build failure occurs because dtc/libfdt is missing this commit:
> >>
> >>
> >> https://git.kernel.org/cgit/utils/dtc/dtc.git/commit/libfdt/version.lds?id=a4b093f7366fdb429ca1781144d3985fa50d0fbb
> >>
> >> Unfortunately the last release of dtc seems to be very old despite there
> >> being fixes like that present in it for well over a year. I'm open to
> >> suggestions about how to handle that...
> > 
> > Looks like 1.4.2 has appeared recently and it contains above commit.
> 
> Hi Leon,
> 
> Great - that's good timing! :)
> 
> > 
> > One way would be just to bump our minimal dtc version requirement from
> > 1.4.0 to 1.4.2 (and update qemu's dtc submodule as well)...
> 
> Would you like me to submit a v2 which does that & removes the
> extraneous semicolon from patch 1?

Yes, that would be good.

Thanks,
Leon

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller
  2016-08-19 19:09 ` [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller Paul Burton
@ 2016-11-25 13:57   ` Yongbok Kim
  0 siblings, 0 replies; 18+ messages in thread
From: Yongbok Kim @ 2016-11-25 13:57 UTC (permalink / raw)
  To: Paul Burton, qemu-devel, Aurelien Jarno



On 19/08/2016 20:09, Paul Burton wrote:
> Add support for emulating the Xilinx AXI Root Port Bridge for PCI
> Express as described by Xilinx' PG055 document. This is a PCIe
> controller that can be used with certain series of Xilinx FPGAs, and is
> used on the MIPS Boston board which will make use of this code.
> 
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> ---
>  hw/pci-host/Makefile.objs         |   1 +
>  hw/pci-host/xilinx-pcie.c         | 310 ++++++++++++++++++++++++++++++++++++++
>  include/hw/pci-host/xilinx-pcie.h | 102 +++++++++++++
>  3 files changed, 413 insertions(+)
>  create mode 100644 hw/pci-host/xilinx-pcie.c
>  create mode 100644 include/hw/pci-host/xilinx-pcie.h
> 
> diff --git a/hw/pci-host/Makefile.objs b/hw/pci-host/Makefile.objs
> index 45f1f0e..9c7909c 100644
> --- a/hw/pci-host/Makefile.objs
> +++ b/hw/pci-host/Makefile.objs
> @@ -16,3 +16,4 @@ common-obj-$(CONFIG_FULONG) += bonito.o
>  common-obj-$(CONFIG_PCI_PIIX) += piix.o
>  common-obj-$(CONFIG_PCI_Q35) += q35.o
>  common-obj-$(CONFIG_PCI_GENERIC) += gpex.o
> +common-obj-$(CONFIG_PCI_XILINX) += xilinx-pcie.o
> diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c
> new file mode 100644
> index 0000000..2f3a712
> --- /dev/null
> +++ b/hw/pci-host/xilinx-pcie.c
> @@ -0,0 +1,310 @@
> +/*
> + * Xilinx PCIe host controller emulation.
> + *
> + * Copyright (c) 2016 Imagination Technologies
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "hw/pci/pci_bridge.h"
> +#include "hw/pci-host/xilinx-pcie.h"
> +
> +enum root_cfg_reg {
> +    ROOTCFG_INTDEC              = 0x138,
> +
> +    ROOTCFG_INTMASK             = 0x13c,
> +#define ROOTCFG_INTMASK_INTX    (1 << 16)
> +#define ROOTCFG_INTMASK_MSI     (1 << 17)
> +
> +    ROOTCFG_PSCR                = 0x144,
> +#define ROOTCFG_PSCR_LINK       (1 << 11)

Could be confused with other field. ROOTCFG_PSCR_LINK_UP?

> +
> +    ROOTCFG_RPSCR               = 0x148,
> +#define ROOTCFG_RPSCR_BRIDGEEN  (1 << 0)
> +#define ROOTCFG_RPSCR_INTNEMPTY (1 << 18)
> +#define ROOTCFG_RPSCR_INTOVF    (1 << 19)
> +
> +    ROOTCFG_RPIFR1              = 0x158,
> +    ROOTCFG_RPIFR2              = 0x15c,
> +};
> +
> +static void xilinx_pcie_update_intr(XilinxPCIEHost *s,
> +                                    uint32_t set, uint32_t clear)
> +{
> +    int level;
> +
> +    s->intr |= set;
> +    s->intr &= ~clear;
> +
> +    if (s->intr_fifo_r != s->intr_fifo_w) {
> +        s->intr |= ROOTCFG_INTMASK_INTX;
> +    }
> +
> +    level = !!(s->intr & s->intr_mask);
> +    qemu_set_irq(s->irq, level);
> +}
> +
> +static void xilinx_pcie_queue_intr(XilinxPCIEHost *s,
> +                                   uint32_t fifo_reg1, uint32_t fifo_reg2)
> +{
> +    XilinxPCIEInt *intr;
> +    unsigned int new_w;
> +
> +    new_w = (s->intr_fifo_w + 1) % ARRAY_SIZE(s->intr_fifo);
> +    if (new_w == s->intr_fifo_r) {
> +        s->rpscr |= ROOTCFG_RPSCR_INTOVF;
> +        return;
> +    }
> +
> +    intr = &s->intr_fifo[s->intr_fifo_w];
> +    s->intr_fifo_w = new_w;
> +
> +    intr->fifo_reg1 = fifo_reg1;
> +    intr->fifo_reg2 = fifo_reg2;
> +
> +    xilinx_pcie_update_intr(s, ROOTCFG_INTMASK_INTX, 0);
> +}
> +
> +static void xilinx_pcie_set_irq(void *opaque, int irq_num, int level)
> +{
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(opaque);
> +
> +    if (!level) {
> +        return;
> +    }
> +
> +    xilinx_pcie_queue_intr(s, (irq_num << 27) | (level << 29) | (1 << 31), 0);

Macro 27, 29 and 31.
As it returns when de-asserting, level is always 1.

> +}
> +
> +static void xilinx_pcie_host_realize(DeviceState *dev, Error **errp)
> +{
> +    PCIHostState *pci = PCI_HOST_BRIDGE(dev);
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(dev);
> +    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
> +    PCIExpressHost *pex = PCIE_HOST_BRIDGE(dev);
> +
> +    snprintf(s->name, sizeof(s->name), "pcie%u", s->bus_nr);
> +
> +    /* PCI configuration space */
> +    pcie_host_mmcfg_init(pex, s->cfg_size);
> +
> +    /* MMIO region */
> +    memory_region_init(&s->mmio, OBJECT(s), "mmio", UINT64_MAX);
> +    memory_region_set_enabled(&s->mmio, false);
> +
> +    /* dummy I/O region */
> +    memory_region_init_ram(&s->io, OBJECT(s), "io", 16, NULL);
> +    memory_region_set_enabled(&s->io, false);
> +
> +    sysbus_init_mmio(sbd, &pex->mmio);
> +    sysbus_init_mmio(sbd, &s->mmio);
> +
> +    pci->bus = pci_register_bus(dev, s->name, xilinx_pcie_set_irq,
> +                                pci_swizzle_map_irq_fn, s, &s->mmio,
> +                                &s->io, 0, 4, TYPE_PCIE_BUS);
> +
> +    qdev_set_parent_bus(DEVICE(&s->root), BUS(pci->bus));
> +    qdev_init_nofail(DEVICE(&s->root));
> +}
> +
> +static const char *xilinx_pcie_host_root_bus_path(PCIHostState *host_bridge,
> +                                                  PCIBus *rootbus)
> +{
> +    return "0000:00";
> +}
> +
> +static void xilinx_pcie_host_init(Object *obj)
> +{
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(obj);
> +    XilinxPCIERoot *root = &s->root;
> +
> +    object_initialize(root, sizeof(*root), TYPE_XILINX_PCIE_ROOT);
> +    object_property_add_child(obj, "root", OBJECT(root), NULL);
> +    qdev_prop_set_uint32(DEVICE(root), "addr", PCI_DEVFN(0, 0));
> +    qdev_prop_set_bit(DEVICE(root), "multifunction", false);
> +}
> +
> +static Property xilinx_pcie_host_props[] = {
> +    DEFINE_PROP_UINT32("bus_nr", XilinxPCIEHost, bus_nr, 0),
> +    DEFINE_PROP_SIZE("cfg_base", XilinxPCIEHost, cfg_base, 0),
> +    DEFINE_PROP_SIZE("cfg_size", XilinxPCIEHost, cfg_size, 32 << 20),
> +    DEFINE_PROP_SIZE("mmio_base", XilinxPCIEHost, mmio_base, 0),
> +    DEFINE_PROP_SIZE("mmio_size", XilinxPCIEHost, mmio_size, 1 << 20),
> +    DEFINE_PROP_PTR("irq", XilinxPCIEHost, irq_void),
> +    DEFINE_PROP_BOOL("link_up", XilinxPCIEHost, link_up, true),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void xilinx_pcie_host_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +    PCIHostBridgeClass *hc = PCI_HOST_BRIDGE_CLASS(klass);
> +
> +    hc->root_bus_path = xilinx_pcie_host_root_bus_path;
> +    dc->realize = xilinx_pcie_host_realize;
> +    set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
> +    dc->fw_name = "pci";
> +    dc->props = xilinx_pcie_host_props;
> +}
> +
> +static const TypeInfo xilinx_pcie_host_info = {
> +    .name       = TYPE_XILINX_PCIE_HOST,
> +    .parent     = TYPE_PCIE_HOST_BRIDGE,
> +    .instance_size = sizeof(XilinxPCIEHost),
> +    .instance_init = xilinx_pcie_host_init,
> +    .class_init = xilinx_pcie_host_class_init,
> +};
> +
> +static uint32_t xilinx_pcie_root_config_read(PCIDevice *d,
> +                                             uint32_t address, int len)
> +{
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(OBJECT(d)->parent);
> +    uint32_t val;
> +
> +    switch (address) {
> +    case ROOTCFG_INTDEC:
> +        return s->intr;
> +
> +    case ROOTCFG_INTMASK:
> +        return s->intr_mask;
> +
> +    case ROOTCFG_PSCR:
> +        val = s->link_up ? ROOTCFG_PSCR_LINK : 0;
> +        return val;
> +
> +    case ROOTCFG_RPSCR:
> +        if (s->intr_fifo_r != s->intr_fifo_w) {
> +            s->rpscr &= ~ROOTCFG_RPSCR_INTNEMPTY;
> +        } else {
> +            s->rpscr |= ROOTCFG_RPSCR_INTNEMPTY;
> +        }
> +        return s->rpscr;
> +
> +    case ROOTCFG_RPIFR1:
> +        if (s->intr_fifo_w == s->intr_fifo_r) {
> +            /* FIFO empty */
> +            return 0;
> +        }
> +        return s->intr_fifo[s->intr_fifo_r].fifo_reg1;
> +
> +    case ROOTCFG_RPIFR2:
> +        if (s->intr_fifo_w == s->intr_fifo_r) {
> +            /* FIFO empty */
> +            return 0;
> +        }
> +        return s->intr_fifo[s->intr_fifo_r].fifo_reg2;
> +
> +    default:
> +        return pci_default_read_config(d, address, len);
> +    }
> +}
> +
> +static void xilinx_pcie_root_config_write(PCIDevice *d, uint32_t address,
> +                                          uint32_t val, int len)
> +{
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(OBJECT(d)->parent);
> +
> +    switch (address) {
> +    case ROOTCFG_INTDEC:
> +        xilinx_pcie_update_intr(s, 0, val);
> +        break;
> +
> +    case ROOTCFG_INTMASK:
> +        s->intr_mask = val;
> +        xilinx_pcie_update_intr(s, 0, 0);
> +        break;
> +
> +    case ROOTCFG_RPSCR:
> +        s->rpscr &= ~ROOTCFG_RPSCR_BRIDGEEN;
> +        s->rpscr |= val & ROOTCFG_RPSCR_BRIDGEEN;
> +        memory_region_set_enabled(&s->mmio, val & ROOTCFG_RPSCR_BRIDGEEN);
> +
> +        if (val & ROOTCFG_INTMASK_INTX) {
> +            s->rpscr &= ~ROOTCFG_INTMASK_INTX;
> +        }
> +        break;
> +
> +    case ROOTCFG_RPIFR1:
> +    case ROOTCFG_RPIFR2:
> +        if (s->intr_fifo_w == s->intr_fifo_r) {
> +            /* FIFO empty */
> +            return;
> +        }
> +        s->intr_fifo_r = (s->intr_fifo_r + 1) % ARRAY_SIZE(s->intr_fifo);
> +        break;
> +
> +    default:
> +        pci_default_write_config(d, address, val, len);
> +        break;
> +    }
> +}
> +
> +static int xilinx_pcie_root_init(PCIDevice *dev)
> +{
> +    BusState *bus = qdev_get_parent_bus(DEVICE(dev));
> +    XilinxPCIEHost *s = XILINX_PCIE_HOST(bus->parent);
> +
> +    dev->config[PCI_COMMAND] = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER;
> +    stw_le_p(&dev->config[PCI_MEMORY_BASE], s->mmio_base >> 16);

is it safe to use for big endian target?
I've quickly checked if the patch allows to run a big endian target but it
fails loading rootfs. Perhaps the endian issue is the blocker. It is fine
to have Boston for little endian only but as it is not mentioned anywhere
in the series of patch. I would recommend to mention it in the description
and/or to de-configure Boston from big endian.

> +    stw_le_p(&dev->config[PCI_MEMORY_LIMIT],
> +             ((s->mmio_base + s->mmio_size - 1) >> 16) & 0xfff0);
> +
> +    pci_bridge_initfn(dev, TYPE_PCI_BUS);
> +
> +    if (pcie_endpoint_cap_v1_init(dev, 0x80) < 0) {
> +        hw_error("Failed to initialize PCIe capability");
> +    }
> +
> +    return 0;
> +}
> +
> +static void xilinx_pcie_root_class_init(ObjectClass *klass, void *data)
> +{
> +    PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +
> +    set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
> +    dc->desc = "Xilinx AXI-PCIe Host Bridge";
> +    k->vendor_id = 0x10ee;

PCI_VENDOR_ID_XILINX

> +    k->device_id = 0x7021;
> +    k->revision = 0;
> +    k->class_id = PCI_CLASS_BRIDGE_HOST;
> +    k->is_express = true;
> +    k->is_bridge = true;
> +    k->init = xilinx_pcie_root_init;
> +    k->exit = pci_bridge_exitfn;
> +    dc->reset = pci_bridge_reset;
> +    k->config_read = xilinx_pcie_root_config_read;
> +    k->config_write = xilinx_pcie_root_config_write;
> +    /*
> +     * PCI-facing part of the host bridge, not usable without the
> +     * host-facing part, which can't be device_add'ed, yet.
> +     */
> +    dc->cannot_instantiate_with_device_add_yet = true;
> +}
> +
> +static const TypeInfo xilinx_pcie_root_info = {
> +    .name = TYPE_XILINX_PCIE_ROOT,
> +    .parent = TYPE_PCI_BRIDGE,
> +    .instance_size = sizeof(XilinxPCIERoot),
> +    .class_init = xilinx_pcie_root_class_init,
> +};
> +
> +static void xilinx_pcie_register(void)
> +{
> +    type_register_static(&xilinx_pcie_root_info);
> +    type_register_static(&xilinx_pcie_host_info);
> +}
> +type_init(xilinx_pcie_register)
> diff --git a/include/hw/pci-host/xilinx-pcie.h b/include/hw/pci-host/xilinx-pcie.h
> new file mode 100644
> index 0000000..443c1a6
> --- /dev/null
> +++ b/include/hw/pci-host/xilinx-pcie.h
> @@ -0,0 +1,102 @@
> +/*
> + * Xilinx PCIe host controller emulation.
> + *
> + * Copyright (c) 2016 Imagination Technologies
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library 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
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef HW_XILINX_PCIE_H
> +#define HW_XILINX_PCIE_H
> +
> +#include "hw/hw.h"
> +#include "hw/sysbus.h"
> +#include "hw/pci/pci.h"
> +#include "hw/pci/pci_bus.h"
> +#include "hw/pci/pcie_host.h"
> +
> +#define TYPE_XILINX_PCIE_HOST "xilinx-pcie-host"
> +#define XILINX_PCIE_HOST(obj) \
> +     OBJECT_CHECK(XilinxPCIEHost, (obj), TYPE_XILINX_PCIE_HOST)
> +
> +#define TYPE_XILINX_PCIE_ROOT "xilinx-pcie-root"
> +#define XILINX_PCIE_ROOT(obj) \
> +     OBJECT_CHECK(XilinxPCIERoot, (obj), TYPE_XILINX_PCIE_ROOT)
> +
> +typedef struct XilinxPCIERoot {
> +    PCIBridge parent_obj;
> +} XilinxPCIERoot;
> +
> +typedef struct XilinxPCIEInt {
> +    uint32_t fifo_reg1;
> +    uint32_t fifo_reg2;
> +} XilinxPCIEInt;
> +
> +typedef struct XilinxPCIEHost {
> +    PCIExpressHost parent_obj;
> +
> +    char name[16];
> +
> +    uint32_t bus_nr;
> +    uint64_t cfg_base, cfg_size;
> +    uint64_t mmio_base, mmio_size;
> +    bool link_up;
> +
> +    union {
> +        qemu_irq irq;
> +        void *irq_void;
> +    };
> +
> +    MemoryRegion mmio, io;
> +
> +    XilinxPCIERoot root;
> +
> +    uint32_t intr;
> +    uint32_t intr_mask;
> +    XilinxPCIEInt intr_fifo[16];
> +    unsigned int intr_fifo_r, intr_fifo_w;
> +    uint32_t rpscr;
> +} XilinxPCIEHost;
> +
> +static inline XilinxPCIEHost *
> +xilinx_pcie_init(MemoryRegion *sys_mem, uint32_t bus_nr,
> +                 hwaddr cfg_base, uint64_t cfg_size,
> +                 hwaddr mmio_base, uint64_t mmio_size,
> +                 qemu_irq irq, bool link_up)
> +{

Function body in the header file. Any reason?

> +    DeviceState *dev;
> +    MemoryRegion *cfg, *mmio;
> +
> +    dev = qdev_create(NULL, TYPE_XILINX_PCIE_HOST);
> +
> +    qdev_prop_set_uint32(dev, "bus_nr", bus_nr);
> +    qdev_prop_set_uint64(dev, "cfg_base", cfg_base);
> +    qdev_prop_set_uint64(dev, "cfg_size", cfg_size);
> +    qdev_prop_set_uint64(dev, "mmio_base", mmio_base);
> +    qdev_prop_set_uint64(dev, "mmio_size", mmio_size);
> +    qdev_prop_set_ptr(dev, "irq", irq);
> +    qdev_prop_set_bit(dev, "link_up", link_up);
> +
> +    qdev_init_nofail(dev);
> +
> +    cfg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0);
> +    memory_region_add_subregion_overlap(sys_mem, cfg_base, cfg, 0);
> +
> +    mmio = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1);
> +    memory_region_add_subregion_overlap(sys_mem, 0, mmio, 0);
> +
> +    return XILINX_PCIE_HOST(dev);
> +}
> +
> +#endif /* HW_XILINX_PCIE_H */
> 


Regards,
Yongbok

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2016-11-25 13:58 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-19 19:08 [Qemu-devel] [PATCH 0/7] MIPS Boston board support Paul Burton
2016-08-19 19:08 ` [Qemu-devel] [PATCH 1/7] hw/mips_cmgcr: allow GCR base to be moved Paul Burton
2016-09-07 13:09   ` Leon Alrae
2016-08-19 19:08 ` [Qemu-devel] [PATCH 2/7] hw/mips_gictimer: provide API for retrieving frequency Paul Burton
2016-09-07 13:13   ` Leon Alrae
2016-08-19 19:08 ` [Qemu-devel] [PATCH 3/7] hw/mips_gic: Update pin state on mask changes Paul Burton
2016-09-07 13:40   ` Leon Alrae
2016-08-19 19:09 ` [Qemu-devel] [PATCH 4/7] target-mips: Provide function to test if a CPU supports an ISA Paul Burton
2016-09-07 13:48   ` Leon Alrae
2016-08-19 19:09 ` [Qemu-devel] [PATCH 5/7] loader: Support Flattened Image Trees (FIT images) Paul Burton
2016-08-19 19:09 ` [Qemu-devel] [PATCH 6/7] hw: xilinx-pcie: Add support for Xilinx AXI PCIe Controller Paul Burton
2016-11-25 13:57   ` Yongbok Kim
2016-08-19 19:09 ` [Qemu-devel] [PATCH 7/7] hw/mips: MIPS Boston board support Paul Burton
2016-08-19 19:25 ` [Qemu-devel] [PATCH 0/7] " no-reply
2016-08-19 19:40   ` Paul Burton
2016-09-08  8:57     ` Leon Alrae
2016-09-08 10:46       ` Paul Burton
2016-09-08 12:01         ` Leon Alrae

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.