* [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC)
@ 2017-10-05 16:24 Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]() Igor Mammedov
` (23 more replies)
0 siblings, 24 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
this series is continuation of effort to remove boards dependency on
cpu_model parsing and generalizing default cpu type handling.
For background story look at merged:
[PATCH v2 0/5] generalize parsing of cpu_model (x86/arm)
https://lists.gnu.org/archive/html/qemu-devel/2017-09/msg03564.html
Part 3 is independent subset that takes care of all PPC boards.
Series borrows the 1st 3 patches from earlier posted part 2
qom: update doc comment for type_register[_static]()
qom: introduce type_register_static_array()
qom: add helper macro DEFINE_TYPES()
to avoid interdependency, hopefully this 3 will be merged via machine-next,
but it's fine for them to go via any tree (whichever first)
Beside of switching to generic cpu_model parsing series contains a bunch
of cleanups/simplifications which reduces code a bit and normalizes
code that I've happend to touch to a typical QEMU patterns.
git tree for testing:
https://github.com/imammedo/qemu/branches cpu_init_removal_ppc_part3_v1
CC: Alexander Graf <agraf@suse.de> (supporter:ppce500)
CC: David Gibson <david@gibson.dropbear.id.au> (maintainer:PowerPC)
CC: "Hervé Poussineau" <hpoussin@reactos.org> (maintainer:PReP)
CC: "Edgar E. Iglesias" <edgar.iglesias@gmail.com> (odd fixer:virtex_ml507)
CC: qemu-ppc@nongnu.org (open list:ppce500)
Igor Mammedov (23):
qom: update doc comment for type_register[_static]()
qom: introduce type_register_static_array()
qom: add helper macro DEFINE_TYPES()
ppc: mpc8544ds/e500plat: use generic cpu_model parsing
ppc: mac_newworld: use generic cpu_model parsing
ppc: mac_oldworld: use generic cpu_model parsing
ppc: bamboo: use generic cpu_model parsing
ppc: replace cpu_model with cpu_type on ref405ep,taihu boards
ppc: virtex-ml507: replace cpu_model with cpu_type
ppc: 40p/prep: replace cpu_model with cpu_type
ppc: spapr: replace ppc_cpu_parse_features() with
cpu_parse_cpu_model()
ppc: move '-cpu foo,compat=xxx' parsing into
ppc_cpu_parse_featurestr()
ppc: spapr: define core types statically
ppc: spapr: use cpu type name directly
ppc: spapr: register 'host' core type along with the rest of core
types
ppc: spapr: use cpu model names as tcg defaults instead of aliases
ppc: spapr: use generic cpu_model parsing
ppc: pnv: use generic cpu_model parsing
ppc: pnv: normalize core/chip type names
ppc: pnv: drop PnvCoreClass::cpu_oc field
ppc: pnv: define core types statically
ppc: pnv: drop PnvChipClass::cpu_model field
ppc: pnv: consolidate type definitions and batch register them
include/hw/ppc/pnv.h | 12 +--
include/hw/ppc/pnv_core.h | 4 +-
include/hw/ppc/ppc.h | 2 -
include/hw/ppc/spapr.h | 2 -
include/hw/ppc/spapr_cpu_core.h | 7 +-
include/qom/object.h | 50 ++++++++++-
target/ppc/cpu-qom.h | 1 +
target/ppc/cpu.h | 1 -
hw/ppc/e500.c | 8 +-
hw/ppc/e500plat.c | 1 +
hw/ppc/mac_newworld.c | 15 ++--
hw/ppc/mac_oldworld.c | 6 +-
hw/ppc/mpc8544ds.c | 2 +
hw/ppc/pnv.c | 131 ++++++++++++-----------------
hw/ppc/pnv_core.c | 67 +++++++--------
hw/ppc/ppc.c | 25 ------
hw/ppc/ppc405_uc.c | 6 +-
hw/ppc/ppc440_bamboo.c | 7 +-
hw/ppc/ppc4xx_devs.c | 4 +-
hw/ppc/prep.c | 12 +--
hw/ppc/spapr.c | 22 ++---
hw/ppc/spapr_cpu_core.c | 182 ++++++++++------------------------------
hw/ppc/virtex_ml507.c | 11 +--
qom/object.c | 9 ++
target/ppc/kvm.c | 20 ++---
target/ppc/translate_init.c | 72 ++++++++++++++--
26 files changed, 304 insertions(+), 375 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]()
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 2:57 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array() Igor Mammedov
` (22 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
type_register()/type_register_static() functions in current impl.
can't fail returning 0, also none of the users check for error
so update doc comment to reflect current behaviour.
Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qom/object.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index e0d9824..a707b67 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -773,7 +773,7 @@ const char *object_get_typename(const Object *obj);
* @info and all of the strings it points to should exist for the life time
* that the type is registered.
*
- * Returns: 0 on failure, the new #Type on success.
+ * Returns: the new #Type.
*/
Type type_register_static(const TypeInfo *info);
@@ -784,7 +784,7 @@ Type type_register_static(const TypeInfo *info);
* Unlike type_register_static(), this call does not require @info or its
* string members to continue to exist after the call returns.
*
- * Returns: 0 on failure, the new #Type on success.
+ * Returns: the new #Type.
*/
Type type_register(const TypeInfo *info);
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array()
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]() Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 2:58 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES() Igor Mammedov
` (21 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
it will help to remove code duplication of registration
static types in places that have open coded loop to
perform batch type registering.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/qom/object.h | 10 ++++++++++
qom/object.c | 9 +++++++++
2 files changed, 19 insertions(+)
diff --git a/include/qom/object.h b/include/qom/object.h
index a707b67..9a2369c 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -789,6 +789,16 @@ Type type_register_static(const TypeInfo *info);
Type type_register(const TypeInfo *info);
/**
+ * type_register_static_array:
+ * @infos: The array of the new type #TypeInfo structures.
+ * @nr_infos: number of entries in @infos
+ *
+ * @infos and all of the strings it points to should exist for the life time
+ * that the type is registered.
+ */
+void type_register_static_array(const TypeInfo *infos, int nr_infos);
+
+/**
* object_class_dynamic_cast_assert:
* @klass: The #ObjectClass to attempt to cast.
* @typename: The QOM typename of the class to cast to.
diff --git a/qom/object.c b/qom/object.c
index 6a7bd92..c58c52d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -151,6 +151,15 @@ TypeImpl *type_register_static(const TypeInfo *info)
return type_register(info);
}
+void type_register_static_array(const TypeInfo *infos, int nr_infos)
+{
+ int i;
+
+ for (i = 0; i < nr_infos; i++) {
+ type_register_static(&infos[i]);
+ }
+}
+
static TypeImpl *type_get_by_name(const char *name)
{
if (name == NULL) {
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES()
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]() Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array() Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:06 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing Igor Mammedov
` (20 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
DEFINE_TYPES() will help to simplify following routine patterns:
static void foo_register_types(void)
{
type_register_static(&foo1_type_info);
type_register_static(&foo2_type_info);
...
}
type_init(foo_register_types)
or
static void foo_register_types(void)
{
int i;
for (i = 0; i < ARRAY_SIZE(type_infos); i++) {
type_register_static(&type_infos[i]);
}
}
type_init(foo_register_types)
with a single line
DEFINE_TYPES(type_infos)
where types have static definition which could be consolidated in
a single array of TypeInfo structures.
It saves us ~6-10LOC per use case and would help to replace
imperative foo_register_types() there with declarative style of
type registration.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/qom/object.h | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/include/qom/object.h b/include/qom/object.h
index 9a2369c..dc73d59 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -79,6 +79,28 @@ typedef struct InterfaceInfo InterfaceInfo;
* #TypeInfo describes information about the type including what it inherits
* from, the instance and class size, and constructor/destructor hooks.
*
+ * Alternatively several static types could be registered using helper macro
+ * DEFINE_TYPES()
+ *
+ * <example>
+ * <programlisting>
+ * static const TypeInfo device_types_info[] = {
+ * {
+ * .name = TYPE_MY_DEVICE_A,
+ * .parent = TYPE_DEVICE,
+ * .instance_size = sizeof(MyDeviceA),
+ * },
+ * {
+ * .name = TYPE_MY_DEVICE_B,
+ * .parent = TYPE_DEVICE,
+ * .instance_size = sizeof(MyDeviceB),
+ * },
+ * };
+ *
+ * DEFINE_TYPES(device_types_info)
+ * </programlisting>
+ * </example>
+ *
* Every type has an #ObjectClass associated with it. #ObjectClass derivatives
* are instantiated dynamically but there is only ever one instance for any
* given type. The #ObjectClass typically holds a table of function pointers
@@ -799,6 +821,20 @@ Type type_register(const TypeInfo *info);
void type_register_static_array(const TypeInfo *infos, int nr_infos);
/**
+ * DEFINE_TYPES:
+ * @type_array: The array containing #TypeInfo structures to register
+ *
+ * @type_array should be static constant that exists for the life time
+ * that the type is registered.
+ */
+#define DEFINE_TYPES(type_array) \
+static void do_qemu_init_ ## type_array(void) \
+{ \
+ type_register_static_array(type_array, ARRAY_SIZE(type_array)); \
+} \
+type_init(do_qemu_init_ ## type_array)
+
+/**
* object_class_dynamic_cast_assert:
* @klass: The #ObjectClass to attempt to cast.
* @typename: The QOM typename of the class to cast to.
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (2 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES() Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:02 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: " Igor Mammedov
` (19 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/e500.c | 8 +-------
hw/ppc/e500plat.c | 1 +
hw/ppc/mpc8544ds.c | 2 ++
3 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index db0e49a..9178e70 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -803,11 +803,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
SysBusDevice *s;
PPCE500CCSRState *ccsr;
- /* Setup CPUs */
- if (machine->cpu_model == NULL) {
- machine->cpu_model = "e500v2_v30";
- }
-
irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
irqs[0] = g_malloc0(smp_cpus * sizeof(qemu_irq) * OPENPIC_OUTPUT_NB);
for (i = 0; i < smp_cpus; i++) {
@@ -815,8 +810,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
CPUState *cs;
qemu_irq *input;
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
- machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
cs = CPU(cpu);
diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
index 94b4545..e59e80f 100644
--- a/hw/ppc/e500plat.c
+++ b/hw/ppc/e500plat.c
@@ -64,6 +64,7 @@ static void e500plat_machine_init(MachineClass *mc)
mc->init = e500plat_init;
mc->max_cpus = 32;
mc->has_dynamic_sysbus = true;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
}
DEFINE_MACHINE("ppce500", e500plat_machine_init)
diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
index 27b8289..1717953 100644
--- a/hw/ppc/mpc8544ds.c
+++ b/hw/ppc/mpc8544ds.c
@@ -16,6 +16,7 @@
#include "sysemu/device_tree.h"
#include "hw/ppc/openpic.h"
#include "qemu/error-report.h"
+#include "cpu.h"
static void mpc8544ds_fixup_devtree(PPCE500Params *params, void *fdt)
{
@@ -55,6 +56,7 @@ static void ppce500_machine_init(MachineClass *mc)
mc->desc = "mpc8544ds";
mc->init = mpc8544ds_init;
mc->max_cpus = 15;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
}
DEFINE_MACHINE("mpc8544ds", ppce500_machine_init)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (3 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:08 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: " Igor Mammedov
` (18 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/mac_newworld.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 6d0ace2..3fa7c42 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -174,16 +174,8 @@ static void ppc_core99_init(MachineState *machine)
linux_boot = (kernel_filename != NULL);
/* init CPUs */
- if (machine->cpu_model == NULL) {
-#ifdef TARGET_PPC64
- machine->cpu_model = "970fx";
-#else
- machine->cpu_model = "G4";
-#endif
- }
for (i = 0; i < smp_cpus; i++) {
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
- machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
/* Set time-base frequency to 100 Mhz */
@@ -520,6 +512,11 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)
mc->max_cpus = MAX_CPUS;
mc->default_boot_order = "cd";
mc->kvm_type = core99_kvm_type;
+#ifdef TARGET_PPC64
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("970fx_v3.1");
+#else
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("7400_v2.9");
+#endif
}
static const TypeInfo core99_machine_info = {
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (4 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: " Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:09 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 07/23] ppc: bamboo: " Igor Mammedov
` (17 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/mac_oldworld.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index bc7c8b7..010ea36 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -108,11 +108,8 @@ static void ppc_heathrow_init(MachineState *machine)
linux_boot = (kernel_filename != NULL);
/* init CPUs */
- if (machine->cpu_model == NULL)
- machine->cpu_model = "G3";
for (i = 0; i < smp_cpus; i++) {
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
- machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
/* Set time-base frequency to 16.6 Mhz */
@@ -385,6 +382,7 @@ static void heathrow_class_init(ObjectClass *oc, void *data)
/* TOFIX "cad" when Mac floppy is implemented */
mc->default_boot_order = "cd";
mc->kvm_type = heathrow_kvm_type;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("750_v3.1");
}
static const TypeInfo ppc_heathrow_machine_info = {
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 07/23] ppc: bamboo: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (5 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: " Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:11 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards Igor Mammedov
` (16 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/ppc440_bamboo.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index f92d47f..693c215 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -182,11 +182,7 @@ static void bamboo_init(MachineState *machine)
int success;
int i;
- /* Setup CPU. */
- if (machine->cpu_model == NULL) {
- machine->cpu_model = "440EP";
- }
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
if (env->mmu_model != POWERPC_MMU_BOOKE) {
@@ -297,6 +293,7 @@ static void bamboo_machine_init(MachineClass *mc)
{
mc->desc = "bamboo";
mc->init = bamboo_init;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("440epb");
}
DEFINE_MACHINE("bamboo", bamboo_machine_init)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (6 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 07/23] ppc: bamboo: " Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:12 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type Igor Mammedov
` (15 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/ppc405_uc.c | 6 ++++--
hw/ppc/ppc4xx_devs.c | 4 ++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c
index 8e58065..205ebce 100644
--- a/hw/ppc/ppc405_uc.c
+++ b/hw/ppc/ppc405_uc.c
@@ -1629,7 +1629,8 @@ CPUPPCState *ppc405cr_init(MemoryRegion *address_space_mem,
qemu_irq *pic, *irqs;
memset(clk_setup, 0, sizeof(clk_setup));
- cpu = ppc4xx_init("405cr", &clk_setup[PPC405CR_CPU_CLK],
+ cpu = ppc4xx_init(POWERPC_CPU_TYPE_NAME("405crc"),
+ &clk_setup[PPC405CR_CPU_CLK],
&clk_setup[PPC405CR_TMR_CLK], sysclk);
env = &cpu->env;
/* Memory mapped devices registers */
@@ -1981,7 +1982,8 @@ CPUPPCState *ppc405ep_init(MemoryRegion *address_space_mem,
memset(clk_setup, 0, sizeof(clk_setup));
/* init CPUs */
- cpu = ppc4xx_init("405ep", &clk_setup[PPC405EP_CPU_CLK],
+ cpu = ppc4xx_init(POWERPC_CPU_TYPE_NAME("405ep"),
+ &clk_setup[PPC405EP_CPU_CLK],
&tlb_clk_setup, sysclk);
env = &cpu->env;
clk_setup[PPC405EP_CPU_CLK].cb = tlb_clk_setup.cb;
diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c
index 6d7f785..2e96389 100644
--- a/hw/ppc/ppc4xx_devs.c
+++ b/hw/ppc/ppc4xx_devs.c
@@ -48,7 +48,7 @@ static void ppc4xx_reset(void *opaque)
/*****************************************************************************/
/* Generic PowerPC 4xx processor instantiation */
-PowerPCCPU *ppc4xx_init(const char *cpu_model,
+PowerPCCPU *ppc4xx_init(const char *cpu_type,
clk_setup_t *cpu_clk, clk_setup_t *tb_clk,
uint32_t sysclk)
{
@@ -56,7 +56,7 @@ PowerPCCPU *ppc4xx_init(const char *cpu_model,
CPUPPCState *env;
/* init CPUs */
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
+ cpu = POWERPC_CPU(cpu_create(cpu_type));
env = &cpu->env;
cpu_clk->cb = NULL; /* We don't care about CPU clock frequency changes */
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (7 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:13 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: " Igor Mammedov
` (14 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/virtex_ml507.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index ed9b406..5ac4f76 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -89,14 +89,14 @@ static void mmubooke_create_initial_mapping(CPUPPCState *env,
static PowerPCCPU *ppc440_init_xilinx(ram_addr_t *ram_size,
int do_init,
- const char *cpu_model,
+ const char *cpu_type,
uint32_t sysclk)
{
PowerPCCPU *cpu;
CPUPPCState *env;
qemu_irq *irqs;
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
+ cpu = POWERPC_CPU(cpu_create(cpu_type));
env = &cpu->env;
ppc_booke_timers_init(cpu, sysclk, 0/* no flags */);
@@ -211,11 +211,7 @@ static void virtex_init(MachineState *machine)
int i;
/* init CPUs */
- if (machine->cpu_model == NULL) {
- machine->cpu_model = "440-Xilinx";
- }
-
- cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000);
+ cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_type, 400000000);
env = &cpu->env;
if (env->mmu_model != POWERPC_MMU_BOOKE) {
@@ -307,6 +303,7 @@ static void virtex_machine_init(MachineClass *mc)
{
mc->desc = "Xilinx Virtex ML507 reference design";
mc->init = virtex_init;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("440-xilinx");
}
DEFINE_MACHINE("virtex-ml507", virtex_machine_init)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: replace cpu_model with cpu_type
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (8 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 3:14 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model() Igor Mammedov
` (13 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/prep.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 94138a4..6f8accc 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -517,11 +517,8 @@ static void ppc_prep_init(MachineState *machine)
linux_boot = (kernel_filename != NULL);
/* init CPUs */
- if (machine->cpu_model == NULL)
- machine->cpu_model = "602";
for (i = 0; i < smp_cpus; i++) {
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
- machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
if (env->flags & POWERPC_FLAG_RTC_CLK) {
@@ -684,6 +681,7 @@ static void prep_machine_init(MachineClass *mc)
mc->block_default_type = IF_IDE;
mc->max_cpus = MAX_CPUS;
mc->default_boot_order = "cad";
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("602");
}
static int prep_set_cmos_checksum(DeviceState *dev, void *opaque)
@@ -718,10 +716,7 @@ static void ibm_40p_init(MachineState *machine)
char boot_device;
/* init CPU */
- if (!machine->cpu_model) {
- machine->cpu_model = "604";
- }
- cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
+ cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
env = &cpu->env;
if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
error_report("only 6xx bus is supported on this machine");
@@ -894,6 +889,7 @@ static void ibm_40p_machine_init(MachineClass *mc)
mc->default_ram_size = 128 * M_BYTE;
mc->block_default_type = IF_SCSI;
mc->default_boot_order = "c";
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("604");
}
DEFINE_MACHINE("40p", ibm_40p_machine_init)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model()
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (9 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: " Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-05 18:35 ` Greg Kurz
2017-10-06 3:16 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr() Igor Mammedov
` (12 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
ppc_cpu_parse_features() is doing practically the same thing as
generic cpu_parse_cpu_model(). So remove duplicated impl. and
reuse generic one.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/ppc.h | 2 --
hw/ppc/ppc.c | 25 -------------------------
hw/ppc/spapr_cpu_core.c | 9 ++++-----
3 files changed, 4 insertions(+), 32 deletions(-)
diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h
index 4e7fe11..ff0ac30 100644
--- a/include/hw/ppc/ppc.h
+++ b/include/hw/ppc/ppc.h
@@ -105,6 +105,4 @@ enum {
/* ppc_booke.c */
void ppc_booke_timers_init(PowerPCCPU *cpu, uint32_t freq, uint32_t flags);
-
-void ppc_cpu_parse_features(const char *cpu_model);
#endif
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index 05da316..7ec35de 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -1359,28 +1359,3 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val)
break;
}
}
-
-void ppc_cpu_parse_features(const char *cpu_model)
-{
- CPUClass *cc;
- ObjectClass *oc;
- const char *typename;
- gchar **model_pieces;
-
- model_pieces = g_strsplit(cpu_model, ",", 2);
- if (!model_pieces[0]) {
- error_report("Invalid/empty CPU model name");
- exit(1);
- }
-
- oc = cpu_class_by_name(TYPE_POWERPC_CPU, model_pieces[0]);
- if (oc == NULL) {
- error_report("Unable to find CPU definition: %s", model_pieces[0]);
- exit(1);
- }
-
- typename = object_class_get_name(oc);
- cc = CPU_CLASS(oc);
- cc->parse_features(typename, model_pieces[1], &error_fatal);
- g_strfreev(model_pieces);
-}
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 3e20b1d..3dea5ff 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -34,6 +34,7 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
* before passing it on to the cpu level parser.
*/
gchar **inpieces;
+ gchar *newprops;
int i, j;
gchar *compat_str = NULL;
@@ -58,17 +59,15 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
if (compat_str) {
char *val = compat_str + strlen("compat=");
- gchar *newprops = g_strjoinv(",", inpieces);
object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
&error_fatal);
- ppc_cpu_parse_features(newprops);
- g_free(newprops);
- } else {
- ppc_cpu_parse_features(MACHINE(spapr)->cpu_model);
}
+ newprops = g_strjoinv(",", inpieces);
+ cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
+ g_free(newprops);
g_strfreev(inpieces);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (10 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model() Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-05 19:05 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2017-10-06 3:54 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically Igor Mammedov
` (11 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
there is a dedicated callback CPUClass::parse_features
which purpose is to convert -cpu features into a set of
global properties AND deal with compat/legacy features
that couldn't be directly translated into CPU's properties.
Create ppc variant of it (ppc_cpu_parse_featurestr) and
move 'compat=val' handling from spapr_cpu_core.c into it.
That removes a dependency of board/core code on cpu_model
parsing and would let to reuse common -cpu parsing
introduced by 6063d4c0
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/spapr.h | 1 -
target/ppc/cpu-qom.h | 1 +
hw/ppc/spapr.c | 2 +-
hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 60 insertions(+), 52 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index c1b365f..8ca4f94 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
uint32_t count, uint32_t index);
void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
uint32_t count, uint32_t index);
-void spapr_cpu_parse_features(sPAPRMachineState *spapr);
int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
Error **errp);
diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
index d0cf6ca..429b47f 100644
--- a/target/ppc/cpu-qom.h
+++ b/target/ppc/cpu-qom.h
@@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
DeviceRealize parent_realize;
DeviceUnrealize parent_unrealize;
void (*parent_reset)(CPUState *cpu);
+ void (*parent_parse_features)(const char *type, char *str, Error **errp);
uint32_t pvr;
bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index ff87f15..01b3012 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
}
- spapr_cpu_parse_features(spapr);
+ cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
spapr_set_vsmt_mode(spapr, &error_fatal);
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 3dea5ff..427d47f 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -21,56 +21,6 @@
#include "sysemu/hw_accel.h"
#include "qemu/error-report.h"
-void spapr_cpu_parse_features(sPAPRMachineState *spapr)
-{
- /*
- * Backwards compatibility hack:
- *
- * CPUs had a "compat=" property which didn't make sense for
- * anything except pseries. It was replaced by "max-cpu-compat"
- * machine option. This supports old command lines like
- * -cpu POWER8,compat=power7
- * By stripping the compat option and applying it to the machine
- * before passing it on to the cpu level parser.
- */
- gchar **inpieces;
- gchar *newprops;
- int i, j;
- gchar *compat_str = NULL;
-
- inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
-
- /* inpieces[0] is the actual model string */
- i = 1;
- j = 1;
- while (inpieces[i]) {
- if (g_str_has_prefix(inpieces[i], "compat=")) {
- /* in case of multiple compat= options */
- g_free(compat_str);
- compat_str = inpieces[i];
- } else {
- j++;
- }
-
- i++;
- /* Excise compat options from list */
- inpieces[j] = inpieces[i];
- }
-
- if (compat_str) {
- char *val = compat_str + strlen("compat=");
-
- object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
- &error_fatal);
-
- }
-
- newprops = g_strjoinv(",", inpieces);
- cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
- g_free(newprops);
- g_strfreev(inpieces);
-}
-
static void spapr_cpu_reset(void *opaque)
{
PowerPCCPU *cpu = opaque;
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
index c6399a3..5ee91e8 100644
--- a/target/ppc/translate_init.c
+++ b/target/ppc/translate_init.c
@@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
return NULL;
}
+static void ppc_cpu_parse_featurestr(const char *typename, char *features,
+ Error **errp)
+{
+ const PowerPCCPUClass *pcc;
+ char *compat_str = NULL;
+ char *s = features;
+ char **inpieces;
+ Error *local_err = NULL;
+ int i;
+
+ if (!features) {
+ return;
+ }
+
+ /*
+ * Backwards compatibility hack:
+ *
+ * CPUs had a "compat=" property which didn't make sense for
+ * anything except pseries. It was replaced by "max-cpu-compat"
+ * machine option. This supports old command lines like
+ * -cpu POWER8,compat=power7
+ * By stripping the compat option and applying it to the machine
+ * before passing it on to the cpu level parser.
+ */
+ inpieces = g_strsplit(features, ",", 0);
+ *s = '\0';
+ for (i = 0; inpieces[i]; i++) {
+ if (g_str_has_prefix(inpieces[i], "compat=")) {
+ compat_str = inpieces[i];
+ continue;
+ }
+ if ((i != 0) && (s != features)) {
+ s = g_stpcpy(s, ",");
+ }
+ s = g_stpcpy(s, inpieces[i]);
+ }
+
+ if (compat_str) {
+ Object *machine = qdev_get_machine();
+ if (machine) {
+ char *v = compat_str + strlen("compat=");
+ object_property_set_str(machine, v, "max-cpu-compat", &local_err);
+ } else {
+ error_setg(&local_err, "Not supported property: %s", compat_str);
+ }
+ }
+ g_strfreev(inpieces);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ return;
+ }
+
+ /* do property processing with generic handler */
+ pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
+ pcc->parent_parse_features(typename, features, errp);
+}
const char *ppc_cpu_lookup_alias(const char *alias)
{
@@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
cc->reset = ppc_cpu_reset;
cc->class_by_name = ppc_cpu_class_by_name;
+ pcc->parent_parse_features = cc->parse_features;
+ cc->parse_features = ppc_cpu_parse_featurestr;
cc->has_work = ppc_cpu_has_work;
cc->do_interrupt = ppc_cpu_do_interrupt;
cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (11 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr() Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-05 20:31 ` Greg Kurz
2017-10-06 3:58 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly Igor Mammedov
` (10 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
spapr core type definition doesn't have any fields that
require it to be defined at runtime. So replace code
that fills in TypeInfo at runtime with static TypeInfo
array that does the same at complie time.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/spapr_cpu_core.h | 2 +
hw/ppc/spapr_cpu_core.c | 85 +++++++++++++----------------------------
2 files changed, 29 insertions(+), 58 deletions(-)
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 93051e9..66dcf52 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -21,6 +21,8 @@
#define SPAPR_CPU_CORE_GET_CLASS(obj) \
OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE)
+#define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE
+
typedef struct sPAPRCPUCore {
/*< private >*/
CPUCore parent_obj;
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 427d47f..01f4ec8 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -217,36 +217,6 @@ err:
error_propagate(errp, local_err);
}
-static const char *spapr_core_models[] = {
- /* 970 */
- "970_v2.2",
-
- /* 970MP variants */
- "970mp_v1.0",
- "970mp_v1.1",
-
- /* POWER5+ */
- "power5+_v2.1",
-
- /* POWER7 */
- "power7_v2.3",
-
- /* POWER7+ */
- "power7+_v2.1",
-
- /* POWER8 */
- "power8_v2.0",
-
- /* POWER8E */
- "power8e_v2.1",
-
- /* POWER8NVL */
- "power8nvl_v1.0",
-
- /* POWER9 */
- "power9_v1.0",
-};
-
static Property spapr_cpu_core_properties[] = {
DEFINE_PROP_INT32("node-id", sPAPRCPUCore, node_id, CPU_UNSET_NUMA_NODE_ID),
DEFINE_PROP_END_OF_LIST()
@@ -264,33 +234,32 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
g_assert(scc->cpu_class);
}
-static const TypeInfo spapr_cpu_core_type_info = {
- .name = TYPE_SPAPR_CPU_CORE,
- .parent = TYPE_CPU_CORE,
- .abstract = true,
- .instance_size = sizeof(sPAPRCPUCore),
- .class_size = sizeof(sPAPRCPUCoreClass),
-};
-
-static void spapr_cpu_core_register_types(void)
-{
- int i;
-
- type_register_static(&spapr_cpu_core_type_info);
-
- for (i = 0; i < ARRAY_SIZE(spapr_core_models); i++) {
- TypeInfo type_info = {
- .parent = TYPE_SPAPR_CPU_CORE,
- .instance_size = sizeof(sPAPRCPUCore),
- .class_init = spapr_cpu_core_class_init,
- .class_data = (void *) spapr_core_models[i],
- };
-
- type_info.name = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE,
- spapr_core_models[i]);
- type_register(&type_info);
- g_free((void *)type_info.name);
+#define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
+ { \
+ .parent = TYPE_SPAPR_CPU_CORE, \
+ .class_data = (void *) cpu_model, \
+ .class_init = spapr_cpu_core_class_init, \
+ .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
}
-}
-type_init(spapr_cpu_core_register_types)
+static const TypeInfo spapr_cpu_core_type_infos[] = {
+ {
+ .name = TYPE_SPAPR_CPU_CORE,
+ .parent = TYPE_CPU_CORE,
+ .abstract = true,
+ .instance_size = sizeof(sPAPRCPUCore),
+ .class_size = sizeof(sPAPRCPUCoreClass),
+ },
+ DEFINE_SPAPR_CPU_CORE_TYPE("970_v2.2"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power5+_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power7_v2.3"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power7+_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8_v2.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
+};
+
+DEFINE_TYPES(spapr_cpu_core_type_infos)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (12 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-05 20:47 ` Greg Kurz
2017-10-06 4:01 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types Igor Mammedov
` (9 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
replace sPAPRCPUCoreClass::cpu_class with cpu type name
since it were needed just to get that at points it were
accessed.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/spapr_cpu_core.h | 2 +-
hw/ppc/spapr.c | 6 ++----
hw/ppc/spapr_cpu_core.c | 13 +++++--------
target/ppc/kvm.c | 2 +-
4 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 66dcf52..264ce68 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -34,7 +34,7 @@ typedef struct sPAPRCPUCore {
typedef struct sPAPRCPUCoreClass {
DeviceClass parent_class;
- ObjectClass *cpu_class;
+ const char *cpu_type;
} sPAPRCPUCoreClass;
char *spapr_get_cpu_core_type(const char *model);
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 01b3012..ad7afd6 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3142,8 +3142,7 @@ void spapr_core_release(DeviceState *dev)
if (smc->pre_2_10_has_unused_icps) {
sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
- const char *typename = object_class_get_name(scc->cpu_class);
- size_t size = object_type_get_instance_size(typename);
+ size_t size = object_type_get_instance_size(scc->cpu_type);
int i;
for (i = 0; i < cc->nr_threads; i++) {
@@ -3239,8 +3238,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
if (smc->pre_2_10_has_unused_icps) {
sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
- const char *typename = object_class_get_name(scc->cpu_class);
- size_t size = object_type_get_instance_size(typename);
+ size_t size = object_type_get_instance_size(scc->cpu_type);
int i;
for (i = 0; i < cc->nr_threads; i++) {
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 01f4ec8..8e13e52 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -90,8 +90,7 @@ static void spapr_cpu_core_unrealizefn(DeviceState *dev, Error **errp)
{
sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
- const char *typename = object_class_get_name(scc->cpu_class);
- size_t size = object_type_get_instance_size(typename);
+ size_t size = object_type_get_instance_size(scc->cpu_type);
CPUCore *cc = CPU_CORE(dev);
int i;
@@ -152,8 +151,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
CPUCore *cc = CPU_CORE(OBJECT(dev));
- const char *typename = object_class_get_name(scc->cpu_class);
- size_t size = object_type_get_instance_size(typename);
+ size_t size = object_type_get_instance_size(scc->cpu_type);
Error *local_err = NULL;
void *obj;
int i, j;
@@ -172,7 +170,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
obj = sc->threads + i * size;
- object_initialize(obj, size, typename);
+ object_initialize(obj, size, scc->cpu_type);
cs = CPU(obj);
cpu = POWERPC_CPU(cs);
cs->cpu_index = cc->core_id + i;
@@ -230,14 +228,13 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
dc->realize = spapr_cpu_core_realize;
dc->unrealize = spapr_cpu_core_unrealizefn;
dc->props = spapr_cpu_core_properties;
- scc->cpu_class = cpu_class_by_name(TYPE_POWERPC_CPU, data);
- g_assert(scc->cpu_class);
+ scc->cpu_type = data;
}
#define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
{ \
.parent = TYPE_SPAPR_CPU_CORE, \
- .class_data = (void *) cpu_model, \
+ .class_data = (void *) POWERPC_CPU_TYPE_NAME(cpu_model), \
.class_init = spapr_cpu_core_class_init, \
.name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
}
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 171d3d8..c2152ed 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2514,7 +2514,7 @@ static int kvm_ppc_register_host_cpu_type(void)
type_info.instance_size = sizeof(sPAPRCPUCore);
type_info.instance_init = NULL;
type_info.class_init = spapr_cpu_core_class_init;
- type_info.class_data = (void *) "host";
+ type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
type_register(&type_info);
g_free((void *)type_info.name);
#endif
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (13 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-05 21:55 ` Greg Kurz
2017-10-06 4:41 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases Igor Mammedov
` (8 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
consolidate 'host' core type registration by moving it from
KVM specific code into spapr_cpu_core.c, similar like it's
done in x86 target.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/spapr_cpu_core.h | 1 -
hw/ppc/spapr_cpu_core.c | 5 ++++-
target/ppc/kvm.c | 11 -----------
3 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 264ce68..42765de 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -38,5 +38,4 @@ typedef struct sPAPRCPUCoreClass {
} sPAPRCPUCoreClass;
char *spapr_get_cpu_core_type(const char *model);
-void spapr_cpu_core_class_init(ObjectClass *oc, void *data);
#endif
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 8e13e52..f2da4be 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -220,7 +220,7 @@ static Property spapr_cpu_core_properties[] = {
DEFINE_PROP_END_OF_LIST()
};
-void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
+static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
{
DeviceClass *dc = DEVICE_CLASS(oc);
sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_CLASS(oc);
@@ -257,6 +257,9 @@ static const TypeInfo spapr_cpu_core_type_infos[] = {
DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
+#ifdef CONFIG_KVM
+ DEFINE_SPAPR_CPU_CORE_TYPE("host"),
+#endif
};
DEFINE_TYPES(spapr_cpu_core_type_infos)
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index c2152ed..cb5777a 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2508,17 +2508,6 @@ static int kvm_ppc_register_host_cpu_type(void)
oc = object_class_by_name(type_info.name);
g_assert(oc);
-#if defined(TARGET_PPC64)
- type_info.name = g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host");
- type_info.parent = TYPE_SPAPR_CPU_CORE,
- type_info.instance_size = sizeof(sPAPRCPUCore);
- type_info.instance_init = NULL;
- type_info.class_init = spapr_cpu_core_class_init;
- type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
- type_register(&type_info);
- g_free((void *)type_info.name);
-#endif
-
/*
* Update generic CPU family class alias (e.g. on a POWER8NVL host,
* we want "POWER8" to be a "family" alias that points to the current
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (14 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 4:43 ` David Gibson
2017-10-06 7:39 ` Greg Kurz
2017-10-05 16:24 ` [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing Igor Mammedov
` (7 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/spapr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index ad7afd6..0661dba 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3603,7 +3603,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
hc->unplug_request = spapr_machine_device_unplug_request;
smc->dr_lmb_enabled = true;
- smc->tcg_default_cpu = "POWER8";
+ smc->tcg_default_cpu = "power8_v2.0";
mc->has_hotpluggable_cpus = true;
smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
fwc->get_dev_path = spapr_get_fw_dev_path;
@@ -3849,7 +3849,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
spapr_machine_2_8_class_options(mc);
- smc->tcg_default_cpu = "POWER7";
+ smc->tcg_default_cpu = "power7_v2.3";
SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
smc->phb_placement = phb_placement_2_7;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (15 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 5:04 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 18/23] ppc: pnv: " Igor Mammedov
` (6 subsequent siblings)
23 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
use generic cpu_model parsing introduced by
(6063d4c0f vl.c: convert cpu_model to cpu type and set of global properties before machine_init())
it allows to:
* replace sPAPRMachineClass::tcg_default_cpu with
MachineClass::default_cpu_type
* drop cpu_parse_cpu_model() from hw/ppc/spapr.c and reuse
one in vl.c
* simplify spapr_get_cpu_core_type() by removing
not needed anymore recurrsion since alias look up
happens earlier at vl.c and spapr_get_cpu_core_type()
works only with resulted from that cpu type.
* spapr no more needs to parse/depend on being phased out
MachineState::cpu_model, all tha parsing done by generic
code and target specific callback.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
PS:
patch is a little bit big but it's hard to split it due
to dependencies, so pls bear with it.
---
include/hw/ppc/spapr.h | 1 -
include/hw/ppc/spapr_cpu_core.h | 2 +-
target/ppc/cpu.h | 1 -
hw/ppc/spapr.c | 16 ++++------------
hw/ppc/spapr_cpu_core.c | 30 ++++++++++--------------------
target/ppc/kvm.c | 9 ++++++---
target/ppc/translate_init.c | 26 +++++++++++++-------------
7 files changed, 34 insertions(+), 51 deletions(-)
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index 8ca4f94..9d21ca9 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -60,7 +60,6 @@ struct sPAPRMachineClass {
/*< public >*/
bool dr_lmb_enabled; /* enable dynamic-reconfig/hotplug of LMBs */
bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */
- const char *tcg_default_cpu; /* which (TCG) CPU to simulate by default */
bool pre_2_10_has_unused_icps;
void (*phb_placement)(sPAPRMachineState *spapr, uint32_t index,
uint64_t *buid, hwaddr *pio,
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 42765de..f2d48d6 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -37,5 +37,5 @@ typedef struct sPAPRCPUCoreClass {
const char *cpu_type;
} sPAPRCPUCoreClass;
-char *spapr_get_cpu_core_type(const char *model);
+const char *spapr_get_cpu_core_type(const char *cpu_type);
#endif
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index 64aef17..989761b 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -1278,7 +1278,6 @@ extern const struct VMStateDescription vmstate_ppc_cpu;
/*****************************************************************************/
void ppc_translate_init(void);
-const char *ppc_cpu_lookup_alias(const char *alias);
/* you can call this signal handler from your SIGBUS and SIGSEGV
signal handlers to inform the virtual CPU of exceptions. non zero
is returned if the signal was handled by the virtual CPU. */
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 0661dba..29de845 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2123,7 +2123,7 @@ static void spapr_init_cpus(sPAPRMachineState *spapr)
{
MachineState *machine = MACHINE(spapr);
MachineClass *mc = MACHINE_GET_CLASS(machine);
- char *type = spapr_get_cpu_core_type(machine->cpu_model);
+ const char *type = spapr_get_cpu_core_type(machine->cpu_type);
int smt = kvmppc_smt_threads();
const CPUArchIdList *possible_cpus;
int boot_cores_nr = smp_cpus / smp_threads;
@@ -2178,7 +2178,6 @@ static void spapr_init_cpus(sPAPRMachineState *spapr)
object_property_set_bool(core, true, "realized", &error_fatal);
}
}
- g_free(type);
}
static void spapr_set_vsmt_mode(sPAPRMachineState *spapr, Error **errp)
@@ -2362,12 +2361,6 @@ static void ppc_spapr_init(MachineState *machine)
}
/* init CPUs */
- if (machine->cpu_model == NULL) {
- machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
- }
-
- cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
-
spapr_set_vsmt_mode(spapr, &error_fatal);
spapr_init_cpus(spapr);
@@ -3258,7 +3251,7 @@ static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
MachineClass *mc = MACHINE_GET_CLASS(hotplug_dev);
Error *local_err = NULL;
CPUCore *cc = CPU_CORE(dev);
- char *base_core_type = spapr_get_cpu_core_type(machine->cpu_model);
+ const char *base_core_type = spapr_get_cpu_core_type(machine->cpu_type);
const char *type = object_get_typename(OBJECT(dev));
CPUArchId *core_slot;
int index;
@@ -3304,7 +3297,6 @@ static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
numa_cpu_pre_plug(core_slot, dev, &local_err);
out:
- g_free(base_core_type);
error_propagate(errp, local_err);
}
@@ -3603,7 +3595,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
hc->unplug_request = spapr_machine_device_unplug_request;
smc->dr_lmb_enabled = true;
- smc->tcg_default_cpu = "power8_v2.0";
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
mc->has_hotpluggable_cpus = true;
smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
fwc->get_dev_path = spapr_get_fw_dev_path;
@@ -3849,7 +3841,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
spapr_machine_2_8_class_options(mc);
- smc->tcg_default_cpu = "power7_v2.3";
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3");
SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
smc->phb_placement = phb_placement_2_7;
}
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index f2da4be..2c47850 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -61,29 +61,19 @@ static void spapr_cpu_init(sPAPRMachineState *spapr, PowerPCCPU *cpu,
* Return the sPAPR CPU core type for @model which essentially is the CPU
* model specified with -cpu cmdline option.
*/
-char *spapr_get_cpu_core_type(const char *model)
+const char *spapr_get_cpu_core_type(const char *cpu_type)
{
- char *core_type;
- gchar **model_pieces = g_strsplit(model, ",", 2);
- gchar *cpu_model = g_ascii_strdown(model_pieces[0], -1);
- g_strfreev(model_pieces);
-
- core_type = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE, cpu_model);
-
- /* Check whether it exists or whether we have to look up an alias name */
- if (!object_class_by_name(core_type)) {
- const char *realmodel;
-
- g_free(core_type);
- core_type = NULL;
- realmodel = ppc_cpu_lookup_alias(cpu_model);
- if (realmodel) {
- core_type = spapr_get_cpu_core_type(realmodel);
- }
+ int len = strlen(cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
+ char *core_type = g_strdup_printf(SPAPR_CPU_CORE_TYPE_NAME("%.*s"),
+ len, cpu_type);
+ ObjectClass *oc = object_class_by_name(core_type);
+
+ g_free(core_type);
+ if (!oc) {
+ return NULL;
}
- g_free(cpu_model);
- return core_type;
+ return object_class_get_name(oc);
}
static void spapr_cpu_core_unrealizefn(DeviceState *dev, Error **errp)
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index cb5777a..abc222e 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -123,7 +123,7 @@ static bool kvmppc_is_pr(KVMState *ks)
return kvm_vm_check_extension(ks, KVM_CAP_PPC_GET_PVINFO) != 0;
}
-static int kvm_ppc_register_host_cpu_type(void);
+static int kvm_ppc_register_host_cpu_type(MachineState *ms);
int kvm_arch_init(MachineState *ms, KVMState *s)
{
@@ -163,7 +163,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
"VM to stall at times!\n");
}
- kvm_ppc_register_host_cpu_type();
+ kvm_ppc_register_host_cpu_type(ms);
return 0;
}
@@ -2487,12 +2487,13 @@ PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void)
return pvr_pcc;
}
-static int kvm_ppc_register_host_cpu_type(void)
+static int kvm_ppc_register_host_cpu_type(MachineState *ms)
{
TypeInfo type_info = {
.name = TYPE_HOST_POWERPC_CPU,
.class_init = kvmppc_host_cpu_class_init,
};
+ MachineClass *mc = MACHINE_GET_CLASS(ms);
PowerPCCPUClass *pvr_pcc;
ObjectClass *oc;
DeviceClass *dc;
@@ -2504,6 +2505,8 @@ static int kvm_ppc_register_host_cpu_type(void)
}
type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
type_register(&type_info);
+ /* override TCG default cpu type with 'host' cpu model */
+ mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
oc = object_class_by_name(type_info.name);
g_assert(oc);
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
index 5ee91e8..a968e86 100644
--- a/target/ppc/translate_init.c
+++ b/target/ppc/translate_init.c
@@ -10277,6 +10277,19 @@ PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr)
return pcc;
}
+static const char *ppc_cpu_lookup_alias(const char *alias)
+{
+ int ai;
+
+ for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
+ if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
+ return ppc_cpu_aliases[ai].model;
+ }
+ }
+
+ return NULL;
+}
+
static ObjectClass *ppc_cpu_class_by_name(const char *name)
{
char *cpu_model, *typename;
@@ -10370,19 +10383,6 @@ static void ppc_cpu_parse_featurestr(const char *typename, char *features,
pcc->parent_parse_features(typename, features, errp);
}
-const char *ppc_cpu_lookup_alias(const char *alias)
-{
- int ai;
-
- for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
- if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
- return ppc_cpu_aliases[ai].model;
- }
- }
-
- return NULL;
-}
-
PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
{
ObjectClass *oc = OBJECT_CLASS(pcc);
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (16 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:21 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:34 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names Igor Mammedov
` (5 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
use common cpu_model prasing in vl.c and set default cpu_model
using generic MachineClass::default_cpu_type.
Beside of switching to generic infrastructure it solves several
issues.
* ppc_cpu_class_by_name() is used to deal with lower/upper case
and alias translations into actual cpu type, which fixes
'-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
usecases which error out with:
'invalid CPU model 'FOO' for powernv machine'
* allows to switch to lower-case typenames in pnv chip/core name
(by convention typnames should be lower-case)
* replace aliased names /power8, power9, .../ with exact cpu model
names (i.e. typenames should be stable but aliases might decide to
point to other cpu model withi family or changed by kvm). It will
also help to simplify pnv_chip/core code and get rid of dependency
on cpu_model parsing.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/pnv.h | 8 ++++----
hw/ppc/pnv.c | 22 ++++++++++------------
hw/ppc/pnv_core.c | 2 +-
3 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index 9c5437d..2525f7f 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -80,19 +80,19 @@ typedef struct PnvChipClass {
uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
} PnvChipClass;
-#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
+#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
#define PNV_CHIP_POWER8E(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
-#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
+#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
#define PNV_CHIP_POWER8(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
-#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
+#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
#define PNV_CHIP_POWER8NVL(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
-#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
+#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
#define PNV_CHIP_POWER9(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index d46d91c..4169837 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -607,16 +607,13 @@ static void ppc_powernv_init(MachineState *machine)
}
}
- /* We need some cpu model to instantiate the PnvChip class */
- if (machine->cpu_model == NULL) {
- machine->cpu_model = "POWER8";
- }
-
/* Create the processor chips */
- chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%s", machine->cpu_model);
+ i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
+ chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
+ i, machine->cpu_type);
if (!object_class_by_name(chip_typename)) {
- error_report("invalid CPU model '%s' for %s machine",
- machine->cpu_model, MACHINE_GET_CLASS(machine)->name);
+ error_report("invalid CPU model '%.*s' for %s machine",
+ i, machine->cpu_type, MACHINE_GET_CLASS(machine)->name);
exit(1);
}
@@ -716,7 +713,7 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "POWER8E";
+ k->cpu_model = "power8e_v2.1";
k->chip_type = PNV_CHIP_POWER8E;
k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
k->cores_mask = POWER8E_CORE_MASK;
@@ -738,7 +735,7 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "POWER8";
+ k->cpu_model = "power8_v2.0";
k->chip_type = PNV_CHIP_POWER8;
k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
k->cores_mask = POWER8_CORE_MASK;
@@ -760,7 +757,7 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "POWER8NVL";
+ k->cpu_model = "power8nvl_v1.0";
k->chip_type = PNV_CHIP_POWER8NVL;
k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
k->cores_mask = POWER8_CORE_MASK;
@@ -782,7 +779,7 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "POWER9";
+ k->cpu_model = "power9_v1.0";
k->chip_type = PNV_CHIP_POWER9;
k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
k->cores_mask = POWER9_CORE_MASK;
@@ -1133,6 +1130,7 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
mc->init = ppc_powernv_init;
mc->reset = ppc_powernv_reset;
mc->max_cpus = MAX_CPUS;
+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
* storage */
mc->no_parallel = 1;
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index 6726483..44b0b24 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -227,7 +227,7 @@ static const TypeInfo pnv_core_info = {
};
static const char *pnv_core_models[] = {
- "POWER8E", "POWER8", "POWER8NVL", "POWER9"
+ "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
};
static void pnv_core_register_types(void)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (17 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 18/23] ppc: pnv: " Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:22 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:37 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field Igor Mammedov
` (4 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
typically for cpus/core type names following convention is used
new_type_prefix-superclass_typename
make PNV core/chip to follow common convention.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/pnv.h | 11 +++++++----
include/hw/ppc/pnv_core.h | 2 ++
hw/ppc/pnv.c | 2 +-
hw/ppc/pnv_core.c | 2 +-
4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index 2525f7f..d82eee1 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -80,19 +80,22 @@ typedef struct PnvChipClass {
uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
} PnvChipClass;
-#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
+#define PNV_CHIP_TYPE_SUFFIX "-" TYPE_PNV_CHIP
+#define PNV_CHIP_TYPE_NAME(cpu_model) cpu_model PNV_CHIP_TYPE_SUFFIX
+
+#define TYPE_PNV_CHIP_POWER8E PNV_CHIP_TYPE_NAME("power8e_v2.1")
#define PNV_CHIP_POWER8E(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
-#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
+#define TYPE_PNV_CHIP_POWER8 PNV_CHIP_TYPE_NAME("power8_v2.0")
#define PNV_CHIP_POWER8(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
-#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
+#define TYPE_PNV_CHIP_POWER8NVL PNV_CHIP_TYPE_NAME("power8nvl_v1.0")
#define PNV_CHIP_POWER8NVL(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
-#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
+#define TYPE_PNV_CHIP_POWER9 PNV_CHIP_TYPE_NAME("power9_v1.0")
#define PNV_CHIP_POWER9(obj) \
OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
index 2955a41..3360c4b 100644
--- a/include/hw/ppc/pnv_core.h
+++ b/include/hw/ppc/pnv_core.h
@@ -45,6 +45,8 @@ typedef struct PnvCoreClass {
ObjectClass *cpu_oc;
} PnvCoreClass;
+#define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
+#define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
extern char *pnv_core_typename(const char *model);
#endif /* _PPC_PNV_CORE_H */
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 4169837..9c5eb7c 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -609,7 +609,7 @@ static void ppc_powernv_init(MachineState *machine)
/* Create the processor chips */
i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
- chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
+ chip_typename = g_strdup_printf(PNV_CHIP_TYPE_NAME("%.*s"),
i, machine->cpu_type);
if (!object_class_by_name(chip_typename)) {
error_report("invalid CPU model '%.*s' for %s machine",
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index 44b0b24..b3e3f23 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -252,5 +252,5 @@ type_init(pnv_core_register_types)
char *pnv_core_typename(const char *model)
{
- return g_strdup_printf(TYPE_PNV_CORE "-%s", model);
+ return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (18 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:41 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically Igor Mammedov
` (3 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
deduce cpu type directly from core type instead of
maintaining type mapping in PnvCoreClass::cpu_oc and doing
extra cpu_model parsing in pnv_core_class_init()
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/pnv_core.h | 1 -
hw/ppc/pnv_core.c | 18 ++++++++++++------
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
index 3360c4b..a336a1f 100644
--- a/include/hw/ppc/pnv_core.h
+++ b/include/hw/ppc/pnv_core.h
@@ -42,7 +42,6 @@ typedef struct PnvCore {
typedef struct PnvCoreClass {
DeviceClass parent_class;
- ObjectClass *cpu_oc;
} PnvCoreClass;
#define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index b3e3f23..acdfa17 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -27,6 +27,16 @@
#include "hw/ppc/pnv_xscom.h"
#include "hw/ppc/xics.h"
+static const char *pvn_core_cpu_typename(PnvCore *pc)
+{
+ const char *core_type = object_class_get_name(object_get_class(OBJECT(pc)));
+ int len = strlen(core_type) - strlen(PNV_CORE_TYPE_SUFFIX);
+ char *s = g_strdup_printf(POWERPC_CPU_TYPE_NAME("%.*s"), len, core_type);
+ const char *cpu_type = object_class_get_name(object_class_by_name(s));
+ g_free(s);
+ return cpu_type;
+}
+
static void powernv_cpu_reset(void *opaque)
{
PowerPCCPU *cpu = opaque;
@@ -148,8 +158,7 @@ static void pnv_core_realize(DeviceState *dev, Error **errp)
{
PnvCore *pc = PNV_CORE(OBJECT(dev));
CPUCore *cc = CPU_CORE(OBJECT(dev));
- PnvCoreClass *pcc = PNV_CORE_GET_CLASS(OBJECT(dev));
- const char *typename = object_class_get_name(pcc->cpu_oc);
+ const char *typename = pvn_core_cpu_typename(pc);
size_t size = object_type_get_instance_size(typename);
Error *local_err = NULL;
void *obj;
@@ -211,11 +220,9 @@ static Property pnv_core_properties[] = {
static void pnv_core_class_init(ObjectClass *oc, void *data)
{
DeviceClass *dc = DEVICE_CLASS(oc);
- PnvCoreClass *pcc = PNV_CORE_CLASS(oc);
dc->realize = pnv_core_realize;
dc->props = pnv_core_properties;
- pcc->cpu_oc = cpu_class_by_name(TYPE_POWERPC_CPU, data);
}
static const TypeInfo pnv_core_info = {
@@ -223,6 +230,7 @@ static const TypeInfo pnv_core_info = {
.parent = TYPE_CPU_CORE,
.instance_size = sizeof(PnvCore),
.class_size = sizeof(PnvCoreClass),
+ .class_init = pnv_core_class_init,
.abstract = true,
};
@@ -239,8 +247,6 @@ static void pnv_core_register_types(void)
TypeInfo ti = {
.parent = TYPE_PNV_CORE,
.instance_size = sizeof(PnvCore),
- .class_init = pnv_core_class_init,
- .class_data = (void *) pnv_core_models[i],
};
ti.name = pnv_core_typename(pnv_core_models[i]);
type_register(&ti);
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (19 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:24 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:42 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field Igor Mammedov
` (2 subsequent siblings)
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
pnv core type definition doesn't have any fields that
require it to be defined at runtime. So replace code
that fills in TypeInfo at runtime with static TypeInfo
array that does the same at complie time.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/pnv_core.c | 48 ++++++++++++++++++++----------------------------
1 file changed, 20 insertions(+), 28 deletions(-)
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index acdfa17..000c87e 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -225,38 +225,30 @@ static void pnv_core_class_init(ObjectClass *oc, void *data)
dc->props = pnv_core_properties;
}
-static const TypeInfo pnv_core_info = {
- .name = TYPE_PNV_CORE,
- .parent = TYPE_CPU_CORE,
- .instance_size = sizeof(PnvCore),
- .class_size = sizeof(PnvCoreClass),
- .class_init = pnv_core_class_init,
- .abstract = true,
-};
-
-static const char *pnv_core_models[] = {
- "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
-};
-
-static void pnv_core_register_types(void)
-{
- int i ;
-
- type_register_static(&pnv_core_info);
- for (i = 0; i < ARRAY_SIZE(pnv_core_models); ++i) {
- TypeInfo ti = {
- .parent = TYPE_PNV_CORE,
- .instance_size = sizeof(PnvCore),
- };
- ti.name = pnv_core_typename(pnv_core_models[i]);
- type_register(&ti);
- g_free((void *)ti.name);
+#define DEFINE_PNV_CORE_TYPE(cpu_model) \
+ { \
+ .parent = TYPE_PNV_CORE, \
+ .name = PNV_CORE_TYPE_NAME(cpu_model), \
}
-}
-type_init(pnv_core_register_types)
+static const TypeInfo pnv_core_infos[] = {
+ {
+ .name = TYPE_PNV_CORE,
+ .parent = TYPE_CPU_CORE,
+ .instance_size = sizeof(PnvCore),
+ .class_size = sizeof(PnvCoreClass),
+ .class_init = pnv_core_class_init,
+ .abstract = true,
+ },
+ DEFINE_PNV_CORE_TYPE("power8e_v2.1"),
+ DEFINE_PNV_CORE_TYPE("power8_v2.0"),
+ DEFINE_PNV_CORE_TYPE("power8nvl_v1.0"),
+ DEFINE_PNV_CORE_TYPE("power9_v1.0"),
+};
char *pnv_core_typename(const char *model)
{
return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
}
+
+DEFINE_TYPES(pnv_core_infos)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (20 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:46 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them Igor Mammedov
2017-10-05 17:31 ` [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) no-reply
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
deduce core type directly from chip type instead of
maintaining type mapping in PnvChipClass::cpu_model.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
include/hw/ppc/pnv.h | 1 -
include/hw/ppc/pnv_core.h | 1 -
hw/ppc/pnv.c | 25 +++++++++++++------------
hw/ppc/pnv_core.c | 5 -----
4 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index d82eee1..20244da 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -69,7 +69,6 @@ typedef struct PnvChipClass {
SysBusDeviceClass parent_class;
/*< public >*/
- const char *cpu_model;
PnvChipType chip_type;
uint64_t chip_cfam_id;
uint64_t cores_mask;
diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
index a336a1f..e337af7 100644
--- a/include/hw/ppc/pnv_core.h
+++ b/include/hw/ppc/pnv_core.h
@@ -46,6 +46,5 @@ typedef struct PnvCoreClass {
#define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
#define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
-extern char *pnv_core_typename(const char *model);
#endif /* _PPC_PNV_CORE_H */
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 9c5eb7c..ab7083b 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -55,6 +55,16 @@
#define KERNEL_LOAD_ADDR 0x20000000
#define INITRD_LOAD_ADDR 0x40000000
+static const char *pvn_chip_core_typename(const PnvChip *o)
+{
+ const char *chip_type = object_class_get_name(object_get_class(OBJECT(o)));
+ int len = strlen(chip_type) - strlen(PNV_CHIP_TYPE_SUFFIX);
+ char *s = g_strdup_printf(PNV_CORE_TYPE_NAME("%.*s"), len, chip_type);
+ const char *core_type = object_class_get_name(object_class_by_name(s));
+ g_free(s);
+ return core_type;
+}
+
/*
* On Power Systems E880 (POWER8), the max cpus (threads) should be :
* 4 * 4 sockets * 12 cores * 8 threads = 1536
@@ -270,8 +280,7 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *fdt)
static void powernv_populate_chip(PnvChip *chip, void *fdt)
{
- PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
- char *typename = pnv_core_typename(pcc->cpu_model);
+ const char *typename = pvn_chip_core_typename(chip);
size_t typesize = object_type_get_instance_size(typename);
int i;
@@ -301,7 +310,6 @@ static void powernv_populate_chip(PnvChip *chip, void *fdt)
powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start,
chip->ram_size);
}
- g_free(typename);
}
static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
@@ -713,7 +721,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "power8e_v2.1";
k->chip_type = PNV_CHIP_POWER8E;
k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
k->cores_mask = POWER8E_CORE_MASK;
@@ -735,7 +742,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "power8_v2.0";
k->chip_type = PNV_CHIP_POWER8;
k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
k->cores_mask = POWER8_CORE_MASK;
@@ -757,7 +763,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "power8nvl_v1.0";
k->chip_type = PNV_CHIP_POWER8NVL;
k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
k->cores_mask = POWER8_CORE_MASK;
@@ -779,7 +784,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PnvChipClass *k = PNV_CHIP_CLASS(klass);
- k->cpu_model = "power9_v1.0";
k->chip_type = PNV_CHIP_POWER9;
k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
k->cores_mask = POWER9_CORE_MASK;
@@ -854,7 +858,7 @@ static void pnv_chip_init(Object *obj)
static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
{
PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
- char *typename = pnv_core_typename(pcc->cpu_model);
+ const char *typename = pvn_chip_core_typename(chip);
size_t typesize = object_type_get_instance_size(typename);
int i, j;
char *name;
@@ -879,8 +883,6 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
memory_region_add_subregion(&chip->icp_mmio, pir << 12, &icp->mmio);
}
}
-
- g_free(typename);
}
static void pnv_chip_realize(DeviceState *dev, Error **errp)
@@ -888,7 +890,7 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
PnvChip *chip = PNV_CHIP(dev);
Error *error = NULL;
PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
- char *typename = pnv_core_typename(pcc->cpu_model);
+ const char *typename = pvn_chip_core_typename(chip);
size_t typesize = object_type_get_instance_size(typename);
int i, core_hwid;
@@ -947,7 +949,6 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
&PNV_CORE(pnv_core)->xscom_regs);
i++;
}
- g_free(typename);
/* Create LPC controller */
object_property_set_bool(OBJECT(&chip->lpc), true, "realized",
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index 000c87e..621b69e 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -246,9 +246,4 @@ static const TypeInfo pnv_core_infos[] = {
DEFINE_PNV_CORE_TYPE("power9_v1.0"),
};
-char *pnv_core_typename(const char *model)
-{
- return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
-}
-
DEFINE_TYPES(pnv_core_infos)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (21 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field Igor Mammedov
@ 2017-10-05 16:24 ` Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:47 ` [Qemu-devel] " David Gibson
2017-10-05 17:31 ` [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) no-reply
23 siblings, 2 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-05 16:24 UTC (permalink / raw)
To: qemu-devel
Cc: Alexander Graf, David Gibson, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
Use a new DEFINE_TYPES() helper to simplify type registration
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/ppc/pnv.c | 92 ++++++++++++++++++++++--------------------------------------
1 file changed, 34 insertions(+), 58 deletions(-)
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index ab7083b..e23dc3c 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -730,13 +730,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
dc->desc = "PowerNV Chip POWER8E";
}
-static const TypeInfo pnv_chip_power8e_info = {
- .name = TYPE_PNV_CHIP_POWER8E,
- .parent = TYPE_PNV_CHIP,
- .instance_size = sizeof(PnvChip),
- .class_init = pnv_chip_power8e_class_init,
-};
-
static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -751,13 +744,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
dc->desc = "PowerNV Chip POWER8";
}
-static const TypeInfo pnv_chip_power8_info = {
- .name = TYPE_PNV_CHIP_POWER8,
- .parent = TYPE_PNV_CHIP,
- .instance_size = sizeof(PnvChip),
- .class_init = pnv_chip_power8_class_init,
-};
-
static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -772,13 +758,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
dc->desc = "PowerNV Chip POWER8NVL";
}
-static const TypeInfo pnv_chip_power8nvl_info = {
- .name = TYPE_PNV_CHIP_POWER8NVL,
- .parent = TYPE_PNV_CHIP,
- .instance_size = sizeof(PnvChip),
- .class_init = pnv_chip_power8nvl_class_init,
-};
-
static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
@@ -793,13 +772,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
dc->desc = "PowerNV Chip POWER9";
}
-static const TypeInfo pnv_chip_power9_info = {
- .name = TYPE_PNV_CHIP_POWER9,
- .parent = TYPE_PNV_CHIP,
- .instance_size = sizeof(PnvChip),
- .class_init = pnv_chip_power9_class_init,
-};
-
static void pnv_chip_core_sanitize(PnvChip *chip, Error **errp)
{
PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
@@ -1001,15 +973,6 @@ static void pnv_chip_class_init(ObjectClass *klass, void *data)
dc->desc = "PowerNV Chip";
}
-static const TypeInfo pnv_chip_info = {
- .name = TYPE_PNV_CHIP,
- .parent = TYPE_SYS_BUS_DEVICE,
- .class_init = pnv_chip_class_init,
- .instance_init = pnv_chip_init,
- .class_size = sizeof(PnvChipClass),
- .abstract = true,
-};
-
static ICSState *pnv_ics_get(XICSFabric *xi, int irq)
{
PnvMachineState *pnv = POWERNV_MACHINE(xi);
@@ -1145,27 +1108,40 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
powernv_machine_class_props_init(oc);
}
-static const TypeInfo powernv_machine_info = {
- .name = TYPE_POWERNV_MACHINE,
- .parent = TYPE_MACHINE,
- .instance_size = sizeof(PnvMachineState),
- .instance_init = powernv_machine_initfn,
- .class_init = powernv_machine_class_init,
- .interfaces = (InterfaceInfo[]) {
- { TYPE_XICS_FABRIC },
- { TYPE_INTERRUPT_STATS_PROVIDER },
- { },
+#define DEFINE_PNV_CHIP_TYPE(type, class_initfn) \
+ { \
+ .name = type, \
+ .class_init = class_initfn, \
+ .parent = TYPE_PNV_CHIP, \
+ }
+
+static const TypeInfo types[] = {
+ {
+ .name = TYPE_POWERNV_MACHINE,
+ .parent = TYPE_MACHINE,
+ .instance_size = sizeof(PnvMachineState),
+ .instance_init = powernv_machine_initfn,
+ .class_init = powernv_machine_class_init,
+ .interfaces = (InterfaceInfo[]) {
+ { TYPE_XICS_FABRIC },
+ { TYPE_INTERRUPT_STATS_PROVIDER },
+ { },
+ },
},
+ {
+ .name = TYPE_PNV_CHIP,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .class_init = pnv_chip_class_init,
+ .instance_init = pnv_chip_init,
+ .instance_size = sizeof(PnvChip),
+ .class_size = sizeof(PnvChipClass),
+ .abstract = true,
+ },
+ DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER9, pnv_chip_power9_class_init),
+ DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8, pnv_chip_power8_class_init),
+ DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8E, pnv_chip_power8e_class_init),
+ DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8NVL,
+ pnv_chip_power8nvl_class_init),
};
-static void powernv_machine_register_types(void)
-{
- type_register_static(&powernv_machine_info);
- type_register_static(&pnv_chip_info);
- type_register_static(&pnv_chip_power8e_info);
- type_register_static(&pnv_chip_power8_info);
- type_register_static(&pnv_chip_power8nvl_info);
- type_register_static(&pnv_chip_power9_info);
-}
-
-type_init(powernv_machine_register_types)
+DEFINE_TYPES(types)
--
2.7.4
^ permalink raw reply related [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC)
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
` (22 preceding siblings ...)
2017-10-05 16:24 ` [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them Igor Mammedov
@ 2017-10-05 17:31 ` no-reply
23 siblings, 0 replies; 81+ messages in thread
From: no-reply @ 2017-10-05 17:31 UTC (permalink / raw)
To: imammedo
Cc: famz, qemu-devel, qemu-ppc, edgar.iglesias, hpoussin, agraf, david
Hi,
This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 1507220690-265042-1-git-send-email-imammedo@redhat.com
Subject: [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC)
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-build@min-glib
time make docker-test-mingw@fedora
time make docker-test-block@fedora
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
t [tag update] patchew/1506092407-26985-1-git-send-email-peter.maydell@linaro.org -> patchew/1506092407-26985-1-git-send-email-peter.maydell@linaro.org
* [new tag] patchew/1507220690-265042-1-git-send-email-imammedo@redhat.com -> patchew/1507220690-265042-1-git-send-email-imammedo@redhat.com
* [new tag] patchew/1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com -> patchew/1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com
* [new tag] patchew/20171005153330.19210-1-kraxel@redhat.com -> patchew/20171005153330.19210-1-kraxel@redhat.com
* [new tag] patchew/20171005164959.26024-1-clg@kaod.org -> patchew/20171005164959.26024-1-clg@kaod.org
Switched to a new branch 'test'
c738b0a99f ppc: pnv: consolidate type definitions and batch register them
3508467d23 ppc: pnv: drop PnvChipClass::cpu_model field
e4156dec10 ppc: pnv: define core types statically
01393c62a4 ppc: pnv: drop PnvCoreClass::cpu_oc field
abe4db7be5 ppc: pnv: normalize core/chip type names
60b6805198 ppc: pnv: use generic cpu_model parsing
e57974de12 ppc: spapr: use generic cpu_model parsing
20a38cd3e4 ppc: spapr: use cpu model names as tcg defaults instead of aliases
04c8e3d45d ppc: spapr: register 'host' core type along with the rest of core types
a7eb910611 ppc: spapr: use cpu type name directly
fb0e27dbc2 ppc: spapr: define core types statically
513734721a ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
247c79a692 ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model()
bc11349490 ppc: 40p/prep: replace cpu_model with cpu_type
f66e811ad2 ppc: virtex-ml507: replace cpu_model with cpu_type
e54423b6fe ppc: replace cpu_model with cpu_type on ref405ep, taihu boards
7c66f733d8 ppc: bamboo: use generic cpu_model parsing
871f8e2041 ppc: mac_oldworld: use generic cpu_model parsing
620461945f ppc: mac_newworld: use generic cpu_model parsing
58c259bd02 ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2de310ce0c qom: add helper macro DEFINE_TYPES()
d117973baa qom: introduce type_register_static_array()
af0ce9fe40 qom: update doc comment for type_register[_static]()
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-0rxyclfp/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
GEN docker-src.2017-10-05-13.09.51.29271/qemu.tar
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
bzip2-devel-1.0.5-7.el6_0.x86_64
ccache-3.1.6-2.el6.x86_64
csnappy-devel-0-6.20150729gitd7bc683.el6.x86_64
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gettext-0.17-18.el6.x86_64
git-1.7.1-9.el6_9.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libepoxy-devel-1.2-3.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
librdmacm-devel-1.0.21-0.el6.x86_64
lzo-devel-2.03-3.1.el6_5.1.x86_64
make-3.81-23.el6.x86_64
mesa-libEGL-devel-11.0.7-4.el6.x86_64
mesa-libgbm-devel-11.0.7-4.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
spice-glib-devel-0.26-8.el6.x86_64
spice-server-devel-0.12.4-16.el6.x86_64
tar-1.23-15.el6_8.x86_64
vte-devel-0.25.1-9.el6.x86_64
xen-devel-4.6.6-2.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=bison bzip2-devel ccache csnappy-devel flex g++ gcc gettext git glib2-devel libepoxy-devel libfdt-devel librdmacm-devel lzo-devel make mesa-libEGL-devel mesa-libgbm-devel pixman-devel SDL-devel spice-glib-devel spice-server-devel tar vte-devel xen-devel zlib-devel
HOSTNAME=2049cb83f532
TERM=xterm
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
FEATURES= dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install/share/qemu
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DNCURSES_WIDECHAR -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/spice-server -I/usr/include/cacard -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/spice-1
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
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
SDL support yes (1.2.14)
GTK support yes (2.24.23)
GTK GL support no
VTE support yes (0.25.1)
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support yes
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support yes
xen ctrl version 40600
pv dom build no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
RDMA support yes
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support yes (0.12.6/0.12.4)
rbd support no
xfsctl support no
smartcard support yes
libusb no
usb net redir no
OpenGL support yes
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support yes
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN aarch64-softmmu/config-devices.mak.tmp
mkdir -p dtc/tests
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-marshal.c
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN trace-root.c
GEN scsi/trace.h
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-lexer.lex.c
DEP dtc-parser.tab.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-types.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
CC qmp-introspect.o
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qapi-types.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi-visit.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/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/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/cacheinfo.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/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/target-get-monitor-def.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-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/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-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-essiv.o
CC crypto/ivgen.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-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/dns-resolver.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 scsi/qemu-pr-helper.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/spiceaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC chardev/spice.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/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/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/xen_disk.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/xen_console.o
CC hw/char/cadence_uart.o
CC hw/char/cmsdk-apb-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/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/xenfb.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/display/qxl.o
CC hw/display/qxl-logger.o
CC hw/display/qxl-render.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_eeprom.o
CC hw/i2c/smbus.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/qdev.o
CC hw/ide/atapi.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/a9scu.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/arm11scu.o
CC hw/net/xen_nic.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/ftgmac100.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/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/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/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/timer/mss-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-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/ccid-card-passthru.o
CC hw/usb/ccid-card-emulated.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/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC hw/xen/xen_backend.o
CC hw/xen/xen_devconfig.o
CC hw/xen/xen_pvdev.o
CC hw/xen/xen-common.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/rdma.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/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.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:65: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/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
CC slirp/udp.o
CC slirp/udp6.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/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/spice-core.o
CC ui/spice-input.o
CC ui/spice-display.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/curses.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
CC ui/gtk.o
CC ui/shader.o
VERT ui/shader/texture-blit-vert.h
FRAG ui/shader/texture-blit-frag.h
CC ui/egl-helpers.o
CC ui/egl-context.o
CC ui/gtk-egl.o
CC chardev/char.o
In file included from /usr/include/gtk-2.0/gtk/gtk.h:234,
from /tmp/qemu-test/src/include/ui/gtk.h:9,
from /tmp/qemu-test/src/ui/gtk.c:42:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn't a prototype
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
In file included from /usr/include/gtk-2.0/gtk/gtk.h:234,
from /tmp/qemu-test/src/include/ui/gtk.h:9,
from /tmp/qemu-test/src/ui/gtk-egl.c:20:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn't a prototype
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
CC qga/commands-posix.o
AS optionrom/kvmvapic.o
CC qga/channel-posix.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/kvmvapic.bin
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
CC qemu-img.o
LINK qemu-io
LINK scsi/qemu-pr-helper
LINK qemu-bridge-helper
CC ui/console-gl.o
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-ga
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/config-target.h
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/tcg/tcg.o
LINK qemu-img
CC x86_64-softmmu/disas.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/arch_init.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/memory_mapping.o
CC aarch64-softmmu/cpus.o
CC aarch64-softmmu/monitor.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC x86_64-softmmu/accel/accel.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/accel/kvm/kvm-all.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC x86_64-softmmu/accel/stubs/hax-stub.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/memory.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/accel/accel.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/accel/tcg/translator.o
CC aarch64-softmmu/accel/stubs/hax-stub.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC x86_64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC aarch64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/hw/vfio/common.o
CC x86_64-softmmu/hw/vfio/pci.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 x86_64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC x86_64-softmmu/hw/vfio/platform.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC x86_64-softmmu/hw/virtio/vhost.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 x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/xen/xen-host-pci-device.o
CC x86_64-softmmu/hw/xen/xen_pt.o
CC x86_64-softmmu/hw/xen/xen_pt_config_init.o
CC x86_64-softmmu/hw/xen/xen_pt_graphics.o
CC x86_64-softmmu/hw/xen/xen_pt_msi.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
/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:1071: warning: 'pch_rev_id' may be used uninitialized in this function
CC aarch64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC x86_64-softmmu/hw/i386/../xenpv/xen_machine_pv.o
CC aarch64-softmmu/hw/misc/cbus.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:509: warning: 'notify_method' may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/clock.o
CC x86_64-softmmu/hw/i386/kvm/apic.o
CC x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC x86_64-softmmu/hw/i386/xen/xen_platform.o
CC x86_64-softmmu/hw/i386/xen/xen_apic.o
CC aarch64-softmmu/hw/misc/exynos4210_rng.o
CC x86_64-softmmu/hw/i386/xen/xen_pvdevice.o
CC x86_64-softmmu/hw/i386/xen/xen-hvm.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC x86_64-softmmu/hw/i386/xen/xen-mapcache.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC x86_64-softmmu/target/i386/cpu.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/mps2-scc.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/misc/msf2-sysreg.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/scsi/vhost-scsi-common.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC x86_64-softmmu/target/i386/kvm.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/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/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/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 aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
LINK x86_64-softmmu/qemu-system-x86_64
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-zcu102.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/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/mps2.o
CC aarch64-softmmu/hw/arm/msf2-soc.o
CC aarch64-softmmu/hw/arm/msf2-som.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
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function 'handle_shri_with_rndacc':
/tmp/qemu-test/src/target/arm/translate-a64.c:6370: 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:8097: warning: 'rmode' may be used uninitialized in this function
LINK aarch64-softmmu/qemu-system-aarch64
TEST tests/qapi-schema/alternate-any.out
TEST tests/qapi-schema/alternate-array.out
TEST tests/qapi-schema/alternate-conflict-dict.out
TEST tests/qapi-schema/alternate-base.out
TEST tests/qapi-schema/alternate-clash.out
TEST tests/qapi-schema/alternate-conflict-enum-int.out
TEST tests/qapi-schema/alternate-conflict-string.out
TEST tests/qapi-schema/alternate-conflict-enum-bool.out
TEST tests/qapi-schema/alternate-conflict-bool-string.out
TEST tests/qapi-schema/alternate-conflict-num-string.out
TEST tests/qapi-schema/alternate-empty.out
TEST tests/qapi-schema/alternate-nested.out
TEST tests/qapi-schema/alternate-unknown.out
TEST tests/qapi-schema/args-alternate.out
TEST tests/qapi-schema/args-any.out
TEST tests/qapi-schema/args-array-empty.out
TEST tests/qapi-schema/args-array-unknown.out
TEST tests/qapi-schema/args-bad-boxed.out
TEST tests/qapi-schema/args-boxed-anon.out
TEST tests/qapi-schema/args-boxed-empty.out
TEST tests/qapi-schema/args-boxed-string.out
TEST tests/qapi-schema/args-int.out
TEST tests/qapi-schema/args-invalid.out
TEST tests/qapi-schema/args-member-array-bad.out
TEST tests/qapi-schema/args-member-case.out
TEST tests/qapi-schema/args-member-unknown.out
TEST tests/qapi-schema/args-name-clash.out
TEST tests/qapi-schema/args-union.out
TEST tests/qapi-schema/args-unknown.out
TEST tests/qapi-schema/bad-base.out
TEST tests/qapi-schema/bad-data.out
TEST tests/qapi-schema/bad-ident.out
TEST tests/qapi-schema/bad-type-bool.out
TEST tests/qapi-schema/bad-type-dict.out
TEST tests/qapi-schema/bad-type-int.out
TEST tests/qapi-schema/base-cycle-direct.out
TEST tests/qapi-schema/base-cycle-indirect.out
TEST tests/qapi-schema/command-int.out
TEST tests/qapi-schema/comments.out
TEST tests/qapi-schema/doc-bad-alternate-member.out
TEST tests/qapi-schema/doc-bad-command-arg.out
TEST tests/qapi-schema/doc-bad-symbol.out
TEST tests/qapi-schema/doc-bad-union-member.out
TEST tests/qapi-schema/doc-before-include.out
TEST tests/qapi-schema/doc-before-pragma.out
TEST tests/qapi-schema/doc-duplicated-arg.out
TEST tests/qapi-schema/doc-duplicated-return.out
TEST tests/qapi-schema/doc-duplicated-since.out
TEST tests/qapi-schema/doc-empty-arg.out
TEST tests/qapi-schema/doc-empty-section.out
TEST tests/qapi-schema/doc-empty-symbol.out
TEST tests/qapi-schema/doc-interleaved-section.out
TEST tests/qapi-schema/doc-good.out
TEST tests/qapi-schema/doc-invalid-end.out
TEST tests/qapi-schema/doc-invalid-end2.out
TEST tests/qapi-schema/doc-invalid-return.out
TEST tests/qapi-schema/doc-invalid-section.out
TEST tests/qapi-schema/doc-invalid-start.out
TEST tests/qapi-schema/doc-missing.out
TEST tests/qapi-schema/doc-missing-colon.out
TEST tests/qapi-schema/doc-missing-expr.out
TEST tests/qapi-schema/doc-missing-space.out
TEST tests/qapi-schema/doc-no-symbol.out
TEST tests/qapi-schema/double-data.out
TEST tests/qapi-schema/double-type.out
TEST tests/qapi-schema/duplicate-key.out
TEST tests/qapi-schema/empty.out
TEST tests/qapi-schema/enum-bad-name.out
TEST tests/qapi-schema/enum-bad-prefix.out
TEST tests/qapi-schema/enum-clash-member.out
TEST tests/qapi-schema/enum-dict-member.out
TEST tests/qapi-schema/enum-int-member.out
TEST tests/qapi-schema/enum-member-case.out
TEST tests/qapi-schema/enum-missing-data.out
TEST tests/qapi-schema/enum-wrong-data.out
TEST tests/qapi-schema/escape-outside-string.out
TEST tests/qapi-schema/escape-too-big.out
TEST tests/qapi-schema/escape-too-short.out
TEST tests/qapi-schema/event-boxed-empty.out
TEST tests/qapi-schema/event-case.out
TEST tests/qapi-schema/event-nest-struct.out
TEST tests/qapi-schema/flat-union-array-branch.out
TEST tests/qapi-schema/flat-union-bad-base.out
TEST tests/qapi-schema/flat-union-bad-discriminator.out
TEST tests/qapi-schema/flat-union-base-any.out
TEST tests/qapi-schema/flat-union-base-union.out
TEST tests/qapi-schema/flat-union-clash-member.out
TEST tests/qapi-schema/flat-union-empty.out
TEST tests/qapi-schema/flat-union-incomplete-branch.out
TEST tests/qapi-schema/flat-union-inline.out
TEST tests/qapi-schema/flat-union-int-branch.out
TEST tests/qapi-schema/flat-union-invalid-branch-key.out
TEST tests/qapi-schema/flat-union-invalid-discriminator.out
TEST tests/qapi-schema/flat-union-no-base.out
TEST tests/qapi-schema/flat-union-optional-discriminator.out
TEST tests/qapi-schema/flat-union-string-discriminator.out
TEST tests/qapi-schema/funny-char.out
TEST tests/qapi-schema/ident-with-escape.out
TEST tests/qapi-schema/include-before-err.out
TEST tests/qapi-schema/include-cycle.out
TEST tests/qapi-schema/include-extra-junk.out
TEST tests/qapi-schema/include-format-err.out
TEST tests/qapi-schema/include-nested-err.out
TEST tests/qapi-schema/include-no-file.out
TEST tests/qapi-schema/include-non-file.out
TEST tests/qapi-schema/include-repetition.out
TEST tests/qapi-schema/include-relpath.out
TEST tests/qapi-schema/include-self-cycle.out
TEST tests/qapi-schema/include-simple.out
TEST tests/qapi-schema/indented-expr.out
TEST tests/qapi-schema/leading-comma-list.out
TEST tests/qapi-schema/leading-comma-object.out
TEST tests/qapi-schema/missing-colon.out
TEST tests/qapi-schema/missing-comma-object.out
TEST tests/qapi-schema/missing-comma-list.out
TEST tests/qapi-schema/missing-type.out
TEST tests/qapi-schema/nested-struct-data.out
TEST tests/qapi-schema/non-objects.out
TEST tests/qapi-schema/pragma-doc-required-crap.out
TEST tests/qapi-schema/pragma-extra-junk.out
TEST tests/qapi-schema/pragma-name-case-whitelist-crap.out
TEST tests/qapi-schema/pragma-non-dict.out
TEST tests/qapi-schema/pragma-returns-whitelist-crap.out
TEST tests/qapi-schema/qapi-schema-test.out
TEST tests/qapi-schema/quoted-structural-chars.out
TEST tests/qapi-schema/redefined-builtin.out
TEST tests/qapi-schema/redefined-command.out
TEST tests/qapi-schema/redefined-event.out
TEST tests/qapi-schema/redefined-type.out
TEST tests/qapi-schema/reserved-command-q.out
TEST tests/qapi-schema/reserved-enum-q.out
TEST tests/qapi-schema/reserved-member-has.out
TEST tests/qapi-schema/reserved-member-q.out
TEST tests/qapi-schema/reserved-member-u.out
TEST tests/qapi-schema/reserved-member-underscore.out
TEST tests/qapi-schema/reserved-type-kind.out
TEST tests/qapi-schema/reserved-type-list.out
TEST tests/qapi-schema/returns-alternate.out
TEST tests/qapi-schema/returns-array-bad.out
TEST tests/qapi-schema/returns-dict.out
TEST tests/qapi-schema/returns-unknown.out
TEST tests/qapi-schema/returns-whitelist.out
TEST tests/qapi-schema/struct-base-clash-deep.out
TEST tests/qapi-schema/struct-base-clash.out
TEST tests/qapi-schema/struct-data-invalid.out
TEST tests/qapi-schema/struct-member-invalid.out
TEST tests/qapi-schema/trailing-comma-list.out
TEST tests/qapi-schema/trailing-comma-object.out
TEST tests/qapi-schema/type-bypass-bad-gen.out
TEST tests/qapi-schema/unclosed-list.out
TEST tests/qapi-schema/unclosed-object.out
TEST tests/qapi-schema/unclosed-string.out
TEST tests/qapi-schema/unicode-str.out
TEST tests/qapi-schema/union-base-empty.out
TEST tests/qapi-schema/union-base-no-discriminator.out
TEST tests/qapi-schema/union-branch-case.out
TEST tests/qapi-schema/union-clash-branches.out
TEST tests/qapi-schema/union-empty.out
TEST tests/qapi-schema/union-invalid-base.out
TEST tests/qapi-schema/union-optional-branch.out
TEST tests/qapi-schema/union-unknown.out
TEST tests/qapi-schema/unknown-escape.out
TEST tests/qapi-schema/unknown-expr-key.out
GEN tests/qapi-schema/doc-good.test.texi
CC tests/check-qdict.o
CC tests/test-char.o
CC tests/check-qnum.o
CC tests/check-qstring.o
CC tests/check-qlist.o
CC tests/check-qnull.o
CC tests/check-qjson.o
CC tests/check-qlit.o
GEN tests/test-qapi-visit.c
CC tests/test-qobject-output-visitor.o
GEN tests/test-qapi-types.c
GEN tests/test-qapi-event.c
GEN tests/test-qmp-introspect.c
CC tests/test-clone-visitor.o
CC tests/test-qobject-input-visitor.o
CC tests/test-qmp-commands.o
GEN tests/test-qmp-marshal.c
CC tests/test-string-input-visitor.o
CC tests/test-string-output-visitor.o
CC tests/test-qmp-event.o
CC tests/test-opts-visitor.o
CC tests/test-coroutine.o
CC tests/iothread.o
CC tests/test-visitor-serialization.o
CC tests/test-iov.o
CC tests/test-aio.o
CC tests/test-aio-multithread.o
CC tests/test-throttle.o
CC tests/test-thread-pool.o
CC tests/test-hbitmap.o
CC tests/test-blockjob.o
CC tests/test-blockjob-txn.o
CC tests/test-x86-cpuid.o
CC tests/test-xbzrle.o
CC tests/test-vmstate.o
CC tests/test-cutils.o
CC tests/test-shift128.o
CC tests/test-mul64.o
CC tests/test-int128.o
CC tests/rcutorture.o
CC tests/test-rcu-list.o
CC tests/test-qdist.o
CC tests/test-qht.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: '__noclone__' attribute directive ignored
CC tests/test-qht-par.o
CC tests/qht-bench.o
CC tests/test-bitops.o
CC tests/test-bitcnt.o
CC tests/check-qom-interface.o
CC tests/check-qom-proplist.o
CC tests/test-qemu-opts.o
CC tests/test-keyval.o
CC tests/test-write-threshold.o
CC tests/test-crypto-hash.o
CC tests/test-crypto-hmac.o
CC tests/test-crypto-cipher.o
CC tests/test-crypto-secret.o
CC tests/test-qga.o
CC tests/libqtest.o
CC tests/test-timed-average.o
CC tests/test-io-task.o
CC tests/test-io-channel-socket.o
CC tests/io-channel-helpers.o
CC tests/test-io-channel-file.o
CC tests/test-io-channel-command.o
CC tests/test-io-channel-buffer.o
CC tests/test-base64.o
CC tests/test-crypto-ivgen.o
CC tests/test-crypto-afsplit.o
CC tests/test-crypto-xts.o
CC tests/test-crypto-block.o
CC tests/test-logging.o
CC tests/test-replication.o
CC tests/test-bufferiszero.o
CC tests/test-uuid.o
CC tests/ptimer-test.o
CC tests/ptimer-test-stubs.o
CC tests/test-qapi-util.o
CC tests/vhost-user-test.o
CC tests/libqos/pci.o
CC tests/libqos/fw_cfg.o
CC tests/libqos/malloc.o
CC tests/libqos/i2c.o
CC tests/libqos/libqos.o
CC tests/libqos/malloc-spapr.o
CC tests/libqos/libqos-spapr.o
CC tests/libqos/rtas.o
CC tests/libqos/pci-spapr.o
CC tests/libqos/pci-pc.o
CC tests/libqos/malloc-pc.o
CC tests/libqos/libqos-pc.o
CC tests/libqos/ahci.o
CC tests/libqos/virtio.o
CC tests/libqos/virtio-pci.o
CC tests/libqos/virtio-mmio.o
CC tests/libqos/malloc-generic.o
CC tests/endianness-test.o
CC tests/fdc-test.o
CC tests/ide-test.o
CC tests/ahci-test.o
CC tests/hd-geo-test.o
CC tests/boot-order-test.o
CC tests/bios-tables-test.o
CC tests/boot-sector.o
CC tests/acpi-utils.o
CC tests/boot-serial-test.o
CC tests/pxe-test.o
CC tests/rtc-test.o
CC tests/ipmi-kcs-test.o
CC tests/ipmi-bt-test.o
CC tests/i440fx-test.o
CC tests/fw_cfg-test.o
CC tests/drive_del-test.o
CC tests/wdt_ib700-test.o
CC tests/tco-test.o
CC tests/e1000-test.o
CC tests/e1000e-test.o
CC tests/rtl8139-test.o
CC tests/pcnet-test.o
CC tests/eepro100-test.o
CC tests/ne2000-test.o
CC tests/nvme-test.o
CC tests/ac97-test.o
CC tests/es1370-test.o
CC tests/virtio-net-test.o
CC tests/virtio-balloon-test.o
CC tests/virtio-blk-test.o
CC tests/virtio-rng-test.o
CC tests/virtio-scsi-test.o
CC tests/virtio-serial-test.o
CC tests/virtio-console-test.o
CC tests/tpci200-test.o
CC tests/ipoctal232-test.o
CC tests/display-vga-test.o
CC tests/intel-hda-test.o
CC tests/ivshmem-test.o
CC tests/megasas-test.o
CC tests/vmxnet3-test.o
CC tests/pvpanic-test.o
CC tests/i82801b11-test.o
CC tests/ioh3420-test.o
CC tests/usb-hcd-ohci-test.o
CC tests/libqos/usb.o
CC tests/usb-hcd-uhci-test.o
CC tests/usb-hcd-ehci-test.o
CC tests/usb-hcd-xhci-test.o
CC tests/pc-cpu-test.o
CC tests/q35-test.o
CC tests/vmgenid-test.o
CC tests/test-netfilter.o
CC tests/test-filter-mirror.o
CC tests/test-filter-redirector.o
CC tests/postcopy-test.o
CC tests/test-x86-cpuid-compat.o
CC tests/numa-test.o
CC tests/qmp-test.o
CC tests/device-introspect-test.o
CC tests/qom-test.o
CC tests/test-hmp.o
LINK tests/check-qdict
LINK tests/test-char
LINK tests/check-qnum
LINK tests/check-qstring
LINK tests/check-qlist
LINK tests/check-qnull
LINK tests/check-qjson
LINK tests/check-qlit
CC tests/test-qapi-visit.o
CC tests/test-qapi-types.o
CC tests/test-qapi-event.o
CC tests/test-qmp-introspect.o
CC tests/test-qmp-marshal.o
LINK tests/test-coroutine
LINK tests/test-iov
LINK tests/test-aio
LINK tests/test-aio-multithread
LINK tests/test-throttle
LINK tests/test-thread-pool
LINK tests/test-hbitmap
LINK tests/test-blockjob
LINK tests/test-blockjob-txn
LINK tests/test-x86-cpuid
LINK tests/test-xbzrle
LINK tests/test-vmstate
LINK tests/test-cutils
LINK tests/test-shift128
LINK tests/test-mul64
LINK tests/test-int128
LINK tests/rcutorture
LINK tests/test-rcu-list
LINK tests/test-qdist
LINK tests/test-qht
LINK tests/qht-bench
LINK tests/test-bitops
LINK tests/test-bitcnt
LINK tests/check-qom-interface
LINK tests/check-qom-proplist
LINK tests/test-qemu-opts
LINK tests/test-keyval
LINK tests/test-write-threshold
LINK tests/test-crypto-hash
LINK tests/test-crypto-hmac
LINK tests/test-crypto-cipher
LINK tests/test-crypto-secret
LINK tests/test-qga
LINK tests/test-timed-average
LINK tests/test-io-task
LINK tests/test-io-channel-socket
LINK tests/test-io-channel-file
LINK tests/test-io-channel-command
LINK tests/test-io-channel-buffer
LINK tests/test-base64
LINK tests/test-crypto-ivgen
LINK tests/test-crypto-afsplit
LINK tests/test-crypto-xts
LINK tests/test-crypto-block
LINK tests/test-logging
LINK tests/test-replication
LINK tests/test-bufferiszero
LINK tests/test-uuid
LINK tests/ptimer-test
LINK tests/test-qapi-util
LINK tests/vhost-user-test
LINK tests/endianness-test
LINK tests/fdc-test
LINK tests/ide-test
LINK tests/ahci-test
LINK tests/hd-geo-test
LINK tests/boot-order-test
LINK tests/bios-tables-test
LINK tests/boot-serial-test
LINK tests/pxe-test
LINK tests/rtc-test
LINK tests/ipmi-kcs-test
LINK tests/ipmi-bt-test
LINK tests/i440fx-test
LINK tests/fw_cfg-test
LINK tests/drive_del-test
LINK tests/wdt_ib700-test
LINK tests/tco-test
LINK tests/e1000-test
LINK tests/e1000e-test
LINK tests/rtl8139-test
LINK tests/pcnet-test
LINK tests/eepro100-test
LINK tests/ne2000-test
LINK tests/nvme-test
LINK tests/ac97-test
LINK tests/es1370-test
LINK tests/virtio-net-test
LINK tests/virtio-balloon-test
LINK tests/virtio-blk-test
LINK tests/virtio-rng-test
LINK tests/virtio-scsi-test
LINK tests/virtio-serial-test
LINK tests/virtio-console-test
LINK tests/tpci200-test
LINK tests/ipoctal232-test
LINK tests/display-vga-test
LINK tests/intel-hda-test
LINK tests/ivshmem-test
LINK tests/megasas-test
LINK tests/vmxnet3-test
LINK tests/pvpanic-test
LINK tests/i82801b11-test
LINK tests/ioh3420-test
LINK tests/usb-hcd-ohci-test
LINK tests/usb-hcd-uhci-test
LINK tests/usb-hcd-ehci-test
LINK tests/usb-hcd-xhci-test
LINK tests/pc-cpu-test
LINK tests/q35-test
LINK tests/vmgenid-test
LINK tests/test-netfilter
LINK tests/test-filter-mirror
LINK tests/test-filter-redirector
LINK tests/postcopy-test
LINK tests/test-x86-cpuid-compat
LINK tests/numa-test
LINK tests/qmp-test
LINK tests/device-introspect-test
LINK tests/qom-test
LINK tests/test-hmp
GTESTER tests/check-qdict
GTESTER tests/test-char
GTESTER tests/check-qnum
GTESTER tests/check-qstring
GTESTER tests/check-qlist
GTESTER tests/check-qnull
GTESTER tests/check-qjson
GTESTER tests/check-qlit
LINK tests/test-qobject-output-visitor
LINK tests/test-clone-visitor
LINK tests/test-qobject-input-visitor
LINK tests/test-qmp-commands
LINK tests/test-string-input-visitor
LINK tests/test-string-output-visitor
LINK tests/test-qmp-event
GTESTER tests/test-coroutine
LINK tests/test-opts-visitor
GTESTER tests/test-aio
LINK tests/test-visitor-serialization
GTESTER tests/test-iov
GTESTER tests/test-aio-multithread
GTESTER tests/test-throttle
GTESTER tests/test-thread-pool
GTESTER tests/test-hbitmap
GTESTER tests/test-blockjob
GTESTER tests/test-blockjob-txn
GTESTER tests/test-x86-cpuid
GTESTER tests/test-xbzrle
GTESTER tests/test-vmstate
Failed to load simple/primitive:b_1
Failed to load simple/primitive:i64_2
Failed to load simple/primitive:i32_1
Failed to load simple/primitive:i32_1
Failed to load test/with_tmp:a
Failed to load test/tmp_child_parent:f
Failed to load test/tmp_child:parent
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
GTESTER tests/test-cutils
GTESTER tests/test-shift128
GTESTER tests/test-mul64
GTESTER tests/test-int128
GTESTER tests/rcutorture
GTESTER tests/test-rcu-list
GTESTER tests/test-qdist
GTESTER tests/test-qht
LINK tests/test-qht-par
GTESTER tests/test-bitops
GTESTER tests/test-bitcnt
GTESTER tests/check-qom-proplist
GTESTER tests/check-qom-interface
GTESTER tests/test-qemu-opts
GTESTER tests/test-keyval
GTESTER tests/test-crypto-hash
GTESTER tests/test-write-threshold
GTESTER tests/test-crypto-hmac
GTESTER tests/test-crypto-cipher
GTESTER tests/test-crypto-secret
GTESTER tests/test-qga
GTESTER tests/test-timed-average
GTESTER tests/test-io-task
GTESTER tests/test-io-channel-socket
GTESTER tests/test-io-channel-file
GTESTER tests/test-io-channel-command
GTESTER tests/test-io-channel-buffer
GTESTER tests/test-base64
GTESTER tests/test-crypto-ivgen
GTESTER tests/test-crypto-afsplit
GTESTER tests/test-crypto-xts
GTESTER tests/test-crypto-block
GTESTER tests/test-logging
GTESTER tests/test-replication
GTESTER tests/test-bufferiszero
GTESTER tests/test-uuid
GTESTER tests/ptimer-test
GTESTER tests/test-qapi-util
GTESTER check-qtest-x86_64
GTESTER check-qtest-aarch64
GTESTER tests/test-qobject-output-visitor
GTESTER tests/test-clone-visitor
GTESTER tests/test-qobject-input-visitor
GTESTER tests/test-qmp-commands
GTESTER tests/test-string-input-visitor
GTESTER tests/test-string-output-visitor
GTESTER tests/test-qmp-event
GTESTER tests/test-visitor-serialization
GTESTER tests/test-opts-visitor
GTESTER tests/test-qht-par
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/var"/run
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-ga ivshmem-client ivshmem-server qemu-nbd qemu-img qemu-io scsi/qemu-pr-helper "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-ga" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/ivshmem-client" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/ivshmem-server" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-nbd" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-img" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-io" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-pr-helper"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec"
install -c -m 0755 qemu-bridge-helper "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec/qemu-bridge-helper"
set -e; for x in bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin acpi-dsdt.aml ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-icon.bmp qemu_logo_no_text.svg bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin s390-ccw.img s390-netboot.img spapr-rtas.bin slof.bin skiboot.lid palcode-clipper u-boot.e500 qemu_vga.ndrv; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu"; \
done
make -C po install
make[1]: Entering directory `/tmp/qemu-test/build/po'
GEN /tmp/qemu-test/src/po/messages.po
GEN /tmp/qemu-test/src/po/bg.po
GEN /tmp/qemu-test/src/po/de_DE.po
GEN /tmp/qemu-test/src/po/it.po
GEN /tmp/qemu-test/src/po/hu.po
GEN /tmp/qemu-test/src/po/fr_FR.po
GEN /tmp/qemu-test/src/po/zh_CN.po
GEN /tmp/qemu-test/src/po/tr.po
GEN it.mo
GEN fr_FR.mo
GEN bg.mo
GEN de_DE.mo
GEN hu.mo
GEN tr.mo
GEN zh_CN.mo
for obj in bg.mo de_DE.mo fr_FR.mo hu.mo it.mo tr.mo zh_CN.mo; do \
base=`basename $obj .mo`; \
install -d /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES; \
install -m644 $obj /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES/qemu.mo; \
done
make[1]: Leaving directory `/tmp/qemu-test/build/po'
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/keymaps"
set -e; for x in da en-gb et fr fr-ch is lt modifiers no pt-br sv ar de en-us fi fr-be hr it lv nl pl ru th common de-ch es fo fr-ca hu ja mk nl-be pt sl tr bepo cz; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/keymaps/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/keymaps"; \
done
install -c -m 0644 /tmp/qemu-test/build/trace-events-all "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/trace-events-all"
for d in x86_64-softmmu aarch64-softmmu; do \
make --no-print-directory BUILD_DIR=/tmp/qemu-test/build TARGET_DIR=$d/ -C $d install || exit 1 ; \
done
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-system-x86_64 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-system-x86_64"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-system-aarch64 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-system-aarch64"
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
real 8m14.357s
user 0m1.745s
sys 0m1.895s
BUILD min-glib
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
GEN docker-src.2017-10-05-13.18.05.11468/qemu.tar
COPY RUNNER
RUN test-build in qemu:min-glib
Environment variables:
HOSTNAME=bee073f00118
TERM=xterm
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
FEATURES= dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install/share/qemu
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
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
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
RDMA support no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
mkdir -p dtc/tests
GEN config-host.h
GEN qemu-options.def
GEN qapi-types.h
GEN qapi-visit.h
GEN qmp-commands.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN qapi-visit.c
GEN qapi-types.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
CHK version_gen.h
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
UPD version_gen.h
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/util.c
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
LEX dtc-lexer.lex.c
BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: bison: Command not found
CC libfdt/fdt_ro.o
CC libfdt/fdt.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
LEX convert-dtsv0-lexer.lex.c
LEX dtc-lexer.lex.c
BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: flex: Command not found
make[1]: bison: Command not found
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/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/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.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/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/replay.o
CC stubs/qtest.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-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/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-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/dns-resolver.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 scsi/qemu-pr-helper.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/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/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/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/cmsdk-apb-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/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/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/ftgmac100.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/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/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/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/timer/mss-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/bus.o
CC hw/usb/combined-packet.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-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-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/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/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/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.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:65: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/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
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.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/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/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
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
AS optionrom/kvmvapic.o
CC qga/guest-agent-command-state.o
CC qga/main.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
CC qga/commands-posix.o
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/kvmvapic.bin
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
AR libqemuutil.a
CC qemu-img.o
LINK qemu-io
LINK scsi/qemu-pr-helper
LINK qemu-bridge-helper
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-ga
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/config-target.h
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/exec.o
CC x86_64-softmmu/disas.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/tcg/tcg.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC aarch64-softmmu/tcg/tcg-op.o
LINK qemu-img
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/memory.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/accel/accel.o
CC x86_64-softmmu/accel/kvm/kvm-all.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/accel/stubs/hax-stub.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/accel/tcg/translator.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/arch_init.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/balloon.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/dump.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/accel/accel.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC aarch64-softmmu/accel/stubs/hax-stub.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC aarch64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/accel/tcg/translator.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC x86_64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.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:1071: warning: 'pch_rev_id' may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/display/xlnx_dp.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/dma/xlnx_dpdma.o
CC x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC aarch64-softmmu/hw/dma/soc_dma.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:509: warning: 'notify_method' may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/target/i386/cpu.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_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 x86_64-softmmu/target/i386/xsave_helper.o
CC x86_64-softmmu/target/i386/translate.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC x86_64-softmmu/target/i386/bpt_helper.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 x86_64-softmmu/target/i386/cc_helper.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 aarch64-softmmu/hw/misc/cbus.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/exynos4210_rng.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/mps2-scc.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/misc/msf2-sysreg.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.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 aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/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/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
LINK x86_64-softmmu/qemu-system-x86_64
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 aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/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-zcu102.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/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/mps2.o
CC aarch64-softmmu/hw/arm/msf2-soc.o
CC aarch64-softmmu/hw/arm/msf2-som.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
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function 'handle_shri_with_rndacc':
/tmp/qemu-test/src/target/arm/translate-a64.c:6370: 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:8097: warning: 'rmode' may be used uninitialized in this function
LINK aarch64-softmmu/qemu-system-aarch64
LEX convert-dtsv0-lexer.lex.c
BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/var"/run
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-ga ivshmem-client ivshmem-server qemu-nbd qemu-img qemu-io scsi/qemu-pr-helper "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-ga" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/ivshmem-client" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/ivshmem-server" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-nbd" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-img" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-io" "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-pr-helper"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec"
install -c -m 0755 qemu-bridge-helper "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/libexec/qemu-bridge-helper"
set -e; for x in bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin acpi-dsdt.aml ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-icon.bmp qemu_logo_no_text.svg bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin s390-ccw.img s390-netboot.img spapr-rtas.bin slof.bin skiboot.lid palcode-clipper u-boot.e500 qemu_vga.ndrv; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu"; \
done
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/keymaps"
set -e; for x in da en-gb et fr fr-ch is lt modifiers no pt-br sv ar de en-us fi fr-be hr it lv nl pl ru th common de-ch es fo fr-ca hu ja mk nl-be pt sl tr bepo cz; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/keymaps/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/keymaps"; \
done
install -c -m 0644 /tmp/qemu-test/build/trace-events-all "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/qemu/trace-events-all"
for d in x86_64-softmmu aarch64-softmmu; do \
make --no-print-directory BUILD_DIR=/tmp/qemu-test/build TARGET_DIR=$d/ -C $d install || exit 1 ; \
done
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-system-x86_64 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-system-x86_64"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
install -c -m 0755 qemu-system-aarch64 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin"
strip "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/bin/qemu-system-aarch64"
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
real 2m35.501s
user 0m1.593s
sys 0m2.083s
BUILD fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
GEN docker-src.2017-10-05-13.20.41.19952/qemu.tar
COPY RUNNER
RUN test-mingw in qemu:fedora
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
gettext-0.19.8.1-3.fc25.x86_64
git-2.9.5-1.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.2-387.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64
Environment variables:
PACKAGES=ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel gcc gcc-c++ clang make perl which bc findutils libaio-devel nettle-devel mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 mingw32-bzip2 mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 mingw64-bzip2
HOSTNAME=1da10af39a5c
TERM=xterm
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
FEATURES=mingw clang pyyaml dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler x86_64-w64-mingw32-gcc
Host C compiler cc
C++ compiler x86_64-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -m64 -mcx16 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
TCG support yes
TCG debug enabled yes
TCG interpreter no
RDMA support no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
vhost-user support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN x86_64-softmmu/config-devices.mak.tmp
GEN 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 qapi-types.c
GEN qmp-marshal.c
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
x86_64-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
RC version.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/simple.o
CC trace/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/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/event_notifier-win32.o
CC util/oslib-win32.o
CC util/qemu-thread-win32.o
CC util/path.o
CC util/envlist.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.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/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/mem/trace.o
CC hw/isa/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/machine-init-done.o
CC stubs/is-daemonized.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/slirp.o
CC stubs/set-fd-handler.o
CC stubs/runstate-check.o
CC stubs/sysbus.o
CC stubs/uuid.o
CC stubs/trace-control.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-get-monitor-def.o
CC stubs/target-monitor-defs.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
GEN qemu-img-cmds.h
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/win32-aio.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/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC block/curl.o
CC block/ssh.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC 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/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
CC qemu-io.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-win32.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/dsoundaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/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/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/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/cmsdk-apb-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/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/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/ftgmac100.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/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-bridge/ioh3420.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/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/timer/mss-timer.o
CC hw/tpm/tpm_tis.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/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-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/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/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap-win32.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/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
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC ui/gtk.o
CC chardev/char.o
CC chardev/char-console.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-pipe.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
CC chardev/char-win.o
CC chardev/char-win-stdio.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
CC qga/commands.o
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
CC qga/guest-agent-command-state.o
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
CC qga/main.o
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/kvmvapic.bin
CC qga/commands-win32.o
CC qga/channel-win32.o
CC qga/service-win32.o
CC qga/vss-win32.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
CC qemu-img.o
LINK qemu-io.exe
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
GEN aarch64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/hmp-commands.h
CC x86_64-softmmu/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 x86_64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/fpu/softfloat.o
LINK qemu-img.exe
CC x86_64-softmmu/disas.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC aarch64-softmmu/monitor.o
LINK qemu-ga.exe
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/memory.o
CC x86_64-softmmu/monitor.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC aarch64-softmmu/memory_mapping.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC aarch64-softmmu/dump.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/memory_mapping.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/accel/accel.o
CC aarch64-softmmu/accel/stubs/hax-stub.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC aarch64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/accel.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC aarch64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/accel/stubs/kvm-stub.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/intc/apic_common.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 x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/hw/display/dpcd.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.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 x86_64-softmmu/hw/i386/intel_iommu.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC aarch64-softmmu/hw/misc/cbus.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/exynos4210_rng.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC x86_64-softmmu/target/i386/smm_helper.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 x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/misc/mps2-scc.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC x86_64-softmmu/target/i386/monitor.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC x86_64-softmmu/target/i386/kvm-stub.o
CC x86_64-softmmu/target/i386/hax-all.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC x86_64-softmmu/target/i386/hax-mem.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/target/i386/hax-windows.o
CC aarch64-softmmu/hw/misc/msf2-sysreg.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.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/trace/generated-helpers.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
LINK x86_64-softmmu/qemu-system-x86_64.exe
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/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 aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/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-zcu102.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/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/mps2.o
CC aarch64-softmmu/hw/arm/msf2-soc.o
CC aarch64-softmmu/hw/arm/msf2-som.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
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64.exe
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-ga.exe qemu-img.exe qemu-io.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
set -e; for x in bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin acpi-dsdt.aml ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-icon.bmp qemu_logo_no_text.svg bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin s390-ccw.img s390-netboot.img spapr-rtas.bin slof.bin skiboot.lid palcode-clipper u-boot.e500 qemu_vga.ndrv; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"; \
done
make -C po install
make[1]: Entering directory '/tmp/qemu-test/build/po'
GEN /tmp/qemu-test/src/po/messages.po
GEN /tmp/qemu-test/src/po/hu.po
GEN /tmp/qemu-test/src/po/tr.po
GEN /tmp/qemu-test/src/po/it.po
GEN /tmp/qemu-test/src/po/bg.po
GEN /tmp/qemu-test/src/po/zh_CN.po
GEN /tmp/qemu-test/src/po/fr_FR.po
GEN /tmp/qemu-test/src/po/de_DE.po
GEN hu.mo
GEN it.mo
GEN zh_CN.mo
GEN bg.mo
GEN fr_FR.mo
GEN tr.mo
GEN de_DE.mo
for obj in hu.mo tr.mo it.mo bg.mo fr_FR.mo zh_CN.mo de_DE.mo; do \
base=`basename $obj .mo`; \
install -d /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES; \
install -m644 $obj /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES/qemu.mo; \
done
make[1]: Leaving directory '/tmp/qemu-test/build/po'
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/keymaps"
set -e; for x in da en-gb et fr fr-ch is lt modifiers no pt-br sv ar de en-us fi fr-be hr it lv nl pl ru th common de-ch es fo fr-ca hu ja mk nl-be pt sl tr bepo cz; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/keymaps/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/keymaps"; \
done
install -c -m 0644 /tmp/qemu-test/build/trace-events-all "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/trace-events-all"
for d in x86_64-softmmu aarch64-softmmu; do \
make --no-print-directory BUILD_DIR=/tmp/qemu-test/build TARGET_DIR=$d/ -C $d install || exit 1 ; \
done
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-system-x86_64.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-system-aarch64.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
rm -f *.timestamp
make -C tests/tcg clean
make[1]: Entering directory '/tmp/qemu-test/build/tests/tcg'
rm -f *.timestamp
rm -f *~ *.o test-i386.out test-i386.ref \
test-x86_64.log test-x86_64.ref qruncom test_path hello-i386 linux-test testthread sha1-i386 test-i386 test-i386-fprem test-mmap run-test-x86_64
make[1]: Leaving directory '/tmp/qemu-test/build/tests/tcg'
rm -rf tests/check-qdict.exe tests/test-char.exe tests/check-qnum.exe tests/check-qstring.exe tests/check-qlist.exe tests/check-qnull.exe tests/check-qjson.exe tests/check-qlit.exe tests/test-qobject-output-visitor.exe tests/test-clone-visitor.exe tests/test-qobject-input-visitor.exe tests/test-qmp-commands.exe tests/test-string-input-visitor.exe tests/test-string-output-visitor.exe tests/test-qmp-event.exe tests/test-opts-visitor.exe tests/test-coroutine.exe tests/test-visitor-serialization.exe tests/test-iov.exe tests/test-aio.exe tests/test-aio-multithread.exe tests/test-throttle.exe tests/test-thread-pool.exe tests/test-hbitmap.exe tests/test-blockjob.exe tests/test-blockjob-txn.exe tests/test-x86-cpuid.exe tests/test-xbzrle.exe tests/test-cutils.exe tests/test-shift128.exe tests/test-mul64.exe tests/test-int128.exe tests/rcutorture.exe tests/test-rcu-list.exe tests/test-qdist.exe tests/test-qht.exe tests/test-qht-par.exe tests/test-bitops.exe tests/test-bitcnt.exe tests/test-qdev-global-props.exe tests/check-qom-interface.exe tests/check-qom-proplist.exe tests/test-qemu-opts.exe tests/test-keyval.exe tests/test-write-threshold.exe tests/test-crypto-hash.exe tests/test-crypto-hmac.exe tests/test-crypto-cipher.exe tests/test-crypto-secret.exe tests/test-crypto-tlscredsx509.exe tests/test-crypto-tlssession.exe tests/test-timed-average.exe tests/test-io-task.exe tests/test-io-channel-socket.exe tests/test-io-channel-file.exe tests/test-io-channel-tls.exe tests/test-io-channel-command.exe tests/test-io-channel-buffer.exe tests/test-base64.exe tests/test-crypto-pbkdf.exe tests/test-crypto-ivgen.exe tests/test-crypto-afsplit.exe tests/test-crypto-xts.exe tests/test-crypto-block.exe tests/test-logging.exe tests/test-replication.exe tests/test-bufferiszero.exe tests/test-uuid.exe tests/ptimer-test.exe tests/test-qapi-util.exe tests/*.o
rm -rf tests/ac97-test.exe tests/ahci-test.exe tests/bios-tables-test.exe tests/boot-order-test.exe tests/boot-serial-test.exe tests/device-introspect-test.exe tests/display-vga-test.exe tests/drive_del-test.exe tests/ds1338-test.exe tests/e1000-test.exe tests/e1000e-test.exe tests/eepro100-test.exe tests/endianness-test.exe tests/es1370-test.exe tests/fdc-test.exe tests/fw_cfg-test.exe tests/hd-geo-test.exe tests/i440fx-test.exe tests/i82801b11-test.exe tests/ide-test.exe tests/intel-hda-test.exe tests/ioh3420-test.exe tests/ipmi-bt-test.exe tests/ipmi-kcs-test.exe tests/ipoctal232-test.exe tests/m25p80-test.exe tests/megasas-test.exe tests/ne2000-test.exe tests/numa-test.exe tests/nvme-test.exe tests/pc-cpu-test.exe tests/pcnet-test.exe tests/pnv-xscom-test.exe tests/postcopy-test.exe tests/prom-env-test.exe tests/pvpanic-test.exe tests/pxe-test.exe tests/q35-test.exe tests/qmp-test.exe tests/qom-test.exe tests/rtas-test.exe tests/rtc-test.exe tests/rtl8139-test.exe tests/spapr-phb-test.exe tests/tco-test.exe tests/test-arm-mptimer.exe tests/test-hmp.exe tests/test-netfilter.exe tests/test-x86-cpuid-compat.exe tests/tmp105-test.exe tests/tpci200-test.exe tests/usb-hcd-ehci-test.exe tests/usb-hcd-ohci-test.exe tests/usb-hcd-uhci-test.exe tests/usb-hcd-xhci-test.exe tests/virtio-balloon-test.exe tests/virtio-blk-test.exe tests/virtio-console-test.exe tests/virtio-net-test.exe tests/virtio-rng-test.exe tests/virtio-scsi-test.exe tests/virtio-serial-test.exe tests/vmgenid-test.exe tests/vmxnet3-test.exe tests/wdt_ib700-test.exe
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
rm -f *.msi
find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f qemu-ga qemu-img.exe qemu-io.exe qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod scsi/*.pod
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f trace/generated-tracers-dtrace.dtrace*
rm -f trace/generated-tracers-dtrace.h*
rm -f qemu-version.h qemu-version.h-timestamp config-host.h config-host.h-timestamp qemu-options.def qemu-options.def-timestamp qmp-commands.h qmp-commands.h-timestamp qapi-types.h qapi-types.h-timestamp qapi-visit.h qapi-visit.h-timestamp qapi-event.h qapi-event.h-timestamp qmp-marshal.c qmp-marshal.c-timestamp qapi-types.c qapi-types.c-timestamp qapi-visit.c qapi-visit.c-timestamp qapi-event.c qapi-event.c-timestamp qmp-introspect.h qmp-introspect.h-timestamp qmp-introspect.c qmp-introspect.c-timestamp trace/generated-tcg-tracers.h trace/generated-tcg-tracers.h-timestamp trace/generated-helpers-wrappers.h trace/generated-helpers-wrappers.h-timestamp trace/generated-helpers.h trace/generated-helpers.h-timestamp trace/generated-helpers.c trace/generated-helpers.c-timestamp module_block.h module_block.h-timestamp trace-root.h trace-root.h-timestamp util/trace.h util/trace.h-timestamp crypto/trace.h crypto/trace.h-timestamp io/trace.h io/trace.h-timestamp migration/trace.h migration/trace.h-timestamp block/trace.h block/trace.h-timestamp chardev/trace.h chardev/trace.h-timestamp hw/block/trace.h hw/block/trace.h-timestamp hw/block/dataplane/trace.h hw/block/dataplane/trace.h-timestamp hw/char/trace.h hw/char/trace.h-timestamp hw/intc/trace.h hw/intc/trace.h-timestamp hw/net/trace.h hw/net/trace.h-timestamp hw/virtio/trace.h hw/virtio/trace.h-timestamp hw/audio/trace.h hw/audio/trace.h-timestamp hw/misc/trace.h hw/misc/trace.h-timestamp hw/usb/trace.h hw/usb/trace.h-timestamp hw/scsi/trace.h hw/scsi/trace.h-timestamp hw/nvram/trace.h hw/nvram/trace.h-timestamp hw/display/trace.h hw/display/trace.h-timestamp hw/input/trace.h hw/input/trace.h-timestamp hw/timer/trace.h hw/timer/trace.h-timestamp hw/dma/trace.h hw/dma/trace.h-timestamp hw/sparc/trace.h hw/sparc/trace.h-timestamp hw/sd/trace.h hw/sd/trace.h-timestamp hw/isa/trace.h hw/isa/trace.h-timestamp hw/mem/trace.h hw/mem/trace.h-timestamp hw/i386/trace.h hw/i386/trace.h-timestamp hw/i386/xen/trace.h hw/i386/xen/trace.h-timestamp hw/9pfs/trace.h hw/9pfs/trace.h-timestamp hw/ppc/trace.h hw/ppc/trace.h-timestamp hw/pci/trace.h hw/pci/trace.h-timestamp hw/s390x/trace.h hw/s390x/trace.h-timestamp hw/vfio/trace.h hw/vfio/trace.h-timestamp hw/acpi/trace.h hw/acpi/trace.h-timestamp hw/arm/trace.h hw/arm/trace.h-timestamp hw/alpha/trace.h hw/alpha/trace.h-timestamp hw/xen/trace.h hw/xen/trace.h-timestamp hw/ide/trace.h hw/ide/trace.h-timestamp ui/trace.h ui/trace.h-timestamp audio/trace.h audio/trace.h-timestamp net/trace.h net/trace.h-timestamp target/arm/trace.h target/arm/trace.h-timestamp target/i386/trace.h target/i386/trace.h-timestamp target/mips/trace.h target/mips/trace.h-timestamp target/sparc/trace.h target/sparc/trace.h-timestamp target/s390x/trace.h target/s390x/trace.h-timestamp target/ppc/trace.h target/ppc/trace.h-timestamp qom/trace.h qom/trace.h-timestamp linux-user/trace.h linux-user/trace.h-timestamp qapi/trace.h qapi/trace.h-timestamp accel/tcg/trace.h accel/tcg/trace.h-timestamp accel/kvm/trace.h accel/kvm/trace.h-timestamp nbd/trace.h nbd/trace.h-timestamp scsi/trace.h scsi/trace.h-timestamp trace-root.c trace-root.c-timestamp util/trace.c util/trace.c-timestamp crypto/trace.c crypto/trace.c-timestamp io/trace.c io/trace.c-timestamp migration/trace.c migration/trace.c-timestamp block/trace.c block/trace.c-timestamp chardev/trace.c chardev/trace.c-timestamp hw/block/trace.c hw/block/trace.c-timestamp hw/block/dataplane/trace.c hw/block/dataplane/trace.c-timestamp hw/char/trace.c hw/char/trace.c-timestamp hw/intc/trace.c hw/intc/trace.c-timestamp hw/net/trace.c hw/net/trace.c-timestamp hw/virtio/trace.c hw/virtio/trace.c-timestamp hw/audio/trace.c hw/audio/trace.c-timestamp hw/misc/trace.c hw/misc/trace.c-timestamp hw/usb/trace.c hw/usb/trace.c-timestamp hw/scsi/trace.c hw/scsi/trace.c-timestamp hw/nvram/trace.c hw/nvram/trace.c-timestamp hw/display/trace.c hw/display/trace.c-timestamp hw/input/trace.c hw/input/trace.c-timestamp hw/timer/trace.c hw/timer/trace.c-timestamp hw/dma/trace.c hw/dma/trace.c-timestamp hw/sparc/trace.c hw/sparc/trace.c-timestamp hw/sd/trace.c hw/sd/trace.c-timestamp hw/isa/trace.c hw/isa/trace.c-timestamp hw/mem/trace.c hw/mem/trace.c-timestamp hw/i386/trace.c hw/i386/trace.c-timestamp hw/i386/xen/trace.c hw/i386/xen/trace.c-timestamp hw/9pfs/trace.c hw/9pfs/trace.c-timestamp hw/ppc/trace.c hw/ppc/trace.c-timestamp hw/pci/trace.c hw/pci/trace.c-timestamp hw/s390x/trace.c hw/s390x/trace.c-timestamp hw/vfio/trace.c hw/vfio/trace.c-timestamp hw/acpi/trace.c hw/acpi/trace.c-timestamp hw/arm/trace.c hw/arm/trace.c-timestamp hw/alpha/trace.c hw/alpha/trace.c-timestamp hw/xen/trace.c hw/xen/trace.c-timestamp hw/ide/trace.c hw/ide/trace.c-timestamp ui/trace.c ui/trace.c-timestamp audio/trace.c audio/trace.c-timestamp net/trace.c net/trace.c-timestamp target/arm/trace.c target/arm/trace.c-timestamp target/i386/trace.c target/i386/trace.c-timestamp target/mips/trace.c target/mips/trace.c-timestamp target/sparc/trace.c target/sparc/trace.c-timestamp target/s390x/trace.c target/s390x/trace.c-timestamp target/ppc/trace.c target/ppc/trace.c-timestamp qom/trace.c qom/trace.c-timestamp linux-user/trace.c linux-user/trace.c-timestamp qapi/trace.c qapi/trace.c-timestamp accel/tcg/trace.c accel/tcg/trace.c-timestamp accel/kvm/trace.c accel/kvm/trace.c-timestamp nbd/trace.c nbd/trace.c-timestamp scsi/trace.c scsi/trace.c-timestamp /tmp/qemu-test/build/trace-events-all /tmp/qemu-test/build/trace-events-all-timestamp tests/test-qapi-types.h tests/test-qapi-types.h-timestamp tests/test-qapi-visit.h tests/test-qapi-visit.h-timestamp tests/test-qmp-commands.h tests/test-qmp-commands.h-timestamp tests/test-qapi-event.h tests/test-qapi-event.h-timestamp tests/test-qmp-introspect.h tests/test-qmp-introspect.h-timestamp
rm -rf qapi-generated
rm -rf qga/qapi-generated
for d in x86_64-softmmu aarch64-softmmu pc-bios/optionrom; do \
if test -d $d; then make -C $d clean || exit 1; fi; \
rm -f $d/qemu-options.def; \
done
make[1]: Entering directory '/tmp/qemu-test/build/x86_64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-x86_64.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/tmp/qemu-test/build/x86_64-softmmu'
make[1]: Entering directory '/tmp/qemu-test/build/aarch64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-aarch64.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/tmp/qemu-test/build/aarch64-softmmu'
make[1]: Entering directory '/tmp/qemu-test/build/pc-bios/optionrom'
rm -f *.timestamp
rm -f *.o *.d *.raw *.img *.bin *~
make[1]: Leaving directory '/tmp/qemu-test/build/pc-bios/optionrom'
rm -f x86_64-softmmu/config-devices.mak aarch64-softmmu/config-devices.mak config-all-devices.mak
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install --cross-prefix=i686-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler i686-w64-mingw32-gcc
Host C compiler cc
C++ compiler i686-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -m32 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m32 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU i386
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
TCG support yes
TCG debug enabled yes
TCG interpreter no
RDMA support no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
vhost-user support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
GEN 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
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/trees.S
GEN qapi-event.h
GEN qmp-marshal.c
GEN qapi-types.c
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
GEN qapi-visit.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
GEN qapi-event.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
GEN qmp-introspect.h
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
GEN qmp-introspect.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
GEN trace/generated-tcg-tracers.h
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
GEN trace/generated-helpers-wrappers.h
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
GEN module_block.h
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
GEN tests/test-qapi-types.h
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
GEN tests/test-qapi-visit.h
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
GEN tests/test-qmp-commands.h
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
GEN tests/test-qapi-event.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
GEN tests/test-qmp-introspect.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
DEP convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
DEP dtc-parser.tab.c
GEN trace-root.h
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/livetree.c
GEN util/trace.h
DEP /tmp/qemu-test/src/dtc/fstree.c
GEN crypto/trace.h
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
GEN hw/intc/trace.h
CC libfdt/fdt_wip.o
GEN hw/net/trace.h
CC libfdt/fdt_sw.o
GEN hw/virtio/trace.h
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
GEN hw/audio/trace.h
GEN hw/misc/trace.h
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
AR libfdt/libfdt.a
i686-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
RC version.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
CC qapi-types.o
CC qmp-introspect.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qapi-visit-core.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/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/simple.o
CC trace/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/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/event_notifier-win32.o
CC util/oslib-win32.o
CC util/qemu-thread-win32.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.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/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/vm-stop.o
CC stubs/uuid.o
CC stubs/vmstate.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
GEN qemu-img-cmds.h
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/win32-aio.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/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC block/curl.o
CC block/ssh.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-luks.o
CC crypto/block-qcow.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/dns-resolver.o
CC io/channel-util.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
CC qemu-io.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-win32.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/dsoundaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/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/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/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/virtio-console.o
CC hw/char/serial-pci.o
CC hw/char/cadence_uart.o
CC hw/char/cmsdk-apb-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/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/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/tmp421.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/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/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/lan9118.o
CC hw/net/smc91c111.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/ftgmac100.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/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci_bridge.o
CC hw/pci/pci.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/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/tpm/tpm_tis.o
CC hw/timer/mss-timer.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-xhci-nec.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-network.o
CC hw/usb/dev-smartcard-reader.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/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/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/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap-win32.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_output.o
CC slirp/ip6_input.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/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
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC ui/gtk.o
CC chardev/char.o
CC chardev/char-console.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-pipe.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
CC chardev/char-win.o
CC chardev/char-win-stdio.o
CC qga/commands.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
CC qga/guest-agent-command-state.o
AS optionrom/kvmvapic.o
CC qga/main.o
CC qga/commands-win32.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
SIGN optionrom/multiboot.bin
CC qga/channel-win32.o
SIGN optionrom/linuxboot.bin
CC qga/service-win32.o
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/kvmvapic.bin
CC qga/vss-win32.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
CC qemu-img.o
LINK qemu-io.exe
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/config-target.h
GEN aarch64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands.h
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/exec.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
LINK qemu-img.exe
CC aarch64-softmmu/tcg/tcg.o
GEN x86_64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/fpu/softfloat.o
LINK qemu-ga.exe
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/disas.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/memory_mapping.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC aarch64-softmmu/dump.o
CC x86_64-softmmu/memory.o
CC aarch64-softmmu/migration/ram.o
CC x86_64-softmmu/memory_mapping.o
CC aarch64-softmmu/accel/accel.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC x86_64-softmmu/accel/accel.o
CC x86_64-softmmu/accel/stubs/kvm-stub.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC aarch64-softmmu/accel/stubs/hax-stub.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC aarch64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/accel/tcg/translator.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/display/dpcd.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.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/gpio/bcm2835_gpio.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.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 x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/misc/cbus.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/misc/exynos4210_rng.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC x86_64-softmmu/target/i386/helper.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/misc/mps2-scc.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm-stub.o
CC x86_64-softmmu/target/i386/hax-all.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC x86_64-softmmu/target/i386/hax-mem.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC x86_64-softmmu/target/i386/hax-windows.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/hw/misc/msf2-sysreg.o
CC x86_64-softmmu/trace/control-target.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
LINK x86_64-softmmu/qemu-system-x86_64.exe
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.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 aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/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 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/versatilepb.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/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-zcu102.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/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/mps2.o
CC aarch64-softmmu/hw/arm/msf2-soc.o
CC aarch64-softmmu/hw/arm/msf2-som.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
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64.exe
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-ga.exe qemu-img.exe qemu-io.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
set -e; for x in bios.bin bios-256k.bin sgabios.bin vgabios.bin vgabios-cirrus.bin vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin acpi-dsdt.aml ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom efi-e1000e.rom efi-vmxnet3.rom qemu-icon.bmp qemu_logo_no_text.svg bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin s390-ccw.img s390-netboot.img spapr-rtas.bin slof.bin skiboot.lid palcode-clipper u-boot.e500 qemu_vga.ndrv; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"; \
done
make -C po install
make[1]: Entering directory '/tmp/qemu-test/build/po'
GEN hu.mo
GEN tr.mo
GEN it.mo
GEN bg.mo
GEN fr_FR.mo
GEN de_DE.mo
GEN zh_CN.mo
for obj in hu.mo tr.mo it.mo bg.mo fr_FR.mo zh_CN.mo de_DE.mo; do \
base=`basename $obj .mo`; \
install -d /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES; \
install -m644 $obj /tmp/qemu-test/build/=destdir/tmp/qemu-test/install/share/locale/$base/LC_MESSAGES/qemu.mo; \
done
make[1]: Leaving directory '/tmp/qemu-test/build/po'
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/keymaps"
set -e; for x in da en-gb et fr fr-ch is lt modifiers no pt-br sv ar de en-us fi fr-be hr it lv nl pl ru th common de-ch es fo fr-ca hu ja mk nl-be pt sl tr bepo cz; do \
install -c -m 0644 /tmp/qemu-test/src/pc-bios/keymaps/$x "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/keymaps"; \
done
install -c -m 0644 /tmp/qemu-test/build/trace-events-all "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install/trace-events-all"
for d in x86_64-softmmu aarch64-softmmu; do \
make --no-print-directory BUILD_DIR=/tmp/qemu-test/build TARGET_DIR=$d/ -C $d install || exit 1 ; \
done
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-system-x86_64.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -d -m 0755 "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
install -c -m 0755 qemu-system-aarch64.exe "/tmp/qemu-test/build/=destdir/tmp/qemu-test/install"
rm -f *.timestamp
make -C tests/tcg clean
make[1]: Entering directory '/tmp/qemu-test/build/tests/tcg'
rm -f *.timestamp
rm -f *~ *.o test-i386.out test-i386.ref \
test-x86_64.log test-x86_64.ref qruncom test_path hello-i386 linux-test testthread sha1-i386 test-i386 test-i386-fprem test-mmap
make[1]: Leaving directory '/tmp/qemu-test/build/tests/tcg'
rm -rf tests/check-qdict.exe tests/test-char.exe tests/check-qnum.exe tests/check-qstring.exe tests/check-qlist.exe tests/check-qnull.exe tests/check-qjson.exe tests/check-qlit.exe tests/test-qobject-output-visitor.exe tests/test-clone-visitor.exe tests/test-qobject-input-visitor.exe tests/test-qmp-commands.exe tests/test-string-input-visitor.exe tests/test-string-output-visitor.exe tests/test-qmp-event.exe tests/test-opts-visitor.exe tests/test-coroutine.exe tests/test-visitor-serialization.exe tests/test-iov.exe tests/test-aio.exe tests/test-aio-multithread.exe tests/test-throttle.exe tests/test-thread-pool.exe tests/test-hbitmap.exe tests/test-blockjob.exe tests/test-blockjob-txn.exe tests/test-x86-cpuid.exe tests/test-xbzrle.exe tests/test-cutils.exe tests/test-shift128.exe tests/test-mul64.exe tests/test-int128.exe tests/rcutorture.exe tests/test-rcu-list.exe tests/test-qdist.exe tests/test-qht.exe tests/test-qht-par.exe tests/test-bitops.exe tests/test-bitcnt.exe tests/test-qdev-global-props.exe tests/check-qom-interface.exe tests/check-qom-proplist.exe tests/test-qemu-opts.exe tests/test-keyval.exe tests/test-write-threshold.exe tests/test-crypto-hash.exe tests/test-crypto-hmac.exe tests/test-crypto-cipher.exe tests/test-crypto-secret.exe tests/test-crypto-tlscredsx509.exe tests/test-crypto-tlssession.exe tests/test-timed-average.exe tests/test-io-task.exe tests/test-io-channel-socket.exe tests/test-io-channel-file.exe tests/test-io-channel-tls.exe tests/test-io-channel-command.exe tests/test-io-channel-buffer.exe tests/test-base64.exe tests/test-crypto-pbkdf.exe tests/test-crypto-ivgen.exe tests/test-crypto-afsplit.exe tests/test-crypto-xts.exe tests/test-crypto-block.exe tests/test-logging.exe tests/test-replication.exe tests/test-bufferiszero.exe tests/test-uuid.exe tests/ptimer-test.exe tests/test-qapi-util.exe tests/*.o
rm -rf tests/ac97-test.exe tests/ahci-test.exe tests/bios-tables-test.exe tests/boot-order-test.exe tests/boot-serial-test.exe tests/device-introspect-test.exe tests/display-vga-test.exe tests/drive_del-test.exe tests/ds1338-test.exe tests/e1000-test.exe tests/e1000e-test.exe tests/eepro100-test.exe tests/endianness-test.exe tests/es1370-test.exe tests/fdc-test.exe tests/fw_cfg-test.exe tests/hd-geo-test.exe tests/i440fx-test.exe tests/i82801b11-test.exe tests/ide-test.exe tests/intel-hda-test.exe tests/ioh3420-test.exe tests/ipmi-bt-test.exe tests/ipmi-kcs-test.exe tests/ipoctal232-test.exe tests/m25p80-test.exe tests/megasas-test.exe tests/ne2000-test.exe tests/numa-test.exe tests/nvme-test.exe tests/pc-cpu-test.exe tests/pcnet-test.exe tests/pnv-xscom-test.exe tests/postcopy-test.exe tests/prom-env-test.exe tests/pvpanic-test.exe tests/pxe-test.exe tests/q35-test.exe tests/qmp-test.exe tests/qom-test.exe tests/rtas-test.exe tests/rtc-test.exe tests/rtl8139-test.exe tests/spapr-phb-test.exe tests/tco-test.exe tests/test-arm-mptimer.exe tests/test-hmp.exe tests/test-netfilter.exe tests/test-x86-cpuid-compat.exe tests/tmp105-test.exe tests/tpci200-test.exe tests/usb-hcd-ehci-test.exe tests/usb-hcd-ohci-test.exe tests/usb-hcd-uhci-test.exe tests/usb-hcd-xhci-test.exe tests/virtio-balloon-test.exe tests/virtio-blk-test.exe tests/virtio-console-test.exe tests/virtio-net-test.exe tests/virtio-rng-test.exe tests/virtio-scsi-test.exe tests/virtio-serial-test.exe tests/vmgenid-test.exe tests/vmxnet3-test.exe tests/wdt_ib700-test.exe
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
rm -f *.msi
find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f qemu-ga qemu-img.exe qemu-io.exe qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod scsi/*.pod
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f trace/generated-tracers-dtrace.dtrace*
rm -f trace/generated-tracers-dtrace.h*
rm -f qemu-version.h qemu-version.h-timestamp config-host.h config-host.h-timestamp qemu-options.def qemu-options.def-timestamp qmp-commands.h qmp-commands.h-timestamp qapi-types.h qapi-types.h-timestamp qapi-visit.h qapi-visit.h-timestamp qapi-event.h qapi-event.h-timestamp qmp-marshal.c qmp-marshal.c-timestamp qapi-types.c qapi-types.c-timestamp qapi-visit.c qapi-visit.c-timestamp qapi-event.c qapi-event.c-timestamp qmp-introspect.h qmp-introspect.h-timestamp qmp-introspect.c qmp-introspect.c-timestamp trace/generated-tcg-tracers.h trace/generated-tcg-tracers.h-timestamp trace/generated-helpers-wrappers.h trace/generated-helpers-wrappers.h-timestamp trace/generated-helpers.h trace/generated-helpers.h-timestamp trace/generated-helpers.c trace/generated-helpers.c-timestamp module_block.h module_block.h-timestamp trace-root.h trace-root.h-timestamp util/trace.h util/trace.h-timestamp crypto/trace.h crypto/trace.h-timestamp io/trace.h io/trace.h-timestamp migration/trace.h migration/trace.h-timestamp block/trace.h block/trace.h-timestamp chardev/trace.h chardev/trace.h-timestamp hw/block/trace.h hw/block/trace.h-timestamp hw/block/dataplane/trace.h hw/block/dataplane/trace.h-timestamp hw/char/trace.h hw/char/trace.h-timestamp hw/intc/trace.h hw/intc/trace.h-timestamp hw/net/trace.h hw/net/trace.h-timestamp hw/virtio/trace.h hw/virtio/trace.h-timestamp hw/audio/trace.h hw/audio/trace.h-timestamp hw/misc/trace.h hw/misc/trace.h-timestamp hw/usb/trace.h hw/usb/trace.h-timestamp hw/scsi/trace.h hw/scsi/trace.h-timestamp hw/nvram/trace.h hw/nvram/trace.h-timestamp hw/display/trace.h hw/display/trace.h-timestamp hw/input/trace.h hw/input/trace.h-timestamp hw/timer/trace.h hw/timer/trace.h-timestamp hw/dma/trace.h hw/dma/trace.h-timestamp hw/sparc/trace.h hw/sparc/trace.h-timestamp hw/sd/trace.h hw/sd/trace.h-timestamp hw/isa/trace.h hw/isa/trace.h-timestamp hw/mem/trace.h hw/mem/trace.h-timestamp hw/i386/trace.h hw/i386/trace.h-timestamp hw/i386/xen/trace.h hw/i386/xen/trace.h-timestamp hw/9pfs/trace.h hw/9pfs/trace.h-timestamp hw/ppc/trace.h hw/ppc/trace.h-timestamp hw/pci/trace.h hw/pci/trace.h-timestamp hw/s390x/trace.h hw/s390x/trace.h-timestamp hw/vfio/trace.h hw/vfio/trace.h-timestamp hw/acpi/trace.h hw/acpi/trace.h-timestamp hw/arm/trace.h hw/arm/trace.h-timestamp hw/alpha/trace.h hw/alpha/trace.h-timestamp hw/xen/trace.h hw/xen/trace.h-timestamp hw/ide/trace.h hw/ide/trace.h-timestamp ui/trace.h ui/trace.h-timestamp audio/trace.h audio/trace.h-timestamp net/trace.h net/trace.h-timestamp target/arm/trace.h target/arm/trace.h-timestamp target/i386/trace.h target/i386/trace.h-timestamp target/mips/trace.h target/mips/trace.h-timestamp target/sparc/trace.h target/sparc/trace.h-timestamp target/s390x/trace.h target/s390x/trace.h-timestamp target/ppc/trace.h target/ppc/trace.h-timestamp qom/trace.h qom/trace.h-timestamp linux-user/trace.h linux-user/trace.h-timestamp qapi/trace.h qapi/trace.h-timestamp accel/tcg/trace.h accel/tcg/trace.h-timestamp accel/kvm/trace.h accel/kvm/trace.h-timestamp nbd/trace.h nbd/trace.h-timestamp scsi/trace.h scsi/trace.h-timestamp trace-root.c trace-root.c-timestamp util/trace.c util/trace.c-timestamp crypto/trace.c crypto/trace.c-timestamp io/trace.c io/trace.c-timestamp migration/trace.c migration/trace.c-timestamp block/trace.c block/trace.c-timestamp chardev/trace.c chardev/trace.c-timestamp hw/block/trace.c hw/block/trace.c-timestamp hw/block/dataplane/trace.c hw/block/dataplane/trace.c-timestamp hw/char/trace.c hw/char/trace.c-timestamp hw/intc/trace.c hw/intc/trace.c-timestamp hw/net/trace.c hw/net/trace.c-timestamp hw/virtio/trace.c hw/virtio/trace.c-timestamp hw/audio/trace.c hw/audio/trace.c-timestamp hw/misc/trace.c hw/misc/trace.c-timestamp hw/usb/trace.c hw/usb/trace.c-timestamp hw/scsi/trace.c hw/scsi/trace.c-timestamp hw/nvram/trace.c hw/nvram/trace.c-timestamp hw/display/trace.c hw/display/trace.c-timestamp hw/input/trace.c hw/input/trace.c-timestamp hw/timer/trace.c hw/timer/trace.c-timestamp hw/dma/trace.c hw/dma/trace.c-timestamp hw/sparc/trace.c hw/sparc/trace.c-timestamp hw/sd/trace.c hw/sd/trace.c-timestamp hw/isa/trace.c hw/isa/trace.c-timestamp hw/mem/trace.c hw/mem/trace.c-timestamp hw/i386/trace.c hw/i386/trace.c-timestamp hw/i386/xen/trace.c hw/i386/xen/trace.c-timestamp hw/9pfs/trace.c hw/9pfs/trace.c-timestamp hw/ppc/trace.c hw/ppc/trace.c-timestamp hw/pci/trace.c hw/pci/trace.c-timestamp hw/s390x/trace.c hw/s390x/trace.c-timestamp hw/vfio/trace.c hw/vfio/trace.c-timestamp hw/acpi/trace.c hw/acpi/trace.c-timestamp hw/arm/trace.c hw/arm/trace.c-timestamp hw/alpha/trace.c hw/alpha/trace.c-timestamp hw/xen/trace.c hw/xen/trace.c-timestamp hw/ide/trace.c hw/ide/trace.c-timestamp ui/trace.c ui/trace.c-timestamp audio/trace.c audio/trace.c-timestamp net/trace.c net/trace.c-timestamp target/arm/trace.c target/arm/trace.c-timestamp target/i386/trace.c target/i386/trace.c-timestamp target/mips/trace.c target/mips/trace.c-timestamp target/sparc/trace.c target/sparc/trace.c-timestamp target/s390x/trace.c target/s390x/trace.c-timestamp target/ppc/trace.c target/ppc/trace.c-timestamp qom/trace.c qom/trace.c-timestamp linux-user/trace.c linux-user/trace.c-timestamp qapi/trace.c qapi/trace.c-timestamp accel/tcg/trace.c accel/tcg/trace.c-timestamp accel/kvm/trace.c accel/kvm/trace.c-timestamp nbd/trace.c nbd/trace.c-timestamp scsi/trace.c scsi/trace.c-timestamp /tmp/qemu-test/build/trace-events-all /tmp/qemu-test/build/trace-events-all-timestamp tests/test-qapi-types.h tests/test-qapi-types.h-timestamp tests/test-qapi-visit.h tests/test-qapi-visit.h-timestamp tests/test-qmp-commands.h tests/test-qmp-commands.h-timestamp tests/test-qapi-event.h tests/test-qapi-event.h-timestamp tests/test-qmp-introspect.h tests/test-qmp-introspect.h-timestamp
rm -rf qapi-generated
rm -rf qga/qapi-generated
for d in x86_64-softmmu aarch64-softmmu pc-bios/optionrom; do \
if test -d $d; then make -C $d clean || exit 1; fi; \
rm -f $d/qemu-options.def; \
done
make[1]: Entering directory '/tmp/qemu-test/build/x86_64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-x86_64.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/tmp/qemu-test/build/x86_64-softmmu'
make[1]: Entering directory '/tmp/qemu-test/build/aarch64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-aarch64.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/tmp/qemu-test/build/aarch64-softmmu'
make[1]: Entering directory '/tmp/qemu-test/build/pc-bios/optionrom'
rm -f *.timestamp
rm -f *.o *.d *.raw *.img *.bin *~
make[1]: Leaving directory '/tmp/qemu-test/build/pc-bios/optionrom'
rm -f x86_64-softmmu/config-devices.mak aarch64-softmmu/config-devices.mak config-all-devices.mak
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
real 6m19.724s
user 0m1.773s
sys 0m2.086s
BUILD fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
GEN docker-src.2017-10-05-13.27.01.3706/qemu.tar
COPY RUNNER
RUN test-block in qemu:fedora
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
gettext-0.19.8.1-3.fc25.x86_64
git-2.9.5-1.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.2-387.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64
Environment variables:
PACKAGES=ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel gcc gcc-c++ clang make perl which bc findutils libaio-devel nettle-devel mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 mingw32-bzip2 mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 mingw64-bzip2
HOSTNAME=f06bf694ab61
TERM=xterm
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
FEATURES=mingw clang pyyaml dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --prefix=/tmp/qemu-test/install --target-list=x86_64-softmmu
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install/share/qemu
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/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 c++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong
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
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
SDL support yes (1.2.15)
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 yes (3.3)
nettle kdf yes
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
Multipath 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 yes
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
RDMA support no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qapi-event.h
GEN qapi-types.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-visit.h
GEN qmp-marshal.c
GEN x86_64-softmmu/config-devices.mak
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN trace-root.h
GEN tests/test-qmp-introspect.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.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 qga/qapi-generated/qga-qapi-visit.h
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/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/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/cacheinfo.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/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/linux-aio.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/uuid.o
CC stubs/trace-control.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/linux-aio.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/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC scsi/utils.o
CC nbd/common.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC 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-watch.o
CC io/channel-tls.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.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 scsi/qemu-pr-helper.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/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/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/pflash_cfi01.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/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/debugcon.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/cpu/core.o
CC hw/display/cirrus_vga.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/dma/i8257.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.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/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/pckbd.o
CC hw/input/ps2.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/ioapic_common.o
CC hw/ipack/ipack.o
CC hw/intc/intc.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/nvdimm.o
CC hw/mem/pc-dimm.o
CC hw/misc/applesmc.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/edu.o
CC hw/misc/unimp.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_core.o
CC hw/net/e1000e.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/ne2000-isa.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/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.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/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.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-xhci.o
CC hw/usb/hcd-xhci-nec.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/virtio/vhost-stub.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/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/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/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/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
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/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
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
CC qga/guest-agent-command-state.o
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
CC qga/main.o
CC qga/commands-posix.o
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/kvmvapic.bin
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
AR libqemuutil.a
CC qemu-img.o
LINK qemu-io
LINK scsi/qemu-pr-helper
LINK qemu-bridge-helper
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-ga
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/disas.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/tcg/tcg-common.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
LINK qemu-img
CC x86_64-softmmu/gdbstub.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 x86_64-softmmu/memory.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/accel/accel.o
CC x86_64-softmmu/accel/kvm/kvm-all.o
CC x86_64-softmmu/accel/stubs/hax-stub.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/tcg-runtime.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/accel/tcg/translator.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC 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 x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/vfio/common.o
CC x86_64-softmmu/hw/vfio/pci.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC x86_64-softmmu/hw/vfio/platform.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC 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 x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC x86_64-softmmu/target/i386/helper.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/cc_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/int_helper.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm.o
CC x86_64-softmmu/target/i386/hyperv.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC x86_64-softmmu/gdbstub-xml.o
CC x86_64-softmmu/trace/generated-helpers.o
LINK x86_64-softmmu/qemu-system-x86_64
QEMU -- "/tmp/qemu-test/build/x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
QEMU_IMG -- "/tmp/qemu-test/build/qemu-img"
QEMU_IO -- "/tmp/qemu-test/build/qemu-io" --cache writeback -f raw
QEMU_NBD -- "/tmp/qemu-test/build/qemu-nbd"
IMGFMT -- raw
IMGPROTO -- file
PLATFORM -- Linux/x86_64 f06bf694ab61 4.11.10-300.fc26.x86_64
TEST_DIR -- /tmp/qemu-test
SOCKET_SCM_HELPER -- /tmp/qemu-test/build/tests/qemu-iotests/socket_scm_helper
001
002
004
005
008
009
010
011
012
017 [not run] not suitable for this image format: raw
018 [not run] not suitable for this image format: raw
019 [not run] not suitable for this image format: raw
020 [not run] not suitable for this image format: raw
021
024 [not run] not suitable for this image format: raw
025
027 [not run] not suitable for this image format: raw
028 [not run] not suitable for this image format: raw
029 [not run] not suitable for this image format: raw
031 [not run] not suitable for this image format: raw
032
033
034 [not run] not suitable for this image format: raw
035 [not run] not suitable for this image format: raw
036 [not run] not suitable for this image format: raw
037 [not run] not suitable for this image format: raw
038 [not run] not suitable for this image format: raw
039 [not run] not suitable for this image format: raw
042 [not run] not suitable for this image format: raw
045
046 [not run] not suitable for this image format: raw
047 [not run] not suitable for this image format: raw
048
050 [not run] not suitable for this image format: raw
052
053 [not run] not suitable for this image format: raw
054 [not run] not suitable for this image format: raw
058 [not run] not suitable for this image format: raw
059 [not run] not suitable for this image format: raw
060 [not run] not suitable for this image format: raw
062 [not run] not suitable for this image format: raw
063
064 [not run] not suitable for this image format: raw
065 [not run] not suitable for this image format: raw
066 [not run] not suitable for this image format: raw
067 [not run] not suitable for this image format: raw
068 [not run] not suitable for this image format: raw
069 [not run] not suitable for this image format: raw
070 [not run] not suitable for this image format: raw
071 [not run] not suitable for this image format: raw
072 [not run] not suitable for this image format: raw
073 [not run] not suitable for this image format: raw
074 [not run] not suitable for this image format: raw
075 [not run] not suitable for this image format: raw
077 - output mismatch (see 077.out.bad)
--- /tmp/qemu-test/src/tests/qemu-iotests/077.out 2017-10-05 17:09:44.000000000 +0000
+++ /tmp/qemu-test/build/tests/qemu-iotests/077.out.bad 2017-10-05 17:30:12.106348730 +0000
@@ -40,9 +40,9 @@
wrote XXX/XXX bytes at offset XXX
XXX bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
blkdebug: Resuming request 'B'
+blkdebug: Resuming request 'A'
wrote XXX/XXX bytes at offset XXX
XXX bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-blkdebug: Resuming request 'A'
wrote XXX/XXX bytes at offset XXX
XXX bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote XXX/XXX bytes at offset XXX
078 [not run] not suitable for this image format: raw
081
082 [not run] not suitable for this image format: raw
084 [not run] not suitable for this image format: raw
086
087 [not run] not suitable for this image format: raw
088 [not run] not suitable for this image format: raw
089 [not run] not suitable for this image format: raw
090 [not run] not suitable for this image format: raw
092 [not run] not suitable for this image format: raw
094 [not run] not suitable for this image protocol: file
095 [not run] not suitable for this image format: raw
096 [not run] not suitable for this image format: raw
098 [not run] not suitable for this image format: raw
099 [not run] not suitable for this image format: raw
101
102 [not run] not suitable for this image format: raw
103 [not run] not suitable for this image format: raw
105 [not run] not suitable for this image format: raw
106
107 [not run] not suitable for this image format: raw
108 [not run] not suitable for this image format: raw
110 [not run] not suitable for this image format: raw
111 [not run] not suitable for this image format: raw
113 [not run] not suitable for this image format: raw
114 [not run] not suitable for this image format: raw
116 [not run] not suitable for this image format: raw
119 [not run] not suitable for this image protocol: file
120
123 [not run] not suitable for this image protocol: file
128 [not run] root privileges required to run dmsetup
129 [not run] not suitable for this image format: raw
130 [not run] not suitable for this image format: raw
131 [not run] not suitable for this image format: raw
132
133 [not run] not suitable for this image format: raw
134 [not run] not suitable for this image format: raw
138 [not run] not suitable for this image format: raw
139 [not run] not suitable for this image format: raw
140
141 [not run] not suitable for this image format: raw
143
144 [not run] not suitable for this image format: raw
145
146 [not run] not suitable for this image format: raw
148
150
152
153 [not run] not suitable for this image format: raw
154 [not run] not suitable for this image format: raw
156 [not run] not suitable for this image format: raw
158 [not run] not suitable for this image format: raw
159
160
162 [not run] ssh support required
163
165 [not run] not suitable for this image format: raw
170
171
175
177 [not run] not suitable for this image format: raw
179 [not run] not suitable for this image format: raw
182 [not run] not suitable for this image format: raw
184 [not run] not suitable for this image format: raw
188 [not run] not suitable for this image format: raw
190 [not run] not suitable for this image format: raw
192
194
195 [not run] not suitable for this image format: raw
Not run: 017 018 019 020 024 027 028 029 031 034 035 036 037 038 039 042 046 047 050 053 054 058 059 060 062 064 065 066 067 068 069 070 071 072 073 074 075 078 082 084 087 088 089 090 092 094 095 096 098 099 102 103 105 107 108 110 111 113 114 116 119 123 128 129 130 131 133 134 138 139 141 144 146 153 154 156 158 162 165 177 179 182 184 188 190 195
Failures: 077
Failed 1 of 38 tests
Test failed: iotests raw
Traceback (most recent call last):
File "./tests/docker/docker.py", line 385, in <module>
sys.exit(main())
File "./tests/docker/docker.py", line 382, in main
return args.cmdobj.run(args, argv)
File "./tests/docker/docker.py", line 239, in run
return Docker().run(argv, args.keep, quiet=args.quiet)
File "./tests/docker/docker.py", line 207, in run
quiet=quiet)
File "./tests/docker/docker.py", line 125, in _do_check
return subprocess.check_call(self._command + cmd, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=6684b03ea9f211e7891152540069c830', '-u', '0', '-t', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-0rxyclfp/src/docker-src.2017-10-05-13.27.01.3706:/var/tmp/qemu:z,ro', 'qemu:fedora', '/var/tmp/qemu/run', 'test-block']' returned non-zero exit status 1
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-0rxyclfp/src'
make: *** [tests/docker/Makefile.include:161: docker-run-test-block@fedora] Error 2
real 4m16.439s
user 0m1.626s
sys 0m1.966s
=== 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] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model() Igor Mammedov
@ 2017-10-05 18:35 ` Greg Kurz
2017-10-06 3:16 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Greg Kurz @ 2017-10-05 18:35 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Thu, 5 Oct 2017 18:24:38 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> ppc_cpu_parse_features() is doing practically the same thing as
> generic cpu_parse_cpu_model(). So remove duplicated impl. and
> reuse generic one.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> include/hw/ppc/ppc.h | 2 --
> hw/ppc/ppc.c | 25 -------------------------
> hw/ppc/spapr_cpu_core.c | 9 ++++-----
> 3 files changed, 4 insertions(+), 32 deletions(-)
>
> diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h
> index 4e7fe11..ff0ac30 100644
> --- a/include/hw/ppc/ppc.h
> +++ b/include/hw/ppc/ppc.h
> @@ -105,6 +105,4 @@ enum {
>
> /* ppc_booke.c */
> void ppc_booke_timers_init(PowerPCCPU *cpu, uint32_t freq, uint32_t flags);
> -
> -void ppc_cpu_parse_features(const char *cpu_model);
> #endif
> diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
> index 05da316..7ec35de 100644
> --- a/hw/ppc/ppc.c
> +++ b/hw/ppc/ppc.c
> @@ -1359,28 +1359,3 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val)
> break;
> }
> }
> -
> -void ppc_cpu_parse_features(const char *cpu_model)
> -{
> - CPUClass *cc;
> - ObjectClass *oc;
> - const char *typename;
> - gchar **model_pieces;
> -
> - model_pieces = g_strsplit(cpu_model, ",", 2);
> - if (!model_pieces[0]) {
> - error_report("Invalid/empty CPU model name");
> - exit(1);
> - }
> -
> - oc = cpu_class_by_name(TYPE_POWERPC_CPU, model_pieces[0]);
> - if (oc == NULL) {
> - error_report("Unable to find CPU definition: %s", model_pieces[0]);
> - exit(1);
> - }
> -
> - typename = object_class_get_name(oc);
> - cc = CPU_CLASS(oc);
> - cc->parse_features(typename, model_pieces[1], &error_fatal);
> - g_strfreev(model_pieces);
> -}
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3e20b1d..3dea5ff 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -34,6 +34,7 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> * before passing it on to the cpu level parser.
> */
> gchar **inpieces;
> + gchar *newprops;
> int i, j;
> gchar *compat_str = NULL;
>
> @@ -58,17 +59,15 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
>
> if (compat_str) {
> char *val = compat_str + strlen("compat=");
> - gchar *newprops = g_strjoinv(",", inpieces);
>
> object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> &error_fatal);
>
> - ppc_cpu_parse_features(newprops);
> - g_free(newprops);
> - } else {
> - ppc_cpu_parse_features(MACHINE(spapr)->cpu_model);
> }
>
> + newprops = g_strjoinv(",", inpieces);
> + cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> + g_free(newprops);
> g_strfreev(inpieces);
> }
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr() Igor Mammedov
@ 2017-10-05 19:05 ` Greg Kurz
2017-10-06 8:40 ` Igor Mammedov
2017-10-06 3:54 ` [Qemu-devel] " David Gibson
1 sibling, 1 reply; 81+ messages in thread
From: Greg Kurz @ 2017-10-05 19:05 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Hervé Poussineau, David Gibson
On Thu, 5 Oct 2017 18:24:39 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> there is a dedicated callback CPUClass::parse_features
> which purpose is to convert -cpu features into a set of
> global properties AND deal with compat/legacy features
> that couldn't be directly translated into CPU's properties.
>
> Create ppc variant of it (ppc_cpu_parse_featurestr) and
> move 'compat=val' handling from spapr_cpu_core.c into it.
> That removes a dependency of board/core code on cpu_model
> parsing and would let to reuse common -cpu parsing
> introduced by 6063d4c0
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/ppc/spapr.h | 1 -
> target/ppc/cpu-qom.h | 1 +
> hw/ppc/spapr.c | 2 +-
> hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 60 insertions(+), 52 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index c1b365f..8ca4f94 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> uint32_t count, uint32_t index);
> void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> uint32_t count, uint32_t index);
> -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> Error **errp);
> diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> index d0cf6ca..429b47f 100644
> --- a/target/ppc/cpu-qom.h
> +++ b/target/ppc/cpu-qom.h
> @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> DeviceRealize parent_realize;
> DeviceUnrealize parent_unrealize;
> void (*parent_reset)(CPUState *cpu);
> + void (*parent_parse_features)(const char *type, char *str, Error **errp);
>
> uint32_t pvr;
> bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index ff87f15..01b3012 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> }
>
> - spapr_cpu_parse_features(spapr);
> + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
>
> spapr_set_vsmt_mode(spapr, &error_fatal);
>
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3dea5ff..427d47f 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -21,56 +21,6 @@
> #include "sysemu/hw_accel.h"
> #include "qemu/error-report.h"
>
> -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> -{
> - /*
> - * Backwards compatibility hack:
> - *
> - * CPUs had a "compat=" property which didn't make sense for
> - * anything except pseries. It was replaced by "max-cpu-compat"
> - * machine option. This supports old command lines like
> - * -cpu POWER8,compat=power7
> - * By stripping the compat option and applying it to the machine
> - * before passing it on to the cpu level parser.
> - */
> - gchar **inpieces;
> - gchar *newprops;
> - int i, j;
> - gchar *compat_str = NULL;
> -
> - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> -
> - /* inpieces[0] is the actual model string */
> - i = 1;
> - j = 1;
> - while (inpieces[i]) {
> - if (g_str_has_prefix(inpieces[i], "compat=")) {
> - /* in case of multiple compat= options */
> - g_free(compat_str);
> - compat_str = inpieces[i];
> - } else {
> - j++;
> - }
> -
> - i++;
> - /* Excise compat options from list */
> - inpieces[j] = inpieces[i];
> - }
> -
> - if (compat_str) {
> - char *val = compat_str + strlen("compat=");
> -
> - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> - &error_fatal);
> -
> - }
> -
> - newprops = g_strjoinv(",", inpieces);
> - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> - g_free(newprops);
> - g_strfreev(inpieces);
> -}
> -
> static void spapr_cpu_reset(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> index c6399a3..5ee91e8 100644
> --- a/target/ppc/translate_init.c
> +++ b/target/ppc/translate_init.c
> @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
>
> return NULL;
> }
Maybe add en empty line here ?
> +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> + Error **errp)
> +{
> + const PowerPCCPUClass *pcc;
> + char *compat_str = NULL;
> + char *s = features;
> + char **inpieces;
> + Error *local_err = NULL;
> + int i;
> +
> + if (!features) {
> + return;
> + }
> +
> + /*
> + * Backwards compatibility hack:
> + *
> + * CPUs had a "compat=" property which didn't make sense for
> + * anything except pseries. It was replaced by "max-cpu-compat"
> + * machine option. This supports old command lines like
> + * -cpu POWER8,compat=power7
> + * By stripping the compat option and applying it to the machine
> + * before passing it on to the cpu level parser.
> + */
> + inpieces = g_strsplit(features, ",", 0);
> + *s = '\0';
> + for (i = 0; inpieces[i]; i++) {
> + if (g_str_has_prefix(inpieces[i], "compat=")) {
> + compat_str = inpieces[i];
> + continue;
> + }
> + if ((i != 0) && (s != features)) {
> + s = g_stpcpy(s, ",");
> + }
> + s = g_stpcpy(s, inpieces[i]);
> + }
> +
> + if (compat_str) {
> + Object *machine = qdev_get_machine();
> + if (machine) {
Can qdev_get_machine() return NULL really ? Shouldn't this be
object_dynamic_cast(machine, TYPE_MACHINE) instead, in case
we're running a user-only emulator ?
> + char *v = compat_str + strlen("compat=");
> + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> + } else {
> + error_setg(&local_err, "Not supported property: %s", compat_str);
> + }
> + }
> + g_strfreev(inpieces);
> + if (local_err) {
> + error_propagate(errp, local_err);
> + return;
> + }
> +
> + /* do property processing with generic handler */
> + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> + pcc->parent_parse_features(typename, features, errp);
> +}
>
> const char *ppc_cpu_lookup_alias(const char *alias)
> {
> @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> cc->reset = ppc_cpu_reset;
>
> cc->class_by_name = ppc_cpu_class_by_name;
> + pcc->parent_parse_features = cc->parse_features;
> + cc->parse_features = ppc_cpu_parse_featurestr;
> cc->has_work = ppc_cpu_has_work;
> cc->do_interrupt = ppc_cpu_do_interrupt;
> cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically
2017-10-05 16:24 ` [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically Igor Mammedov
@ 2017-10-05 20:31 ` Greg Kurz
2017-10-06 3:58 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Greg Kurz @ 2017-10-05 20:31 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Thu, 5 Oct 2017 18:24:40 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> spapr core type definition doesn't have any fields that
> require it to be defined at runtime. So replace code
> that fills in TypeInfo at runtime with static TypeInfo
> array that does the same at complie time.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> include/hw/ppc/spapr_cpu_core.h | 2 +
> hw/ppc/spapr_cpu_core.c | 85 +++++++++++++----------------------------
> 2 files changed, 29 insertions(+), 58 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 93051e9..66dcf52 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -21,6 +21,8 @@
> #define SPAPR_CPU_CORE_GET_CLASS(obj) \
> OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE)
>
> +#define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE
> +
> typedef struct sPAPRCPUCore {
> /*< private >*/
> CPUCore parent_obj;
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 427d47f..01f4ec8 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -217,36 +217,6 @@ err:
> error_propagate(errp, local_err);
> }
>
> -static const char *spapr_core_models[] = {
> - /* 970 */
> - "970_v2.2",
> -
> - /* 970MP variants */
> - "970mp_v1.0",
> - "970mp_v1.1",
> -
> - /* POWER5+ */
> - "power5+_v2.1",
> -
> - /* POWER7 */
> - "power7_v2.3",
> -
> - /* POWER7+ */
> - "power7+_v2.1",
> -
> - /* POWER8 */
> - "power8_v2.0",
> -
> - /* POWER8E */
> - "power8e_v2.1",
> -
> - /* POWER8NVL */
> - "power8nvl_v1.0",
> -
> - /* POWER9 */
> - "power9_v1.0",
> -};
> -
> static Property spapr_cpu_core_properties[] = {
> DEFINE_PROP_INT32("node-id", sPAPRCPUCore, node_id, CPU_UNSET_NUMA_NODE_ID),
> DEFINE_PROP_END_OF_LIST()
> @@ -264,33 +234,32 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> g_assert(scc->cpu_class);
> }
>
> -static const TypeInfo spapr_cpu_core_type_info = {
> - .name = TYPE_SPAPR_CPU_CORE,
> - .parent = TYPE_CPU_CORE,
> - .abstract = true,
> - .instance_size = sizeof(sPAPRCPUCore),
> - .class_size = sizeof(sPAPRCPUCoreClass),
> -};
> -
> -static void spapr_cpu_core_register_types(void)
> -{
> - int i;
> -
> - type_register_static(&spapr_cpu_core_type_info);
> -
> - for (i = 0; i < ARRAY_SIZE(spapr_core_models); i++) {
> - TypeInfo type_info = {
> - .parent = TYPE_SPAPR_CPU_CORE,
> - .instance_size = sizeof(sPAPRCPUCore),
> - .class_init = spapr_cpu_core_class_init,
> - .class_data = (void *) spapr_core_models[i],
> - };
> -
> - type_info.name = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE,
> - spapr_core_models[i]);
> - type_register(&type_info);
> - g_free((void *)type_info.name);
> +#define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
> + { \
> + .parent = TYPE_SPAPR_CPU_CORE, \
> + .class_data = (void *) cpu_model, \
> + .class_init = spapr_cpu_core_class_init, \
> + .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
> }
> -}
>
> -type_init(spapr_cpu_core_register_types)
> +static const TypeInfo spapr_cpu_core_type_infos[] = {
> + {
> + .name = TYPE_SPAPR_CPU_CORE,
> + .parent = TYPE_CPU_CORE,
> + .abstract = true,
> + .instance_size = sizeof(sPAPRCPUCore),
> + .class_size = sizeof(sPAPRCPUCoreClass),
> + },
> + DEFINE_SPAPR_CPU_CORE_TYPE("970_v2.2"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power5+_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power7_v2.3"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power7+_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8_v2.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> +};
> +
> +DEFINE_TYPES(spapr_cpu_core_type_infos)
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly
2017-10-05 16:24 ` [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly Igor Mammedov
@ 2017-10-05 20:47 ` Greg Kurz
2017-10-06 4:01 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Greg Kurz @ 2017-10-05 20:47 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Thu, 5 Oct 2017 18:24:41 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> replace sPAPRCPUCoreClass::cpu_class with cpu type name
> since it were needed just to get that at points it were
> accessed.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> include/hw/ppc/spapr_cpu_core.h | 2 +-
> hw/ppc/spapr.c | 6 ++----
> hw/ppc/spapr_cpu_core.c | 13 +++++--------
> target/ppc/kvm.c | 2 +-
> 4 files changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 66dcf52..264ce68 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -34,7 +34,7 @@ typedef struct sPAPRCPUCore {
>
> typedef struct sPAPRCPUCoreClass {
> DeviceClass parent_class;
> - ObjectClass *cpu_class;
> + const char *cpu_type;
> } sPAPRCPUCoreClass;
>
> char *spapr_get_cpu_core_type(const char *model);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 01b3012..ad7afd6 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3142,8 +3142,7 @@ void spapr_core_release(DeviceState *dev)
> if (smc->pre_2_10_has_unused_icps) {
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> int i;
>
> for (i = 0; i < cc->nr_threads; i++) {
> @@ -3239,8 +3238,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
>
> if (smc->pre_2_10_has_unused_icps) {
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> int i;
>
> for (i = 0; i < cc->nr_threads; i++) {
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 01f4ec8..8e13e52 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -90,8 +90,7 @@ static void spapr_cpu_core_unrealizefn(DeviceState *dev, Error **errp)
> {
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> CPUCore *cc = CPU_CORE(dev);
> int i;
>
> @@ -152,8 +151,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
> CPUCore *cc = CPU_CORE(OBJECT(dev));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> Error *local_err = NULL;
> void *obj;
> int i, j;
> @@ -172,7 +170,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
>
> obj = sc->threads + i * size;
>
> - object_initialize(obj, size, typename);
> + object_initialize(obj, size, scc->cpu_type);
> cs = CPU(obj);
> cpu = POWERPC_CPU(cs);
> cs->cpu_index = cc->core_id + i;
> @@ -230,14 +228,13 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> dc->realize = spapr_cpu_core_realize;
> dc->unrealize = spapr_cpu_core_unrealizefn;
> dc->props = spapr_cpu_core_properties;
> - scc->cpu_class = cpu_class_by_name(TYPE_POWERPC_CPU, data);
> - g_assert(scc->cpu_class);
> + scc->cpu_type = data;
> }
>
> #define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
> { \
> .parent = TYPE_SPAPR_CPU_CORE, \
> - .class_data = (void *) cpu_model, \
> + .class_data = (void *) POWERPC_CPU_TYPE_NAME(cpu_model), \
> .class_init = spapr_cpu_core_class_init, \
> .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
> }
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 171d3d8..c2152ed 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2514,7 +2514,7 @@ static int kvm_ppc_register_host_cpu_type(void)
> type_info.instance_size = sizeof(sPAPRCPUCore);
> type_info.instance_init = NULL;
> type_info.class_init = spapr_cpu_core_class_init;
> - type_info.class_data = (void *) "host";
> + type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> type_register(&type_info);
> g_free((void *)type_info.name);
> #endif
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types
2017-10-05 16:24 ` [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types Igor Mammedov
@ 2017-10-05 21:55 ` Greg Kurz
2017-10-06 4:41 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Greg Kurz @ 2017-10-05 21:55 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson,
Philippe Mathieu-Daudé
On Thu, 5 Oct 2017 18:24:42 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> consolidate 'host' core type registration by moving it from
> KVM specific code into spapr_cpu_core.c, similar like it's
> done in x86 target.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
On the way you could have dropped this line in target/ppc/kvm.c:
#include "hw/ppc/spapr_cpu_core.h"
Note, there's also:
#if defined(TARGET_PPC64)
#include "hw/ppc/spapr_cpu_core.h"
#endif
but Philippe (on Cc) has already sent a patch to drop this one:
https://lists.nongnu.org/archive/html/qemu-devel/2017-09/msg06499.html
Anyway,
Reviewed-by: Greg Kurz <groug@kaod.org>
> include/hw/ppc/spapr_cpu_core.h | 1 -
> hw/ppc/spapr_cpu_core.c | 5 ++++-
> target/ppc/kvm.c | 11 -----------
> 3 files changed, 4 insertions(+), 13 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 264ce68..42765de 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -38,5 +38,4 @@ typedef struct sPAPRCPUCoreClass {
> } sPAPRCPUCoreClass;
>
> char *spapr_get_cpu_core_type(const char *model);
> -void spapr_cpu_core_class_init(ObjectClass *oc, void *data);
> #endif
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 8e13e52..f2da4be 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -220,7 +220,7 @@ static Property spapr_cpu_core_properties[] = {
> DEFINE_PROP_END_OF_LIST()
> };
>
> -void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> +static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(oc);
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_CLASS(oc);
> @@ -257,6 +257,9 @@ static const TypeInfo spapr_cpu_core_type_infos[] = {
> DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> +#ifdef CONFIG_KVM
> + DEFINE_SPAPR_CPU_CORE_TYPE("host"),
> +#endif
> };
>
> DEFINE_TYPES(spapr_cpu_core_type_infos)
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index c2152ed..cb5777a 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2508,17 +2508,6 @@ static int kvm_ppc_register_host_cpu_type(void)
> oc = object_class_by_name(type_info.name);
> g_assert(oc);
>
> -#if defined(TARGET_PPC64)
> - type_info.name = g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host");
> - type_info.parent = TYPE_SPAPR_CPU_CORE,
> - type_info.instance_size = sizeof(sPAPRCPUCore);
> - type_info.instance_init = NULL;
> - type_info.class_init = spapr_cpu_core_class_init;
> - type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> - type_register(&type_info);
> - g_free((void *)type_info.name);
> -#endif
> -
> /*
> * Update generic CPU family class alias (e.g. on a POWER8NVL host,
> * we want "POWER8" to be a "family" alias that points to the current
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]() Igor Mammedov
@ 2017-10-06 2:57 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 2:57 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1649 bytes --]
On Thu, Oct 05, 2017 at 06:24:28PM +0200, Igor Mammedov wrote:
> type_register()/type_register_static() functions in current impl.
> can't fail returning 0, also none of the users check for error
> so update doc comment to reflect current behaviour.
>
> Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/qom/object.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index e0d9824..a707b67 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -773,7 +773,7 @@ const char *object_get_typename(const Object *obj);
> * @info and all of the strings it points to should exist for the life time
> * that the type is registered.
> *
> - * Returns: 0 on failure, the new #Type on success.
> + * Returns: the new #Type.
> */
> Type type_register_static(const TypeInfo *info);
>
> @@ -784,7 +784,7 @@ Type type_register_static(const TypeInfo *info);
> * Unlike type_register_static(), this call does not require @info or its
> * string members to continue to exist after the call returns.
> *
> - * Returns: 0 on failure, the new #Type on success.
> + * Returns: the new #Type.
> */
> Type type_register(const TypeInfo *info);
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array() Igor Mammedov
@ 2017-10-06 2:58 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 2:58 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 2111 bytes --]
On Thu, Oct 05, 2017 at 06:24:29PM +0200, Igor Mammedov wrote:
> it will help to remove code duplication of registration
> static types in places that have open coded loop to
> perform batch type registering.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/qom/object.h | 10 ++++++++++
> qom/object.c | 9 +++++++++
> 2 files changed, 19 insertions(+)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index a707b67..9a2369c 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -789,6 +789,16 @@ Type type_register_static(const TypeInfo *info);
> Type type_register(const TypeInfo *info);
>
> /**
> + * type_register_static_array:
> + * @infos: The array of the new type #TypeInfo structures.
> + * @nr_infos: number of entries in @infos
> + *
> + * @infos and all of the strings it points to should exist for the life time
> + * that the type is registered.
> + */
> +void type_register_static_array(const TypeInfo *infos, int nr_infos);
> +
> +/**
> * object_class_dynamic_cast_assert:
> * @klass: The #ObjectClass to attempt to cast.
> * @typename: The QOM typename of the class to cast to.
> diff --git a/qom/object.c b/qom/object.c
> index 6a7bd92..c58c52d 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -151,6 +151,15 @@ TypeImpl *type_register_static(const TypeInfo *info)
> return type_register(info);
> }
>
> +void type_register_static_array(const TypeInfo *infos, int nr_infos)
> +{
> + int i;
> +
> + for (i = 0; i < nr_infos; i++) {
> + type_register_static(&infos[i]);
> + }
> +}
> +
> static TypeImpl *type_get_by_name(const char *name)
> {
> if (name == NULL) {
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing Igor Mammedov
@ 2017-10-06 3:02 ` David Gibson
2017-10-06 8:27 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:02 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 2725 bytes --]
On Thu, Oct 05, 2017 at 06:24:31PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Do you want me to queue the ppc patches here, or do you already have a
plan for that?
> ---
> hw/ppc/e500.c | 8 +-------
> hw/ppc/e500plat.c | 1 +
> hw/ppc/mpc8544ds.c | 2 ++
> 3 files changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index db0e49a..9178e70 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -803,11 +803,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
> SysBusDevice *s;
> PPCE500CCSRState *ccsr;
>
> - /* Setup CPUs */
> - if (machine->cpu_model == NULL) {
> - machine->cpu_model = "e500v2_v30";
> - }
> -
> irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
> irqs[0] = g_malloc0(smp_cpus * sizeof(qemu_irq) * OPENPIC_OUTPUT_NB);
> for (i = 0; i < smp_cpus; i++) {
> @@ -815,8 +810,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
> CPUState *cs;
> qemu_irq *input;
>
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
> - machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
> cs = CPU(cpu);
>
> diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
> index 94b4545..e59e80f 100644
> --- a/hw/ppc/e500plat.c
> +++ b/hw/ppc/e500plat.c
> @@ -64,6 +64,7 @@ static void e500plat_machine_init(MachineClass *mc)
> mc->init = e500plat_init;
> mc->max_cpus = 32;
> mc->has_dynamic_sysbus = true;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
> }
>
> DEFINE_MACHINE("ppce500", e500plat_machine_init)
> diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
> index 27b8289..1717953 100644
> --- a/hw/ppc/mpc8544ds.c
> +++ b/hw/ppc/mpc8544ds.c
> @@ -16,6 +16,7 @@
> #include "sysemu/device_tree.h"
> #include "hw/ppc/openpic.h"
> #include "qemu/error-report.h"
> +#include "cpu.h"
>
> static void mpc8544ds_fixup_devtree(PPCE500Params *params, void *fdt)
> {
> @@ -55,6 +56,7 @@ static void ppce500_machine_init(MachineClass *mc)
> mc->desc = "mpc8544ds";
> mc->init = mpc8544ds_init;
> mc->max_cpus = 15;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
> }
>
> DEFINE_MACHINE("mpc8544ds", ppce500_machine_init)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES() Igor Mammedov
@ 2017-10-06 3:06 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:06 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3682 bytes --]
On Thu, Oct 05, 2017 at 06:24:30PM +0200, Igor Mammedov wrote:
> DEFINE_TYPES() will help to simplify following routine patterns:
>
> static void foo_register_types(void)
> {
> type_register_static(&foo1_type_info);
> type_register_static(&foo2_type_info);
> ...
> }
>
> type_init(foo_register_types)
>
> or
>
> static void foo_register_types(void)
> {
> int i;
>
> for (i = 0; i < ARRAY_SIZE(type_infos); i++) {
> type_register_static(&type_infos[i]);
> }
> }
>
> type_init(foo_register_types)
>
> with a single line
>
> DEFINE_TYPES(type_infos)
>
> where types have static definition which could be consolidated in
> a single array of TypeInfo structures.
> It saves us ~6-10LOC per use case and would help to replace
> imperative foo_register_types() there with declarative style of
> type registration.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/qom/object.h | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/include/qom/object.h b/include/qom/object.h
> index 9a2369c..dc73d59 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -79,6 +79,28 @@ typedef struct InterfaceInfo InterfaceInfo;
> * #TypeInfo describes information about the type including what it inherits
> * from, the instance and class size, and constructor/destructor hooks.
> *
> + * Alternatively several static types could be registered using helper macro
> + * DEFINE_TYPES()
> + *
> + * <example>
> + * <programlisting>
> + * static const TypeInfo device_types_info[] = {
> + * {
> + * .name = TYPE_MY_DEVICE_A,
> + * .parent = TYPE_DEVICE,
> + * .instance_size = sizeof(MyDeviceA),
> + * },
> + * {
> + * .name = TYPE_MY_DEVICE_B,
> + * .parent = TYPE_DEVICE,
> + * .instance_size = sizeof(MyDeviceB),
> + * },
> + * };
> + *
> + * DEFINE_TYPES(device_types_info)
> + * </programlisting>
> + * </example>
> + *
> * Every type has an #ObjectClass associated with it. #ObjectClass derivatives
> * are instantiated dynamically but there is only ever one instance for any
> * given type. The #ObjectClass typically holds a table of function pointers
> @@ -799,6 +821,20 @@ Type type_register(const TypeInfo *info);
> void type_register_static_array(const TypeInfo *infos, int nr_infos);
>
> /**
> + * DEFINE_TYPES:
> + * @type_array: The array containing #TypeInfo structures to register
> + *
> + * @type_array should be static constant that exists for the life time
> + * that the type is registered.
> + */
> +#define DEFINE_TYPES(type_array) \
> +static void do_qemu_init_ ## type_array(void) \
> +{ \
> + type_register_static_array(type_array, ARRAY_SIZE(type_array)); \
> +} \
> +type_init(do_qemu_init_ ## type_array)
> +
> +/**
> * object_class_dynamic_cast_assert:
> * @klass: The #ObjectClass to attempt to cast.
> * @typename: The QOM typename of the class to cast to.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: " Igor Mammedov
@ 2017-10-06 3:08 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:08 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1737 bytes --]
On Thu, Oct 05, 2017 at 06:24:32PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/mac_newworld.c | 15 ++++++---------
> 1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 6d0ace2..3fa7c42 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -174,16 +174,8 @@ static void ppc_core99_init(MachineState *machine)
> linux_boot = (kernel_filename != NULL);
>
> /* init CPUs */
> - if (machine->cpu_model == NULL) {
> -#ifdef TARGET_PPC64
> - machine->cpu_model = "970fx";
> -#else
> - machine->cpu_model = "G4";
> -#endif
> - }
> for (i = 0; i < smp_cpus; i++) {
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
> - machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
>
> /* Set time-base frequency to 100 Mhz */
> @@ -520,6 +512,11 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)
> mc->max_cpus = MAX_CPUS;
> mc->default_boot_order = "cd";
> mc->kvm_type = core99_kvm_type;
> +#ifdef TARGET_PPC64
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("970fx_v3.1");
> +#else
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("7400_v2.9");
> +#endif
> }
>
> static const TypeInfo core99_machine_info = {
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: " Igor Mammedov
@ 2017-10-06 3:09 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:09 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1542 bytes --]
On Thu, Oct 05, 2017 at 06:24:33PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/mac_oldworld.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index bc7c8b7..010ea36 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -108,11 +108,8 @@ static void ppc_heathrow_init(MachineState *machine)
> linux_boot = (kernel_filename != NULL);
>
> /* init CPUs */
> - if (machine->cpu_model == NULL)
> - machine->cpu_model = "G3";
> for (i = 0; i < smp_cpus; i++) {
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
> - machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
>
> /* Set time-base frequency to 16.6 Mhz */
> @@ -385,6 +382,7 @@ static void heathrow_class_init(ObjectClass *oc, void *data)
> /* TOFIX "cad" when Mac floppy is implemented */
> mc->default_boot_order = "cd";
> mc->kvm_type = heathrow_kvm_type;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("750_v3.1");
> }
>
> static const TypeInfo ppc_heathrow_machine_info = {
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 07/23] ppc: bamboo: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 07/23] ppc: bamboo: " Igor Mammedov
@ 2017-10-06 3:11 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:11 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1355 bytes --]
On Thu, Oct 05, 2017 at 06:24:34PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/ppc440_bamboo.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
> index f92d47f..693c215 100644
> --- a/hw/ppc/ppc440_bamboo.c
> +++ b/hw/ppc/ppc440_bamboo.c
> @@ -182,11 +182,7 @@ static void bamboo_init(MachineState *machine)
> int success;
> int i;
>
> - /* Setup CPU. */
> - if (machine->cpu_model == NULL) {
> - machine->cpu_model = "440EP";
> - }
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
>
> if (env->mmu_model != POWERPC_MMU_BOOKE) {
> @@ -297,6 +293,7 @@ static void bamboo_machine_init(MachineClass *mc)
> {
> mc->desc = "bamboo";
> mc->init = bamboo_init;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("440epb");
> }
>
> DEFINE_MACHINE("bamboo", bamboo_machine_init)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards
2017-10-05 16:24 ` [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards Igor Mammedov
@ 2017-10-06 3:12 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:12 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 2550 bytes --]
On Thu, Oct 05, 2017 at 06:24:35PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/ppc405_uc.c | 6 ++++--
> hw/ppc/ppc4xx_devs.c | 4 ++--
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c
> index 8e58065..205ebce 100644
> --- a/hw/ppc/ppc405_uc.c
> +++ b/hw/ppc/ppc405_uc.c
> @@ -1629,7 +1629,8 @@ CPUPPCState *ppc405cr_init(MemoryRegion *address_space_mem,
> qemu_irq *pic, *irqs;
>
> memset(clk_setup, 0, sizeof(clk_setup));
> - cpu = ppc4xx_init("405cr", &clk_setup[PPC405CR_CPU_CLK],
> + cpu = ppc4xx_init(POWERPC_CPU_TYPE_NAME("405crc"),
> + &clk_setup[PPC405CR_CPU_CLK],
> &clk_setup[PPC405CR_TMR_CLK], sysclk);
> env = &cpu->env;
> /* Memory mapped devices registers */
> @@ -1981,7 +1982,8 @@ CPUPPCState *ppc405ep_init(MemoryRegion *address_space_mem,
>
> memset(clk_setup, 0, sizeof(clk_setup));
> /* init CPUs */
> - cpu = ppc4xx_init("405ep", &clk_setup[PPC405EP_CPU_CLK],
> + cpu = ppc4xx_init(POWERPC_CPU_TYPE_NAME("405ep"),
> + &clk_setup[PPC405EP_CPU_CLK],
> &tlb_clk_setup, sysclk);
> env = &cpu->env;
> clk_setup[PPC405EP_CPU_CLK].cb = tlb_clk_setup.cb;
> diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c
> index 6d7f785..2e96389 100644
> --- a/hw/ppc/ppc4xx_devs.c
> +++ b/hw/ppc/ppc4xx_devs.c
> @@ -48,7 +48,7 @@ static void ppc4xx_reset(void *opaque)
>
> /*****************************************************************************/
> /* Generic PowerPC 4xx processor instantiation */
> -PowerPCCPU *ppc4xx_init(const char *cpu_model,
> +PowerPCCPU *ppc4xx_init(const char *cpu_type,
> clk_setup_t *cpu_clk, clk_setup_t *tb_clk,
> uint32_t sysclk)
> {
> @@ -56,7 +56,7 @@ PowerPCCPU *ppc4xx_init(const char *cpu_model,
> CPUPPCState *env;
>
> /* init CPUs */
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
> + cpu = POWERPC_CPU(cpu_create(cpu_type));
> env = &cpu->env;
>
> cpu_clk->cb = NULL; /* We don't care about CPU clock frequency changes */
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type
2017-10-05 16:24 ` [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type Igor Mammedov
@ 2017-10-06 3:13 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:13 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 2094 bytes --]
On Thu, Oct 05, 2017 at 06:24:36PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/virtex_ml507.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
> index ed9b406..5ac4f76 100644
> --- a/hw/ppc/virtex_ml507.c
> +++ b/hw/ppc/virtex_ml507.c
> @@ -89,14 +89,14 @@ static void mmubooke_create_initial_mapping(CPUPPCState *env,
>
> static PowerPCCPU *ppc440_init_xilinx(ram_addr_t *ram_size,
> int do_init,
> - const char *cpu_model,
> + const char *cpu_type,
> uint32_t sysclk)
> {
> PowerPCCPU *cpu;
> CPUPPCState *env;
> qemu_irq *irqs;
>
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model));
> + cpu = POWERPC_CPU(cpu_create(cpu_type));
> env = &cpu->env;
>
> ppc_booke_timers_init(cpu, sysclk, 0/* no flags */);
> @@ -211,11 +211,7 @@ static void virtex_init(MachineState *machine)
> int i;
>
> /* init CPUs */
> - if (machine->cpu_model == NULL) {
> - machine->cpu_model = "440-Xilinx";
> - }
> -
> - cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000);
> + cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_type, 400000000);
> env = &cpu->env;
>
> if (env->mmu_model != POWERPC_MMU_BOOKE) {
> @@ -307,6 +303,7 @@ static void virtex_machine_init(MachineClass *mc)
> {
> mc->desc = "Xilinx Virtex ML507 reference design";
> mc->init = virtex_init;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("440-xilinx");
> }
>
> DEFINE_MACHINE("virtex-ml507", virtex_machine_init)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: replace cpu_model with cpu_type
2017-10-05 16:24 ` [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: " Igor Mammedov
@ 2017-10-06 3:14 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:14 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 2297 bytes --]
On Thu, Oct 05, 2017 at 06:24:37PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/prep.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> index 94138a4..6f8accc 100644
> --- a/hw/ppc/prep.c
> +++ b/hw/ppc/prep.c
> @@ -517,11 +517,8 @@ static void ppc_prep_init(MachineState *machine)
> linux_boot = (kernel_filename != NULL);
>
> /* init CPUs */
> - if (machine->cpu_model == NULL)
> - machine->cpu_model = "602";
> for (i = 0; i < smp_cpus; i++) {
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
> - machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
>
> if (env->flags & POWERPC_FLAG_RTC_CLK) {
> @@ -684,6 +681,7 @@ static void prep_machine_init(MachineClass *mc)
> mc->block_default_type = IF_IDE;
> mc->max_cpus = MAX_CPUS;
> mc->default_boot_order = "cad";
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("602");
> }
>
> static int prep_set_cmos_checksum(DeviceState *dev, void *opaque)
> @@ -718,10 +716,7 @@ static void ibm_40p_init(MachineState *machine)
> char boot_device;
>
> /* init CPU */
> - if (!machine->cpu_model) {
> - machine->cpu_model = "604";
> - }
> - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, machine->cpu_model));
> + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> env = &cpu->env;
> if (PPC_INPUT(env) != PPC_FLAGS_INPUT_6xx) {
> error_report("only 6xx bus is supported on this machine");
> @@ -894,6 +889,7 @@ static void ibm_40p_machine_init(MachineClass *mc)
> mc->default_ram_size = 128 * M_BYTE;
> mc->block_default_type = IF_SCSI;
> mc->default_boot_order = "c";
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("604");
> }
>
> DEFINE_MACHINE("40p", ibm_40p_machine_init)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model() Igor Mammedov
2017-10-05 18:35 ` Greg Kurz
@ 2017-10-06 3:16 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:16 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3212 bytes --]
On Thu, Oct 05, 2017 at 06:24:38PM +0200, Igor Mammedov wrote:
> ppc_cpu_parse_features() is doing practically the same thing as
> generic cpu_parse_cpu_model(). So remove duplicated impl. and
> reuse generic one.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/hw/ppc/ppc.h | 2 --
> hw/ppc/ppc.c | 25 -------------------------
> hw/ppc/spapr_cpu_core.c | 9 ++++-----
> 3 files changed, 4 insertions(+), 32 deletions(-)
>
> diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h
> index 4e7fe11..ff0ac30 100644
> --- a/include/hw/ppc/ppc.h
> +++ b/include/hw/ppc/ppc.h
> @@ -105,6 +105,4 @@ enum {
>
> /* ppc_booke.c */
> void ppc_booke_timers_init(PowerPCCPU *cpu, uint32_t freq, uint32_t flags);
> -
> -void ppc_cpu_parse_features(const char *cpu_model);
> #endif
> diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
> index 05da316..7ec35de 100644
> --- a/hw/ppc/ppc.c
> +++ b/hw/ppc/ppc.c
> @@ -1359,28 +1359,3 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val)
> break;
> }
> }
> -
> -void ppc_cpu_parse_features(const char *cpu_model)
> -{
> - CPUClass *cc;
> - ObjectClass *oc;
> - const char *typename;
> - gchar **model_pieces;
> -
> - model_pieces = g_strsplit(cpu_model, ",", 2);
> - if (!model_pieces[0]) {
> - error_report("Invalid/empty CPU model name");
> - exit(1);
> - }
> -
> - oc = cpu_class_by_name(TYPE_POWERPC_CPU, model_pieces[0]);
> - if (oc == NULL) {
> - error_report("Unable to find CPU definition: %s", model_pieces[0]);
> - exit(1);
> - }
> -
> - typename = object_class_get_name(oc);
> - cc = CPU_CLASS(oc);
> - cc->parse_features(typename, model_pieces[1], &error_fatal);
> - g_strfreev(model_pieces);
> -}
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3e20b1d..3dea5ff 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -34,6 +34,7 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> * before passing it on to the cpu level parser.
> */
> gchar **inpieces;
> + gchar *newprops;
> int i, j;
> gchar *compat_str = NULL;
>
> @@ -58,17 +59,15 @@ void spapr_cpu_parse_features(sPAPRMachineState *spapr)
>
> if (compat_str) {
> char *val = compat_str + strlen("compat=");
> - gchar *newprops = g_strjoinv(",", inpieces);
>
> object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> &error_fatal);
>
> - ppc_cpu_parse_features(newprops);
> - g_free(newprops);
> - } else {
> - ppc_cpu_parse_features(MACHINE(spapr)->cpu_model);
> }
>
> + newprops = g_strjoinv(",", inpieces);
> + cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> + g_free(newprops);
> g_strfreev(inpieces);
> }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-05 16:24 ` [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr() Igor Mammedov
2017-10-05 19:05 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
@ 2017-10-06 3:54 ` David Gibson
2017-10-06 9:03 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:54 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 8140 bytes --]
On Thu, Oct 05, 2017 at 06:24:39PM +0200, Igor Mammedov wrote:
> there is a dedicated callback CPUClass::parse_features
> which purpose is to convert -cpu features into a set of
> global properties AND deal with compat/legacy features
> that couldn't be directly translated into CPU's properties.
>
> Create ppc variant of it (ppc_cpu_parse_featurestr) and
> move 'compat=val' handling from spapr_cpu_core.c into it.
> That removes a dependency of board/core code on cpu_model
> parsing and would let to reuse common -cpu parsing
> introduced by 6063d4c0
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Hrm. I'm a bit unsure about this. The fact that the board code is
involved in the parsing here is deliberate. Basically 'compat=' never
made sense as a cpu property, it always should have been a machine
property.
With this patch we'll still (correctly) fail on a non spapr machine at
the point where we do:
+ object_property_set_str(machine, v, "max-cpu-compat", &local_err);
Though probably with a rather cryptic error.
It still pollutes the cpu code with spapr's past mistake though. I'm
not sure if this is a good tradeoff.
> ---
> include/hw/ppc/spapr.h | 1 -
> target/ppc/cpu-qom.h | 1 +
> hw/ppc/spapr.c | 2 +-
> hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> 5 files changed, 60 insertions(+), 52 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index c1b365f..8ca4f94 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> uint32_t count, uint32_t index);
> void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> uint32_t count, uint32_t index);
> -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> Error **errp);
> diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> index d0cf6ca..429b47f 100644
> --- a/target/ppc/cpu-qom.h
> +++ b/target/ppc/cpu-qom.h
> @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> DeviceRealize parent_realize;
> DeviceUnrealize parent_unrealize;
> void (*parent_reset)(CPUState *cpu);
> + void (*parent_parse_features)(const char *type, char *str, Error **errp);
>
> uint32_t pvr;
> bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index ff87f15..01b3012 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> }
>
> - spapr_cpu_parse_features(spapr);
> + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
>
> spapr_set_vsmt_mode(spapr, &error_fatal);
>
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 3dea5ff..427d47f 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -21,56 +21,6 @@
> #include "sysemu/hw_accel.h"
> #include "qemu/error-report.h"
>
> -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> -{
> - /*
> - * Backwards compatibility hack:
> - *
> - * CPUs had a "compat=" property which didn't make sense for
> - * anything except pseries. It was replaced by "max-cpu-compat"
> - * machine option. This supports old command lines like
> - * -cpu POWER8,compat=power7
> - * By stripping the compat option and applying it to the machine
> - * before passing it on to the cpu level parser.
> - */
> - gchar **inpieces;
> - gchar *newprops;
> - int i, j;
> - gchar *compat_str = NULL;
> -
> - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> -
> - /* inpieces[0] is the actual model string */
> - i = 1;
> - j = 1;
> - while (inpieces[i]) {
> - if (g_str_has_prefix(inpieces[i], "compat=")) {
> - /* in case of multiple compat= options */
> - g_free(compat_str);
> - compat_str = inpieces[i];
> - } else {
> - j++;
> - }
> -
> - i++;
> - /* Excise compat options from list */
> - inpieces[j] = inpieces[i];
> - }
> -
> - if (compat_str) {
> - char *val = compat_str + strlen("compat=");
> -
> - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> - &error_fatal);
> -
> - }
> -
> - newprops = g_strjoinv(",", inpieces);
> - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> - g_free(newprops);
> - g_strfreev(inpieces);
> -}
> -
> static void spapr_cpu_reset(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> index c6399a3..5ee91e8 100644
> --- a/target/ppc/translate_init.c
> +++ b/target/ppc/translate_init.c
> @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
>
> return NULL;
> }
> +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> + Error **errp)
> +{
> + const PowerPCCPUClass *pcc;
> + char *compat_str = NULL;
> + char *s = features;
> + char **inpieces;
> + Error *local_err = NULL;
> + int i;
> +
> + if (!features) {
> + return;
> + }
> +
> + /*
> + * Backwards compatibility hack:
> + *
> + * CPUs had a "compat=" property which didn't make sense for
> + * anything except pseries. It was replaced by "max-cpu-compat"
> + * machine option. This supports old command lines like
> + * -cpu POWER8,compat=power7
> + * By stripping the compat option and applying it to the machine
> + * before passing it on to the cpu level parser.
> + */
> + inpieces = g_strsplit(features, ",", 0);
> + *s = '\0';
> + for (i = 0; inpieces[i]; i++) {
> + if (g_str_has_prefix(inpieces[i], "compat=")) {
> + compat_str = inpieces[i];
> + continue;
> + }
> + if ((i != 0) && (s != features)) {
> + s = g_stpcpy(s, ",");
> + }
> + s = g_stpcpy(s, inpieces[i]);
> + }
> +
> + if (compat_str) {
> + Object *machine = qdev_get_machine();
> + if (machine) {
> + char *v = compat_str + strlen("compat=");
> + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> + } else {
> + error_setg(&local_err, "Not supported property: %s", compat_str);
> + }
> + }
> + g_strfreev(inpieces);
> + if (local_err) {
> + error_propagate(errp, local_err);
> + return;
> + }
> +
> + /* do property processing with generic handler */
> + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> + pcc->parent_parse_features(typename, features, errp);
> +}
>
> const char *ppc_cpu_lookup_alias(const char *alias)
> {
> @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> cc->reset = ppc_cpu_reset;
>
> cc->class_by_name = ppc_cpu_class_by_name;
> + pcc->parent_parse_features = cc->parse_features;
> + cc->parse_features = ppc_cpu_parse_featurestr;
> cc->has_work = ppc_cpu_has_work;
> cc->do_interrupt = ppc_cpu_do_interrupt;
> cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically
2017-10-05 16:24 ` [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically Igor Mammedov
2017-10-05 20:31 ` Greg Kurz
@ 2017-10-06 3:58 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 3:58 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 4614 bytes --]
On Thu, Oct 05, 2017 at 06:24:40PM +0200, Igor Mammedov wrote:
> spapr core type definition doesn't have any fields that
> require it to be defined at runtime. So replace code
> that fills in TypeInfo at runtime with static TypeInfo
> array that does the same at complie time.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/hw/ppc/spapr_cpu_core.h | 2 +
> hw/ppc/spapr_cpu_core.c | 85 +++++++++++++----------------------------
> 2 files changed, 29 insertions(+), 58 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 93051e9..66dcf52 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -21,6 +21,8 @@
> #define SPAPR_CPU_CORE_GET_CLASS(obj) \
> OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE)
>
> +#define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE
> +
> typedef struct sPAPRCPUCore {
> /*< private >*/
> CPUCore parent_obj;
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 427d47f..01f4ec8 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -217,36 +217,6 @@ err:
> error_propagate(errp, local_err);
> }
>
> -static const char *spapr_core_models[] = {
> - /* 970 */
> - "970_v2.2",
> -
> - /* 970MP variants */
> - "970mp_v1.0",
> - "970mp_v1.1",
> -
> - /* POWER5+ */
> - "power5+_v2.1",
> -
> - /* POWER7 */
> - "power7_v2.3",
> -
> - /* POWER7+ */
> - "power7+_v2.1",
> -
> - /* POWER8 */
> - "power8_v2.0",
> -
> - /* POWER8E */
> - "power8e_v2.1",
> -
> - /* POWER8NVL */
> - "power8nvl_v1.0",
> -
> - /* POWER9 */
> - "power9_v1.0",
> -};
> -
> static Property spapr_cpu_core_properties[] = {
> DEFINE_PROP_INT32("node-id", sPAPRCPUCore, node_id, CPU_UNSET_NUMA_NODE_ID),
> DEFINE_PROP_END_OF_LIST()
> @@ -264,33 +234,32 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> g_assert(scc->cpu_class);
> }
>
> -static const TypeInfo spapr_cpu_core_type_info = {
> - .name = TYPE_SPAPR_CPU_CORE,
> - .parent = TYPE_CPU_CORE,
> - .abstract = true,
> - .instance_size = sizeof(sPAPRCPUCore),
> - .class_size = sizeof(sPAPRCPUCoreClass),
> -};
> -
> -static void spapr_cpu_core_register_types(void)
> -{
> - int i;
> -
> - type_register_static(&spapr_cpu_core_type_info);
> -
> - for (i = 0; i < ARRAY_SIZE(spapr_core_models); i++) {
> - TypeInfo type_info = {
> - .parent = TYPE_SPAPR_CPU_CORE,
> - .instance_size = sizeof(sPAPRCPUCore),
> - .class_init = spapr_cpu_core_class_init,
> - .class_data = (void *) spapr_core_models[i],
> - };
> -
> - type_info.name = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE,
> - spapr_core_models[i]);
> - type_register(&type_info);
> - g_free((void *)type_info.name);
> +#define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
> + { \
> + .parent = TYPE_SPAPR_CPU_CORE, \
> + .class_data = (void *) cpu_model, \
> + .class_init = spapr_cpu_core_class_init, \
> + .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
> }
> -}
>
> -type_init(spapr_cpu_core_register_types)
> +static const TypeInfo spapr_cpu_core_type_infos[] = {
> + {
> + .name = TYPE_SPAPR_CPU_CORE,
> + .parent = TYPE_CPU_CORE,
> + .abstract = true,
> + .instance_size = sizeof(sPAPRCPUCore),
> + .class_size = sizeof(sPAPRCPUCoreClass),
> + },
> + DEFINE_SPAPR_CPU_CORE_TYPE("970_v2.2"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power5+_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power7_v2.3"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power7+_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8_v2.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> + DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> +};
> +
> +DEFINE_TYPES(spapr_cpu_core_type_infos)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly
2017-10-05 16:24 ` [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly Igor Mammedov
2017-10-05 20:47 ` Greg Kurz
@ 2017-10-06 4:01 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 4:01 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 5338 bytes --]
On Thu, Oct 05, 2017 at 06:24:41PM +0200, Igor Mammedov wrote:
> replace sPAPRCPUCoreClass::cpu_class with cpu type name
> since it were needed just to get that at points it were
> accessed.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/hw/ppc/spapr_cpu_core.h | 2 +-
> hw/ppc/spapr.c | 6 ++----
> hw/ppc/spapr_cpu_core.c | 13 +++++--------
> target/ppc/kvm.c | 2 +-
> 4 files changed, 9 insertions(+), 14 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 66dcf52..264ce68 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -34,7 +34,7 @@ typedef struct sPAPRCPUCore {
>
> typedef struct sPAPRCPUCoreClass {
> DeviceClass parent_class;
> - ObjectClass *cpu_class;
> + const char *cpu_type;
> } sPAPRCPUCoreClass;
>
> char *spapr_get_cpu_core_type(const char *model);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 01b3012..ad7afd6 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3142,8 +3142,7 @@ void spapr_core_release(DeviceState *dev)
> if (smc->pre_2_10_has_unused_icps) {
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> int i;
>
> for (i = 0; i < cc->nr_threads; i++) {
> @@ -3239,8 +3238,7 @@ static void spapr_core_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
>
> if (smc->pre_2_10_has_unused_icps) {
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(cc));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> int i;
>
> for (i = 0; i < cc->nr_threads; i++) {
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 01f4ec8..8e13e52 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -90,8 +90,7 @@ static void spapr_cpu_core_unrealizefn(DeviceState *dev, Error **errp)
> {
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> CPUCore *cc = CPU_CORE(dev);
> int i;
>
> @@ -152,8 +151,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
> sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));
> CPUCore *cc = CPU_CORE(OBJECT(dev));
> - const char *typename = object_class_get_name(scc->cpu_class);
> - size_t size = object_type_get_instance_size(typename);
> + size_t size = object_type_get_instance_size(scc->cpu_type);
> Error *local_err = NULL;
> void *obj;
> int i, j;
> @@ -172,7 +170,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)
>
> obj = sc->threads + i * size;
>
> - object_initialize(obj, size, typename);
> + object_initialize(obj, size, scc->cpu_type);
> cs = CPU(obj);
> cpu = POWERPC_CPU(cs);
> cs->cpu_index = cc->core_id + i;
> @@ -230,14 +228,13 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> dc->realize = spapr_cpu_core_realize;
> dc->unrealize = spapr_cpu_core_unrealizefn;
> dc->props = spapr_cpu_core_properties;
> - scc->cpu_class = cpu_class_by_name(TYPE_POWERPC_CPU, data);
> - g_assert(scc->cpu_class);
> + scc->cpu_type = data;
> }
>
> #define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
> { \
> .parent = TYPE_SPAPR_CPU_CORE, \
> - .class_data = (void *) cpu_model, \
> + .class_data = (void *) POWERPC_CPU_TYPE_NAME(cpu_model), \
> .class_init = spapr_cpu_core_class_init, \
> .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
> }
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 171d3d8..c2152ed 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2514,7 +2514,7 @@ static int kvm_ppc_register_host_cpu_type(void)
> type_info.instance_size = sizeof(sPAPRCPUCore);
> type_info.instance_init = NULL;
> type_info.class_init = spapr_cpu_core_class_init;
> - type_info.class_data = (void *) "host";
> + type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> type_register(&type_info);
> g_free((void *)type_info.name);
> #endif
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types
2017-10-05 16:24 ` [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types Igor Mammedov
2017-10-05 21:55 ` Greg Kurz
@ 2017-10-06 4:41 ` David Gibson
2017-10-06 9:07 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 4:41 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3149 bytes --]
On Thu, Oct 05, 2017 at 06:24:42PM +0200, Igor Mammedov wrote:
> consolidate 'host' core type registration by moving it from
> KVM specific code into spapr_cpu_core.c, similar like it's
> done in x86 target.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
IIUC this will change behaviour slightly: with this patch the 'host'
core type will show up whenever CONFIG_KVM is set, even if the KVM
accelerator is disabled on the command line. Previously it would not.
Is this change intentional?
> ---
> include/hw/ppc/spapr_cpu_core.h | 1 -
> hw/ppc/spapr_cpu_core.c | 5 ++++-
> target/ppc/kvm.c | 11 -----------
> 3 files changed, 4 insertions(+), 13 deletions(-)
>
> diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> index 264ce68..42765de 100644
> --- a/include/hw/ppc/spapr_cpu_core.h
> +++ b/include/hw/ppc/spapr_cpu_core.h
> @@ -38,5 +38,4 @@ typedef struct sPAPRCPUCoreClass {
> } sPAPRCPUCoreClass;
>
> char *spapr_get_cpu_core_type(const char *model);
> -void spapr_cpu_core_class_init(ObjectClass *oc, void *data);
> #endif
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 8e13e52..f2da4be 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -220,7 +220,7 @@ static Property spapr_cpu_core_properties[] = {
> DEFINE_PROP_END_OF_LIST()
> };
>
> -void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> +static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(oc);
> sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_CLASS(oc);
> @@ -257,6 +257,9 @@ static const TypeInfo spapr_cpu_core_type_infos[] = {
> DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> +#ifdef CONFIG_KVM
> + DEFINE_SPAPR_CPU_CORE_TYPE("host"),
> +#endif
> };
>
> DEFINE_TYPES(spapr_cpu_core_type_infos)
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index c2152ed..cb5777a 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2508,17 +2508,6 @@ static int kvm_ppc_register_host_cpu_type(void)
> oc = object_class_by_name(type_info.name);
> g_assert(oc);
>
> -#if defined(TARGET_PPC64)
> - type_info.name = g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host");
> - type_info.parent = TYPE_SPAPR_CPU_CORE,
> - type_info.instance_size = sizeof(sPAPRCPUCore);
> - type_info.instance_init = NULL;
> - type_info.class_init = spapr_cpu_core_class_init;
> - type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> - type_register(&type_info);
> - g_free((void *)type_info.name);
> -#endif
> -
> /*
> * Update generic CPU family class alias (e.g. on a POWER8NVL host,
> * we want "POWER8" to be a "family" alias that points to the current
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases
2017-10-05 16:24 ` [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases Igor Mammedov
@ 2017-10-06 4:43 ` David Gibson
2017-10-06 7:39 ` Greg Kurz
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 4:43 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1416 bytes --]
On Thu, Oct 05, 2017 at 06:24:43PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/spapr.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index ad7afd6..0661dba 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3603,7 +3603,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
> hc->unplug_request = spapr_machine_device_unplug_request;
>
> smc->dr_lmb_enabled = true;
> - smc->tcg_default_cpu = "POWER8";
> + smc->tcg_default_cpu = "power8_v2.0";
> mc->has_hotpluggable_cpus = true;
> smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
> fwc->get_dev_path = spapr_get_fw_dev_path;
> @@ -3849,7 +3849,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
> sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
>
> spapr_machine_2_8_class_options(mc);
> - smc->tcg_default_cpu = "POWER7";
> + smc->tcg_default_cpu = "power7_v2.3";
> SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
> smc->phb_placement = phb_placement_2_7;
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing Igor Mammedov
@ 2017-10-06 5:04 ` David Gibson
2017-10-06 9:20 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 5:04 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 4104 bytes --]
On Thu, Oct 05, 2017 at 06:24:44PM +0200, Igor Mammedov wrote:
> use generic cpu_model parsing introduced by
> (6063d4c0f vl.c: convert cpu_model to cpu type and set of global properties before machine_init())
>
> it allows to:
> * replace sPAPRMachineClass::tcg_default_cpu with
> MachineClass::default_cpu_type
> * drop cpu_parse_cpu_model() from hw/ppc/spapr.c and reuse
> one in vl.c
> * simplify spapr_get_cpu_core_type() by removing
> not needed anymore recurrsion since alias look up
> happens earlier at vl.c and spapr_get_cpu_core_type()
> works only with resulted from that cpu type.
> * spapr no more needs to parse/depend on being phased out
> MachineState::cpu_model, all tha parsing done by generic
> code and target specific callback.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> PS:
> patch is a little bit big but it's hard to split it due
> to dependencies, so pls bear with it.
[snip]
> -static int kvm_ppc_register_host_cpu_type(void)
> +static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> {
> TypeInfo type_info = {
> .name = TYPE_HOST_POWERPC_CPU,
> .class_init = kvmppc_host_cpu_class_init,
> };
> + MachineClass *mc = MACHINE_GET_CLASS(ms);
> PowerPCCPUClass *pvr_pcc;
> ObjectClass *oc;
> DeviceClass *dc;
> @@ -2504,6 +2505,8 @@ static int kvm_ppc_register_host_cpu_type(void)
> }
> type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> type_register(&type_info);
> + /* override TCG default cpu type with 'host' cpu model */
> + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
Ugh. I dislike this, it changes the default cpu type to 'host' for
*all* machine types, whereas previously it was just true for pseries.
That wasn't by accident.
In general, I think we want there to be a single default CPU type for
a machine, regardless of TCG vs. KVM. This is particularly true for
many of the ppc machine types - they will only work with a CPU in the
right "family" (e500 / 440 / POWERx, wahtever); in many of these cases
KVM PR is usable, but using -cpu host could easily break the machine
type.
'pseries' is different, it (and only it) can be used with KVM HV - and
usually is. And KVM HV *only* works with -cpu host, due to hardware
limitations.
> oc = object_class_by_name(type_info.name);
> g_assert(oc);
> diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> index 5ee91e8..a968e86 100644
> --- a/target/ppc/translate_init.c
> +++ b/target/ppc/translate_init.c
> @@ -10277,6 +10277,19 @@ PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr)
> return pcc;
> }
>
> +static const char *ppc_cpu_lookup_alias(const char *alias)
> +{
> + int ai;
> +
> + for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
> + if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
> + return ppc_cpu_aliases[ai].model;
> + }
> + }
> +
> + return NULL;
> +}
> +
> static ObjectClass *ppc_cpu_class_by_name(const char *name)
> {
> char *cpu_model, *typename;
> @@ -10370,19 +10383,6 @@ static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> pcc->parent_parse_features(typename, features, errp);
> }
>
> -const char *ppc_cpu_lookup_alias(const char *alias)
> -{
> - int ai;
> -
> - for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
> - if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
> - return ppc_cpu_aliases[ai].model;
> - }
> - }
> -
> - return NULL;
> -}
> -
This code motion of ppc_cpu_lookup_alias appears to be unrelated to
the rest of the patch.
> PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
> {
> ObjectClass *oc = OBJECT_CLASS(pcc);
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 18/23] ppc: pnv: " Igor Mammedov
@ 2017-10-06 6:21 ` Cédric Le Goater
2017-10-06 8:34 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:21 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson,
Cédric Le Goater
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> use common cpu_model prasing in vl.c and set default cpu_model
> using generic MachineClass::default_cpu_type.
>
> Beside of switching to generic infrastructure it solves several
> issues.
>
> * ppc_cpu_class_by_name() is used to deal with lower/upper case
> and alias translations into actual cpu type, which fixes
> '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> usecases which error out with:
> 'invalid CPU model 'FOO' for powernv machine'
> * allows to switch to lower-case typenames in pnv chip/core name
> (by convention typnames should be lower-case)
> * replace aliased names /power8, power9, .../ with exact cpu model
> names (i.e. typenames should be stable but aliases might decide to
> point to other cpu model withi family or changed by kvm). It will
> also help to simplify pnv_chip/core code and get rid of dependency
> on cpu_model parsing.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> include/hw/ppc/pnv.h | 8 ++++----
> hw/ppc/pnv.c | 22 ++++++++++------------
> hw/ppc/pnv_core.c | 2 +-
> 3 files changed, 15 insertions(+), 17 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index 9c5437d..2525f7f 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> } PnvChipClass;
>
> -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> #define PNV_CHIP_POWER8E(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
>
> -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> #define PNV_CHIP_POWER8(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
>
> -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> #define PNV_CHIP_POWER8NVL(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
>
> -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> #define PNV_CHIP_POWER9(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
>
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index d46d91c..4169837 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -607,16 +607,13 @@ static void ppc_powernv_init(MachineState *machine)
> }
> }
>
> - /* We need some cpu model to instantiate the PnvChip class */
> - if (machine->cpu_model == NULL) {
> - machine->cpu_model = "POWER8";
> - }
> -
> /* Create the processor chips */
> - chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%s", machine->cpu_model);
> + i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
> + chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
> + i, machine->cpu_type);
> if (!object_class_by_name(chip_typename)) {
> - error_report("invalid CPU model '%s' for %s machine",
> - machine->cpu_model, MACHINE_GET_CLASS(machine)->name);
> + error_report("invalid CPU model '%.*s' for %s machine",
> + i, machine->cpu_type, MACHINE_GET_CLASS(machine)->name);
> exit(1);
> }
>
> @@ -716,7 +713,7 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8E";
> + k->cpu_model = "power8e_v2.1";
> k->chip_type = PNV_CHIP_POWER8E;
> k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> k->cores_mask = POWER8E_CORE_MASK;
> @@ -738,7 +735,7 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8";
> + k->cpu_model = "power8_v2.0";
> k->chip_type = PNV_CHIP_POWER8;
> k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -760,7 +757,7 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8NVL";
> + k->cpu_model = "power8nvl_v1.0";
> k->chip_type = PNV_CHIP_POWER8NVL;
> k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -782,7 +779,7 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER9";
> + k->cpu_model = "power9_v1.0";
> k->chip_type = PNV_CHIP_POWER9;
> k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> k->cores_mask = POWER9_CORE_MASK;
> @@ -1133,6 +1130,7 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
> mc->init = ppc_powernv_init;
> mc->reset = ppc_powernv_reset;
> mc->max_cpus = MAX_CPUS;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
> mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
> * storage */
> mc->no_parallel = 1;
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 6726483..44b0b24 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -227,7 +227,7 @@ static const TypeInfo pnv_core_info = {
> };
>
> static const char *pnv_core_models[] = {
> - "POWER8E", "POWER8", "POWER8NVL", "POWER9"
> + "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
> };
>
> static void pnv_core_register_types(void)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 19/23] ppc: pnv: normalize core/chip type names
2017-10-05 16:24 ` [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names Igor Mammedov
@ 2017-10-06 6:22 ` Cédric Le Goater
2017-10-06 8:37 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:22 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> typically for cpus/core type names following convention is used
>
> new_type_prefix-superclass_typename
>
> make PNV core/chip to follow common convention.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> include/hw/ppc/pnv.h | 11 +++++++----
> include/hw/ppc/pnv_core.h | 2 ++
> hw/ppc/pnv.c | 2 +-
> hw/ppc/pnv_core.c | 2 +-
> 4 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index 2525f7f..d82eee1 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -80,19 +80,22 @@ typedef struct PnvChipClass {
> uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> } PnvChipClass;
>
> -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> +#define PNV_CHIP_TYPE_SUFFIX "-" TYPE_PNV_CHIP
> +#define PNV_CHIP_TYPE_NAME(cpu_model) cpu_model PNV_CHIP_TYPE_SUFFIX
> +
> +#define TYPE_PNV_CHIP_POWER8E PNV_CHIP_TYPE_NAME("power8e_v2.1")
> #define PNV_CHIP_POWER8E(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
>
> -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> +#define TYPE_PNV_CHIP_POWER8 PNV_CHIP_TYPE_NAME("power8_v2.0")
> #define PNV_CHIP_POWER8(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
>
> -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> +#define TYPE_PNV_CHIP_POWER8NVL PNV_CHIP_TYPE_NAME("power8nvl_v1.0")
> #define PNV_CHIP_POWER8NVL(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
>
> -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> +#define TYPE_PNV_CHIP_POWER9 PNV_CHIP_TYPE_NAME("power9_v1.0")
> #define PNV_CHIP_POWER9(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
>
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index 2955a41..3360c4b 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -45,6 +45,8 @@ typedef struct PnvCoreClass {
> ObjectClass *cpu_oc;
> } PnvCoreClass;
>
> +#define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> +#define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
> extern char *pnv_core_typename(const char *model);
>
> #endif /* _PPC_PNV_CORE_H */
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 4169837..9c5eb7c 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -609,7 +609,7 @@ static void ppc_powernv_init(MachineState *machine)
>
> /* Create the processor chips */
> i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
> - chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
> + chip_typename = g_strdup_printf(PNV_CHIP_TYPE_NAME("%.*s"),
> i, machine->cpu_type);
> if (!object_class_by_name(chip_typename)) {
> error_report("invalid CPU model '%.*s' for %s machine",
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 44b0b24..b3e3f23 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -252,5 +252,5 @@ type_init(pnv_core_register_types)
>
> char *pnv_core_typename(const char *model)
> {
> - return g_strdup_printf(TYPE_PNV_CORE "-%s", model);
> + return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> }
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 21/23] ppc: pnv: define core types statically
2017-10-05 16:24 ` [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically Igor Mammedov
@ 2017-10-06 6:24 ` Cédric Le Goater
2017-10-06 8:42 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:24 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> pnv core type definition doesn't have any fields that
> require it to be defined at runtime. So replace code
> that fills in TypeInfo at runtime with static TypeInfo
> array that does the same at complie time.
This is much better.
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> hw/ppc/pnv_core.c | 48 ++++++++++++++++++++----------------------------
> 1 file changed, 20 insertions(+), 28 deletions(-)
>
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index acdfa17..000c87e 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -225,38 +225,30 @@ static void pnv_core_class_init(ObjectClass *oc, void *data)
> dc->props = pnv_core_properties;
> }
>
> -static const TypeInfo pnv_core_info = {
> - .name = TYPE_PNV_CORE,
> - .parent = TYPE_CPU_CORE,
> - .instance_size = sizeof(PnvCore),
> - .class_size = sizeof(PnvCoreClass),
> - .class_init = pnv_core_class_init,
> - .abstract = true,
> -};
> -
> -static const char *pnv_core_models[] = {
> - "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
> -};
> -
> -static void pnv_core_register_types(void)
> -{
> - int i ;
> -
> - type_register_static(&pnv_core_info);
> - for (i = 0; i < ARRAY_SIZE(pnv_core_models); ++i) {
> - TypeInfo ti = {
> - .parent = TYPE_PNV_CORE,
> - .instance_size = sizeof(PnvCore),
> - };
> - ti.name = pnv_core_typename(pnv_core_models[i]);
> - type_register(&ti);
> - g_free((void *)ti.name);
> +#define DEFINE_PNV_CORE_TYPE(cpu_model) \
> + { \
> + .parent = TYPE_PNV_CORE, \
> + .name = PNV_CORE_TYPE_NAME(cpu_model), \
> }
> -}
>
> -type_init(pnv_core_register_types)
> +static const TypeInfo pnv_core_infos[] = {
> + {
> + .name = TYPE_PNV_CORE,
> + .parent = TYPE_CPU_CORE,
> + .instance_size = sizeof(PnvCore),
> + .class_size = sizeof(PnvCoreClass),
> + .class_init = pnv_core_class_init,
> + .abstract = true,
> + },
> + DEFINE_PNV_CORE_TYPE("power8e_v2.1"),
> + DEFINE_PNV_CORE_TYPE("power8_v2.0"),
> + DEFINE_PNV_CORE_TYPE("power8nvl_v1.0"),
> + DEFINE_PNV_CORE_TYPE("power9_v1.0"),
> +};
>
> char *pnv_core_typename(const char *model)
> {
> return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> }
> +
> +DEFINE_TYPES(pnv_core_infos)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them
2017-10-05 16:24 ` [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them Igor Mammedov
@ 2017-10-06 6:27 ` Cédric Le Goater
2017-10-06 8:47 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:27 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> Use a new DEFINE_TYPES() helper to simplify type registration
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> hw/ppc/pnv.c | 92 ++++++++++++++++++++++--------------------------------------
> 1 file changed, 34 insertions(+), 58 deletions(-)
>
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index ab7083b..e23dc3c 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -730,13 +730,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8E";
> }
>
> -static const TypeInfo pnv_chip_power8e_info = {
> - .name = TYPE_PNV_CHIP_POWER8E,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8e_class_init,
> -};
> -
> static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -751,13 +744,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8";
> }
>
> -static const TypeInfo pnv_chip_power8_info = {
> - .name = TYPE_PNV_CHIP_POWER8,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8_class_init,
> -};
> -
> static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -772,13 +758,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8NVL";
> }
>
> -static const TypeInfo pnv_chip_power8nvl_info = {
> - .name = TYPE_PNV_CHIP_POWER8NVL,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8nvl_class_init,
> -};
> -
> static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -793,13 +772,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER9";
> }
>
> -static const TypeInfo pnv_chip_power9_info = {
> - .name = TYPE_PNV_CHIP_POWER9,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power9_class_init,
> -};
> -
> static void pnv_chip_core_sanitize(PnvChip *chip, Error **errp)
> {
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> @@ -1001,15 +973,6 @@ static void pnv_chip_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip";
> }
>
> -static const TypeInfo pnv_chip_info = {
> - .name = TYPE_PNV_CHIP,
> - .parent = TYPE_SYS_BUS_DEVICE,
> - .class_init = pnv_chip_class_init,
> - .instance_init = pnv_chip_init,
> - .class_size = sizeof(PnvChipClass),
> - .abstract = true,
> -};
> -
> static ICSState *pnv_ics_get(XICSFabric *xi, int irq)
> {
> PnvMachineState *pnv = POWERNV_MACHINE(xi);
> @@ -1145,27 +1108,40 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
> powernv_machine_class_props_init(oc);
> }
>
> -static const TypeInfo powernv_machine_info = {
> - .name = TYPE_POWERNV_MACHINE,
> - .parent = TYPE_MACHINE,
> - .instance_size = sizeof(PnvMachineState),
> - .instance_init = powernv_machine_initfn,
> - .class_init = powernv_machine_class_init,
> - .interfaces = (InterfaceInfo[]) {
> - { TYPE_XICS_FABRIC },
> - { TYPE_INTERRUPT_STATS_PROVIDER },
> - { },
> +#define DEFINE_PNV_CHIP_TYPE(type, class_initfn) \
> + { \
> + .name = type, \
> + .class_init = class_initfn, \
> + .parent = TYPE_PNV_CHIP, \
> + }
> +
> +static const TypeInfo types[] = {
> + {
> + .name = TYPE_POWERNV_MACHINE,
> + .parent = TYPE_MACHINE,
> + .instance_size = sizeof(PnvMachineState),
> + .instance_init = powernv_machine_initfn,
> + .class_init = powernv_machine_class_init,
> + .interfaces = (InterfaceInfo[]) {
> + { TYPE_XICS_FABRIC },
> + { TYPE_INTERRUPT_STATS_PROVIDER },
> + { },
> + },
> },
> + {
> + .name = TYPE_PNV_CHIP,
> + .parent = TYPE_SYS_BUS_DEVICE,
> + .class_init = pnv_chip_class_init,
> + .instance_init = pnv_chip_init,
> + .instance_size = sizeof(PnvChip),
> + .class_size = sizeof(PnvChipClass),
> + .abstract = true,
> + },
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER9, pnv_chip_power9_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8, pnv_chip_power8_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8E, pnv_chip_power8e_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8NVL,
> + pnv_chip_power8nvl_class_init),
> };
>
> -static void powernv_machine_register_types(void)
> -{
> - type_register_static(&powernv_machine_info);
> - type_register_static(&pnv_chip_info);
> - type_register_static(&pnv_chip_power8e_info);
> - type_register_static(&pnv_chip_power8_info);
> - type_register_static(&pnv_chip_power8nvl_info);
> - type_register_static(&pnv_chip_power9_info);
> -}
> -
> -type_init(powernv_machine_register_types)
> +DEFINE_TYPES(types)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field
2017-10-05 16:24 ` [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field Igor Mammedov
@ 2017-10-06 6:27 ` Cédric Le Goater
2017-10-06 8:41 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:27 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> deduce cpu type directly from core type instead of
> maintaining type mapping in PnvCoreClass::cpu_oc and doing
> extra cpu_model parsing in pnv_core_class_init()
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> include/hw/ppc/pnv_core.h | 1 -
> hw/ppc/pnv_core.c | 18 ++++++++++++------
> 2 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index 3360c4b..a336a1f 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -42,7 +42,6 @@ typedef struct PnvCore {
>
> typedef struct PnvCoreClass {
> DeviceClass parent_class;
> - ObjectClass *cpu_oc;
> } PnvCoreClass;
>
> #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index b3e3f23..acdfa17 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -27,6 +27,16 @@
> #include "hw/ppc/pnv_xscom.h"
> #include "hw/ppc/xics.h"
>
> +static const char *pvn_core_cpu_typename(PnvCore *pc)
> +{
> + const char *core_type = object_class_get_name(object_get_class(OBJECT(pc)));
> + int len = strlen(core_type) - strlen(PNV_CORE_TYPE_SUFFIX);
> + char *s = g_strdup_printf(POWERPC_CPU_TYPE_NAME("%.*s"), len, core_type);
> + const char *cpu_type = object_class_get_name(object_class_by_name(s));
> + g_free(s);
> + return cpu_type;
> +}
> +
> static void powernv_cpu_reset(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> @@ -148,8 +158,7 @@ static void pnv_core_realize(DeviceState *dev, Error **errp)
> {
> PnvCore *pc = PNV_CORE(OBJECT(dev));
> CPUCore *cc = CPU_CORE(OBJECT(dev));
> - PnvCoreClass *pcc = PNV_CORE_GET_CLASS(OBJECT(dev));
> - const char *typename = object_class_get_name(pcc->cpu_oc);
> + const char *typename = pvn_core_cpu_typename(pc);
> size_t size = object_type_get_instance_size(typename);
> Error *local_err = NULL;
> void *obj;
> @@ -211,11 +220,9 @@ static Property pnv_core_properties[] = {
> static void pnv_core_class_init(ObjectClass *oc, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(oc);
> - PnvCoreClass *pcc = PNV_CORE_CLASS(oc);
>
> dc->realize = pnv_core_realize;
> dc->props = pnv_core_properties;
> - pcc->cpu_oc = cpu_class_by_name(TYPE_POWERPC_CPU, data);
> }
>
> static const TypeInfo pnv_core_info = {
> @@ -223,6 +230,7 @@ static const TypeInfo pnv_core_info = {
> .parent = TYPE_CPU_CORE,
> .instance_size = sizeof(PnvCore),
> .class_size = sizeof(PnvCoreClass),
> + .class_init = pnv_core_class_init,
> .abstract = true,
> };
>
> @@ -239,8 +247,6 @@ static void pnv_core_register_types(void)
> TypeInfo ti = {
> .parent = TYPE_PNV_CORE,
> .instance_size = sizeof(PnvCore),
> - .class_init = pnv_core_class_init,
> - .class_data = (void *) pnv_core_models[i],
> };
> ti.name = pnv_core_typename(pnv_core_models[i]);
> type_register(&ti);
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field
2017-10-05 16:24 ` [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field Igor Mammedov
@ 2017-10-06 6:27 ` Cédric Le Goater
2017-10-06 8:46 ` [Qemu-devel] " David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: Cédric Le Goater @ 2017-10-06 6:27 UTC (permalink / raw)
To: Igor Mammedov, qemu-devel
Cc: open list:ppce500, Hervé Poussineau, David Gibson
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> deduce core type directly from chip type instead of
> maintaining type mapping in PnvChipClass::cpu_model.
nice one again.
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
> ---
> include/hw/ppc/pnv.h | 1 -
> include/hw/ppc/pnv_core.h | 1 -
> hw/ppc/pnv.c | 25 +++++++++++++------------
> hw/ppc/pnv_core.c | 5 -----
> 4 files changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index d82eee1..20244da 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -69,7 +69,6 @@ typedef struct PnvChipClass {
> SysBusDeviceClass parent_class;
>
> /*< public >*/
> - const char *cpu_model;
> PnvChipType chip_type;
> uint64_t chip_cfam_id;
> uint64_t cores_mask;
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index a336a1f..e337af7 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -46,6 +46,5 @@ typedef struct PnvCoreClass {
>
> #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> #define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
> -extern char *pnv_core_typename(const char *model);
>
> #endif /* _PPC_PNV_CORE_H */
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 9c5eb7c..ab7083b 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -55,6 +55,16 @@
> #define KERNEL_LOAD_ADDR 0x20000000
> #define INITRD_LOAD_ADDR 0x40000000
>
> +static const char *pvn_chip_core_typename(const PnvChip *o)
> +{
> + const char *chip_type = object_class_get_name(object_get_class(OBJECT(o)));
> + int len = strlen(chip_type) - strlen(PNV_CHIP_TYPE_SUFFIX);
> + char *s = g_strdup_printf(PNV_CORE_TYPE_NAME("%.*s"), len, chip_type);
> + const char *core_type = object_class_get_name(object_class_by_name(s));
> + g_free(s);
> + return core_type;
> +}
> +
> /*
> * On Power Systems E880 (POWER8), the max cpus (threads) should be :
> * 4 * 4 sockets * 12 cores * 8 threads = 1536
> @@ -270,8 +280,7 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *fdt)
>
> static void powernv_populate_chip(PnvChip *chip, void *fdt)
> {
> - PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i;
>
> @@ -301,7 +310,6 @@ static void powernv_populate_chip(PnvChip *chip, void *fdt)
> powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start,
> chip->ram_size);
> }
> - g_free(typename);
> }
>
> static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
> @@ -713,7 +721,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8e_v2.1";
> k->chip_type = PNV_CHIP_POWER8E;
> k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> k->cores_mask = POWER8E_CORE_MASK;
> @@ -735,7 +742,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8_v2.0";
> k->chip_type = PNV_CHIP_POWER8;
> k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -757,7 +763,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8nvl_v1.0";
> k->chip_type = PNV_CHIP_POWER8NVL;
> k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -779,7 +784,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power9_v1.0";
> k->chip_type = PNV_CHIP_POWER9;
> k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> k->cores_mask = POWER9_CORE_MASK;
> @@ -854,7 +858,7 @@ static void pnv_chip_init(Object *obj)
> static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> {
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i, j;
> char *name;
> @@ -879,8 +883,6 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> memory_region_add_subregion(&chip->icp_mmio, pir << 12, &icp->mmio);
> }
> }
> -
> - g_free(typename);
> }
>
> static void pnv_chip_realize(DeviceState *dev, Error **errp)
> @@ -888,7 +890,7 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> PnvChip *chip = PNV_CHIP(dev);
> Error *error = NULL;
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i, core_hwid;
>
> @@ -947,7 +949,6 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> &PNV_CORE(pnv_core)->xscom_regs);
> i++;
> }
> - g_free(typename);
>
> /* Create LPC controller */
> object_property_set_bool(OBJECT(&chip->lpc), true, "realized",
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 000c87e..621b69e 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -246,9 +246,4 @@ static const TypeInfo pnv_core_infos[] = {
> DEFINE_PNV_CORE_TYPE("power9_v1.0"),
> };
>
> -char *pnv_core_typename(const char *model)
> -{
> - return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> -}
> -
> DEFINE_TYPES(pnv_core_infos)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases
2017-10-05 16:24 ` [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases Igor Mammedov
2017-10-06 4:43 ` David Gibson
@ 2017-10-06 7:39 ` Greg Kurz
2017-10-06 9:27 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: Greg Kurz @ 2017-10-06 7:39 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Thu, 5 Oct 2017 18:24:43 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
So... this is preparatory work for the next patch because the generic cpu_model
parsing code doesn't handle aliases, is it ?
> hw/ppc/spapr.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index ad7afd6..0661dba 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3603,7 +3603,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
> hc->unplug_request = spapr_machine_device_unplug_request;
>
> smc->dr_lmb_enabled = true;
> - smc->tcg_default_cpu = "POWER8";
> + smc->tcg_default_cpu = "power8_v2.0";
> mc->has_hotpluggable_cpus = true;
> smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
> fwc->get_dev_path = spapr_get_fw_dev_path;
> @@ -3849,7 +3849,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
> sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
>
> spapr_machine_2_8_class_options(mc);
> - smc->tcg_default_cpu = "POWER7";
> + smc->tcg_default_cpu = "power7_v2.3";
> SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
> smc->phb_placement = phb_placement_2_7;
> }
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2017-10-06 3:02 ` David Gibson
@ 2017-10-06 8:27 ` Igor Mammedov
2017-10-06 9:12 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 8:27 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 14:02:56 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:31PM +0200, Igor Mammedov wrote:
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>
> Acked-by: David Gibson <david@gibson.dropbear.id.au>
>
> Do you want me to queue the ppc patches here, or do you already have a
> plan for that?
Id didn't want to distract others with only PPC related code so
I've posted this series separately for you to merge it via PPC tree
>
> > ---
> > hw/ppc/e500.c | 8 +-------
> > hw/ppc/e500plat.c | 1 +
> > hw/ppc/mpc8544ds.c | 2 ++
> > 3 files changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> > index db0e49a..9178e70 100644
> > --- a/hw/ppc/e500.c
> > +++ b/hw/ppc/e500.c
> > @@ -803,11 +803,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
> > SysBusDevice *s;
> > PPCE500CCSRState *ccsr;
> >
> > - /* Setup CPUs */
> > - if (machine->cpu_model == NULL) {
> > - machine->cpu_model = "e500v2_v30";
> > - }
> > -
> > irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
> > irqs[0] = g_malloc0(smp_cpus * sizeof(qemu_irq) * OPENPIC_OUTPUT_NB);
> > for (i = 0; i < smp_cpus; i++) {
> > @@ -815,8 +810,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
> > CPUState *cs;
> > qemu_irq *input;
> >
> > - cpu = POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU,
> > - machine->cpu_model));
> > + cpu = POWERPC_CPU(cpu_create(machine->cpu_type));
> > env = &cpu->env;
> > cs = CPU(cpu);
> >
> > diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c
> > index 94b4545..e59e80f 100644
> > --- a/hw/ppc/e500plat.c
> > +++ b/hw/ppc/e500plat.c
> > @@ -64,6 +64,7 @@ static void e500plat_machine_init(MachineClass *mc)
> > mc->init = e500plat_init;
> > mc->max_cpus = 32;
> > mc->has_dynamic_sysbus = true;
> > + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
> > }
> >
> > DEFINE_MACHINE("ppce500", e500plat_machine_init)
> > diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c
> > index 27b8289..1717953 100644
> > --- a/hw/ppc/mpc8544ds.c
> > +++ b/hw/ppc/mpc8544ds.c
> > @@ -16,6 +16,7 @@
> > #include "sysemu/device_tree.h"
> > #include "hw/ppc/openpic.h"
> > #include "qemu/error-report.h"
> > +#include "cpu.h"
> >
> > static void mpc8544ds_fixup_devtree(PPCE500Params *params, void *fdt)
> > {
> > @@ -55,6 +56,7 @@ static void ppce500_machine_init(MachineClass *mc)
> > mc->desc = "mpc8544ds";
> > mc->init = mpc8544ds_init;
> > mc->max_cpus = 15;
> > + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("e500v2_v30");
> > }
> >
> > DEFINE_MACHINE("mpc8544ds", ppce500_machine_init)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-05 16:24 ` [Qemu-devel] [PATCH 18/23] ppc: pnv: " Igor Mammedov
2017-10-06 6:21 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:34 ` David Gibson
2017-10-06 9:30 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:34 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 6523 bytes --]
On Thu, Oct 05, 2017 at 06:24:45PM +0200, Igor Mammedov wrote:
> use common cpu_model prasing in vl.c and set default cpu_model
> using generic MachineClass::default_cpu_type.
>
> Beside of switching to generic infrastructure it solves several
> issues.
>
> * ppc_cpu_class_by_name() is used to deal with lower/upper case
> and alias translations into actual cpu type, which fixes
> '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> usecases which error out with:
> 'invalid CPU model 'FOO' for powernv machine'
> * allows to switch to lower-case typenames in pnv chip/core name
> (by convention typnames should be lower-case)
> * replace aliased names /power8, power9, .../ with exact cpu model
> names (i.e. typenames should be stable but aliases might decide to
> point to other cpu model withi family or changed by kvm). It will
> also help to simplify pnv_chip/core code and get rid of dependency
> on cpu_model parsing.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/ppc/pnv.h | 8 ++++----
> hw/ppc/pnv.c | 22 ++++++++++------------
> hw/ppc/pnv_core.c | 2 +-
> 3 files changed, 15 insertions(+), 17 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index 9c5437d..2525f7f 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> } PnvChipClass;
>
> -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> #define PNV_CHIP_POWER8E(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
>
> -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> #define PNV_CHIP_POWER8(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
>
> -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> #define PNV_CHIP_POWER8NVL(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
>
> -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
Uh.. we really should add a DD2 power9 before we make this change.
Making a DD1.0 (read, buggy as hell) chip the default is not
sensible. Especially since we don't implement the various DD1 bugs
and differences in qemu.
> #define PNV_CHIP_POWER9(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
>
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index d46d91c..4169837 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -607,16 +607,13 @@ static void ppc_powernv_init(MachineState *machine)
> }
> }
>
> - /* We need some cpu model to instantiate the PnvChip class */
> - if (machine->cpu_model == NULL) {
> - machine->cpu_model = "POWER8";
> - }
> -
> /* Create the processor chips */
> - chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%s", machine->cpu_model);
> + i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
> + chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
> + i, machine->cpu_type);
> if (!object_class_by_name(chip_typename)) {
> - error_report("invalid CPU model '%s' for %s machine",
> - machine->cpu_model, MACHINE_GET_CLASS(machine)->name);
> + error_report("invalid CPU model '%.*s' for %s machine",
> + i, machine->cpu_type, MACHINE_GET_CLASS(machine)->name);
> exit(1);
> }
>
> @@ -716,7 +713,7 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8E";
> + k->cpu_model = "power8e_v2.1";
> k->chip_type = PNV_CHIP_POWER8E;
> k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> k->cores_mask = POWER8E_CORE_MASK;
> @@ -738,7 +735,7 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8";
> + k->cpu_model = "power8_v2.0";
> k->chip_type = PNV_CHIP_POWER8;
> k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -760,7 +757,7 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER8NVL";
> + k->cpu_model = "power8nvl_v1.0";
> k->chip_type = PNV_CHIP_POWER8NVL;
> k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -782,7 +779,7 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "POWER9";
> + k->cpu_model = "power9_v1.0";
> k->chip_type = PNV_CHIP_POWER9;
> k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> k->cores_mask = POWER9_CORE_MASK;
> @@ -1133,6 +1130,7 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
> mc->init = ppc_powernv_init;
> mc->reset = ppc_powernv_reset;
> mc->max_cpus = MAX_CPUS;
> + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
> mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
> * storage */
> mc->no_parallel = 1;
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 6726483..44b0b24 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -227,7 +227,7 @@ static const TypeInfo pnv_core_info = {
> };
>
> static const char *pnv_core_models[] = {
> - "POWER8E", "POWER8", "POWER8NVL", "POWER9"
> + "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
> };
>
> static void pnv_core_register_types(void)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names
2017-10-05 16:24 ` [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names Igor Mammedov
2017-10-06 6:22 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:37 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:37 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3641 bytes --]
On Thu, Oct 05, 2017 at 06:24:46PM +0200, Igor Mammedov wrote:
> typically for cpus/core type names following convention is used
>
> new_type_prefix-superclass_typename
>
> make PNV core/chip to follow common convention.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> include/hw/ppc/pnv.h | 11 +++++++----
> include/hw/ppc/pnv_core.h | 2 ++
> hw/ppc/pnv.c | 2 +-
> hw/ppc/pnv_core.c | 2 +-
> 4 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index 2525f7f..d82eee1 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -80,19 +80,22 @@ typedef struct PnvChipClass {
> uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> } PnvChipClass;
>
> -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> +#define PNV_CHIP_TYPE_SUFFIX "-" TYPE_PNV_CHIP
> +#define PNV_CHIP_TYPE_NAME(cpu_model) cpu_model PNV_CHIP_TYPE_SUFFIX
> +
> +#define TYPE_PNV_CHIP_POWER8E PNV_CHIP_TYPE_NAME("power8e_v2.1")
> #define PNV_CHIP_POWER8E(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
>
> -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> +#define TYPE_PNV_CHIP_POWER8 PNV_CHIP_TYPE_NAME("power8_v2.0")
> #define PNV_CHIP_POWER8(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
>
> -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> +#define TYPE_PNV_CHIP_POWER8NVL PNV_CHIP_TYPE_NAME("power8nvl_v1.0")
> #define PNV_CHIP_POWER8NVL(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
>
> -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> +#define TYPE_PNV_CHIP_POWER9 PNV_CHIP_TYPE_NAME("power9_v1.0")
> #define PNV_CHIP_POWER9(obj) \
> OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
>
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index 2955a41..3360c4b 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -45,6 +45,8 @@ typedef struct PnvCoreClass {
> ObjectClass *cpu_oc;
> } PnvCoreClass;
>
> +#define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> +#define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
> extern char *pnv_core_typename(const char *model);
>
> #endif /* _PPC_PNV_CORE_H */
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 4169837..9c5eb7c 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -609,7 +609,7 @@ static void ppc_powernv_init(MachineState *machine)
>
> /* Create the processor chips */
> i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
> - chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
> + chip_typename = g_strdup_printf(PNV_CHIP_TYPE_NAME("%.*s"),
> i, machine->cpu_type);
> if (!object_class_by_name(chip_typename)) {
> error_report("invalid CPU model '%.*s' for %s machine",
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 44b0b24..b3e3f23 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -252,5 +252,5 @@ type_init(pnv_core_register_types)
>
> char *pnv_core_typename(const char *model)
> {
> - return g_strdup_printf(TYPE_PNV_CORE "-%s", model);
> + return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [Qemu-ppc] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-05 19:05 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
@ 2017-10-06 8:40 ` Igor Mammedov
0 siblings, 0 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 8:40 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, open list:ppce500, Hervé Poussineau, David Gibson
On Thu, 5 Oct 2017 21:05:37 +0200
Greg Kurz <groug@kaod.org> wrote:
> On Thu, 5 Oct 2017 18:24:39 +0200
> Igor Mammedov <imammedo@redhat.com> wrote:
>
> > there is a dedicated callback CPUClass::parse_features
> > which purpose is to convert -cpu features into a set of
> > global properties AND deal with compat/legacy features
> > that couldn't be directly translated into CPU's properties.
> >
> > Create ppc variant of it (ppc_cpu_parse_featurestr) and
> > move 'compat=val' handling from spapr_cpu_core.c into it.
> > That removes a dependency of board/core code on cpu_model
> > parsing and would let to reuse common -cpu parsing
> > introduced by 6063d4c0
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > include/hw/ppc/spapr.h | 1 -
> > target/ppc/cpu-qom.h | 1 +
> > hw/ppc/spapr.c | 2 +-
> > hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> > target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> > 5 files changed, 60 insertions(+), 52 deletions(-)
> >
> > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> > index c1b365f..8ca4f94 100644
> > --- a/include/hw/ppc/spapr.h
> > +++ b/include/hw/ppc/spapr.h
> > @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > uint32_t count, uint32_t index);
> > void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > uint32_t count, uint32_t index);
> > -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> > int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> > void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> > Error **errp);
> > diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> > index d0cf6ca..429b47f 100644
> > --- a/target/ppc/cpu-qom.h
> > +++ b/target/ppc/cpu-qom.h
> > @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> > DeviceRealize parent_realize;
> > DeviceUnrealize parent_unrealize;
> > void (*parent_reset)(CPUState *cpu);
> > + void (*parent_parse_features)(const char *type, char *str, Error **errp);
> >
> > uint32_t pvr;
> > bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index ff87f15..01b3012 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> > machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> > }
> >
> > - spapr_cpu_parse_features(spapr);
> > + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
> >
> > spapr_set_vsmt_mode(spapr, &error_fatal);
> >
> > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > index 3dea5ff..427d47f 100644
> > --- a/hw/ppc/spapr_cpu_core.c
> > +++ b/hw/ppc/spapr_cpu_core.c
> > @@ -21,56 +21,6 @@
> > #include "sysemu/hw_accel.h"
> > #include "qemu/error-report.h"
> >
> > -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> > -{
> > - /*
> > - * Backwards compatibility hack:
> > - *
> > - * CPUs had a "compat=" property which didn't make sense for
> > - * anything except pseries. It was replaced by "max-cpu-compat"
> > - * machine option. This supports old command lines like
> > - * -cpu POWER8,compat=power7
> > - * By stripping the compat option and applying it to the machine
> > - * before passing it on to the cpu level parser.
> > - */
> > - gchar **inpieces;
> > - gchar *newprops;
> > - int i, j;
> > - gchar *compat_str = NULL;
> > -
> > - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> > -
> > - /* inpieces[0] is the actual model string */
> > - i = 1;
> > - j = 1;
> > - while (inpieces[i]) {
> > - if (g_str_has_prefix(inpieces[i], "compat=")) {
> > - /* in case of multiple compat= options */
> > - g_free(compat_str);
> > - compat_str = inpieces[i];
> > - } else {
> > - j++;
> > - }
> > -
> > - i++;
> > - /* Excise compat options from list */
> > - inpieces[j] = inpieces[i];
> > - }
> > -
> > - if (compat_str) {
> > - char *val = compat_str + strlen("compat=");
> > -
> > - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> > - &error_fatal);
> > -
> > - }
> > -
> > - newprops = g_strjoinv(",", inpieces);
> > - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> > - g_free(newprops);
> > - g_strfreev(inpieces);
> > -}
> > -
> > static void spapr_cpu_reset(void *opaque)
> > {
> > PowerPCCPU *cpu = opaque;
> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > index c6399a3..5ee91e8 100644
> > --- a/target/ppc/translate_init.c
> > +++ b/target/ppc/translate_init.c
> > @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
> >
> > return NULL;
> > }
>
> Maybe add en empty line here ?
sure
>
> > +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> > + Error **errp)
> > +{
> > + const PowerPCCPUClass *pcc;
> > + char *compat_str = NULL;
> > + char *s = features;
> > + char **inpieces;
> > + Error *local_err = NULL;
> > + int i;
> > +
> > + if (!features) {
> > + return;
> > + }
> > +
> > + /*
> > + * Backwards compatibility hack:
> > + *
> > + * CPUs had a "compat=" property which didn't make sense for
> > + * anything except pseries. It was replaced by "max-cpu-compat"
> > + * machine option. This supports old command lines like
> > + * -cpu POWER8,compat=power7
> > + * By stripping the compat option and applying it to the machine
> > + * before passing it on to the cpu level parser.
> > + */
> > + inpieces = g_strsplit(features, ",", 0);
> > + *s = '\0';
> > + for (i = 0; inpieces[i]; i++) {
> > + if (g_str_has_prefix(inpieces[i], "compat=")) {
> > + compat_str = inpieces[i];
> > + continue;
> > + }
> > + if ((i != 0) && (s != features)) {
> > + s = g_stpcpy(s, ",");
> > + }
> > + s = g_stpcpy(s, inpieces[i]);
> > + }
> > +
> > + if (compat_str) {
> > + Object *machine = qdev_get_machine();
> > + if (machine) {
>
> Can qdev_get_machine() return NULL really ? Shouldn't this be
> object_dynamic_cast(machine, TYPE_MACHINE) instead, in case
> we're running a user-only emulator ?
ok, I'll fix it like suggested
>
> > + char *v = compat_str + strlen("compat=");
> > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > + } else {
> > + error_setg(&local_err, "Not supported property: %s", compat_str);
> > + }
> > + }
> > + g_strfreev(inpieces);
> > + if (local_err) {
> > + error_propagate(errp, local_err);
> > + return;
> > + }
> > +
> > + /* do property processing with generic handler */
> > + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> > + pcc->parent_parse_features(typename, features, errp);
> > +}
> >
> > const char *ppc_cpu_lookup_alias(const char *alias)
> > {
> > @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> > cc->reset = ppc_cpu_reset;
> >
> > cc->class_by_name = ppc_cpu_class_by_name;
> > + pcc->parent_parse_features = cc->parse_features;
> > + cc->parse_features = ppc_cpu_parse_featurestr;
> > cc->has_work = ppc_cpu_has_work;
> > cc->do_interrupt = ppc_cpu_do_interrupt;
> > cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field
2017-10-05 16:24 ` [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:41 ` David Gibson
2017-10-06 9:31 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:41 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3415 bytes --]
On Thu, Oct 05, 2017 at 06:24:47PM +0200, Igor Mammedov wrote:
> deduce cpu type directly from core type instead of
> maintaining type mapping in PnvCoreClass::cpu_oc and doing
> extra cpu_model parsing in pnv_core_class_init()
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/ppc/pnv_core.h | 1 -
> hw/ppc/pnv_core.c | 18 ++++++++++++------
> 2 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index 3360c4b..a336a1f 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -42,7 +42,6 @@ typedef struct PnvCore {
>
> typedef struct PnvCoreClass {
> DeviceClass parent_class;
> - ObjectClass *cpu_oc;
> } PnvCoreClass;
>
> #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index b3e3f23..acdfa17 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -27,6 +27,16 @@
> #include "hw/ppc/pnv_xscom.h"
> #include "hw/ppc/xics.h"
>
> +static const char *pvn_core_cpu_typename(PnvCore *pc)
Uh.. s/pvn/pnv/ ..
> +{
> + const char *core_type = object_class_get_name(object_get_class(OBJECT(pc)));
> + int len = strlen(core_type) - strlen(PNV_CORE_TYPE_SUFFIX);
> + char *s = g_strdup_printf(POWERPC_CPU_TYPE_NAME("%.*s"), len, core_type);
> + const char *cpu_type = object_class_get_name(object_class_by_name(s));
> + g_free(s);
> + return cpu_type;
> +}
> +
> static void powernv_cpu_reset(void *opaque)
> {
> PowerPCCPU *cpu = opaque;
> @@ -148,8 +158,7 @@ static void pnv_core_realize(DeviceState *dev, Error **errp)
> {
> PnvCore *pc = PNV_CORE(OBJECT(dev));
> CPUCore *cc = CPU_CORE(OBJECT(dev));
> - PnvCoreClass *pcc = PNV_CORE_GET_CLASS(OBJECT(dev));
> - const char *typename = object_class_get_name(pcc->cpu_oc);
> + const char *typename = pvn_core_cpu_typename(pc);
> size_t size = object_type_get_instance_size(typename);
> Error *local_err = NULL;
> void *obj;
> @@ -211,11 +220,9 @@ static Property pnv_core_properties[] = {
> static void pnv_core_class_init(ObjectClass *oc, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(oc);
> - PnvCoreClass *pcc = PNV_CORE_CLASS(oc);
>
> dc->realize = pnv_core_realize;
> dc->props = pnv_core_properties;
> - pcc->cpu_oc = cpu_class_by_name(TYPE_POWERPC_CPU, data);
> }
>
> static const TypeInfo pnv_core_info = {
> @@ -223,6 +230,7 @@ static const TypeInfo pnv_core_info = {
> .parent = TYPE_CPU_CORE,
> .instance_size = sizeof(PnvCore),
> .class_size = sizeof(PnvCoreClass),
> + .class_init = pnv_core_class_init,
> .abstract = true,
> };
>
> @@ -239,8 +247,6 @@ static void pnv_core_register_types(void)
> TypeInfo ti = {
> .parent = TYPE_PNV_CORE,
> .instance_size = sizeof(PnvCore),
> - .class_init = pnv_core_class_init,
> - .class_data = (void *) pnv_core_models[i],
> };
> ti.name = pnv_core_typename(pnv_core_models[i]);
> type_register(&ti);
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically
2017-10-05 16:24 ` [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically Igor Mammedov
2017-10-06 6:24 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:42 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:42 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 590 bytes --]
On Thu, Oct 05, 2017 at 06:24:48PM +0200, Igor Mammedov wrote:
> pnv core type definition doesn't have any fields that
> require it to be defined at runtime. So replace code
> that fills in TypeInfo at runtime with static TypeInfo
> array that does the same at complie time.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field
2017-10-05 16:24 ` [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:46 ` David Gibson
2017-10-06 9:32 ` Igor Mammedov
1 sibling, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:46 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 6560 bytes --]
On Thu, Oct 05, 2017 at 06:24:49PM +0200, Igor Mammedov wrote:
> deduce core type directly from chip type instead of
> maintaining type mapping in PnvChipClass::cpu_model.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> include/hw/ppc/pnv.h | 1 -
> include/hw/ppc/pnv_core.h | 1 -
> hw/ppc/pnv.c | 25 +++++++++++++------------
> hw/ppc/pnv_core.c | 5 -----
> 4 files changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> index d82eee1..20244da 100644
> --- a/include/hw/ppc/pnv.h
> +++ b/include/hw/ppc/pnv.h
> @@ -69,7 +69,6 @@ typedef struct PnvChipClass {
> SysBusDeviceClass parent_class;
>
> /*< public >*/
> - const char *cpu_model;
> PnvChipType chip_type;
> uint64_t chip_cfam_id;
> uint64_t cores_mask;
> diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> index a336a1f..e337af7 100644
> --- a/include/hw/ppc/pnv_core.h
> +++ b/include/hw/ppc/pnv_core.h
> @@ -46,6 +46,5 @@ typedef struct PnvCoreClass {
>
> #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> #define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
> -extern char *pnv_core_typename(const char *model);
>
> #endif /* _PPC_PNV_CORE_H */
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 9c5eb7c..ab7083b 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -55,6 +55,16 @@
> #define KERNEL_LOAD_ADDR 0x20000000
> #define INITRD_LOAD_ADDR 0x40000000
>
> +static const char *pvn_chip_core_typename(const PnvChip *o)
s/pvn/pnv/ again.
> +{
> + const char *chip_type = object_class_get_name(object_get_class(OBJECT(o)));
> + int len = strlen(chip_type) - strlen(PNV_CHIP_TYPE_SUFFIX);
> + char *s = g_strdup_printf(PNV_CORE_TYPE_NAME("%.*s"), len, chip_type);
> + const char *core_type = object_class_get_name(object_class_by_name(s));
> + g_free(s);
> + return core_type;
> +}
> +
> /*
> * On Power Systems E880 (POWER8), the max cpus (threads) should be :
> * 4 * 4 sockets * 12 cores * 8 threads = 1536
> @@ -270,8 +280,7 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *fdt)
>
> static void powernv_populate_chip(PnvChip *chip, void *fdt)
> {
> - PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i;
>
> @@ -301,7 +310,6 @@ static void powernv_populate_chip(PnvChip *chip, void *fdt)
> powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start,
> chip->ram_size);
> }
> - g_free(typename);
> }
>
> static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
> @@ -713,7 +721,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8e_v2.1";
> k->chip_type = PNV_CHIP_POWER8E;
> k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> k->cores_mask = POWER8E_CORE_MASK;
> @@ -735,7 +742,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8_v2.0";
> k->chip_type = PNV_CHIP_POWER8;
> k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -757,7 +763,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power8nvl_v1.0";
> k->chip_type = PNV_CHIP_POWER8NVL;
> k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> k->cores_mask = POWER8_CORE_MASK;
> @@ -779,7 +784,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PnvChipClass *k = PNV_CHIP_CLASS(klass);
>
> - k->cpu_model = "power9_v1.0";
> k->chip_type = PNV_CHIP_POWER9;
> k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> k->cores_mask = POWER9_CORE_MASK;
> @@ -854,7 +858,7 @@ static void pnv_chip_init(Object *obj)
> static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> {
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i, j;
> char *name;
> @@ -879,8 +883,6 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> memory_region_add_subregion(&chip->icp_mmio, pir << 12, &icp->mmio);
> }
> }
> -
> - g_free(typename);
> }
>
> static void pnv_chip_realize(DeviceState *dev, Error **errp)
> @@ -888,7 +890,7 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> PnvChip *chip = PNV_CHIP(dev);
> Error *error = NULL;
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> - char *typename = pnv_core_typename(pcc->cpu_model);
> + const char *typename = pvn_chip_core_typename(chip);
> size_t typesize = object_type_get_instance_size(typename);
> int i, core_hwid;
>
> @@ -947,7 +949,6 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> &PNV_CORE(pnv_core)->xscom_regs);
> i++;
> }
> - g_free(typename);
>
> /* Create LPC controller */
> object_property_set_bool(OBJECT(&chip->lpc), true, "realized",
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index 000c87e..621b69e 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -246,9 +246,4 @@ static const TypeInfo pnv_core_infos[] = {
> DEFINE_PNV_CORE_TYPE("power9_v1.0"),
> };
>
> -char *pnv_core_typename(const char *model)
> -{
> - return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> -}
> -
> DEFINE_TYPES(pnv_core_infos)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them
2017-10-05 16:24 ` [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
@ 2017-10-06 8:47 ` David Gibson
1 sibling, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 8:47 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 5898 bytes --]
On Thu, Oct 05, 2017 at 06:24:50PM +0200, Igor Mammedov wrote:
> Use a new DEFINE_TYPES() helper to simplify type registration
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/ppc/pnv.c | 92 ++++++++++++++++++++++--------------------------------------
> 1 file changed, 34 insertions(+), 58 deletions(-)
>
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index ab7083b..e23dc3c 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -730,13 +730,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8E";
> }
>
> -static const TypeInfo pnv_chip_power8e_info = {
> - .name = TYPE_PNV_CHIP_POWER8E,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8e_class_init,
> -};
> -
> static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -751,13 +744,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8";
> }
>
> -static const TypeInfo pnv_chip_power8_info = {
> - .name = TYPE_PNV_CHIP_POWER8,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8_class_init,
> -};
> -
> static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -772,13 +758,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER8NVL";
> }
>
> -static const TypeInfo pnv_chip_power8nvl_info = {
> - .name = TYPE_PNV_CHIP_POWER8NVL,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power8nvl_class_init,
> -};
> -
> static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> @@ -793,13 +772,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip POWER9";
> }
>
> -static const TypeInfo pnv_chip_power9_info = {
> - .name = TYPE_PNV_CHIP_POWER9,
> - .parent = TYPE_PNV_CHIP,
> - .instance_size = sizeof(PnvChip),
> - .class_init = pnv_chip_power9_class_init,
> -};
> -
> static void pnv_chip_core_sanitize(PnvChip *chip, Error **errp)
> {
> PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> @@ -1001,15 +973,6 @@ static void pnv_chip_class_init(ObjectClass *klass, void *data)
> dc->desc = "PowerNV Chip";
> }
>
> -static const TypeInfo pnv_chip_info = {
> - .name = TYPE_PNV_CHIP,
> - .parent = TYPE_SYS_BUS_DEVICE,
> - .class_init = pnv_chip_class_init,
> - .instance_init = pnv_chip_init,
> - .class_size = sizeof(PnvChipClass),
> - .abstract = true,
> -};
> -
> static ICSState *pnv_ics_get(XICSFabric *xi, int irq)
> {
> PnvMachineState *pnv = POWERNV_MACHINE(xi);
> @@ -1145,27 +1108,40 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
> powernv_machine_class_props_init(oc);
> }
>
> -static const TypeInfo powernv_machine_info = {
> - .name = TYPE_POWERNV_MACHINE,
> - .parent = TYPE_MACHINE,
> - .instance_size = sizeof(PnvMachineState),
> - .instance_init = powernv_machine_initfn,
> - .class_init = powernv_machine_class_init,
> - .interfaces = (InterfaceInfo[]) {
> - { TYPE_XICS_FABRIC },
> - { TYPE_INTERRUPT_STATS_PROVIDER },
> - { },
> +#define DEFINE_PNV_CHIP_TYPE(type, class_initfn) \
> + { \
> + .name = type, \
> + .class_init = class_initfn, \
> + .parent = TYPE_PNV_CHIP, \
> + }
> +
> +static const TypeInfo types[] = {
> + {
> + .name = TYPE_POWERNV_MACHINE,
> + .parent = TYPE_MACHINE,
> + .instance_size = sizeof(PnvMachineState),
> + .instance_init = powernv_machine_initfn,
> + .class_init = powernv_machine_class_init,
> + .interfaces = (InterfaceInfo[]) {
> + { TYPE_XICS_FABRIC },
> + { TYPE_INTERRUPT_STATS_PROVIDER },
> + { },
> + },
> },
> + {
> + .name = TYPE_PNV_CHIP,
> + .parent = TYPE_SYS_BUS_DEVICE,
> + .class_init = pnv_chip_class_init,
> + .instance_init = pnv_chip_init,
> + .instance_size = sizeof(PnvChip),
> + .class_size = sizeof(PnvChipClass),
> + .abstract = true,
> + },
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER9, pnv_chip_power9_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8, pnv_chip_power8_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8E, pnv_chip_power8e_class_init),
> + DEFINE_PNV_CHIP_TYPE(TYPE_PNV_CHIP_POWER8NVL,
> + pnv_chip_power8nvl_class_init),
> };
>
> -static void powernv_machine_register_types(void)
> -{
> - type_register_static(&powernv_machine_info);
> - type_register_static(&pnv_chip_info);
> - type_register_static(&pnv_chip_power8e_info);
> - type_register_static(&pnv_chip_power8_info);
> - type_register_static(&pnv_chip_power8nvl_info);
> - type_register_static(&pnv_chip_power9_info);
> -}
> -
> -type_init(powernv_machine_register_types)
> +DEFINE_TYPES(types)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-06 3:54 ` [Qemu-devel] " David Gibson
@ 2017-10-06 9:03 ` Igor Mammedov
2017-10-06 9:17 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:03 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 14:54:47 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:39PM +0200, Igor Mammedov wrote:
> > there is a dedicated callback CPUClass::parse_features
> > which purpose is to convert -cpu features into a set of
> > global properties AND deal with compat/legacy features
> > that couldn't be directly translated into CPU's properties.
> >
> > Create ppc variant of it (ppc_cpu_parse_featurestr) and
> > move 'compat=val' handling from spapr_cpu_core.c into it.
> > That removes a dependency of board/core code on cpu_model
> > parsing and would let to reuse common -cpu parsing
> > introduced by 6063d4c0
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>
> Hrm. I'm a bit unsure about this. The fact that the board code is
> involved in the parsing here is deliberate. Basically 'compat=' never
> made sense as a cpu property, it always should have been a machine
> property.
>
> With this patch we'll still (correctly) fail on a non spapr machine at
> the point where we do:
>
> + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
>
> Though probably with a rather cryptic error.
I's possible to guard it and apply to only SPAPR machine
or trying to find property first before setting it.
>
> It still pollutes the cpu code with spapr's past mistake though. I'm
> not sure if this is a good tradeoff.
CPUClass::parse_features callback was introduced to deal with
legacy and compatibility nuances of "-cpu" CLI option, so I'm moving
compat mistake back where it belongs so it will pollute code dealing
with hacks.
It also cleans the road for removal of global cpu_model by moving
dependency from board code to a callback designed to parse cpu_model.
> > ---
> > include/hw/ppc/spapr.h | 1 -
> > target/ppc/cpu-qom.h | 1 +
> > hw/ppc/spapr.c | 2 +-
> > hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> > target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> > 5 files changed, 60 insertions(+), 52 deletions(-)
> >
> > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> > index c1b365f..8ca4f94 100644
> > --- a/include/hw/ppc/spapr.h
> > +++ b/include/hw/ppc/spapr.h
> > @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > uint32_t count, uint32_t index);
> > void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > uint32_t count, uint32_t index);
> > -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> > int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> > void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> > Error **errp);
> > diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> > index d0cf6ca..429b47f 100644
> > --- a/target/ppc/cpu-qom.h
> > +++ b/target/ppc/cpu-qom.h
> > @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> > DeviceRealize parent_realize;
> > DeviceUnrealize parent_unrealize;
> > void (*parent_reset)(CPUState *cpu);
> > + void (*parent_parse_features)(const char *type, char *str, Error **errp);
> >
> > uint32_t pvr;
> > bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index ff87f15..01b3012 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> > machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> > }
> >
> > - spapr_cpu_parse_features(spapr);
> > + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
> >
> > spapr_set_vsmt_mode(spapr, &error_fatal);
> >
> > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > index 3dea5ff..427d47f 100644
> > --- a/hw/ppc/spapr_cpu_core.c
> > +++ b/hw/ppc/spapr_cpu_core.c
> > @@ -21,56 +21,6 @@
> > #include "sysemu/hw_accel.h"
> > #include "qemu/error-report.h"
> >
> > -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> > -{
> > - /*
> > - * Backwards compatibility hack:
> > - *
> > - * CPUs had a "compat=" property which didn't make sense for
> > - * anything except pseries. It was replaced by "max-cpu-compat"
> > - * machine option. This supports old command lines like
> > - * -cpu POWER8,compat=power7
> > - * By stripping the compat option and applying it to the machine
> > - * before passing it on to the cpu level parser.
> > - */
> > - gchar **inpieces;
> > - gchar *newprops;
> > - int i, j;
> > - gchar *compat_str = NULL;
> > -
> > - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> > -
> > - /* inpieces[0] is the actual model string */
> > - i = 1;
> > - j = 1;
> > - while (inpieces[i]) {
> > - if (g_str_has_prefix(inpieces[i], "compat=")) {
> > - /* in case of multiple compat= options */
> > - g_free(compat_str);
> > - compat_str = inpieces[i];
> > - } else {
> > - j++;
> > - }
> > -
> > - i++;
> > - /* Excise compat options from list */
> > - inpieces[j] = inpieces[i];
> > - }
> > -
> > - if (compat_str) {
> > - char *val = compat_str + strlen("compat=");
> > -
> > - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> > - &error_fatal);
> > -
> > - }
> > -
> > - newprops = g_strjoinv(",", inpieces);
> > - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> > - g_free(newprops);
> > - g_strfreev(inpieces);
> > -}
> > -
> > static void spapr_cpu_reset(void *opaque)
> > {
> > PowerPCCPU *cpu = opaque;
> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > index c6399a3..5ee91e8 100644
> > --- a/target/ppc/translate_init.c
> > +++ b/target/ppc/translate_init.c
> > @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
> >
> > return NULL;
> > }
> > +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> > + Error **errp)
> > +{
> > + const PowerPCCPUClass *pcc;
> > + char *compat_str = NULL;
> > + char *s = features;
> > + char **inpieces;
> > + Error *local_err = NULL;
> > + int i;
> > +
> > + if (!features) {
> > + return;
> > + }
> > +
> > + /*
> > + * Backwards compatibility hack:
> > + *
> > + * CPUs had a "compat=" property which didn't make sense for
> > + * anything except pseries. It was replaced by "max-cpu-compat"
> > + * machine option. This supports old command lines like
> > + * -cpu POWER8,compat=power7
> > + * By stripping the compat option and applying it to the machine
> > + * before passing it on to the cpu level parser.
> > + */
> > + inpieces = g_strsplit(features, ",", 0);
> > + *s = '\0';
> > + for (i = 0; inpieces[i]; i++) {
> > + if (g_str_has_prefix(inpieces[i], "compat=")) {
> > + compat_str = inpieces[i];
> > + continue;
> > + }
> > + if ((i != 0) && (s != features)) {
> > + s = g_stpcpy(s, ",");
> > + }
> > + s = g_stpcpy(s, inpieces[i]);
> > + }
> > +
> > + if (compat_str) {
> > + Object *machine = qdev_get_machine();
> > + if (machine) {
> > + char *v = compat_str + strlen("compat=");
> > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > + } else {
> > + error_setg(&local_err, "Not supported property: %s", compat_str);
> > + }
> > + }
> > + g_strfreev(inpieces);
> > + if (local_err) {
> > + error_propagate(errp, local_err);
> > + return;
> > + }
> > +
> > + /* do property processing with generic handler */
> > + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> > + pcc->parent_parse_features(typename, features, errp);
> > +}
> >
> > const char *ppc_cpu_lookup_alias(const char *alias)
> > {
> > @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> > cc->reset = ppc_cpu_reset;
> >
> > cc->class_by_name = ppc_cpu_class_by_name;
> > + pcc->parent_parse_features = cc->parse_features;
> > + cc->parse_features = ppc_cpu_parse_featurestr;
> > cc->has_work = ppc_cpu_has_work;
> > cc->do_interrupt = ppc_cpu_do_interrupt;
> > cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types
2017-10-06 4:41 ` David Gibson
@ 2017-10-06 9:07 ` Igor Mammedov
2017-10-06 9:13 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:07 UTC (permalink / raw)
To: David Gibson
Cc: open list:ppce500, Edgar E. Iglesias, Hervé Poussineau,
qemu-devel, Alexander Graf
On Fri, 6 Oct 2017 15:41:04 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:42PM +0200, Igor Mammedov wrote:
> > consolidate 'host' core type registration by moving it from
> > KVM specific code into spapr_cpu_core.c, similar like it's
> > done in x86 target.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>
> IIUC this will change behaviour slightly: with this patch the 'host'
> core type will show up whenever CONFIG_KVM is set, even if the KVM
> accelerator is disabled on the command line. Previously it would not.
>
> Is this change intentional?
yep, we do the same on x86
>
> > ---
> > include/hw/ppc/spapr_cpu_core.h | 1 -
> > hw/ppc/spapr_cpu_core.c | 5 ++++-
> > target/ppc/kvm.c | 11 -----------
> > 3 files changed, 4 insertions(+), 13 deletions(-)
> >
> > diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> > index 264ce68..42765de 100644
> > --- a/include/hw/ppc/spapr_cpu_core.h
> > +++ b/include/hw/ppc/spapr_cpu_core.h
> > @@ -38,5 +38,4 @@ typedef struct sPAPRCPUCoreClass {
> > } sPAPRCPUCoreClass;
> >
> > char *spapr_get_cpu_core_type(const char *model);
> > -void spapr_cpu_core_class_init(ObjectClass *oc, void *data);
> > #endif
> > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > index 8e13e52..f2da4be 100644
> > --- a/hw/ppc/spapr_cpu_core.c
> > +++ b/hw/ppc/spapr_cpu_core.c
> > @@ -220,7 +220,7 @@ static Property spapr_cpu_core_properties[] = {
> > DEFINE_PROP_END_OF_LIST()
> > };
> >
> > -void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> > +static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> > {
> > DeviceClass *dc = DEVICE_CLASS(oc);
> > sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_CLASS(oc);
> > @@ -257,6 +257,9 @@ static const TypeInfo spapr_cpu_core_type_infos[] = {
> > DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> > DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> > DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> > +#ifdef CONFIG_KVM
> > + DEFINE_SPAPR_CPU_CORE_TYPE("host"),
> > +#endif
> > };
> >
> > DEFINE_TYPES(spapr_cpu_core_type_infos)
> > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> > index c2152ed..cb5777a 100644
> > --- a/target/ppc/kvm.c
> > +++ b/target/ppc/kvm.c
> > @@ -2508,17 +2508,6 @@ static int kvm_ppc_register_host_cpu_type(void)
> > oc = object_class_by_name(type_info.name);
> > g_assert(oc);
> >
> > -#if defined(TARGET_PPC64)
> > - type_info.name = g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host");
> > - type_info.parent = TYPE_SPAPR_CPU_CORE,
> > - type_info.instance_size = sizeof(sPAPRCPUCore);
> > - type_info.instance_init = NULL;
> > - type_info.class_init = spapr_cpu_core_class_init;
> > - type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> > - type_register(&type_info);
> > - g_free((void *)type_info.name);
> > -#endif
> > -
> > /*
> > * Update generic CPU family class alias (e.g. on a POWER8NVL host,
> > * we want "POWER8" to be a "family" alias that points to the current
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2017-10-06 8:27 ` Igor Mammedov
@ 2017-10-06 9:12 ` David Gibson
2017-10-06 9:37 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 9:12 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 1011 bytes --]
On Fri, Oct 06, 2017 at 10:27:38AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 14:02:56 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Oct 05, 2017 at 06:24:31PM +0200, Igor Mammedov wrote:
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> >
> > Acked-by: David Gibson <david@gibson.dropbear.id.au>
> >
> > Do you want me to queue the ppc patches here, or do you already have a
> > plan for that?
> Id didn't want to distract others with only PPC related code so
> I've posted this series separately for you to merge it via PPC tree
Ok. I'm happy to do that, but I have queries on a few patches, so at
this point I'm anticipating a respin.
Just to be clear, you're intending for me to take the whole series?
Or just the patches within the ppc code?
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types
2017-10-06 9:07 ` Igor Mammedov
@ 2017-10-06 9:13 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 9:13 UTC (permalink / raw)
To: Igor Mammedov
Cc: open list:ppce500, Edgar E. Iglesias, Hervé Poussineau,
qemu-devel, Alexander Graf
[-- Attachment #1: Type: text/plain, Size: 3731 bytes --]
On Fri, Oct 06, 2017 at 11:07:14AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 15:41:04 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Oct 05, 2017 at 06:24:42PM +0200, Igor Mammedov wrote:
> > > consolidate 'host' core type registration by moving it from
> > > KVM specific code into spapr_cpu_core.c, similar like it's
> > > done in x86 target.
> > >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> >
> > IIUC this will change behaviour slightly: with this patch the 'host'
> > core type will show up whenever CONFIG_KVM is set, even if the KVM
> > accelerator is disabled on the command line. Previously it would not.
> >
> > Is this change intentional?
> yep, we do the same on x86
Ok. In that case.
Acked-by: David Gibson <david@gibson.dropbear.id.au>
>
> >
> > > ---
> > > include/hw/ppc/spapr_cpu_core.h | 1 -
> > > hw/ppc/spapr_cpu_core.c | 5 ++++-
> > > target/ppc/kvm.c | 11 -----------
> > > 3 files changed, 4 insertions(+), 13 deletions(-)
> > >
> > > diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
> > > index 264ce68..42765de 100644
> > > --- a/include/hw/ppc/spapr_cpu_core.h
> > > +++ b/include/hw/ppc/spapr_cpu_core.h
> > > @@ -38,5 +38,4 @@ typedef struct sPAPRCPUCoreClass {
> > > } sPAPRCPUCoreClass;
> > >
> > > char *spapr_get_cpu_core_type(const char *model);
> > > -void spapr_cpu_core_class_init(ObjectClass *oc, void *data);
> > > #endif
> > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > > index 8e13e52..f2da4be 100644
> > > --- a/hw/ppc/spapr_cpu_core.c
> > > +++ b/hw/ppc/spapr_cpu_core.c
> > > @@ -220,7 +220,7 @@ static Property spapr_cpu_core_properties[] = {
> > > DEFINE_PROP_END_OF_LIST()
> > > };
> > >
> > > -void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> > > +static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
> > > {
> > > DeviceClass *dc = DEVICE_CLASS(oc);
> > > sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_CLASS(oc);
> > > @@ -257,6 +257,9 @@ static const TypeInfo spapr_cpu_core_type_infos[] = {
> > > DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
> > > DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
> > > DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
> > > +#ifdef CONFIG_KVM
> > > + DEFINE_SPAPR_CPU_CORE_TYPE("host"),
> > > +#endif
> > > };
> > >
> > > DEFINE_TYPES(spapr_cpu_core_type_infos)
> > > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> > > index c2152ed..cb5777a 100644
> > > --- a/target/ppc/kvm.c
> > > +++ b/target/ppc/kvm.c
> > > @@ -2508,17 +2508,6 @@ static int kvm_ppc_register_host_cpu_type(void)
> > > oc = object_class_by_name(type_info.name);
> > > g_assert(oc);
> > >
> > > -#if defined(TARGET_PPC64)
> > > - type_info.name = g_strdup_printf("%s-"TYPE_SPAPR_CPU_CORE, "host");
> > > - type_info.parent = TYPE_SPAPR_CPU_CORE,
> > > - type_info.instance_size = sizeof(sPAPRCPUCore);
> > > - type_info.instance_init = NULL;
> > > - type_info.class_init = spapr_cpu_core_class_init;
> > > - type_info.class_data = (void *) POWERPC_CPU_TYPE_NAME("host");
> > > - type_register(&type_info);
> > > - g_free((void *)type_info.name);
> > > -#endif
> > > -
> > > /*
> > > * Update generic CPU family class alias (e.g. on a POWER8NVL host,
> > > * we want "POWER8" to be a "family" alias that points to the current
> >
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-06 9:03 ` Igor Mammedov
@ 2017-10-06 9:17 ` David Gibson
2017-10-06 9:52 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 9:17 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 10104 bytes --]
On Fri, Oct 06, 2017 at 11:03:52AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 14:54:47 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Oct 05, 2017 at 06:24:39PM +0200, Igor Mammedov wrote:
> > > there is a dedicated callback CPUClass::parse_features
> > > which purpose is to convert -cpu features into a set of
> > > global properties AND deal with compat/legacy features
> > > that couldn't be directly translated into CPU's properties.
> > >
> > > Create ppc variant of it (ppc_cpu_parse_featurestr) and
> > > move 'compat=val' handling from spapr_cpu_core.c into it.
> > > That removes a dependency of board/core code on cpu_model
> > > parsing and would let to reuse common -cpu parsing
> > > introduced by 6063d4c0
> > >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> >
> > Hrm. I'm a bit unsure about this. The fact that the board code is
> > involved in the parsing here is deliberate. Basically 'compat=' never
> > made sense as a cpu property, it always should have been a machine
> > property.
> >
> > With this patch we'll still (correctly) fail on a non spapr machine at
> > the point where we do:
> >
> > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> >
> > Though probably with a rather cryptic error.
> I's possible to guard it and apply to only SPAPR machine
> or trying to find property first before setting it.
Yeah, I think we should do that. Or possibly we could do something
with the vhyp interface. If there was ever a vhyp machine other than
spapr (unlikely) then compat modes would also make sense for it (vhyp
being non-NULL basically means that our vcpu is never allowed to enter
hypervisor mode, so hypervisor privileged registers like LPCR need to
be handled by the machine instead).
> > It still pollutes the cpu code with spapr's past mistake though. I'm
> > not sure if this is a good tradeoff.
> CPUClass::parse_features callback was introduced to deal with
> legacy and compatibility nuances of "-cpu" CLI option, so I'm moving
> compat mistake back where it belongs so it will pollute code dealing
> with hacks.
Hm, ok. Still seems a bit odd to me, but I'll take your word for it.
> It also cleans the road for removal of global cpu_model by moving
> dependency from board code to a callback designed to parse cpu_model.
>
>
> > > ---
> > > include/hw/ppc/spapr.h | 1 -
> > > target/ppc/cpu-qom.h | 1 +
> > > hw/ppc/spapr.c | 2 +-
> > > hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> > > target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> > > 5 files changed, 60 insertions(+), 52 deletions(-)
> > >
> > > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> > > index c1b365f..8ca4f94 100644
> > > --- a/include/hw/ppc/spapr.h
> > > +++ b/include/hw/ppc/spapr.h
> > > @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > > uint32_t count, uint32_t index);
> > > void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > > uint32_t count, uint32_t index);
> > > -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> > > int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> > > void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> > > Error **errp);
> > > diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> > > index d0cf6ca..429b47f 100644
> > > --- a/target/ppc/cpu-qom.h
> > > +++ b/target/ppc/cpu-qom.h
> > > @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> > > DeviceRealize parent_realize;
> > > DeviceUnrealize parent_unrealize;
> > > void (*parent_reset)(CPUState *cpu);
> > > + void (*parent_parse_features)(const char *type, char *str, Error **errp);
> > >
> > > uint32_t pvr;
> > > bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > > index ff87f15..01b3012 100644
> > > --- a/hw/ppc/spapr.c
> > > +++ b/hw/ppc/spapr.c
> > > @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> > > machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> > > }
> > >
> > > - spapr_cpu_parse_features(spapr);
> > > + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
> > >
> > > spapr_set_vsmt_mode(spapr, &error_fatal);
> > >
> > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > > index 3dea5ff..427d47f 100644
> > > --- a/hw/ppc/spapr_cpu_core.c
> > > +++ b/hw/ppc/spapr_cpu_core.c
> > > @@ -21,56 +21,6 @@
> > > #include "sysemu/hw_accel.h"
> > > #include "qemu/error-report.h"
> > >
> > > -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> > > -{
> > > - /*
> > > - * Backwards compatibility hack:
> > > - *
> > > - * CPUs had a "compat=" property which didn't make sense for
> > > - * anything except pseries. It was replaced by "max-cpu-compat"
> > > - * machine option. This supports old command lines like
> > > - * -cpu POWER8,compat=power7
> > > - * By stripping the compat option and applying it to the machine
> > > - * before passing it on to the cpu level parser.
> > > - */
> > > - gchar **inpieces;
> > > - gchar *newprops;
> > > - int i, j;
> > > - gchar *compat_str = NULL;
> > > -
> > > - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> > > -
> > > - /* inpieces[0] is the actual model string */
> > > - i = 1;
> > > - j = 1;
> > > - while (inpieces[i]) {
> > > - if (g_str_has_prefix(inpieces[i], "compat=")) {
> > > - /* in case of multiple compat= options */
> > > - g_free(compat_str);
> > > - compat_str = inpieces[i];
> > > - } else {
> > > - j++;
> > > - }
> > > -
> > > - i++;
> > > - /* Excise compat options from list */
> > > - inpieces[j] = inpieces[i];
> > > - }
> > > -
> > > - if (compat_str) {
> > > - char *val = compat_str + strlen("compat=");
> > > -
> > > - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> > > - &error_fatal);
> > > -
> > > - }
> > > -
> > > - newprops = g_strjoinv(",", inpieces);
> > > - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> > > - g_free(newprops);
> > > - g_strfreev(inpieces);
> > > -}
> > > -
> > > static void spapr_cpu_reset(void *opaque)
> > > {
> > > PowerPCCPU *cpu = opaque;
> > > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > > index c6399a3..5ee91e8 100644
> > > --- a/target/ppc/translate_init.c
> > > +++ b/target/ppc/translate_init.c
> > > @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
> > >
> > > return NULL;
> > > }
> > > +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> > > + Error **errp)
> > > +{
> > > + const PowerPCCPUClass *pcc;
> > > + char *compat_str = NULL;
> > > + char *s = features;
> > > + char **inpieces;
> > > + Error *local_err = NULL;
> > > + int i;
> > > +
> > > + if (!features) {
> > > + return;
> > > + }
> > > +
> > > + /*
> > > + * Backwards compatibility hack:
> > > + *
> > > + * CPUs had a "compat=" property which didn't make sense for
> > > + * anything except pseries. It was replaced by "max-cpu-compat"
> > > + * machine option. This supports old command lines like
> > > + * -cpu POWER8,compat=power7
> > > + * By stripping the compat option and applying it to the machine
> > > + * before passing it on to the cpu level parser.
> > > + */
> > > + inpieces = g_strsplit(features, ",", 0);
> > > + *s = '\0';
> > > + for (i = 0; inpieces[i]; i++) {
> > > + if (g_str_has_prefix(inpieces[i], "compat=")) {
> > > + compat_str = inpieces[i];
> > > + continue;
> > > + }
> > > + if ((i != 0) && (s != features)) {
> > > + s = g_stpcpy(s, ",");
> > > + }
> > > + s = g_stpcpy(s, inpieces[i]);
> > > + }
> > > +
> > > + if (compat_str) {
> > > + Object *machine = qdev_get_machine();
> > > + if (machine) {
> > > + char *v = compat_str + strlen("compat=");
> > > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > > + } else {
> > > + error_setg(&local_err, "Not supported property: %s", compat_str);
> > > + }
> > > + }
> > > + g_strfreev(inpieces);
> > > + if (local_err) {
> > > + error_propagate(errp, local_err);
> > > + return;
> > > + }
> > > +
> > > + /* do property processing with generic handler */
> > > + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> > > + pcc->parent_parse_features(typename, features, errp);
> > > +}
> > >
> > > const char *ppc_cpu_lookup_alias(const char *alias)
> > > {
> > > @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> > > cc->reset = ppc_cpu_reset;
> > >
> > > cc->class_by_name = ppc_cpu_class_by_name;
> > > + pcc->parent_parse_features = cc->parse_features;
> > > + cc->parse_features = ppc_cpu_parse_featurestr;
> > > cc->has_work = ppc_cpu_has_work;
> > > cc->do_interrupt = ppc_cpu_do_interrupt;
> > > cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
> >
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing
2017-10-06 5:04 ` David Gibson
@ 2017-10-06 9:20 ` Igor Mammedov
2017-10-06 9:35 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:20 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 16:04:39 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:44PM +0200, Igor Mammedov wrote:
> > use generic cpu_model parsing introduced by
> > (6063d4c0f vl.c: convert cpu_model to cpu type and set of global properties before machine_init())
> >
> > it allows to:
> > * replace sPAPRMachineClass::tcg_default_cpu with
> > MachineClass::default_cpu_type
> > * drop cpu_parse_cpu_model() from hw/ppc/spapr.c and reuse
> > one in vl.c
> > * simplify spapr_get_cpu_core_type() by removing
> > not needed anymore recurrsion since alias look up
> > happens earlier at vl.c and spapr_get_cpu_core_type()
> > works only with resulted from that cpu type.
> > * spapr no more needs to parse/depend on being phased out
> > MachineState::cpu_model, all tha parsing done by generic
> > code and target specific callback.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > PS:
> > patch is a little bit big but it's hard to split it due
> > to dependencies, so pls bear with it.
>
> [snip]
> > -static int kvm_ppc_register_host_cpu_type(void)
> > +static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> > {
> > TypeInfo type_info = {
> > .name = TYPE_HOST_POWERPC_CPU,
> > .class_init = kvmppc_host_cpu_class_init,
> > };
> > + MachineClass *mc = MACHINE_GET_CLASS(ms);
> > PowerPCCPUClass *pvr_pcc;
> > ObjectClass *oc;
> > DeviceClass *dc;
> > @@ -2504,6 +2505,8 @@ static int kvm_ppc_register_host_cpu_type(void)
> > }
> > type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> > type_register(&type_info);
> > + /* override TCG default cpu type with 'host' cpu model */
> > + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
>
> Ugh. I dislike this, it changes the default cpu type to 'host' for
> *all* machine types, whereas previously it was just true for pseries.
> That wasn't by accident.
>
> In general, I think we want there to be a single default CPU type for
> a machine, regardless of TCG vs. KVM. This is particularly true for
> many of the ppc machine types - they will only work with a CPU in the
> right "family" (e500 / 440 / POWERx, wahtever); in many of these cases
> KVM PR is usable, but using -cpu host could easily break the machine
> type.
>
> 'pseries' is different, it (and only it) can be used with KVM HV - and
> usually is. And KVM HV *only* works with -cpu host, due to hardware
> limitations.
I'd keep override in spapr_machine_class_init() but it's not possible
since it's called before kvm option is parsed and machine is prerequisite for kvm option
how about following fixup?
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index abc222e..48dc3f7 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2505,8 +2505,10 @@ static int kvm_ppc_register_host_cpu_type(MachineState *ms)
}
type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
type_register(&type_info);
- /* override TCG default cpu type with 'host' cpu model */
- mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
+ if (object_dynamic_cast(ms, TYPE_SPAPR_MACHINE)) {
+ /* override TCG default cpu type with 'host' cpu model */
+ mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
+ }
oc = object_class_by_name(type_info.name);
g_assert(oc);
> > oc = object_class_by_name(type_info.name);
> > g_assert(oc);
> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > index 5ee91e8..a968e86 100644
> > --- a/target/ppc/translate_init.c
> > +++ b/target/ppc/translate_init.c
> > @@ -10277,6 +10277,19 @@ PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr)
> > return pcc;
> > }
> >
> > +static const char *ppc_cpu_lookup_alias(const char *alias)
> > +{
> > + int ai;
> > +
> > + for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
> > + if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
> > + return ppc_cpu_aliases[ai].model;
> > + }
> > + }
> > +
> > + return NULL;
> > +}
> > +
> > static ObjectClass *ppc_cpu_class_by_name(const char *name)
> > {
> > char *cpu_model, *typename;
> > @@ -10370,19 +10383,6 @@ static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> > pcc->parent_parse_features(typename, features, errp);
> > }
> >
> > -const char *ppc_cpu_lookup_alias(const char *alias)
> > -{
> > - int ai;
> > -
> > - for (ai = 0; ppc_cpu_aliases[ai].alias != NULL; ai++) {
> > - if (strcmp(ppc_cpu_aliases[ai].alias, alias) == 0) {
> > - return ppc_cpu_aliases[ai].model;
> > - }
> > - }
> > -
> > - return NULL;
> > -}
> > -
>
> This code motion of ppc_cpu_lookup_alias appears to be unrelated to
> the rest of the patch.
>
> > PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
> > {
> > ObjectClass *oc = OBJECT_CLASS(pcc);
>
^ permalink raw reply related [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases
2017-10-06 7:39 ` Greg Kurz
@ 2017-10-06 9:27 ` Igor Mammedov
2017-10-06 10:12 ` Greg Kurz
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:27 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Fri, 6 Oct 2017 09:39:25 +0200
Greg Kurz <groug@kaod.org> wrote:
> On Thu, 5 Oct 2017 18:24:43 +0200
> Igor Mammedov <imammedo@redhat.com> wrote:
>
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
>
> So... this is preparatory work for the next patch because the generic cpu_model
> parsing code doesn't handle aliases, is it ?
generic parsing does handle aliases thanks to ppc_cpu_class_by_name() callback
but generic parsing doesn't parse default cpu model as it doesn't exists
it works with default cpu TYPE.
So yes it's preparation for the next patch where exact default cpu model
is converted into cpu type with help of POWERPC_CPU_TYPE_NAME(), like its done
everywhere else.
>
> > hw/ppc/spapr.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index ad7afd6..0661dba 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -3603,7 +3603,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
> > hc->unplug_request = spapr_machine_device_unplug_request;
> >
> > smc->dr_lmb_enabled = true;
> > - smc->tcg_default_cpu = "POWER8";
> > + smc->tcg_default_cpu = "power8_v2.0";
> > mc->has_hotpluggable_cpus = true;
> > smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
> > fwc->get_dev_path = spapr_get_fw_dev_path;
> > @@ -3849,7 +3849,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
> > sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> >
> > spapr_machine_2_8_class_options(mc);
> > - smc->tcg_default_cpu = "POWER7";
> > + smc->tcg_default_cpu = "power7_v2.3";
> > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
> > smc->phb_placement = phb_placement_2_7;
> > }
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-06 8:34 ` [Qemu-devel] " David Gibson
@ 2017-10-06 9:30 ` Igor Mammedov
2017-10-06 11:25 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:30 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 19:34:19 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:45PM +0200, Igor Mammedov wrote:
> > use common cpu_model prasing in vl.c and set default cpu_model
> > using generic MachineClass::default_cpu_type.
> >
> > Beside of switching to generic infrastructure it solves several
> > issues.
> >
> > * ppc_cpu_class_by_name() is used to deal with lower/upper case
> > and alias translations into actual cpu type, which fixes
> > '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> > usecases which error out with:
> > 'invalid CPU model 'FOO' for powernv machine'
> > * allows to switch to lower-case typenames in pnv chip/core name
> > (by convention typnames should be lower-case)
> > * replace aliased names /power8, power9, .../ with exact cpu model
> > names (i.e. typenames should be stable but aliases might decide to
> > point to other cpu model withi family or changed by kvm). It will
> > also help to simplify pnv_chip/core code and get rid of dependency
> > on cpu_model parsing.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > include/hw/ppc/pnv.h | 8 ++++----
> > hw/ppc/pnv.c | 22 ++++++++++------------
> > hw/ppc/pnv_core.c | 2 +-
> > 3 files changed, 15 insertions(+), 17 deletions(-)
> >
> > diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> > index 9c5437d..2525f7f 100644
> > --- a/include/hw/ppc/pnv.h
> > +++ b/include/hw/ppc/pnv.h
> > @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> > uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> > } PnvChipClass;
> >
> > -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> > +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> > #define PNV_CHIP_POWER8E(obj) \
> > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
> >
> > -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> > +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> > #define PNV_CHIP_POWER8(obj) \
> > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
> >
> > -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> > +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> > #define PNV_CHIP_POWER8NVL(obj) \
> > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
> >
> > -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> > +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
>
> Uh.. we really should add a DD2 power9 before we make this change.
> Making a DD1.0 (read, buggy as hell) chip the default is not
> sensible. Especially since we don't implement the various DD1 bugs
> and differences in qemu.
I guess pnv owner will have to it,
I can't help here /me uses whatever is in code right now/
btw: in my tests when booting machine with power9, qemu crashes
(it happens on master as well, so this series in not to blame)
>
> > #define PNV_CHIP_POWER9(obj) \
> > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER9)
> >
> > diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> > index d46d91c..4169837 100644
> > --- a/hw/ppc/pnv.c
> > +++ b/hw/ppc/pnv.c
> > @@ -607,16 +607,13 @@ static void ppc_powernv_init(MachineState *machine)
> > }
> > }
> >
> > - /* We need some cpu model to instantiate the PnvChip class */
> > - if (machine->cpu_model == NULL) {
> > - machine->cpu_model = "POWER8";
> > - }
> > -
> > /* Create the processor chips */
> > - chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%s", machine->cpu_model);
> > + i = strlen(machine->cpu_type) - strlen(POWERPC_CPU_TYPE_SUFFIX);
> > + chip_typename = g_strdup_printf(TYPE_PNV_CHIP "-%.*s",
> > + i, machine->cpu_type);
> > if (!object_class_by_name(chip_typename)) {
> > - error_report("invalid CPU model '%s' for %s machine",
> > - machine->cpu_model, MACHINE_GET_CLASS(machine)->name);
> > + error_report("invalid CPU model '%.*s' for %s machine",
> > + i, machine->cpu_type, MACHINE_GET_CLASS(machine)->name);
> > exit(1);
> > }
> >
> > @@ -716,7 +713,7 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "POWER8E";
> > + k->cpu_model = "power8e_v2.1";
> > k->chip_type = PNV_CHIP_POWER8E;
> > k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> > k->cores_mask = POWER8E_CORE_MASK;
> > @@ -738,7 +735,7 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "POWER8";
> > + k->cpu_model = "power8_v2.0";
> > k->chip_type = PNV_CHIP_POWER8;
> > k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> > k->cores_mask = POWER8_CORE_MASK;
> > @@ -760,7 +757,7 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "POWER8NVL";
> > + k->cpu_model = "power8nvl_v1.0";
> > k->chip_type = PNV_CHIP_POWER8NVL;
> > k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> > k->cores_mask = POWER8_CORE_MASK;
> > @@ -782,7 +779,7 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "POWER9";
> > + k->cpu_model = "power9_v1.0";
> > k->chip_type = PNV_CHIP_POWER9;
> > k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> > k->cores_mask = POWER9_CORE_MASK;
> > @@ -1133,6 +1130,7 @@ static void powernv_machine_class_init(ObjectClass *oc, void *data)
> > mc->init = ppc_powernv_init;
> > mc->reset = ppc_powernv_reset;
> > mc->max_cpus = MAX_CPUS;
> > + mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
> > mc->block_default_type = IF_IDE; /* Pnv provides a AHCI device for
> > * storage */
> > mc->no_parallel = 1;
> > diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> > index 6726483..44b0b24 100644
> > --- a/hw/ppc/pnv_core.c
> > +++ b/hw/ppc/pnv_core.c
> > @@ -227,7 +227,7 @@ static const TypeInfo pnv_core_info = {
> > };
> >
> > static const char *pnv_core_models[] = {
> > - "POWER8E", "POWER8", "POWER8NVL", "POWER9"
> > + "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
> > };
> >
> > static void pnv_core_register_types(void)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field
2017-10-06 8:41 ` [Qemu-devel] " David Gibson
@ 2017-10-06 9:31 ` Igor Mammedov
0 siblings, 0 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:31 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 19:41:12 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:47PM +0200, Igor Mammedov wrote:
> > deduce cpu type directly from core type instead of
> > maintaining type mapping in PnvCoreClass::cpu_oc and doing
> > extra cpu_model parsing in pnv_core_class_init()
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > include/hw/ppc/pnv_core.h | 1 -
> > hw/ppc/pnv_core.c | 18 ++++++++++++------
> > 2 files changed, 12 insertions(+), 7 deletions(-)
> >
> > diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> > index 3360c4b..a336a1f 100644
> > --- a/include/hw/ppc/pnv_core.h
> > +++ b/include/hw/ppc/pnv_core.h
> > @@ -42,7 +42,6 @@ typedef struct PnvCore {
> >
> > typedef struct PnvCoreClass {
> > DeviceClass parent_class;
> > - ObjectClass *cpu_oc;
> > } PnvCoreClass;
> >
> > #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> > diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> > index b3e3f23..acdfa17 100644
> > --- a/hw/ppc/pnv_core.c
> > +++ b/hw/ppc/pnv_core.c
> > @@ -27,6 +27,16 @@
> > #include "hw/ppc/pnv_xscom.h"
> > #include "hw/ppc/xics.h"
> >
> > +static const char *pvn_core_cpu_typename(PnvCore *pc)
>
> Uh.. s/pvn/pnv/ ..
thanks, I'll fix up on respin
>
> > +{
> > + const char *core_type = object_class_get_name(object_get_class(OBJECT(pc)));
> > + int len = strlen(core_type) - strlen(PNV_CORE_TYPE_SUFFIX);
> > + char *s = g_strdup_printf(POWERPC_CPU_TYPE_NAME("%.*s"), len, core_type);
> > + const char *cpu_type = object_class_get_name(object_class_by_name(s));
> > + g_free(s);
> > + return cpu_type;
> > +}
> > +
> > static void powernv_cpu_reset(void *opaque)
> > {
> > PowerPCCPU *cpu = opaque;
> > @@ -148,8 +158,7 @@ static void pnv_core_realize(DeviceState *dev, Error **errp)
> > {
> > PnvCore *pc = PNV_CORE(OBJECT(dev));
> > CPUCore *cc = CPU_CORE(OBJECT(dev));
> > - PnvCoreClass *pcc = PNV_CORE_GET_CLASS(OBJECT(dev));
> > - const char *typename = object_class_get_name(pcc->cpu_oc);
> > + const char *typename = pvn_core_cpu_typename(pc);
> > size_t size = object_type_get_instance_size(typename);
> > Error *local_err = NULL;
> > void *obj;
> > @@ -211,11 +220,9 @@ static Property pnv_core_properties[] = {
> > static void pnv_core_class_init(ObjectClass *oc, void *data)
> > {
> > DeviceClass *dc = DEVICE_CLASS(oc);
> > - PnvCoreClass *pcc = PNV_CORE_CLASS(oc);
> >
> > dc->realize = pnv_core_realize;
> > dc->props = pnv_core_properties;
> > - pcc->cpu_oc = cpu_class_by_name(TYPE_POWERPC_CPU, data);
> > }
> >
> > static const TypeInfo pnv_core_info = {
> > @@ -223,6 +230,7 @@ static const TypeInfo pnv_core_info = {
> > .parent = TYPE_CPU_CORE,
> > .instance_size = sizeof(PnvCore),
> > .class_size = sizeof(PnvCoreClass),
> > + .class_init = pnv_core_class_init,
> > .abstract = true,
> > };
> >
> > @@ -239,8 +247,6 @@ static void pnv_core_register_types(void)
> > TypeInfo ti = {
> > .parent = TYPE_PNV_CORE,
> > .instance_size = sizeof(PnvCore),
> > - .class_init = pnv_core_class_init,
> > - .class_data = (void *) pnv_core_models[i],
> > };
> > ti.name = pnv_core_typename(pnv_core_models[i]);
> > type_register(&ti);
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field
2017-10-06 8:46 ` [Qemu-devel] " David Gibson
@ 2017-10-06 9:32 ` Igor Mammedov
0 siblings, 0 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:32 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 19:46:34 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Thu, Oct 05, 2017 at 06:24:49PM +0200, Igor Mammedov wrote:
> > deduce core type directly from chip type instead of
> > maintaining type mapping in PnvChipClass::cpu_model.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > include/hw/ppc/pnv.h | 1 -
> > include/hw/ppc/pnv_core.h | 1 -
> > hw/ppc/pnv.c | 25 +++++++++++++------------
> > hw/ppc/pnv_core.c | 5 -----
> > 4 files changed, 13 insertions(+), 19 deletions(-)
> >
> > diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> > index d82eee1..20244da 100644
> > --- a/include/hw/ppc/pnv.h
> > +++ b/include/hw/ppc/pnv.h
> > @@ -69,7 +69,6 @@ typedef struct PnvChipClass {
> > SysBusDeviceClass parent_class;
> >
> > /*< public >*/
> > - const char *cpu_model;
> > PnvChipType chip_type;
> > uint64_t chip_cfam_id;
> > uint64_t cores_mask;
> > diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h
> > index a336a1f..e337af7 100644
> > --- a/include/hw/ppc/pnv_core.h
> > +++ b/include/hw/ppc/pnv_core.h
> > @@ -46,6 +46,5 @@ typedef struct PnvCoreClass {
> >
> > #define PNV_CORE_TYPE_SUFFIX "-" TYPE_PNV_CORE
> > #define PNV_CORE_TYPE_NAME(cpu_model) cpu_model PNV_CORE_TYPE_SUFFIX
> > -extern char *pnv_core_typename(const char *model);
> >
> > #endif /* _PPC_PNV_CORE_H */
> > diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> > index 9c5eb7c..ab7083b 100644
> > --- a/hw/ppc/pnv.c
> > +++ b/hw/ppc/pnv.c
> > @@ -55,6 +55,16 @@
> > #define KERNEL_LOAD_ADDR 0x20000000
> > #define INITRD_LOAD_ADDR 0x40000000
> >
> > +static const char *pvn_chip_core_typename(const PnvChip *o)
>
> s/pvn/pnv/ again.
copypast bites again :/,
I'll fix it up on respin
>
> > +{
> > + const char *chip_type = object_class_get_name(object_get_class(OBJECT(o)));
> > + int len = strlen(chip_type) - strlen(PNV_CHIP_TYPE_SUFFIX);
> > + char *s = g_strdup_printf(PNV_CORE_TYPE_NAME("%.*s"), len, chip_type);
> > + const char *core_type = object_class_get_name(object_class_by_name(s));
> > + g_free(s);
> > + return core_type;
> > +}
> > +
> > /*
> > * On Power Systems E880 (POWER8), the max cpus (threads) should be :
> > * 4 * 4 sockets * 12 cores * 8 threads = 1536
> > @@ -270,8 +280,7 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *fdt)
> >
> > static void powernv_populate_chip(PnvChip *chip, void *fdt)
> > {
> > - PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> > - char *typename = pnv_core_typename(pcc->cpu_model);
> > + const char *typename = pvn_chip_core_typename(chip);
> > size_t typesize = object_type_get_instance_size(typename);
> > int i;
> >
> > @@ -301,7 +310,6 @@ static void powernv_populate_chip(PnvChip *chip, void *fdt)
> > powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start,
> > chip->ram_size);
> > }
> > - g_free(typename);
> > }
> >
> > static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off)
> > @@ -713,7 +721,6 @@ static void pnv_chip_power8e_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "power8e_v2.1";
> > k->chip_type = PNV_CHIP_POWER8E;
> > k->chip_cfam_id = 0x221ef04980000000ull; /* P8 Murano DD2.1 */
> > k->cores_mask = POWER8E_CORE_MASK;
> > @@ -735,7 +742,6 @@ static void pnv_chip_power8_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "power8_v2.0";
> > k->chip_type = PNV_CHIP_POWER8;
> > k->chip_cfam_id = 0x220ea04980000000ull; /* P8 Venice DD2.0 */
> > k->cores_mask = POWER8_CORE_MASK;
> > @@ -757,7 +763,6 @@ static void pnv_chip_power8nvl_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "power8nvl_v1.0";
> > k->chip_type = PNV_CHIP_POWER8NVL;
> > k->chip_cfam_id = 0x120d304980000000ull; /* P8 Naples DD1.0 */
> > k->cores_mask = POWER8_CORE_MASK;
> > @@ -779,7 +784,6 @@ static void pnv_chip_power9_class_init(ObjectClass *klass, void *data)
> > DeviceClass *dc = DEVICE_CLASS(klass);
> > PnvChipClass *k = PNV_CHIP_CLASS(klass);
> >
> > - k->cpu_model = "power9_v1.0";
> > k->chip_type = PNV_CHIP_POWER9;
> > k->chip_cfam_id = 0x100d104980000000ull; /* P9 Nimbus DD1.0 */
> > k->cores_mask = POWER9_CORE_MASK;
> > @@ -854,7 +858,7 @@ static void pnv_chip_init(Object *obj)
> > static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> > {
> > PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> > - char *typename = pnv_core_typename(pcc->cpu_model);
> > + const char *typename = pvn_chip_core_typename(chip);
> > size_t typesize = object_type_get_instance_size(typename);
> > int i, j;
> > char *name;
> > @@ -879,8 +883,6 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
> > memory_region_add_subregion(&chip->icp_mmio, pir << 12, &icp->mmio);
> > }
> > }
> > -
> > - g_free(typename);
> > }
> >
> > static void pnv_chip_realize(DeviceState *dev, Error **errp)
> > @@ -888,7 +890,7 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> > PnvChip *chip = PNV_CHIP(dev);
> > Error *error = NULL;
> > PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
> > - char *typename = pnv_core_typename(pcc->cpu_model);
> > + const char *typename = pvn_chip_core_typename(chip);
> > size_t typesize = object_type_get_instance_size(typename);
> > int i, core_hwid;
> >
> > @@ -947,7 +949,6 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
> > &PNV_CORE(pnv_core)->xscom_regs);
> > i++;
> > }
> > - g_free(typename);
> >
> > /* Create LPC controller */
> > object_property_set_bool(OBJECT(&chip->lpc), true, "realized",
> > diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> > index 000c87e..621b69e 100644
> > --- a/hw/ppc/pnv_core.c
> > +++ b/hw/ppc/pnv_core.c
> > @@ -246,9 +246,4 @@ static const TypeInfo pnv_core_infos[] = {
> > DEFINE_PNV_CORE_TYPE("power9_v1.0"),
> > };
> >
> > -char *pnv_core_typename(const char *model)
> > -{
> > - return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> > -}
> > -
> > DEFINE_TYPES(pnv_core_infos)
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing
2017-10-06 9:20 ` Igor Mammedov
@ 2017-10-06 9:35 ` David Gibson
2017-10-06 9:56 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 9:35 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3982 bytes --]
On Fri, Oct 06, 2017 at 11:20:05AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 16:04:39 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Oct 05, 2017 at 06:24:44PM +0200, Igor Mammedov wrote:
> > > use generic cpu_model parsing introduced by
> > > (6063d4c0f vl.c: convert cpu_model to cpu type and set of global properties before machine_init())
> > >
> > > it allows to:
> > > * replace sPAPRMachineClass::tcg_default_cpu with
> > > MachineClass::default_cpu_type
> > > * drop cpu_parse_cpu_model() from hw/ppc/spapr.c and reuse
> > > one in vl.c
> > > * simplify spapr_get_cpu_core_type() by removing
> > > not needed anymore recurrsion since alias look up
> > > happens earlier at vl.c and spapr_get_cpu_core_type()
> > > works only with resulted from that cpu type.
> > > * spapr no more needs to parse/depend on being phased out
> > > MachineState::cpu_model, all tha parsing done by generic
> > > code and target specific callback.
> > >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > PS:
> > > patch is a little bit big but it's hard to split it due
> > > to dependencies, so pls bear with it.
> >
> > [snip]
> > > -static int kvm_ppc_register_host_cpu_type(void)
> > > +static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> > > {
> > > TypeInfo type_info = {
> > > .name = TYPE_HOST_POWERPC_CPU,
> > > .class_init = kvmppc_host_cpu_class_init,
> > > };
> > > + MachineClass *mc = MACHINE_GET_CLASS(ms);
> > > PowerPCCPUClass *pvr_pcc;
> > > ObjectClass *oc;
> > > DeviceClass *dc;
> > > @@ -2504,6 +2505,8 @@ static int kvm_ppc_register_host_cpu_type(void)
> > > }
> > > type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> > > type_register(&type_info);
> > > + /* override TCG default cpu type with 'host' cpu model */
> > > + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> >
> > Ugh. I dislike this, it changes the default cpu type to 'host' for
> > *all* machine types, whereas previously it was just true for pseries.
> > That wasn't by accident.
> >
> > In general, I think we want there to be a single default CPU type for
> > a machine, regardless of TCG vs. KVM. This is particularly true for
> > many of the ppc machine types - they will only work with a CPU in the
> > right "family" (e500 / 440 / POWERx, wahtever); in many of these cases
> > KVM PR is usable, but using -cpu host could easily break the machine
> > type.
> >
> > 'pseries' is different, it (and only it) can be used with KVM HV - and
> > usually is. And KVM HV *only* works with -cpu host, due to hardware
> > limitations.
> I'd keep override in spapr_machine_class_init() but it's not possible
> since it's called before kvm option is parsed and machine is prerequisite for kvm option
>
> how about following fixup?
>
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index abc222e..48dc3f7 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2505,8 +2505,10 @@ static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> }
> type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> type_register(&type_info);
> - /* override TCG default cpu type with 'host' cpu model */
> - mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> + if (object_dynamic_cast(ms, TYPE_SPAPR_MACHINE)) {
> + /* override TCG default cpu type with 'host' cpu model */
> + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> + }
>
> oc = object_class_by_name(type_info.name);
> g_assert(oc);
Hm, ugly. But if that's what we have to do, that's what we have to
do.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing
2017-10-06 9:12 ` David Gibson
@ 2017-10-06 9:37 ` Igor Mammedov
0 siblings, 0 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:37 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 20:12:02 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Fri, Oct 06, 2017 at 10:27:38AM +0200, Igor Mammedov wrote:
> > On Fri, 6 Oct 2017 14:02:56 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >
> > > On Thu, Oct 05, 2017 at 06:24:31PM +0200, Igor Mammedov wrote:
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > >
> > > Acked-by: David Gibson <david@gibson.dropbear.id.au>
> > >
> > > Do you want me to queue the ppc patches here, or do you already have a
> > > plan for that?
> > Id didn't want to distract others with only PPC related code so
> > I've posted this series separately for you to merge it via PPC tree
>
> Ok. I'm happy to do that, but I have queries on a few patches, so at
> this point I'm anticipating a respin.
I'm planing to do it (most likely on Monday)
> Just to be clear, you're intending for me to take the whole series?
> Or just the patches within the ppc code?
if 1-3/23 isn't in master by the time you take series, you'd need them as well
(it shouldn't cause any conflicts if Eduardo merges them first)
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-06 9:17 ` David Gibson
@ 2017-10-06 9:52 ` Igor Mammedov
2017-10-06 10:14 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:52 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 20:17:41 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Fri, Oct 06, 2017 at 11:03:52AM +0200, Igor Mammedov wrote:
> > On Fri, 6 Oct 2017 14:54:47 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >
> > > On Thu, Oct 05, 2017 at 06:24:39PM +0200, Igor Mammedov wrote:
> > > > there is a dedicated callback CPUClass::parse_features
> > > > which purpose is to convert -cpu features into a set of
> > > > global properties AND deal with compat/legacy features
> > > > that couldn't be directly translated into CPU's properties.
> > > >
> > > > Create ppc variant of it (ppc_cpu_parse_featurestr) and
> > > > move 'compat=val' handling from spapr_cpu_core.c into it.
> > > > That removes a dependency of board/core code on cpu_model
> > > > parsing and would let to reuse common -cpu parsing
> > > > introduced by 6063d4c0
> > > >
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > >
> > > Hrm. I'm a bit unsure about this. The fact that the board code is
> > > involved in the parsing here is deliberate. Basically 'compat=' never
> > > made sense as a cpu property, it always should have been a machine
> > > property.
> > >
> > > With this patch we'll still (correctly) fail on a non spapr machine at
> > > the point where we do:
> > >
> > > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > >
> > > Though probably with a rather cryptic error.
> > I's possible to guard it and apply to only SPAPR machine
> > or trying to find property first before setting it.
>
> Yeah, I think we should do that. Or possibly we could do something
> with the vhyp interface. If there was ever a vhyp machine other than
> spapr (unlikely) then compat modes would also make sense for it (vhyp
> being non-NULL basically means that our vcpu is never allowed to enter
> hypervisor mode, so hypervisor privileged registers like LPCR need to
> be handled by the machine instead).
I'll use cast to spapr machine here for now, and leave it up to you
to change it in future to something else if it make sense.
btw: when pvn + power9 crushes it does so due to null vhyp
if I recall correctly
> > > It still pollutes the cpu code with spapr's past mistake though. I'm
> > > not sure if this is a good tradeoff.
> > CPUClass::parse_features callback was introduced to deal with
> > legacy and compatibility nuances of "-cpu" CLI option, so I'm moving
> > compat mistake back where it belongs so it will pollute code dealing
> > with hacks.
>
> Hm, ok. Still seems a bit odd to me, but I'll take your word for it.
all targets that have special handling for -cpu options like
parse '+-foo' format or 'foo' or fixup value of property or rename property
to new name do provide target specific CPUClass::parse_features callback
to deal with it, the rest of the targets use generic cpu_common_parse_features().
> > It also cleans the road for removal of global cpu_model by moving
> > dependency from board code to a callback designed to parse cpu_model.
> >
> >
> > > > ---
> > > > include/hw/ppc/spapr.h | 1 -
> > > > target/ppc/cpu-qom.h | 1 +
> > > > hw/ppc/spapr.c | 2 +-
> > > > hw/ppc/spapr_cpu_core.c | 50 --------------------------------------
> > > > target/ppc/translate_init.c | 58 +++++++++++++++++++++++++++++++++++++++++++++
> > > > 5 files changed, 60 insertions(+), 52 deletions(-)
> > > >
> > > > diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> > > > index c1b365f..8ca4f94 100644
> > > > --- a/include/hw/ppc/spapr.h
> > > > +++ b/include/hw/ppc/spapr.h
> > > > @@ -659,7 +659,6 @@ void spapr_hotplug_req_add_by_count_indexed(sPAPRDRConnectorType drc_type,
> > > > uint32_t count, uint32_t index);
> > > > void spapr_hotplug_req_remove_by_count_indexed(sPAPRDRConnectorType drc_type,
> > > > uint32_t count, uint32_t index);
> > > > -void spapr_cpu_parse_features(sPAPRMachineState *spapr);
> > > > int spapr_hpt_shift_for_ramsize(uint64_t ramsize);
> > > > void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
> > > > Error **errp);
> > > > diff --git a/target/ppc/cpu-qom.h b/target/ppc/cpu-qom.h
> > > > index d0cf6ca..429b47f 100644
> > > > --- a/target/ppc/cpu-qom.h
> > > > +++ b/target/ppc/cpu-qom.h
> > > > @@ -181,6 +181,7 @@ typedef struct PowerPCCPUClass {
> > > > DeviceRealize parent_realize;
> > > > DeviceUnrealize parent_unrealize;
> > > > void (*parent_reset)(CPUState *cpu);
> > > > + void (*parent_parse_features)(const char *type, char *str, Error **errp);
> > > >
> > > > uint32_t pvr;
> > > > bool (*pvr_match)(struct PowerPCCPUClass *pcc, uint32_t pvr);
> > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > > > index ff87f15..01b3012 100644
> > > > --- a/hw/ppc/spapr.c
> > > > +++ b/hw/ppc/spapr.c
> > > > @@ -2366,7 +2366,7 @@ static void ppc_spapr_init(MachineState *machine)
> > > > machine->cpu_model = kvm_enabled() ? "host" : smc->tcg_default_cpu;
> > > > }
> > > >
> > > > - spapr_cpu_parse_features(spapr);
> > > > + cpu_parse_cpu_model(TYPE_POWERPC_CPU, machine->cpu_model);
> > > >
> > > > spapr_set_vsmt_mode(spapr, &error_fatal);
> > > >
> > > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> > > > index 3dea5ff..427d47f 100644
> > > > --- a/hw/ppc/spapr_cpu_core.c
> > > > +++ b/hw/ppc/spapr_cpu_core.c
> > > > @@ -21,56 +21,6 @@
> > > > #include "sysemu/hw_accel.h"
> > > > #include "qemu/error-report.h"
> > > >
> > > > -void spapr_cpu_parse_features(sPAPRMachineState *spapr)
> > > > -{
> > > > - /*
> > > > - * Backwards compatibility hack:
> > > > - *
> > > > - * CPUs had a "compat=" property which didn't make sense for
> > > > - * anything except pseries. It was replaced by "max-cpu-compat"
> > > > - * machine option. This supports old command lines like
> > > > - * -cpu POWER8,compat=power7
> > > > - * By stripping the compat option and applying it to the machine
> > > > - * before passing it on to the cpu level parser.
> > > > - */
> > > > - gchar **inpieces;
> > > > - gchar *newprops;
> > > > - int i, j;
> > > > - gchar *compat_str = NULL;
> > > > -
> > > > - inpieces = g_strsplit(MACHINE(spapr)->cpu_model, ",", 0);
> > > > -
> > > > - /* inpieces[0] is the actual model string */
> > > > - i = 1;
> > > > - j = 1;
> > > > - while (inpieces[i]) {
> > > > - if (g_str_has_prefix(inpieces[i], "compat=")) {
> > > > - /* in case of multiple compat= options */
> > > > - g_free(compat_str);
> > > > - compat_str = inpieces[i];
> > > > - } else {
> > > > - j++;
> > > > - }
> > > > -
> > > > - i++;
> > > > - /* Excise compat options from list */
> > > > - inpieces[j] = inpieces[i];
> > > > - }
> > > > -
> > > > - if (compat_str) {
> > > > - char *val = compat_str + strlen("compat=");
> > > > -
> > > > - object_property_set_str(OBJECT(spapr), val, "max-cpu-compat",
> > > > - &error_fatal);
> > > > -
> > > > - }
> > > > -
> > > > - newprops = g_strjoinv(",", inpieces);
> > > > - cpu_parse_cpu_model(TYPE_POWERPC_CPU, newprops);
> > > > - g_free(newprops);
> > > > - g_strfreev(inpieces);
> > > > -}
> > > > -
> > > > static void spapr_cpu_reset(void *opaque)
> > > > {
> > > > PowerPCCPU *cpu = opaque;
> > > > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
> > > > index c6399a3..5ee91e8 100644
> > > > --- a/target/ppc/translate_init.c
> > > > +++ b/target/ppc/translate_init.c
> > > > @@ -10313,6 +10313,62 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
> > > >
> > > > return NULL;
> > > > }
> > > > +static void ppc_cpu_parse_featurestr(const char *typename, char *features,
> > > > + Error **errp)
> > > > +{
> > > > + const PowerPCCPUClass *pcc;
> > > > + char *compat_str = NULL;
> > > > + char *s = features;
> > > > + char **inpieces;
> > > > + Error *local_err = NULL;
> > > > + int i;
> > > > +
> > > > + if (!features) {
> > > > + return;
> > > > + }
> > > > +
> > > > + /*
> > > > + * Backwards compatibility hack:
> > > > + *
> > > > + * CPUs had a "compat=" property which didn't make sense for
> > > > + * anything except pseries. It was replaced by "max-cpu-compat"
> > > > + * machine option. This supports old command lines like
> > > > + * -cpu POWER8,compat=power7
> > > > + * By stripping the compat option and applying it to the machine
> > > > + * before passing it on to the cpu level parser.
> > > > + */
> > > > + inpieces = g_strsplit(features, ",", 0);
> > > > + *s = '\0';
> > > > + for (i = 0; inpieces[i]; i++) {
> > > > + if (g_str_has_prefix(inpieces[i], "compat=")) {
> > > > + compat_str = inpieces[i];
> > > > + continue;
> > > > + }
> > > > + if ((i != 0) && (s != features)) {
> > > > + s = g_stpcpy(s, ",");
> > > > + }
> > > > + s = g_stpcpy(s, inpieces[i]);
> > > > + }
> > > > +
> > > > + if (compat_str) {
> > > > + Object *machine = qdev_get_machine();
> > > > + if (machine) {
> > > > + char *v = compat_str + strlen("compat=");
> > > > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > > > + } else {
> > > > + error_setg(&local_err, "Not supported property: %s", compat_str);
> > > > + }
> > > > + }
> > > > + g_strfreev(inpieces);
> > > > + if (local_err) {
> > > > + error_propagate(errp, local_err);
> > > > + return;
> > > > + }
> > > > +
> > > > + /* do property processing with generic handler */
> > > > + pcc = POWERPC_CPU_CLASS(object_class_by_name(typename));
> > > > + pcc->parent_parse_features(typename, features, errp);
> > > > +}
> > > >
> > > > const char *ppc_cpu_lookup_alias(const char *alias)
> > > > {
> > > > @@ -10706,6 +10762,8 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
> > > > cc->reset = ppc_cpu_reset;
> > > >
> > > > cc->class_by_name = ppc_cpu_class_by_name;
> > > > + pcc->parent_parse_features = cc->parse_features;
> > > > + cc->parse_features = ppc_cpu_parse_featurestr;
> > > > cc->has_work = ppc_cpu_has_work;
> > > > cc->do_interrupt = ppc_cpu_do_interrupt;
> > > > cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
> > >
> >
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing
2017-10-06 9:35 ` David Gibson
@ 2017-10-06 9:56 ` Igor Mammedov
0 siblings, 0 replies; 81+ messages in thread
From: Igor Mammedov @ 2017-10-06 9:56 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 20:35:41 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Fri, Oct 06, 2017 at 11:20:05AM +0200, Igor Mammedov wrote:
> > On Fri, 6 Oct 2017 16:04:39 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >
> > > On Thu, Oct 05, 2017 at 06:24:44PM +0200, Igor Mammedov wrote:
> > > > use generic cpu_model parsing introduced by
> > > > (6063d4c0f vl.c: convert cpu_model to cpu type and set of global properties before machine_init())
> > > >
> > > > it allows to:
> > > > * replace sPAPRMachineClass::tcg_default_cpu with
> > > > MachineClass::default_cpu_type
> > > > * drop cpu_parse_cpu_model() from hw/ppc/spapr.c and reuse
> > > > one in vl.c
> > > > * simplify spapr_get_cpu_core_type() by removing
> > > > not needed anymore recurrsion since alias look up
> > > > happens earlier at vl.c and spapr_get_cpu_core_type()
> > > > works only with resulted from that cpu type.
> > > > * spapr no more needs to parse/depend on being phased out
> > > > MachineState::cpu_model, all tha parsing done by generic
> > > > code and target specific callback.
> > > >
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > > PS:
> > > > patch is a little bit big but it's hard to split it due
> > > > to dependencies, so pls bear with it.
> > >
> > > [snip]
> > > > -static int kvm_ppc_register_host_cpu_type(void)
> > > > +static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> > > > {
> > > > TypeInfo type_info = {
> > > > .name = TYPE_HOST_POWERPC_CPU,
> > > > .class_init = kvmppc_host_cpu_class_init,
> > > > };
> > > > + MachineClass *mc = MACHINE_GET_CLASS(ms);
> > > > PowerPCCPUClass *pvr_pcc;
> > > > ObjectClass *oc;
> > > > DeviceClass *dc;
> > > > @@ -2504,6 +2505,8 @@ static int kvm_ppc_register_host_cpu_type(void)
> > > > }
> > > > type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> > > > type_register(&type_info);
> > > > + /* override TCG default cpu type with 'host' cpu model */
> > > > + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> > >
> > > Ugh. I dislike this, it changes the default cpu type to 'host' for
> > > *all* machine types, whereas previously it was just true for pseries.
> > > That wasn't by accident.
> > >
> > > In general, I think we want there to be a single default CPU type for
> > > a machine, regardless of TCG vs. KVM. This is particularly true for
> > > many of the ppc machine types - they will only work with a CPU in the
> > > right "family" (e500 / 440 / POWERx, wahtever); in many of these cases
> > > KVM PR is usable, but using -cpu host could easily break the machine
> > > type.
> > >
> > > 'pseries' is different, it (and only it) can be used with KVM HV - and
> > > usually is. And KVM HV *only* works with -cpu host, due to hardware
> > > limitations.
> > I'd keep override in spapr_machine_class_init() but it's not possible
> > since it's called before kvm option is parsed and machine is prerequisite for kvm option
> >
> > how about following fixup?
> >
> > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> > index abc222e..48dc3f7 100644
> > --- a/target/ppc/kvm.c
> > +++ b/target/ppc/kvm.c
> > @@ -2505,8 +2505,10 @@ static int kvm_ppc_register_host_cpu_type(MachineState *ms)
> > }
> > type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
> > type_register(&type_info);
> > - /* override TCG default cpu type with 'host' cpu model */
> > - mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> > + if (object_dynamic_cast(ms, TYPE_SPAPR_MACHINE)) {
> > + /* override TCG default cpu type with 'host' cpu model */
> > + mc->default_cpu_type = TYPE_HOST_POWERPC_CPU;
> > + }
> >
> > oc = object_class_by_name(type_info.name);
> > g_assert(oc);
>
> Hm, ugly. But if that's what we have to do, that's what we have to
> do.
Unfortunately, I couldn't come with another way to do it (and not for the lack of trying)
I did similar override for s390 (though it has only one machine so it wasn't an issue there)
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases
2017-10-06 9:27 ` Igor Mammedov
@ 2017-10-06 10:12 ` Greg Kurz
0 siblings, 0 replies; 81+ messages in thread
From: Greg Kurz @ 2017-10-06 10:12 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, open list:ppce500, Edgar E. Iglesias,
Hervé Poussineau, Alexander Graf, David Gibson
On Fri, 6 Oct 2017 11:27:10 +0200
Igor Mammedov <imammedo@redhat.com> wrote:
> On Fri, 6 Oct 2017 09:39:25 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
> > On Thu, 5 Oct 2017 18:24:43 +0200
> > Igor Mammedov <imammedo@redhat.com> wrote:
> >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> >
> > So... this is preparatory work for the next patch because the generic cpu_model
> > parsing code doesn't handle aliases, is it ?
> generic parsing does handle aliases thanks to ppc_cpu_class_by_name() callback
> but generic parsing doesn't parse default cpu model as it doesn't exists
> it works with default cpu TYPE.
>
> So yes it's preparation for the next patch where exact default cpu model
> is converted into cpu type with help of POWERPC_CPU_TYPE_NAME(), like its done
> everywhere else.
>
I understand now, thanks for the clarification.
Maybe this patch could have been folded into the next one then, but anyway
the change is fine.
Reviewed-by: Greg Kurz <groug@kaod.org>
> >
> > > hw/ppc/spapr.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > > index ad7afd6..0661dba 100644
> > > --- a/hw/ppc/spapr.c
> > > +++ b/hw/ppc/spapr.c
> > > @@ -3603,7 +3603,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
> > > hc->unplug_request = spapr_machine_device_unplug_request;
> > >
> > > smc->dr_lmb_enabled = true;
> > > - smc->tcg_default_cpu = "POWER8";
> > > + smc->tcg_default_cpu = "power8_v2.0";
> > > mc->has_hotpluggable_cpus = true;
> > > smc->resize_hpt_default = SPAPR_RESIZE_HPT_ENABLED;
> > > fwc->get_dev_path = spapr_get_fw_dev_path;
> > > @@ -3849,7 +3849,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
> > > sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
> > >
> > > spapr_machine_2_8_class_options(mc);
> > > - smc->tcg_default_cpu = "POWER7";
> > > + smc->tcg_default_cpu = "power7_v2.3";
> > > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
> > > smc->phb_placement = phb_placement_2_7;
> > > }
> >
>
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr()
2017-10-06 9:52 ` Igor Mammedov
@ 2017-10-06 10:14 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-06 10:14 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3828 bytes --]
On Fri, Oct 06, 2017 at 11:52:44AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 20:17:41 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Fri, Oct 06, 2017 at 11:03:52AM +0200, Igor Mammedov wrote:
> > > On Fri, 6 Oct 2017 14:54:47 +1100
> > > David Gibson <david@gibson.dropbear.id.au> wrote:
> > >
> > > > On Thu, Oct 05, 2017 at 06:24:39PM +0200, Igor Mammedov wrote:
> > > > > there is a dedicated callback CPUClass::parse_features
> > > > > which purpose is to convert -cpu features into a set of
> > > > > global properties AND deal with compat/legacy features
> > > > > that couldn't be directly translated into CPU's properties.
> > > > >
> > > > > Create ppc variant of it (ppc_cpu_parse_featurestr) and
> > > > > move 'compat=val' handling from spapr_cpu_core.c into it.
> > > > > That removes a dependency of board/core code on cpu_model
> > > > > parsing and would let to reuse common -cpu parsing
> > > > > introduced by 6063d4c0
> > > > >
> > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > >
> > > > Hrm. I'm a bit unsure about this. The fact that the board code is
> > > > involved in the parsing here is deliberate. Basically 'compat=' never
> > > > made sense as a cpu property, it always should have been a machine
> > > > property.
> > > >
> > > > With this patch we'll still (correctly) fail on a non spapr machine at
> > > > the point where we do:
> > > >
> > > > + object_property_set_str(machine, v, "max-cpu-compat", &local_err);
> > > >
> > > > Though probably with a rather cryptic error.
> > > I's possible to guard it and apply to only SPAPR machine
> > > or trying to find property first before setting it.
> >
> > Yeah, I think we should do that. Or possibly we could do something
> > with the vhyp interface. If there was ever a vhyp machine other than
> > spapr (unlikely) then compat modes would also make sense for it (vhyp
> > being non-NULL basically means that our vcpu is never allowed to enter
> > hypervisor mode, so hypervisor privileged registers like LPCR need to
> > be handled by the machine instead).
> I'll use cast to spapr machine here for now, and leave it up to you
> to change it in future to something else if it make sense.
Makes sense. As long as we get the behaviour right for now, we can
clean up the implementation later.
> btw: when pvn + power9 crushes it does so due to null vhyp
> if I recall correctly
Yeah, pnv is very much a work in progress, it barely works for POWER8
and is hardly tested for POWER9. It's also entirely possible we're
misisng bits in the POWER9 code to handle the !vhyp case, since
pseries is the only machine that's really been tested with POWER9 at
all so far.
> > > > It still pollutes the cpu code with spapr's past mistake though. I'm
> > > > not sure if this is a good tradeoff.
> > > CPUClass::parse_features callback was introduced to deal with
> > > legacy and compatibility nuances of "-cpu" CLI option, so I'm moving
> > > compat mistake back where it belongs so it will pollute code dealing
> > > with hacks.
> >
> > Hm, ok. Still seems a bit odd to me, but I'll take your word for it.
> all targets that have special handling for -cpu options like
> parse '+-foo' format or 'foo' or fixup value of property or rename property
> to new name do provide target specific CPUClass::parse_features callback
> to deal with it, the rest of the targets use generic
> cpu_common_parse_features().
Yeah, still smacks of the machine ~= target assumption that x86 people
tend to make.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-06 9:30 ` Igor Mammedov
@ 2017-10-06 11:25 ` David Gibson
2017-10-09 5:44 ` Igor Mammedov
0 siblings, 1 reply; 81+ messages in thread
From: David Gibson @ 2017-10-06 11:25 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 3407 bytes --]
On Fri, Oct 06, 2017 at 11:30:54AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 19:34:19 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Thu, Oct 05, 2017 at 06:24:45PM +0200, Igor Mammedov wrote:
> > > use common cpu_model prasing in vl.c and set default cpu_model
> > > using generic MachineClass::default_cpu_type.
> > >
> > > Beside of switching to generic infrastructure it solves several
> > > issues.
> > >
> > > * ppc_cpu_class_by_name() is used to deal with lower/upper case
> > > and alias translations into actual cpu type, which fixes
> > > '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> > > usecases which error out with:
> > > 'invalid CPU model 'FOO' for powernv machine'
> > > * allows to switch to lower-case typenames in pnv chip/core name
> > > (by convention typnames should be lower-case)
> > > * replace aliased names /power8, power9, .../ with exact cpu model
> > > names (i.e. typenames should be stable but aliases might decide to
> > > point to other cpu model withi family or changed by kvm). It will
> > > also help to simplify pnv_chip/core code and get rid of dependency
> > > on cpu_model parsing.
> > >
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > include/hw/ppc/pnv.h | 8 ++++----
> > > hw/ppc/pnv.c | 22 ++++++++++------------
> > > hw/ppc/pnv_core.c | 2 +-
> > > 3 files changed, 15 insertions(+), 17 deletions(-)
> > >
> > > diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> > > index 9c5437d..2525f7f 100644
> > > --- a/include/hw/ppc/pnv.h
> > > +++ b/include/hw/ppc/pnv.h
> > > @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> > > uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> > > } PnvChipClass;
> > >
> > > -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> > > +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> > > #define PNV_CHIP_POWER8E(obj) \
> > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
> > >
> > > -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> > > +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> > > #define PNV_CHIP_POWER8(obj) \
> > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
> > >
> > > -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> > > +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> > > #define PNV_CHIP_POWER8NVL(obj) \
> > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
> > >
> > > -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> > > +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> >
> > Uh.. we really should add a DD2 power9 before we make this change.
> > Making a DD1.0 (read, buggy as hell) chip the default is not
> > sensible. Especially since we don't implement the various DD1 bugs
> > and differences in qemu.
> I guess pnv owner will have to it,
> I can't help here /me uses whatever is in code right now/
I just committed a patch to ppc-for-2.11 that adds POWER9 v2.0 to the
code (and makes it the default). Sorry, this will probably require a
rebase of your stuff.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-06 11:25 ` David Gibson
@ 2017-10-09 5:44 ` Igor Mammedov
2017-10-09 6:59 ` David Gibson
0 siblings, 1 reply; 81+ messages in thread
From: Igor Mammedov @ 2017-10-09 5:44 UTC (permalink / raw)
To: David Gibson
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
On Fri, 6 Oct 2017 22:25:03 +1100
David Gibson <david@gibson.dropbear.id.au> wrote:
> On Fri, Oct 06, 2017 at 11:30:54AM +0200, Igor Mammedov wrote:
> > On Fri, 6 Oct 2017 19:34:19 +1100
> > David Gibson <david@gibson.dropbear.id.au> wrote:
> >
> > > On Thu, Oct 05, 2017 at 06:24:45PM +0200, Igor Mammedov wrote:
> > > > use common cpu_model prasing in vl.c and set default cpu_model
> > > > using generic MachineClass::default_cpu_type.
> > > >
> > > > Beside of switching to generic infrastructure it solves several
> > > > issues.
> > > >
> > > > * ppc_cpu_class_by_name() is used to deal with lower/upper case
> > > > and alias translations into actual cpu type, which fixes
> > > > '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> > > > usecases which error out with:
> > > > 'invalid CPU model 'FOO' for powernv machine'
> > > > * allows to switch to lower-case typenames in pnv chip/core name
> > > > (by convention typnames should be lower-case)
> > > > * replace aliased names /power8, power9, .../ with exact cpu model
> > > > names (i.e. typenames should be stable but aliases might decide to
> > > > point to other cpu model withi family or changed by kvm). It will
> > > > also help to simplify pnv_chip/core code and get rid of dependency
> > > > on cpu_model parsing.
> > > >
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > > include/hw/ppc/pnv.h | 8 ++++----
> > > > hw/ppc/pnv.c | 22 ++++++++++------------
> > > > hw/ppc/pnv_core.c | 2 +-
> > > > 3 files changed, 15 insertions(+), 17 deletions(-)
> > > >
> > > > diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> > > > index 9c5437d..2525f7f 100644
> > > > --- a/include/hw/ppc/pnv.h
> > > > +++ b/include/hw/ppc/pnv.h
> > > > @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> > > > uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> > > > } PnvChipClass;
> > > >
> > > > -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> > > > +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> > > > #define PNV_CHIP_POWER8E(obj) \
> > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
> > > >
> > > > -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> > > > +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> > > > #define PNV_CHIP_POWER8(obj) \
> > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
> > > >
> > > > -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> > > > +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> > > > #define PNV_CHIP_POWER8NVL(obj) \
> > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
> > > >
> > > > -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> > > > +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> > >
> > > Uh.. we really should add a DD2 power9 before we make this change.
> > > Making a DD1.0 (read, buggy as hell) chip the default is not
> > > sensible. Especially since we don't implement the various DD1 bugs
> > > and differences in qemu.
> > I guess pnv owner will have to it,
> > I can't help here /me uses whatever is in code right now/
>
> I just committed a patch to ppc-for-2.11 that adds POWER9 v2.0 to the
> code (and makes it the default). Sorry, this will probably require a
> rebase of your stuff.
Do you have a pointer to the patch or even better ppc staging tree to rebase on?
^ permalink raw reply [flat|nested] 81+ messages in thread
* Re: [Qemu-devel] [PATCH 18/23] ppc: pnv: use generic cpu_model parsing
2017-10-09 5:44 ` Igor Mammedov
@ 2017-10-09 6:59 ` David Gibson
0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2017-10-09 6:59 UTC (permalink / raw)
To: Igor Mammedov
Cc: qemu-devel, Alexander Graf, Hervé Poussineau,
Edgar E. Iglesias, open list:ppce500
[-- Attachment #1: Type: text/plain, Size: 4085 bytes --]
On Mon, Oct 09, 2017 at 07:44:15AM +0200, Igor Mammedov wrote:
> On Fri, 6 Oct 2017 22:25:03 +1100
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Fri, Oct 06, 2017 at 11:30:54AM +0200, Igor Mammedov wrote:
> > > On Fri, 6 Oct 2017 19:34:19 +1100
> > > David Gibson <david@gibson.dropbear.id.au> wrote:
> > >
> > > > On Thu, Oct 05, 2017 at 06:24:45PM +0200, Igor Mammedov wrote:
> > > > > use common cpu_model prasing in vl.c and set default cpu_model
> > > > > using generic MachineClass::default_cpu_type.
> > > > >
> > > > > Beside of switching to generic infrastructure it solves several
> > > > > issues.
> > > > >
> > > > > * ppc_cpu_class_by_name() is used to deal with lower/upper case
> > > > > and alias translations into actual cpu type, which fixes
> > > > > '-M powernv -cpu power8' and '-M powernv -cpu power9_v1.0'
> > > > > usecases which error out with:
> > > > > 'invalid CPU model 'FOO' for powernv machine'
> > > > > * allows to switch to lower-case typenames in pnv chip/core name
> > > > > (by convention typnames should be lower-case)
> > > > > * replace aliased names /power8, power9, .../ with exact cpu model
> > > > > names (i.e. typenames should be stable but aliases might decide to
> > > > > point to other cpu model withi family or changed by kvm). It will
> > > > > also help to simplify pnv_chip/core code and get rid of dependency
> > > > > on cpu_model parsing.
> > > > >
> > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > ---
> > > > > include/hw/ppc/pnv.h | 8 ++++----
> > > > > hw/ppc/pnv.c | 22 ++++++++++------------
> > > > > hw/ppc/pnv_core.c | 2 +-
> > > > > 3 files changed, 15 insertions(+), 17 deletions(-)
> > > > >
> > > > > diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
> > > > > index 9c5437d..2525f7f 100644
> > > > > --- a/include/hw/ppc/pnv.h
> > > > > +++ b/include/hw/ppc/pnv.h
> > > > > @@ -80,19 +80,19 @@ typedef struct PnvChipClass {
> > > > > uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id);
> > > > > } PnvChipClass;
> > > > >
> > > > > -#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-POWER8E"
> > > > > +#define TYPE_PNV_CHIP_POWER8E TYPE_PNV_CHIP "-power8e_v2.1"
> > > > > #define PNV_CHIP_POWER8E(obj) \
> > > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8E)
> > > > >
> > > > > -#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-POWER8"
> > > > > +#define TYPE_PNV_CHIP_POWER8 TYPE_PNV_CHIP "-power8_v2.0"
> > > > > #define PNV_CHIP_POWER8(obj) \
> > > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8)
> > > > >
> > > > > -#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-POWER8NVL"
> > > > > +#define TYPE_PNV_CHIP_POWER8NVL TYPE_PNV_CHIP "-power8nvl_v1.0"
> > > > > #define PNV_CHIP_POWER8NVL(obj) \
> > > > > OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP_POWER8NVL)
> > > > >
> > > > > -#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-POWER9"
> > > > > +#define TYPE_PNV_CHIP_POWER9 TYPE_PNV_CHIP "-power9_v1.0"
> > > >
> > > > Uh.. we really should add a DD2 power9 before we make this change.
> > > > Making a DD1.0 (read, buggy as hell) chip the default is not
> > > > sensible. Especially since we don't implement the various DD1 bugs
> > > > and differences in qemu.
> > > I guess pnv owner will have to it,
> > > I can't help here /me uses whatever is in code right now/
> >
> > I just committed a patch to ppc-for-2.11 that adds POWER9 v2.0 to the
> > code (and makes it the default). Sorry, this will probably require a
> > rebase of your stuff.
> Do you have a pointer to the patch or even better ppc staging tree to rebase on?
Oh, sorry, when I say 'ppc-for-2.11' I'm referring to that staging
tree. You can find it at:
git://github.com/dgibson/qemu.git branch 'ppc-for-2.11'.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 81+ messages in thread
end of thread, other threads:[~2017-10-09 7:53 UTC | newest]
Thread overview: 81+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-05 16:24 [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 01/23] qom: update doc comment for type_register[_static]() Igor Mammedov
2017-10-06 2:57 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 02/23] qom: introduce type_register_static_array() Igor Mammedov
2017-10-06 2:58 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 03/23] qom: add helper macro DEFINE_TYPES() Igor Mammedov
2017-10-06 3:06 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 04/23] ppc: mpc8544ds/e500plat: use generic cpu_model parsing Igor Mammedov
2017-10-06 3:02 ` David Gibson
2017-10-06 8:27 ` Igor Mammedov
2017-10-06 9:12 ` David Gibson
2017-10-06 9:37 ` Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 05/23] ppc: mac_newworld: " Igor Mammedov
2017-10-06 3:08 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 06/23] ppc: mac_oldworld: " Igor Mammedov
2017-10-06 3:09 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 07/23] ppc: bamboo: " Igor Mammedov
2017-10-06 3:11 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 08/23] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards Igor Mammedov
2017-10-06 3:12 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 09/23] ppc: virtex-ml507: replace cpu_model with cpu_type Igor Mammedov
2017-10-06 3:13 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 10/23] ppc: 40p/prep: " Igor Mammedov
2017-10-06 3:14 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 11/23] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model() Igor Mammedov
2017-10-05 18:35 ` Greg Kurz
2017-10-06 3:16 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 12/23] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr() Igor Mammedov
2017-10-05 19:05 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2017-10-06 8:40 ` Igor Mammedov
2017-10-06 3:54 ` [Qemu-devel] " David Gibson
2017-10-06 9:03 ` Igor Mammedov
2017-10-06 9:17 ` David Gibson
2017-10-06 9:52 ` Igor Mammedov
2017-10-06 10:14 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 13/23] ppc: spapr: define core types statically Igor Mammedov
2017-10-05 20:31 ` Greg Kurz
2017-10-06 3:58 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 14/23] ppc: spapr: use cpu type name directly Igor Mammedov
2017-10-05 20:47 ` Greg Kurz
2017-10-06 4:01 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 15/23] ppc: spapr: register 'host' core type along with the rest of core types Igor Mammedov
2017-10-05 21:55 ` Greg Kurz
2017-10-06 4:41 ` David Gibson
2017-10-06 9:07 ` Igor Mammedov
2017-10-06 9:13 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases Igor Mammedov
2017-10-06 4:43 ` David Gibson
2017-10-06 7:39 ` Greg Kurz
2017-10-06 9:27 ` Igor Mammedov
2017-10-06 10:12 ` Greg Kurz
2017-10-05 16:24 ` [Qemu-devel] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing Igor Mammedov
2017-10-06 5:04 ` David Gibson
2017-10-06 9:20 ` Igor Mammedov
2017-10-06 9:35 ` David Gibson
2017-10-06 9:56 ` Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 18/23] ppc: pnv: " Igor Mammedov
2017-10-06 6:21 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:34 ` [Qemu-devel] " David Gibson
2017-10-06 9:30 ` Igor Mammedov
2017-10-06 11:25 ` David Gibson
2017-10-09 5:44 ` Igor Mammedov
2017-10-09 6:59 ` David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 19/23] ppc: pnv: normalize core/chip type names Igor Mammedov
2017-10-06 6:22 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:37 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:41 ` [Qemu-devel] " David Gibson
2017-10-06 9:31 ` Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 21/23] ppc: pnv: define core types statically Igor Mammedov
2017-10-06 6:24 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:42 ` [Qemu-devel] " David Gibson
2017-10-05 16:24 ` [Qemu-devel] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:46 ` [Qemu-devel] " David Gibson
2017-10-06 9:32 ` Igor Mammedov
2017-10-05 16:24 ` [Qemu-devel] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them Igor Mammedov
2017-10-06 6:27 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2017-10-06 8:47 ` [Qemu-devel] " David Gibson
2017-10-05 17:31 ` [Qemu-devel] [PATCH 00/23] generalize parsing of cpu_model (part 3/PPC) no-reply
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.