* [PULL v2 00/62] Misc patches for 2019-12-16
@ 2019-12-17 17:57 Paolo Bonzini
2019-12-17 17:57 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-17 17:57 UTC (permalink / raw)
To: qemu-devel
The following changes since commit 084a398bf8aa7634738e6c6c0103236ee1b3b72f:
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-12-13 18:14:07 +0000)
are available in the git repository at:
git://github.com/bonzini/qemu.git tags/for-upstream
for you to fetch changes up to 74c14076700436f9d340652042c81f46eaf0cf9f:
colo: fix return without releasing RCU (2019-12-17 14:03:44 +0100)
----------------------------------------------------------------
* More uses of RCU_READ_LOCK_GUARD (Dave, myself)
* QOM doc improvments (Greg)
* Cleanups from the Meson conversion (Marc-André)
* Support for multiple -accel options (myself)
* Many x86 machine cleanup (Philippe, myself)
* tests/migration-test cleanup (Juan)
----------------------------------------------------------------
Dr. David Alan Gilbert (3):
kvm: Reallocate dirty_bmap when we change a slot
hyperv: Use auto rcu_read macros
qsp: Use WITH_RCU_READ_LOCK_GUARD
Greg Kurz (1):
object: Improve documentation of interfaces
Juan Quintela (10):
migration-test: Create cmd_soure and cmd_target
migration-test: Move hide_stderr to common commandline
migration-test: Move -machine to common commandline
migration-test: Move memory size to common commandline
migration-test: Move shmem handling to common commandline
migration-test: Move -name handling to common commandline
migration-test: Move -serial handling to common commandline
migration-test: Move -incomming handling to common commandline
migration-test: Rename cmd_src/dst to arch_source/arch_target
migration-test: Use a struct for test_migrate_start parameters
Marc-André Lureau (7):
build-sys: build vhost-user-gpu only if CONFIG_TOOLS
migration: fix maybe-uninitialized warning
monitor: fix maybe-uninitialized
vhost-user-scsi: fix printf format warning
os-posix: simplify os_find_datadir
tests: skip block layer tests if !CONFIG_TOOLS
configure: simplify vhost condition with Kconfig
Paolo Bonzini (35):
memory: do not look at current_machine->accel
vl: move icount configuration earlier
tcg: move qemu_tcg_configure to accel/tcg/tcg-all.c
vl: extract accelerator option processing to a separate function
vl: merge -accel processing into configure_accelerators
accel: compile accel/accel.c just once
vl: introduce object_parse_property_opt
vl: configure accelerators from -accel options
vl: warn for unavailable accelerators, clarify messages
qom: introduce object_register_sugar_prop
qom: add object_new_with_class
accel: pass object to accel_init_machine
tcg: convert "-accel threads" to a QOM property
tcg: add "-accel tcg,tb-size" and deprecate "-tb-size"
xen: convert "-machine igd-passthru" to an accelerator property
kvm: convert "-machine kvm_shadow_mem" to an accelerator property
kvm: introduce kvm_kernel_irqchip_* functions
kvm: convert "-machine kernel_irqchip" to an accelerator property
Makefile: remove unused variables
build-sys: do not include Windows SLIRP dependencies in $LIBS
libvixl: remove per-target compiler flags
crypto: move common bits for all emulators to libqemuutil
stubs: replace stubs with lnot if applicable
configure: set $PYTHON to a full path
i386: conditionally compile more files
fw_cfg: allow building without other devices
hw: replace hw/i386/pc.h with a header just for the i8259
pci-stub: add more MSI functions
x86: move SMM property to X86MachineState
x86: move more x86-generic functions out of PC files
acpi: move PC stubs out of stubs/
pc: stubify x86 iommu
hw/isa/isa-bus: cleanup irq functions
memory: use RCU_READ_LOCK_GUARD
colo: fix return without releasing RCU
Philippe Mathieu-Daudé (6):
hw/i386/pc: Convert DPRINTF() to trace events
hw/i386: De-duplicate gsi_handler() to remove kvm_pc_gsi_handler()
hw/i386: Simplify ioapic_init_gsi()
hw/i386/pc: Use TYPE_PORT92 instead of hardcoded string
hw/i386/pc: Inline port92_init()
hw/i386/pc: Extract the port92 device
Kconfig.host | 5 +
Makefile | 14 +-
Makefile.objs | 6 +-
Makefile.target | 2 -
accel/Makefile.objs | 2 +-
accel/accel.c | 73 +-----
accel/kvm/kvm-all.c | 161 ++++++++++--
accel/tcg/tcg-all.c | 149 ++++++++++-
configure | 10 +-
contrib/vhost-user-scsi/vhost-user-scsi.c | 2 +-
cpus.c | 72 -----
crypto/Makefile.objs | 13 +-
disas/libvixl/Makefile.objs | 11 +-
hw/acpi/Makefile.objs | 3 +-
.../pc_madt_cpu_entry.c => hw/acpi/acpi-x86-stub.c | 0
hw/alpha/alpha_sys.h | 3 +-
hw/alpha/dp264.c | 1 +
hw/core/machine.c | 141 ----------
hw/hppa/hppa_sys.h | 3 +-
hw/hppa/machine.c | 1 +
hw/hyperv/hyperv.c | 22 +-
hw/i386/Kconfig | 6 +
hw/i386/Makefile.objs | 10 +-
hw/i386/acpi-build.c | 1 +
hw/i386/fw_cfg.c | 8 +-
hw/i386/fw_cfg.h | 2 +
hw/i386/kvm/Makefile.objs | 6 +-
hw/i386/kvm/i8259.c | 1 +
hw/i386/kvm/ioapic.c | 14 +-
hw/i386/microvm.c | 4 +-
hw/i386/pc.c | 291 +--------------------
hw/i386/pc_piix.c | 6 +-
hw/i386/pc_q35.c | 2 +-
hw/i386/port92.c | 126 +++++++++
hw/i386/trace-events | 8 +
hw/i386/x86-iommu-stub.c | 34 +++
hw/i386/x86.c | 154 ++++++++++-
hw/input/pckbd.c | 1 -
hw/intc/Kconfig | 2 +
hw/intc/apic.c | 2 +-
hw/intc/i8259.c | 2 +-
hw/intc/i8259_common.c | 2 +-
hw/intc/ioapic.c | 3 +-
hw/isa/i82378.c | 2 +-
hw/isa/isa-bus.c | 11 +-
hw/isa/lpc_ich9.c | 1 -
hw/isa/piix4.c | 2 +-
hw/mips/gt64xxx_pci.c | 2 +-
hw/mips/mips_fulong2e.c | 2 +-
hw/mips/mips_jazz.c | 2 +-
hw/mips/mips_r4k.c | 2 +-
hw/pci-host/bonito.c | 1 -
hw/pci-host/prep.c | 2 +-
hw/pci/pci-stub.c | 27 ++
hw/ppc/e500.c | 5 +-
hw/ppc/spapr_irq.c | 16 +-
hw/virtio/Kconfig | 3 +
hw/virtio/Makefile.objs | 4 +-
hw/xen/xen-common.c | 18 ++
hw/xen/xen_pt.c | 2 +
include/exec/memory.h | 3 +-
include/hw/boards.h | 7 -
include/hw/i386/pc.h | 32 +--
include/hw/i386/x86.h | 23 ++
include/hw/intc/i8259.h | 12 +
include/hw/isa/i8259_internal.h | 2 +-
include/hw/isa/isa.h | 8 +-
include/qom/object.h | 23 +-
include/sysemu/accel.h | 4 +-
include/sysemu/cpus.h | 2 -
include/sysemu/kvm.h | 8 +-
memory.c | 5 +-
migration/ram.c | 53 ++--
monitor/misc.c | 3 +-
os-posix.c | 41 +--
qemu-deprecated.texi | 6 +
qemu-options.hx | 30 ++-
qom/object.c | 28 +-
stubs/Makefile.objs | 1 -
target/arm/kvm.c | 8 +-
target/i386/cpu.c | 8 +-
target/i386/kvm.c | 11 +-
target/i386/machine.c | 2 +-
target/i386/monitor.c | 1 -
target/mips/kvm.c | 2 +-
target/ppc/kvm.c | 2 +-
target/s390x/cpu_models.c | 4 +-
target/s390x/kvm.c | 2 +-
tests/Makefile.include | 4 +-
tests/arm-cpu-features.c | 4 +-
tests/bios-tables-test.c | 16 +-
tests/boot-serial-test.c | 4 +-
tests/cdrom-test.c | 2 +-
tests/libqtest.c | 4 +-
tests/migration-test.c | 264 ++++++++++---------
tests/pflash-cfi02-test.c | 4 +-
tests/pnv-xscom-test.c | 4 +-
tests/prom-env-test.c | 2 +-
tests/pxe-test.c | 2 +-
tests/vmgenid-test.c | 2 +-
util/Makefile.objs | 3 +-
util/qsp.c | 22 +-
vl.c | 225 +++++++++++-----
103 files changed, 1298 insertions(+), 1076 deletions(-)
rename stubs/pc_madt_cpu_entry.c => hw/acpi/acpi-x86-stub.c (100%)
create mode 100644 hw/i386/port92.c
create mode 100644 hw/i386/x86-iommu-stub.c
create mode 100644 include/hw/intc/i8259.h
--
1.8.3.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters
2019-12-17 17:57 [PULL v2 00/62] Misc patches for 2019-12-16 Paolo Bonzini
@ 2019-12-17 17:57 ` Paolo Bonzini
2019-12-17 17:57 ` [PULL 21/62] qom: introduce object_register_sugar_prop Paolo Bonzini
2019-12-17 18:13 ` [PULL v2 00/62] Misc patches for 2019-12-16 Peter Maydell
2 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-17 17:57 UTC (permalink / raw)
To: qemu-devel; +Cc: Juan Quintela
From: Juan Quintela <quintela@redhat.com>
It has two bools and two strings, it is very difficult to remember
which does what. And it makes very difficult to add new parameters as
we need to modify all the callers.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Tested-by: Cornelia Huck <cohuck@redhat.com> #s390x
Tested-by: Laurent Vivier <lvivier@redhat.com>
---
tests/migration-test.c | 118 ++++++++++++++++++++++++++++++++-----------------
1 file changed, 78 insertions(+), 40 deletions(-)
diff --git a/tests/migration-test.c b/tests/migration-test.c
index 6c7c416..97dd1dc 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -544,10 +544,31 @@ static void migrate_postcopy_start(QTestState *from, QTestState *to)
qtest_qmp_eventwait(to, "RESUME");
}
+typedef struct {
+ bool hide_stderr;
+ bool use_shmem;
+ char *opts_source;
+ char *opts_target;
+} MigrateStart;
+
+static MigrateStart *migrate_start_new(void)
+{
+ MigrateStart *args = g_new0(MigrateStart, 1);
+
+ args->opts_source = g_strdup("");
+ args->opts_target = g_strdup("");
+ return args;
+}
+
+static void migrate_start_destroy(MigrateStart *args)
+{
+ g_free(args->opts_source);
+ g_free(args->opts_target);
+ g_free(args);
+}
+
static int test_migrate_start(QTestState **from, QTestState **to,
- const char *uri, bool hide_stderr,
- bool use_shmem, const char *opts_src,
- const char *opts_dst)
+ const char *uri, MigrateStart *args)
{
gchar *arch_source, *arch_target;
gchar *cmd_source, *cmd_target;
@@ -560,10 +581,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
const char *machine_args;
const char *memory_size;
- opts_src = opts_src ? opts_src : "";
- opts_dst = opts_dst ? opts_dst : "";
-
- if (use_shmem) {
+ if (args->use_shmem) {
if (!g_file_test("/dev/shm", G_FILE_TEST_IS_DIR)) {
g_test_skip("/dev/shm is not supported");
return -1;
@@ -623,13 +641,13 @@ static int test_migrate_start(QTestState **from, QTestState **to,
g_free(bootpath);
- if (hide_stderr) {
+ if (args->hide_stderr) {
ignore_stderr = "2>/dev/null";
} else {
ignore_stderr = "";
}
- if (use_shmem) {
+ if (args->use_shmem) {
shmem_path = g_strdup_printf("/dev/shm/qemu-%d", getpid());
shmem_opts = g_strdup_printf(
"-object memory-backend-file,id=mem0,size=%s"
@@ -647,7 +665,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
"%s %s %s %s",
machine_type, machine_args,
memory_size, tmpfs,
- arch_source, shmem_opts, opts_src,
+ arch_source, shmem_opts, args->opts_source,
ignore_stderr);
g_free(arch_source);
*from = qtest_init(cmd_source);
@@ -661,8 +679,8 @@ static int test_migrate_start(QTestState **from, QTestState **to,
"%s %s %s %s",
machine_type, machine_args,
memory_size, tmpfs, uri,
- arch_target, shmem_opts, opts_dst,
- ignore_stderr);
+ arch_target, shmem_opts,
+ args->opts_target, ignore_stderr);
g_free(arch_target);
*to = qtest_init(cmd_target);
g_free(cmd_target);
@@ -672,11 +690,12 @@ static int test_migrate_start(QTestState **from, QTestState **to,
* Remove shmem file immediately to avoid memory leak in test failed case.
* It's valid becase QEMU has already opened this file
*/
- if (use_shmem) {
+ if (args->use_shmem) {
unlink(shmem_path);
g_free(shmem_path);
}
+ migrate_start_destroy(args);
return 0;
}
@@ -762,13 +781,13 @@ static void test_deprecated(void)
}
static int migrate_postcopy_prepare(QTestState **from_ptr,
- QTestState **to_ptr,
- bool hide_error)
+ QTestState **to_ptr,
+ MigrateStart *args)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, hide_error, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return -1;
}
@@ -813,9 +832,10 @@ static void migrate_postcopy_complete(QTestState *from, QTestState *to)
static void test_postcopy(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (migrate_postcopy_prepare(&from, &to, false)) {
+ if (migrate_postcopy_prepare(&from, &to, args)) {
return;
}
migrate_postcopy_start(from, to);
@@ -824,10 +844,13 @@ static void test_postcopy(void)
static void test_postcopy_recovery(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
char *uri;
- if (migrate_postcopy_prepare(&from, &to, true)) {
+ args->hide_stderr = true;
+
+ if (migrate_postcopy_prepare(&from, &to, args)) {
return;
}
@@ -910,9 +933,12 @@ static void wait_for_migration_fail(QTestState *from, bool allow_active)
static void test_baddest(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, "tcp:0:0", true, false, NULL, NULL)) {
+ args->hide_stderr = true;
+
+ if (test_migrate_start(&from, &to, "tcp:0:0", args)) {
return;
}
migrate(from, "tcp:0:0", "{}");
@@ -923,9 +949,10 @@ static void test_baddest(void)
static void test_precopy_unix(void)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1001,9 +1028,10 @@ static void test_ignore_shared(void)
static void test_xbzrle(const char *uri)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1052,11 +1080,11 @@ static void test_xbzrle_unix(void)
static void test_precopy_tcp(void)
{
+ MigrateStart *args = migrate_start_new();
char *uri;
QTestState *from, *to;
- if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", false, false,
- NULL, NULL)) {
+ if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", args)) {
return;
}
@@ -1096,13 +1124,14 @@ static void test_precopy_tcp(void)
static void test_migrate_fd_proto(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
int ret;
int pair[2];
QDict *rsp;
const char *error_desc;
- if (test_migrate_start(&from, &to, "defer", false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, "defer", args)) {
return;
}
@@ -1178,15 +1207,12 @@ static void test_migrate_fd_proto(void)
test_migrate_end(from, to, true);
}
-static void do_test_validate_uuid(const char *uuid_arg_src,
- const char *uuid_arg_dst,
- bool should_fail, bool hide_stderr)
+static void do_test_validate_uuid(MigrateStart *args, bool should_fail)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, hide_stderr, false,
- uuid_arg_src, uuid_arg_dst)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1216,33 +1242,45 @@ static void do_test_validate_uuid(const char *uuid_arg_src,
static void test_validate_uuid(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
- "-uuid 11111111-1111-1111-1111-111111111111",
- false, false);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->opts_target = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ do_test_validate_uuid(args, false);
}
static void test_validate_uuid_error(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
- "-uuid 22222222-2222-2222-2222-222222222222",
- true, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, true);
}
static void test_validate_uuid_src_not_set(void)
{
- do_test_validate_uuid(NULL, "-uuid 11111111-1111-1111-1111-111111111111",
- false, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, false);
}
static void test_validate_uuid_dst_not_set(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111", NULL,
- false, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, false);
}
static void test_migrate_auto_converge(void)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
int64_t remaining, percentage;
@@ -1261,7 +1299,7 @@ static void test_migrate_auto_converge(void)
*/
const int64_t expected_threshold = max_bandwidth * downtime_limit / 1000;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PULL 21/62] qom: introduce object_register_sugar_prop
2019-12-17 17:57 [PULL v2 00/62] Misc patches for 2019-12-16 Paolo Bonzini
2019-12-17 17:57 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
@ 2019-12-17 17:57 ` Paolo Bonzini
2019-12-17 18:13 ` [PULL v2 00/62] Misc patches for 2019-12-16 Peter Maydell
2 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-17 17:57 UTC (permalink / raw)
To: qemu-devel
Similar to the existing "-rtc driftfix" option, we will convert some
legacy "-machine" command line options to global properties on accelerators.
Because accelerators are not devices, we cannot use qdev_prop_register_global.
Instead, provide a slot in the generic object_compat_props arrays for
command line syntactic sugar.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/qom/object.h | 1 +
qom/object.c | 23 +++++++++++++++++++++--
vl.c | 10 +++-------
3 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 128d00c..230b18f 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -679,6 +679,7 @@ void object_apply_global_props(Object *obj, const GPtrArray *props,
Error **errp);
void object_set_machine_compat_props(GPtrArray *compat_props);
void object_set_accelerator_compat_props(GPtrArray *compat_props);
+void object_register_sugar_prop(const char *driver, const char *prop, const char *value);
void object_apply_compat_props(Object *obj);
/**
diff --git a/qom/object.c b/qom/object.c
index d51b57f..e7b72f7 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -414,10 +414,29 @@ void object_apply_global_props(Object *obj, const GPtrArray *props, Error **errp
* Global property defaults
* Slot 0: accelerator's global property defaults
* Slot 1: machine's global property defaults
+ * Slot 2: global properties from legacy command line option
* Each is a GPtrArray of of GlobalProperty.
* Applied in order, later entries override earlier ones.
*/
-static GPtrArray *object_compat_props[2];
+static GPtrArray *object_compat_props[3];
+
+/*
+ * Retrieve @GPtrArray for global property defined with options
+ * other than "-global". These are generally used for syntactic
+ * sugar and legacy command line options.
+ */
+void object_register_sugar_prop(const char *driver, const char *prop, const char *value)
+{
+ GlobalProperty *g;
+ if (!object_compat_props[2]) {
+ object_compat_props[2] = g_ptr_array_new();
+ }
+ g = g_new0(GlobalProperty, 1);
+ g->driver = g_strdup(driver);
+ g->property = g_strdup(prop);
+ g->value = g_strdup(value);
+ g_ptr_array_add(object_compat_props[2], g);
+}
/*
* Set machine's global property defaults to @compat_props.
@@ -445,7 +464,7 @@ void object_apply_compat_props(Object *obj)
for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
object_apply_global_props(obj, object_compat_props[i],
- &error_abort);
+ i == 2 ? &error_fatal : &error_abort);
}
}
diff --git a/vl.c b/vl.c
index 46e4ec3..be3f51c 100644
--- a/vl.c
+++ b/vl.c
@@ -897,13 +897,9 @@ static void configure_rtc(QemuOpts *opts)
value = qemu_opt_get(opts, "driftfix");
if (value) {
if (!strcmp(value, "slew")) {
- static GlobalProperty slew_lost_ticks = {
- .driver = "mc146818rtc",
- .property = "lost_tick_policy",
- .value = "slew",
- };
-
- qdev_prop_register_global(&slew_lost_ticks);
+ object_register_sugar_prop("mc146818rtc",
+ "lost_tick_policy",
+ "slew");
} else if (!strcmp(value, "none")) {
/* discard is default */
} else {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PULL v2 00/62] Misc patches for 2019-12-16
2019-12-17 17:57 [PULL v2 00/62] Misc patches for 2019-12-16 Paolo Bonzini
2019-12-17 17:57 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
2019-12-17 17:57 ` [PULL 21/62] qom: introduce object_register_sugar_prop Paolo Bonzini
@ 2019-12-17 18:13 ` Peter Maydell
2019-12-17 18:21 ` Paolo Bonzini
2 siblings, 1 reply; 8+ messages in thread
From: Peter Maydell @ 2019-12-17 18:13 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU Developers
On Tue, 17 Dec 2019 at 17:59, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 084a398bf8aa7634738e6c6c0103236ee1b3b72f:
>
> Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-12-13 18:14:07 +0000)
>
> are available in the git repository at:
>
>
> git://github.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 74c14076700436f9d340652042c81f46eaf0cf9f:
>
> colo: fix return without releasing RCU (2019-12-17 14:03:44 +0100)
>
> ----------------------------------------------------------------
> * More uses of RCU_READ_LOCK_GUARD (Dave, myself)
> * QOM doc improvments (Greg)
> * Cleanups from the Meson conversion (Marc-André)
> * Support for multiple -accel options (myself)
> * Many x86 machine cleanup (Philippe, myself)
> * tests/migration-test cleanup (Juan)
>
> ----------------------------------------------------------------
Conflict:
diff --cc hw/ppc/spapr_irq.c
index 07e08d6544,15c3dd4812..0000000000
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@@ -70,17 -70,15 +70,22 @@@ void spapr_irq_msi_free(SpaprMachineSta
bitmap_clear(spapr->irq_map, irq - SPAPR_IRQ_MSI, num);
}
-int spapr_irq_init_kvm(int (*fn)(SpaprInterruptController *, Error **),
+int spapr_irq_init_kvm(SpaprInterruptControllerInitKvm fn,
SpaprInterruptController *intc,
+ uint32_t nr_servers,
Error **errp)
{
- MachineState *machine = MACHINE(qdev_get_machine());
Error *local_err = NULL;
++<<<<<<< HEAD
+ if (kvm_enabled() && machine_kernel_irqchip_allowed(machine)) {
+ if (fn(intc, nr_servers, &local_err) < 0) {
+ if (machine_kernel_irqchip_required(machine)) {
++=======
+ if (kvm_enabled() && kvm_kernel_irqchip_allowed()) {
+ if (fn(intc, &local_err) < 0) {
+ if (kvm_kernel_irqchip_required()) {
++>>>>>>> remotes/bonzini/tags/for-upstream
error_prepend(&local_err,
"kernel_irqchip requested but unavailable: ");
error_propagate(errp, local_err);
I could probably figure out the resolution but I'm about 5 minutes
from having to leave the office; sorry.
-- PMM
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PULL v2 00/62] Misc patches for 2019-12-16
2019-12-17 18:13 ` [PULL v2 00/62] Misc patches for 2019-12-16 Peter Maydell
@ 2019-12-17 18:21 ` Paolo Bonzini
2019-12-17 18:21 ` Peter Maydell
0 siblings, 1 reply; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-17 18:21 UTC (permalink / raw)
To: Peter Maydell; +Cc: QEMU Developers
On 17/12/19 19:13, Peter Maydell wrote:
> On Tue, 17 Dec 2019 at 17:59, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> The following changes since commit 084a398bf8aa7634738e6c6c0103236ee1b3b72f:
>>
>> Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-12-13 18:14:07 +0000)
>>
>> are available in the git repository at:
>>
>>
>> git://github.com/bonzini/qemu.git tags/for-upstream
>>
>> for you to fetch changes up to 74c14076700436f9d340652042c81f46eaf0cf9f:
>>
>> colo: fix return without releasing RCU (2019-12-17 14:03:44 +0100)
>>
>> ----------------------------------------------------------------
>> * More uses of RCU_READ_LOCK_GUARD (Dave, myself)
>> * QOM doc improvments (Greg)
>> * Cleanups from the Meson conversion (Marc-André)
>> * Support for multiple -accel options (myself)
>> * Many x86 machine cleanup (Philippe, myself)
>> * tests/migration-test cleanup (Juan)
>>
>> ----------------------------------------------------------------
>
> Conflict:
>
> diff --cc hw/ppc/spapr_irq.c
> index 07e08d6544,15c3dd4812..0000000000
> --- a/hw/ppc/spapr_irq.c
> +++ b/hw/ppc/spapr_irq.c
> @@@ -70,17 -70,15 +70,22 @@@ void spapr_irq_msi_free(SpaprMachineSta
> bitmap_clear(spapr->irq_map, irq - SPAPR_IRQ_MSI, num);
> }
>
> -int spapr_irq_init_kvm(int (*fn)(SpaprInterruptController *, Error **),
> +int spapr_irq_init_kvm(SpaprInterruptControllerInitKvm fn,
> SpaprInterruptController *intc,
> + uint32_t nr_servers,
> Error **errp)
> {
> - MachineState *machine = MACHINE(qdev_get_machine());
> Error *local_err = NULL;
>
> ++<<<<<<< HEAD
> + if (kvm_enabled() && machine_kernel_irqchip_allowed(machine)) {
> + if (fn(intc, nr_servers, &local_err) < 0) {
> + if (machine_kernel_irqchip_required(machine)) {
> ++=======
> + if (kvm_enabled() && kvm_kernel_irqchip_allowed()) {
> + if (fn(intc, &local_err) < 0) {
> + if (kvm_kernel_irqchip_required()) {
> ++>>>>>>> remotes/bonzini/tags/for-upstream
> error_prepend(&local_err,
> "kernel_irqchip requested but unavailable: ");
> error_propagate(errp, local_err);
>
>
> I could probably figure out the resolution but I'm about 5 minutes
> from having to leave the office; sorry.
I pushed a merge commit to the same place.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PULL v2 00/62] Misc patches for 2019-12-16
2019-12-17 18:21 ` Paolo Bonzini
@ 2019-12-17 18:21 ` Peter Maydell
2019-12-17 18:33 ` Paolo Bonzini
0 siblings, 1 reply; 8+ messages in thread
From: Peter Maydell @ 2019-12-17 18:21 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU Developers
On Tue, 17 Dec 2019 at 18:21, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 17/12/19 19:13, Peter Maydell wrote:
> > On Tue, 17 Dec 2019 at 17:59, Paolo Bonzini <pbonzini@redhat.com> wrote:
> >>
> >> The following changes since commit 084a398bf8aa7634738e6c6c0103236ee1b3b72f:
> >>
> >> Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-12-13 18:14:07 +0000)
> >>
> >> are available in the git repository at:
> >>
> >>
> >> git://github.com/bonzini/qemu.git tags/for-upstream
> >>
> >> for you to fetch changes up to 74c14076700436f9d340652042c81f46eaf0cf9f:
> >>
> >> colo: fix return without releasing RCU (2019-12-17 14:03:44 +0100)
> >>
> >> ----------------------------------------------------------------
> >> * More uses of RCU_READ_LOCK_GUARD (Dave, myself)
> >> * QOM doc improvments (Greg)
> >> * Cleanups from the Meson conversion (Marc-André)
> >> * Support for multiple -accel options (myself)
> >> * Many x86 machine cleanup (Philippe, myself)
> >> * tests/migration-test cleanup (Juan)
> > I could probably figure out the resolution but I'm about 5 minutes
> > from having to leave the office; sorry.
>
> I pushed a merge commit to the same place.
A what? I can't merge a merge commit. Just fix the series
and resend, please.
-- PMM
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PULL v2 00/62] Misc patches for 2019-12-16
2019-12-17 18:21 ` Peter Maydell
@ 2019-12-17 18:33 ` Paolo Bonzini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-17 18:33 UTC (permalink / raw)
To: Peter Maydell; +Cc: QEMU Developers
On 17/12/19 19:21, Peter Maydell wrote:
> On Tue, 17 Dec 2019 at 18:21, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> On 17/12/19 19:13, Peter Maydell wrote:
>>> On Tue, 17 Dec 2019 at 17:59, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>>>
>>>> The following changes since commit 084a398bf8aa7634738e6c6c0103236ee1b3b72f:
>>>>
>>>> Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2019-12-13 18:14:07 +0000)
>>>>
>>>> are available in the git repository at:
>>>>
>>>>
>>>> git://github.com/bonzini/qemu.git tags/for-upstream
>>>>
>>>> for you to fetch changes up to 74c14076700436f9d340652042c81f46eaf0cf9f:
>>>>
>>>> colo: fix return without releasing RCU (2019-12-17 14:03:44 +0100)
>>>>
>>>> ----------------------------------------------------------------
>>>> * More uses of RCU_READ_LOCK_GUARD (Dave, myself)
>>>> * QOM doc improvments (Greg)
>>>> * Cleanups from the Meson conversion (Marc-André)
>>>> * Support for multiple -accel options (myself)
>>>> * Many x86 machine cleanup (Philippe, myself)
>>>> * tests/migration-test cleanup (Juan)
>
>>> I could probably figure out the resolution but I'm about 5 minutes
>>> from having to leave the office; sorry.
>>
>> I pushed a merge commit to the same place.
>
> A what? I can't merge a merge commit. Just fix the series
> and resend, please.
You have done so in the past, I'll rebase and send v3 even though this
is invalidating the testing that was done on individual patches.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters
2019-12-16 16:27 [PULL " Paolo Bonzini
@ 2019-12-16 16:27 ` Paolo Bonzini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2019-12-16 16:27 UTC (permalink / raw)
To: qemu-devel; +Cc: Juan Quintela
From: Juan Quintela <quintela@redhat.com>
It has two bools and two strings, it is very difficult to remember
which does what. And it makes very difficult to add new parameters as
we need to modify all the callers.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Tested-by: Cornelia Huck <cohuck@redhat.com> #s390x
Tested-by: Laurent Vivier <lvivier@redhat.com>
---
tests/migration-test.c | 118 ++++++++++++++++++++++++++++++++-----------------
1 file changed, 78 insertions(+), 40 deletions(-)
diff --git a/tests/migration-test.c b/tests/migration-test.c
index 6c7c416..4a19211 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -544,10 +544,31 @@ static void migrate_postcopy_start(QTestState *from, QTestState *to)
qtest_qmp_eventwait(to, "RESUME");
}
+typedef struct {
+ bool hide_stderr;
+ bool use_shmem;
+ char *opts_source;
+ char *opts_target;
+} MigrateStart;
+
+static MigrateStart *migrate_start_new(void)
+{
+ MigrateStart *args = g_new0(MigrateStart, 1);
+
+ args->opts_source = g_strdup("");
+ args->opts_target = g_strdup("");
+ return args;
+}
+
+static void migrate_start_destroy(MigrateStart *args)
+{
+ g_free(args->opts_source);
+ g_free(args->opts_target);
+ g_free(args);
+}
+
static int test_migrate_start(QTestState **from, QTestState **to,
- const char *uri, bool hide_stderr,
- bool use_shmem, const char *opts_src,
- const char *opts_dst)
+ const char *uri, MigrateStart *args)
{
gchar *arch_source, *arch_target;
gchar *cmd_source, *cmd_target;
@@ -560,10 +581,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
const char *machine_args;
const char *memory_size;
- opts_src = opts_src ? opts_src : "";
- opts_dst = opts_dst ? opts_dst : "";
-
- if (use_shmem) {
+ if (args->use_shmem) {
if (!g_file_test("/dev/shm", G_FILE_TEST_IS_DIR)) {
g_test_skip("/dev/shm is not supported");
return -1;
@@ -623,13 +641,13 @@ static int test_migrate_start(QTestState **from, QTestState **to,
g_free(bootpath);
- if (hide_stderr) {
+ if (args->hide_stderr) {
ignore_stderr = "2>/dev/null";
} else {
ignore_stderr = "";
}
- if (use_shmem) {
+ if (args->use_shmem) {
shmem_path = g_strdup_printf("/dev/shm/qemu-%d", getpid());
shmem_opts = g_strdup_printf(
"-object memory-backend-file,id=mem0,size=%s"
@@ -647,7 +665,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
"%s %s %s %s",
machine_type, machine_args,
memory_size, tmpfs,
- arch_source, shmem_opts, opts_src,
+ arch_source, shmem_opts, args->opts_source,
ignore_stderr);
g_free(arch_source);
*from = qtest_init(cmd_source);
@@ -661,18 +679,19 @@ static int test_migrate_start(QTestState **from, QTestState **to,
"%s %s %s %s",
machine_type, machine_args,
memory_size, tmpfs, uri,
- arch_target, shmem_opts, opts_dst,
- ignore_stderr);
+ arch_target, shmem_opts,
+ args->opts_target, ignore_stderr);
g_free(arch_target);
*to = qtest_init(cmd_target);
g_free(cmd_target);
+ migrate_start_destroy(args);
g_free(shmem_opts);
/*
* Remove shmem file immediately to avoid memory leak in test failed case.
* It's valid becase QEMU has already opened this file
*/
- if (use_shmem) {
+ if (args->use_shmem) {
unlink(shmem_path);
g_free(shmem_path);
}
@@ -762,13 +781,13 @@ static void test_deprecated(void)
}
static int migrate_postcopy_prepare(QTestState **from_ptr,
- QTestState **to_ptr,
- bool hide_error)
+ QTestState **to_ptr,
+ MigrateStart *args)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, hide_error, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return -1;
}
@@ -813,9 +832,10 @@ static void migrate_postcopy_complete(QTestState *from, QTestState *to)
static void test_postcopy(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (migrate_postcopy_prepare(&from, &to, false)) {
+ if (migrate_postcopy_prepare(&from, &to, args)) {
return;
}
migrate_postcopy_start(from, to);
@@ -824,10 +844,13 @@ static void test_postcopy(void)
static void test_postcopy_recovery(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
char *uri;
- if (migrate_postcopy_prepare(&from, &to, true)) {
+ args->hide_stderr = true;
+
+ if (migrate_postcopy_prepare(&from, &to, args)) {
return;
}
@@ -910,9 +933,12 @@ static void wait_for_migration_fail(QTestState *from, bool allow_active)
static void test_baddest(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, "tcp:0:0", true, false, NULL, NULL)) {
+ args->hide_stderr = true;
+
+ if (test_migrate_start(&from, &to, "tcp:0:0", args)) {
return;
}
migrate(from, "tcp:0:0", "{}");
@@ -923,9 +949,10 @@ static void test_baddest(void)
static void test_precopy_unix(void)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1001,9 +1028,10 @@ static void test_ignore_shared(void)
static void test_xbzrle(const char *uri)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1052,11 +1080,11 @@ static void test_xbzrle_unix(void)
static void test_precopy_tcp(void)
{
+ MigrateStart *args = migrate_start_new();
char *uri;
QTestState *from, *to;
- if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", false, false,
- NULL, NULL)) {
+ if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", args)) {
return;
}
@@ -1096,13 +1124,14 @@ static void test_precopy_tcp(void)
static void test_migrate_fd_proto(void)
{
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
int ret;
int pair[2];
QDict *rsp;
const char *error_desc;
- if (test_migrate_start(&from, &to, "defer", false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, "defer", args)) {
return;
}
@@ -1178,15 +1207,12 @@ static void test_migrate_fd_proto(void)
test_migrate_end(from, to, true);
}
-static void do_test_validate_uuid(const char *uuid_arg_src,
- const char *uuid_arg_dst,
- bool should_fail, bool hide_stderr)
+static void do_test_validate_uuid(MigrateStart *args, bool should_fail)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
QTestState *from, *to;
- if (test_migrate_start(&from, &to, uri, hide_stderr, false,
- uuid_arg_src, uuid_arg_dst)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
@@ -1216,33 +1242,45 @@ static void do_test_validate_uuid(const char *uuid_arg_src,
static void test_validate_uuid(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
- "-uuid 11111111-1111-1111-1111-111111111111",
- false, false);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->opts_target = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ do_test_validate_uuid(args, false);
}
static void test_validate_uuid_error(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
- "-uuid 22222222-2222-2222-2222-222222222222",
- true, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, true);
}
static void test_validate_uuid_src_not_set(void)
{
- do_test_validate_uuid(NULL, "-uuid 11111111-1111-1111-1111-111111111111",
- false, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, false);
}
static void test_validate_uuid_dst_not_set(void)
{
- do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111", NULL,
- false, true);
+ MigrateStart *args = migrate_start_new();
+
+ args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+ args->hide_stderr = true;
+ do_test_validate_uuid(args, false);
}
static void test_migrate_auto_converge(void)
{
char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+ MigrateStart *args = migrate_start_new();
QTestState *from, *to;
int64_t remaining, percentage;
@@ -1261,7 +1299,7 @@ static void test_migrate_auto_converge(void)
*/
const int64_t expected_threshold = max_bandwidth * downtime_limit / 1000;
- if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+ if (test_migrate_start(&from, &to, uri, args)) {
return;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-12-17 18:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-17 17:57 [PULL v2 00/62] Misc patches for 2019-12-16 Paolo Bonzini
2019-12-17 17:57 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
2019-12-17 17:57 ` [PULL 21/62] qom: introduce object_register_sugar_prop Paolo Bonzini
2019-12-17 18:13 ` [PULL v2 00/62] Misc patches for 2019-12-16 Peter Maydell
2019-12-17 18:21 ` Paolo Bonzini
2019-12-17 18:21 ` Peter Maydell
2019-12-17 18:33 ` Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2019-12-16 16:27 [PULL " Paolo Bonzini
2019-12-16 16:27 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).