1. 17 8月, 2018 10 次提交
  2. 16 8月, 2018 28 次提交
    • P
      Merge remote-tracking branch 'remotes/armbru/tags/pull-tests-2018-08-16' into staging · c542a9f9
      Peter Maydell 提交于
      Testing patches for 2018-08-16
      
      # gpg: Signature made Thu 16 Aug 2018 09:34:43 BST
      # gpg:                using RSA key 3870B400EB918653
      # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
      # gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
      # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653
      
      * remotes/armbru/tags/pull-tests-2018-08-16: (25 commits)
        libqtest: Improve error reporting for bad read from QEMU
        tests/libqtest: Improve kill_qemu()
        libqtest: Rename qtest_FOOv() to qtest_vFOO() for consistency
        libqtest: Replace qtest_startf() by qtest_initf()
        libqtest: Enable compile-time format string checking
        migration-test: Clean up string interpolation into QMP, part 3
        migration-test: Clean up string interpolation into QMP, part 2
        migration-test: Clean up string interpolation into QMP, part 1
        migration-test: Make wait_command() cope with '%'
        tests: New helper qtest_qmp_receive_success()
        migration-test: Make wait_command() return the "return" member
        tests: Clean up string interpolation around qtest_qmp_device_add()
        cpu-plug-test: Don't pass integers as strings to device_add
        tests: Clean up string interpolation into QMP input (simple cases)
        tests: Pass literal format strings directly to qmp_FOO()
        qobject: qobject_from_jsonv() is dangerous, hide it away
        test-qobject-input-visitor: Avoid format string ambiguity
        libqtest: Simplify qmp_fd_vsend() a bit
        qobject: New qobject_from_vjsonf_nofail(), qdict_from_vjsonf_nofail()
        qobject: Replace qobject_from_jsonf() by qobject_from_jsonf_nofail()
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c542a9f9
    • M
      libqtest: Improve error reporting for bad read from QEMU · f9e986d2
      Markus Armbruster 提交于
      When read() from the qtest socket or the QMP socket fails or EOFs, we
      report "Broken pipe" and exit(1).  This commonly happens when QEMU
      crashes.  It also happens when QEMU refuses to run because the test
      passed it bad arguments.  Sadly, we neglect to report either.
      
      Improve this by calling abort() instead of exit(1), so kill_qemu()
      runs, and reports how QEMU died.  This improves error reporting to
      something like
      
          /x86_64/device/introspect/list: Broken pipe
          tests/libqtest.c:129: kill_qemu() detected QEMU death from signal 6 (Aborted) (dumped core)
      
      Three exit() remain in libqtest.c:
      
      * In qmp_response(), when we can't parse a QMP reply read from the QMP
        socket.  Change to abort() for consistency.
      
      * In qtest_qemu_binary(), when QTEST_QEMU_BINARY isn't in the
        environment.  This can only happen before we start QEMU.  Leave
        alone.
      
      * In qtest_init_without_qmp_handshake(), when the fork()ed child fails
        to execlp().  Leave alone.
      
      exit() elsewhere are unlikely due to QEMU dying on us.  If that should
      turn out to be wrong, we can move kill_qemu() from @abrt_hooks to
      atexit() or something.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20180815141945.10457-2-armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      [Commit message tweaked slightly]
      f9e986d2
    • E
      tests/libqtest: Improve kill_qemu() · 71a268a5
      Eric Blake 提交于
      In kill_qemu() we have an assert that checks that the QEMU process
      didn't dump core:
                  assert(!WCOREDUMP(wstatus));
      
      Unfortunately the WCOREDUMP macro here means the resulting message
      is not very easy to comprehend on at least some systems:
      
      ahci-test: tests/libqtest.c:113: kill_qemu: Assertion `!(((__extension__ (((union { __typeof(wstatus) __in; int __i; }) { .__in = (wstatus) }).__i))) & 0x80)' failed.
      
      and it doesn't identify what signal the process took. What's more,
      WCOREDUMP is not reliable - in some cases, setrlimit() coupled with
      kernel dump settings can result in the flag not being set.  It's
      better to log ALL death by signal, instead of caring whether a core
      dump was attempted (although once we know a signal happened, also
      mentioning if a core dump is present can be helpful).
      
      Furthermore, we are NOT detecting EINTR (while EINTR shouldn't be
      happening if we didn't install signal handlers, it's still better
      to always be robust).
      
      Finally, even non-signal death with a non-zero status is suspicious,
      since qemu's SIGINT handler is supposed to result in exit(0).
      
      Instead of using a raw assert, print the information in an
      easier to understand way:
      
      /i386/ahci/sanity: tests/libqtest.c:129: kill_qemu() detected QEMU death from signal 11 (Segmentation fault) (core dumped)
      
      (Of course, the really useful information would be why the QEMU
      process dumped core in the first place, but we don't have that
      by the time the test program has picked up the exit status.)
      Suggested-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180810132800.38549-1-eblake@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      [Core dump reporting and commit message tweaked]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      71a268a5
    • M
      libqtest: Rename qtest_FOOv() to qtest_vFOO() for consistency · 248eef02
      Markus Armbruster 提交于
      13 of 13 C99 library function pairs taking ... or a va_list parameter
      are called FOO() and vFOO().  In QEMU, we sometimes call the one
      taking a va_list FOOv() instead.  Bad taste.  libqtest.h uses both
      spellings.  Normalize it to the standard spelling.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-24-armbru@redhat.com>
      248eef02
    • M
      libqtest: Replace qtest_startf() by qtest_initf() · 88b988c8
      Markus Armbruster 提交于
      qtest_init() creates a new QTestState, and leaves @global_qtest alone.
      qtest_start() additionally assigns it to @global_qtest, but
      qtest_startf() additionally assigns NULL to @global_qtest.  This makes
      no sense.  Replace it by qtest_initf() that works like qtest_init(),
      i.e. leaves @global_qtest alone.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-23-armbru@redhat.com>
      88b988c8
    • M
      libqtest: Enable compile-time format string checking · e3dc93be
      Markus Armbruster 提交于
      qtest_qmp() & friends pass their format string and variable arguments
      to qobject_from_vjsonf_nofail().  Unlike qobject_from_jsonv(), they
      aren't decorated with GCC_FMT_ATTR().  Fix that to get compile-time
      format string checking.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-22-armbru@redhat.com>
      e3dc93be
    • M
      migration-test: Clean up string interpolation into QMP, part 3 · c44a56d8
      Markus Armbruster 提交于
      Leaving interpolation into JSON to qmp() is more robust than building
      QMP input manually, as explained in the recent commit "tests: Clean up
      string interpolation into QMP input (simple cases)".
      
      migration-test.c interpolates strings into JSON in a few places:
      
      * migrate_set_parameter() interpolates string parameter @value as a
        JSON number.  Change it to long long.  This requires changing
        migrate_check_parameter() similarly.
      
      * migrate_set_capability() interpolates string parameter @value as a
        JSON boolean.  Change it to bool.
      
      * deprecated_set_speed() interpolates string parameter @value as a
        JSON number.  Change it to long long.
      
      Bonus: gets rid of non-literal format strings.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-21-armbru@redhat.com>
      c44a56d8
    • M
      migration-test: Clean up string interpolation into QMP, part 2 · b5bbd3f3
      Markus Armbruster 提交于
      Leaving interpolation into JSON to qmp() is more robust than building
      QMP input manually, as explained in the recent commit "tests: Clean up
      string interpolation into QMP input (simple cases)".
      
      migrate() interpolates members into a JSON object.  Change it to take
      its extra QMP arguments as arguments for qdict_from_jsonf_nofail()
      instead of a string containing JSON members.
      
      Bonus: gets rid of a non-literal format string.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-20-armbru@redhat.com>
      b5bbd3f3
    • M
      migration-test: Clean up string interpolation into QMP, part 1 · b7281c69
      Markus Armbruster 提交于
      Leaving interpolation into JSON to qmp() is more robust than building
      QMP input manually, as explained in the recent commit "tests: Clean up
      string interpolation into QMP input (simple cases)".
      
      migrate_recover() builds QMP input manually because wait_command()
      can't interpolate.  Well, it can since the previous commit.  Simplify
      accordingly.
      
      Bonus: gets rid of a non-literal format string.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-19-armbru@redhat.com>
      b7281c69
    • M
      migration-test: Make wait_command() cope with '%' · 4399596b
      Markus Armbruster 提交于
      wait_command() passes its argument @command to qtest_qmp_send().
      Falls apart if @command contain '%'.  Two ways to disarm this trap:
      suppress interpretation of '%' by passing @command as argument to
      format string "%s", or fix it by having wait_command() take the
      variable arguments to go with @command.  Do the latter.
      
      This is another step towards compile-time format string checking
      without triggering -Wformat-nonliteral.
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-18-armbru@redhat.com>
      4399596b
    • M
      tests: New helper qtest_qmp_receive_success() · 3cd46d42
      Markus Armbruster 提交于
      Commit b21373d0 copied wait_command() from tests/migration-test.c
      to tests/tpm-util.c.  Replace both copies by new libqtest helper
      qtest_qmp_receive_success().  Also use it to simplify
      qtest_qmp_device_del().
      
      Bonus: gets rid of a non-literal format string.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      
      Cc: Thomas Huth <thuth@redhat.com>
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Cc: Stefan Berger <stefanb@linux.vnet.ibm.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-17-armbru@redhat.com>
      3cd46d42
    • M
      migration-test: Make wait_command() return the "return" member · e1454165
      Markus Armbruster 提交于
      All callers of wait_command() are only interested in the success
      response's "return" member.  Lift its extraction into wait_command().
      
      Cc: Juan Quintela <quintela@redhat.com>
      Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-16-armbru@redhat.com>
      e1454165
    • M
      tests: Clean up string interpolation around qtest_qmp_device_add() · 82cab70b
      Markus Armbruster 提交于
      Leaving interpolation into JSON to qmp() is more robust than building
      QMP input manually, as explained in the commit before previous.
      
      qtest_qmp_device_add() and its wrappers interpolate into JSON as
      follows:
      
      * qtest_qmp_device_add() interpolates members into a JSON object.
      
      * So do its wrappers qpci_plug_device_test() and usb_test_hotplug().
      
      * usb_test_hotplug() additionally interpolates strings and numbers
        into JSON strings.
      
      Clean them up:
      
      * Have qtest_qmp_device_add() take its extra device properties as
        arguments for qdict_from_jsonf_nofail() instead of a string
        containing JSON members.
      
      * Drop qpci_plug_device_test(), use qtest_qmp_device_add()
        directly.
      
      * Change usb_test_hotplug() parameter @port to string, to avoid
        interpolation.  Interpolate @hcd_id separately.
      
      Bonus: gets rid of a non-literal format string.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      
      Cc: Thomas Huth <thuth@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-15-armbru@redhat.com>
      82cab70b
    • M
      cpu-plug-test: Don't pass integers as strings to device_add · 530e79a8
      Markus Armbruster 提交于
      test_plug_with_device_add_x86() plugs Haswell-i386-cpu and
      Haswell-x86_64-cpu with device_add.  It passes socket-id, core-id,
      thread-id as JSON strings.  The properties are actually integers.
      
      test_plug_with_device_add_coreid() plugs power8_v2.0-spapr-cpu-core
      and qemu-s390x-cpu with device_add.  It passes core-id as JSON string.
      The properties are actually integers.
      
      Passing JSON string values to integer properties works only due to
      device_add implementation accidents.  Fix the test to pass JSON
      numbers.  While there, use %u rather than %i with unsigned int.
      
      Cc: Thomas Huth <thuth@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-14-armbru@redhat.com>
      530e79a8
    • M
      tests: Clean up string interpolation into QMP input (simple cases) · 015715f5
      Markus Armbruster 提交于
      When you build QMP input manually like this
      
          cmd = g_strdup_printf("{ 'execute': 'migrate',"
                                "'arguments': { 'uri': '%s' } }",
                                uri);
          rsp = qmp(cmd);
          g_free(cmd);
      
      you're responsible for escaping the interpolated values for JSON.  Not
      done here, and therefore works only for sufficiently nice @uri.  For
      instance, if @uri contained a single "'", qobject_from_vjsonf_nofail()
      would abort.  A sufficiently nasty @uri could even inject unwanted
      members into the arguments object.
      
      Leaving interpolation into JSON to qmp() is more robust:
      
          rsp = qmp("{ 'execute': 'migrate', 'arguments': { 'uri': %s } }", uri);
      
      It's also more concise.
      
      Clean up the simple cases where we interpolate exactly a JSON value.
      
      Bonus: gets rid of non-literal format strings.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-13-armbru@redhat.com>
      015715f5
    • M
      tests: Pass literal format strings directly to qmp_FOO() · 62fff696
      Markus Armbruster 提交于
      The qmp_FOO() take a printf-like format string.  In a few places, we
      assign a string literal to a variable and pass that instead of simply
      passing the literal.  Clean that up.
      
      Bonus: gets rid of non-literal format strings.  A step towards
      compile-time format string checking without triggering
      -Wformat-nonliteral.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-12-armbru@redhat.com>
      62fff696
    • M
      qobject: qobject_from_jsonv() is dangerous, hide it away · 2d36e843
      Markus Armbruster 提交于
      qobject_from_jsonv() takes ownership of %p arguments.  On failure, we
      can't generally know whether we failed before or after %p, so
      ownership becomes indeterminate.  To avoid leaks, callers passing %p
      must terminate on error, e.g. by passing &error_abort.  Trap for the
      unwary; document and give the function internal linkage.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-11-armbru@redhat.com>
      2d36e843
    • M
      test-qobject-input-visitor: Avoid format string ambiguity · eac78bd4
      Markus Armbruster 提交于
      When visitor_input_test_init_internal()'s argument @ap is null, then
      @json_string is interpreted literally, else it's gets %-escapes
      interpolated.  This is awkward.
      
      One caller always passes null @ap, and the others never do.  Lift the
      building of the QObject into the callers, where it can be done without
      such ambiguity.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-10-armbru@redhat.com>
      eac78bd4
    • M
      libqtest: Simplify qmp_fd_vsend() a bit · 69f0cb66
      Markus Armbruster 提交于
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-9-armbru@redhat.com>
      69f0cb66
    • M
      qobject: New qobject_from_vjsonf_nofail(), qdict_from_vjsonf_nofail() · 4ff18468
      Markus Armbruster 提交于
      Every printf()-like function sooner or later needs its vprintf()-like
      buddy.  The next commit will need qobject_from_jsonf_nofail()'s buddy,
      and qdict_from_jsonf_nofail()'s buddy will be used later in this
      series.  Add both.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-8-armbru@redhat.com>
      4ff18468
    • M
      qobject: Replace qobject_from_jsonf() by qobject_from_jsonf_nofail() · 6ce80fd8
      Markus Armbruster 提交于
      Commit ab45015a "qobject: Let qobject_from_jsonf() fail instead of
      abort" fails to accomplish its stated aim: the function can still
      abort due to its use of &error_abort.
      
      Its rationale for letting it fail is that all remaining users cope
      fine with failure.  Well, they're just fine with aborting, too; it's
      what they do on failure.
      
      Simply reverting the broken commit would bring back the unfortunate
      asymmetry between qobject_from_jsonf() and qobject_from_jsonv(): one
      aborts, the other returns null.  So also rename it to
      qobject_from_jsonf_nofail().
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-7-armbru@redhat.com>
      6ce80fd8
    • E
      libqtest: Document calling conventions · bb340eb2
      Eric Blake 提交于
      We have two flavors of vararg usage in qtest: qtest_hmp() etc. work
      like sprintf(), and qtest_qmp() etc. work like qobject_from_jsonf().
      Spell that out in the comments.
      
      Also add GCC_FMT_ATTR() to qtest_hmp() etc. so that the compiler can
      flag incorrect use.
      
      We have some cleanup work to do before we can do the same for
      qtest_qmp() etc.  This would get us the same better-than-nothing
      checking we already have for qobject_from_jsonf(): common incorrect
      uses of supported conversion specifications will be flagged
      (e.g. passing a double for %d), but use of unsupported ones won't.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      [Rebased, comment wording tweaked, commit message rewritten]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20180806065344.7103-6-armbru@redhat.com>
      bb340eb2
    • M
      libqtest: Remove qtest_qmp_discard_response() & friends · 055a1efc
      Markus Armbruster 提交于
      qtest_qmp_discard_response(...) is shorthand for
      qobject_unref(qtest_qmp(...), except it's not actually shorter.
      Moreover, the presence of these functions encourage sloppy testing.
      Remove them from libqtest.  Add them as macros to the tests that use
      them, with a TODO comment asking for cleanup.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-5-armbru@redhat.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      055a1efc
    • M
      libqtest: Clean up how we read the QMP greeting · be62e172
      Markus Armbruster 提交于
      qtest_init() still uses the qtest_qmp_discard_response(s, "") hack to
      receive the greeting, even though we have qtest_qmp_receive() since
      commit 66e0c7b1.  Put it to use.
      
      Bonus: gets rid of an empty format string.  A step towards
      compile-time format string checking without triggering
      -Wformat-zero-length.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-4-armbru@redhat.com>
      be62e172
    • M
      libqtest: Clean up how we read device_del messages · f94648fe
      Markus Armbruster 提交于
      qtest_qmp_device_del() still uses the qmp("") hack to receive a
      message, even though we have qmp_receive() since commit 66e0c7b1.
      Put it to use.
      
      Bonus: gets rid of empty format strings.  A step towards compile-time
      format string checking without triggering -Wformat-zero-length.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-3-armbru@redhat.com>
      f94648fe
    • M
      libqtest: Rename functions to send QMP messages · 4277f1eb
      Markus Armbruster 提交于
      The functions to receive messages are called qtest_qmp_receive() and
      qmp_receive(), qmp_fd_receive().  The ones to send messages are called
      qtest_async_qmp(), qtest_async_qmpv(), qmp_async(), qmp_fd_send(),
      qmp_fd_sendv().  Inconsistent.  Rename the *_async* ones to
      qmp_send(), qtest_qmp_send(), qtest_qmp_vsend().  Rename
      qmp_fd_sendv() to qmp_fd_vsend().
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-Id: <20180806065344.7103-2-armbru@redhat.com>
      4277f1eb
    • P
      Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging · d3bd57d9
      Peter Maydell 提交于
      Block layer patches:
      
      - Remove deprecated -drive options for geometry/serial/addr
      - luks: Allow shared writers if the parents allow them (share-rw=on)
      - qemu-img: Fix error when trying to convert to encrypted target image
      - mirror: Fail gracefully for source == target
      - I/O throttling: Fix behaviour during drain (always ignore the limits)
      - bdrv_reopen() related fixes for bs->options/explicit_options content
      - Documentation improvements
      
      # gpg: Signature made Wed 15 Aug 2018 12:11:43 BST
      # gpg:                using RSA key 7F09B272C88F2FD6
      # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>"
      # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6
      
      * remotes/kevin/tags/for-upstream: (21 commits)
        qapi: block: Remove mentions of error types which were removed
        block: Simplify append_open_options()
        block: Update bs->options if bdrv_reopen() succeeds
        block: Simplify bdrv_reopen_abort()
        block: Remove children options from bs->{options,explicit_options}
        qdict: Make qdict_extract_subqdict() accept dst = NULL
        block: drop empty .bdrv_close handlers
        block: make .bdrv_close optional
        qemu-img: fix regression copying secrets during convert
        mirror: Fail gracefully for source == target
        qapi/block: Document restrictions for node names
        block: Remove dead deprecation warning code
        block: Remove deprecated -drive option serial
        block: Remove deprecated -drive option addr
        block: Remove deprecated -drive geometry options
        luks: Allow share-rw=on
        throttle-groups: Don't allow timers without throttled requests
        qemu-iotests: Update 093 to improve the draining test
        throttle-groups: Skip the round-robin if a member is being drained
        qemu-iotests: Test removing a throttle group member with a pending timer
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d3bd57d9
    • P
      Merge remote-tracking branch 'remotes/armbru/tags/pull-misc-2018-08-15' into staging · c146b54c
      Peter Maydell 提交于
      Miscellaneous patches for 2018-08-15
      
      # gpg: Signature made Wed 15 Aug 2018 07:15:31 BST
      # gpg:                using RSA key 3870B400EB918653
      # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
      # gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
      # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653
      
      * remotes/armbru/tags/pull-misc-2018-08-15:
        monitor: fix oob command leak
        tests: fix crumple/recursive leak
        qapi: Fix some pycodestyle-3 complaints
        tests: change /0.15/* tests to /qmp/*
        qmp-shell: learn to send commands with quoted arguments
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c146b54c
  3. 15 8月, 2018 2 次提交
    • P
      Merge remote-tracking branch 'remotes/famz/tags/block-and-testing-pull-request' into staging · 1d746ee9
      Peter Maydell 提交于
      Block and testing patches for 3.1
      
      - aio fixes by me
      - nvme fixes by Paolo and me
      - test improvements by Peter, Phil and me
      
      # gpg: Signature made Wed 15 Aug 2018 04:11:43 BST
      # gpg:                using RSA key CA35624C6A9171C6
      # gpg: Good signature from "Fam Zheng <famz@redhat.com>"
      # Primary key fingerprint: 5003 7CB7 9706 0F76 F021  AD56 CA35 624C 6A91 71C6
      
      * remotes/famz/tags/block-and-testing-pull-request:
        aio-posix: Improve comment around marking node deleted
        tests/vm: Add vm-build-all/vm-clean-all in help text
        tests/vm: Use make's --output-sync option
        tests/vm: Bump guest RAM up from 2G to 4G
        tests/vm: Propagate V=1 down into the make inside the VM
        tests/vm: Pass the jobs parallelism setting to 'make check'
        tests: vm: Add vm-clean-all
        tests: Add centos VM testing
        tests: Allow overriding archive path with SRC_ARCHIVE
        tests: Add an option for snapshot (default: off)
        docker: Install more packages in centos7
        aio: Do aio_notify_accept only during blocking aio_poll
        aio-posix: Don't count ctx->notifier as progress when polling
        nvme: simplify plug/unplug
        nvme: Fix nvme_init error handling
        tests/vm: Add flex and bison to the vm image
        tests/vm: Only use -cpu 'host' if KVM is available
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1d746ee9
    • P
      Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180814' into staging · 48a539df
      Peter Maydell 提交于
      target-arm queue:
       * Implement more of ARMv6-M support
       * Support direct execution from non-RAM regions;
         use this to implmeent execution from small (<1K) MPU regions
       * GICv2: implement the virtualization extensions
       * support a virtualization-capable GICv2 in the virt and
         xlnx-zynqmp boards
       * arm: Fix return code of arm_load_elf() so we can detect
         failure to load the file correctly
       * Implement HCR_EL2.TGE ("trap general exceptions") bit
       * Implement tailchaining for M profile cores
       * Fix bugs in SVE compare, saturating add/sub, WHILE, MOVZ
      
      # gpg: Signature made Tue 14 Aug 2018 17:23:38 BST
      # gpg:                using RSA key 3C2525ED14360CDE
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>"
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>"
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * remotes/pmaydell/tags/pull-target-arm-20180814: (45 commits)
        target/arm: Fix typo in helper_sve_movz_d
        target/arm: Reorganize SVE WHILE
        target/arm: Fix typo in do_sat_addsub_64
        target/arm: Fix sign of sve_cmpeq_ppzw/sve_cmpne_ppzw
        target/arm: Implement tailchaining for M profile cores
        target/arm: Restore M-profile CONTROL.SPSEL before any tailchaining
        target/arm: Initialize exc_secure correctly in do_v7m_exception_exit()
        target/arm: Improve exception-taken logging
        target/arm: Treat SCTLR_EL1.M as if it were zero when HCR_EL2.TGE is set
        target/arm: Provide accessor functions for HCR_EL2.{IMO, FMO, AMO}
        target/arm: Honour HCR_EL2.TGE when raising synchronous exceptions
        target/arm: Honour HCR_EL2.TGE and MDCR_EL2.TDE in debug register access checks
        target/arm: Mask virtual interrupts if HCR_EL2.TGE is set
        arm: Fix return code of arm_load_elf
        arm/virt: Add support for GICv2 virtualization extensions
        xlnx-zynqmp: Improve GIC wiring and MMIO mapping
        intc/arm_gic: Improve traces
        intc/arm_gic: Implement maintenance interrupt generation
        intc/arm_gic: Implement gic_update_virt() function
        intc/arm_gic: Implement the virtual interface registers
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      48a539df