qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).