qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07
@ 2016-10-07 12:09 Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 01/12] qmp: fix object-add assert() without props Markus Armbruster
                   ` (12 more replies)
  0 siblings, 13 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit a65b6f27ce65e2e4f771f69d549ffa455a4d543a:

  Merge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20161004' into staging (2016-10-04 18:57:12 +0100)

are available in the git repository at:

  git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2016-10-07

for you to fetch changes up to 61fee8886034a5d983f4ae4aa74ddd947dfada1d:

  docs: Belatedly update for move of QMP/* to docs/ (2016-10-07 11:07:59 +0200)

----------------------------------------------------------------
QAPI patches for 2016-10-07

----------------------------------------------------------------
Eduardo Habkost (1):
      qmp: Disable query-cpu-* commands when they're unavailable

Marc-André Lureau (6):
      qmp: fix object-add assert() without props
      qapi: Fix crash when 'any' or 'null' parameter is missing
      tests: start generic qemu-qmp tests
      qapi: add assert about root value
      qapi: assert list entry has a value
      qapi: return a 'missing parameter' error

Markus Armbruster (5):
      tests/test-qmp-input-strict: Cover missing struct members
      MAINTAINERS: Pass the HMP staff from Luiz to David
      MAINTAINERS: Pass the QObject staff from Luiz to Markus
      docs: Belatedly update for move of qmp-commands.txt
      docs: Belatedly update for move of QMP/* to docs/

 MAINTAINERS                     | 10 +++---
 docs/qmp-commands.txt           |  2 +-
 docs/writing-qmp-commands.txt   |  4 +--
 docs/xen-save-devices-state.txt |  2 +-
 monitor.c                       |  9 +++++
 qapi/qmp-input-visitor.c        | 75 +++++++++++++++++++++++++++++---------
 qmp.c                           |  8 +++--
 tests/Makefile.include          |  2 ++
 tests/qemu-iotests/087.out      |  2 +-
 tests/qmp-test.c                | 79 +++++++++++++++++++++++++++++++++++++++++
 tests/test-qmp-input-strict.c   | 46 ++++++++++++++++++++++++
 11 files changed, 211 insertions(+), 28 deletions(-)
 create mode 100644 tests/qmp-test.c

-- 
2.5.5

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

* [Qemu-devel] [PULL 01/12] qmp: fix object-add assert() without props
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 02/12] qapi: Fix crash when 'any' or 'null' parameter is missing Markus Armbruster
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Since commit ad739706bbadee49, user_creatable_add_type() expects to be
given a qdict. However, if object-add is called without props, you reach
the assert: "qemu/qom/object_interfaces.c:115: user_creatable_add_type:
Assertion `qdict' failed.", because the qdict isn't created in this
case (it's optional).

Furthermore, qmp_input_visitor_new() is not meant to be called without a
dict, and a further commit will assert in this situation.

If none given, create an empty qdict in qmp to avoid the
user_creatable_add_type() assert(qdict).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160922203927.28241-2-marcandre.lureau@redhat.com>
Tested-by: Xiao Long Jiang <zxiaol@linux.vnet.ibm.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qmp.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/qmp.c b/qmp.c
index 621f6ae..b3ba9ef 100644
--- a/qmp.c
+++ b/qmp.c
@@ -660,7 +660,7 @@ void qmp_add_client(const char *protocol, const char *fdname,
 void qmp_object_add(const char *type, const char *id,
                     bool has_props, QObject *props, Error **errp)
 {
-    const QDict *pdict = NULL;
+    QDict *pdict;
     Visitor *v;
     Object *obj;
 
@@ -670,14 +670,18 @@ void qmp_object_add(const char *type, const char *id,
             error_setg(errp, QERR_INVALID_PARAMETER_TYPE, "props", "dict");
             return;
         }
+        QINCREF(pdict);
+    } else {
+        pdict = qdict_new();
     }
 
-    v = qmp_input_visitor_new(props, true);
+    v = qmp_input_visitor_new(QOBJECT(pdict), true);
     obj = user_creatable_add_type(type, id, pdict, v, errp);
     visit_free(v);
     if (obj) {
         object_unref(obj);
     }
+    QDECREF(pdict);
 }
 
 void qmp_object_del(const char *id, Error **errp)
-- 
2.5.5

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

* [Qemu-devel] [PULL 02/12] qapi: Fix crash when 'any' or 'null' parameter is missing
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 01/12] qmp: fix object-add assert() without props Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 03/12] tests/test-qmp-input-strict: Cover missing struct members Markus Armbruster
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Unlike the other visit methods, visit_type_any() and visit_type_null()
neglect to check whether qmp_input_get_object() succeeded.  They crash
when it fails.  Reproducer:

{ "execute": "qom-set",
  "arguments": { "path": "/machine", "property": "rtc-time" } }

Will crash with:

qapi/qapi-visit-core.c:277: visit_type_any: Assertion `!err != !*obj'
failed

Broken in commit 5c678ee.  Fix by adding the missing error checks.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160922203927.28241-3-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Commit message rephrased]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qapi/qmp-input-visitor.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index 64dd392..fc91e74 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -338,6 +338,12 @@ static void qmp_input_type_any(Visitor *v, const char *name, QObject **obj,
     QmpInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qmp_input_get_object(qiv, name, true);
 
+    if (!qobj) {
+        error_setg(errp, QERR_MISSING_PARAMETER, name ? name : "null");
+        *obj = NULL;
+        return;
+    }
+
     qobject_incref(qobj);
     *obj = qobj;
 }
@@ -347,6 +353,11 @@ static void qmp_input_type_null(Visitor *v, const char *name, Error **errp)
     QmpInputVisitor *qiv = to_qiv(v);
     QObject *qobj = qmp_input_get_object(qiv, name, true);
 
+    if (!qobj) {
+        error_setg(errp, QERR_MISSING_PARAMETER, name ? name : "null");
+        return;
+    }
+
     if (qobject_type(qobj) != QTYPE_QNULL) {
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "null");
-- 
2.5.5

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

* [Qemu-devel] [PULL 03/12] tests/test-qmp-input-strict: Cover missing struct members
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 01/12] qmp: fix object-add assert() without props Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 02/12] qapi: Fix crash when 'any' or 'null' parameter is missing Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 04/12] tests: start generic qemu-qmp tests Markus Armbruster
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

These tests would have caught the bug fixed by the previous commit.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1475594630-24758-1-git-send-email-armbru@redhat.com>
---
 tests/test-qmp-input-strict.c | 46 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/tests/test-qmp-input-strict.c b/tests/test-qmp-input-strict.c
index 814550a..d87f8b8 100644
--- a/tests/test-qmp-input-strict.c
+++ b/tests/test-qmp-input-strict.c
@@ -193,6 +193,50 @@ static void test_validate_fail_struct_nested(TestInputVisitorData *data,
     g_assert(!udp);
 }
 
+static void test_validate_fail_struct_missing(TestInputVisitorData *data,
+                                              const void *unused)
+{
+    Error *err = NULL;
+    Visitor *v;
+    QObject *any;
+    GenericAlternate *alt;
+    bool present;
+    int en;
+    int64_t i64;
+    uint32_t u32;
+    int8_t i8;
+    char *str;
+    double dbl;
+
+    v = validate_test_init(data, "{}");
+    visit_start_struct(v, NULL, NULL, 0, &error_abort);
+    visit_start_struct(v, "struct", NULL, 0, &err);
+    error_free_or_abort(&err);
+    visit_start_list(v, "list", NULL, 0, &err);
+    error_free_or_abort(&err);
+    visit_start_alternate(v, "alternate", &alt, sizeof(*alt), false, &err);
+    error_free_or_abort(&err);
+    visit_optional(v, "optional", &present);
+    g_assert(!present);
+    visit_type_enum(v, "enum", &en, EnumOne_lookup, &err);
+    error_free_or_abort(&err);
+    visit_type_int(v, "i64", &i64, &err);
+    error_free_or_abort(&err);
+    visit_type_uint32(v, "u32", &u32, &err);
+    error_free_or_abort(&err);
+    visit_type_int8(v, "i8", &i8, &err);
+    error_free_or_abort(&err);
+    visit_type_str(v, "i8", &str, &err);
+    error_free_or_abort(&err);
+    visit_type_number(v, "dbl", &dbl, &err);
+    error_free_or_abort(&err);
+    visit_type_any(v, "any", &any, &err);
+    error_free_or_abort(&err);
+    visit_type_null(v, "null", &err);
+    error_free_or_abort(&err);
+    visit_end_struct(v, NULL);
+}
+
 static void test_validate_fail_list(TestInputVisitorData *data,
                                      const void *unused)
 {
@@ -316,6 +360,8 @@ int main(int argc, char **argv)
                       &testdata, test_validate_fail_struct);
     validate_test_add("/visitor/input-strict/fail/struct-nested",
                       &testdata, test_validate_fail_struct_nested);
+    validate_test_add("/visitor/input-strict/fail/struct-missing",
+                      &testdata, test_validate_fail_struct_missing);
     validate_test_add("/visitor/input-strict/fail/list",
                       &testdata, test_validate_fail_list);
     validate_test_add("/visitor/input-strict/fail/union-flat",
-- 
2.5.5

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

* [Qemu-devel] [PULL 04/12] tests: start generic qemu-qmp tests
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (2 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 03/12] tests/test-qmp-input-strict: Cover missing struct members Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 05/12] qapi: add assert about root value Markus Armbruster
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

These 2 tests exhibit two qmp bugs fixed by the previous patches.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160922203927.28241-4-marcandre.lureau@redhat.com>
[Rename tests/test-qemu-qmp.c to tests/qmp-test.c, cover it in
MAINTAINERS, add a file comment]
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 MAINTAINERS            |  1 +
 tests/Makefile.include |  2 ++
 tests/qmp-test.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+)
 create mode 100644 tests/qmp-test.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 76a0fdb..7851d0f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1284,6 +1284,7 @@ F: qmp.c
 F: monitor.c
 F: docs/*qmp-*
 F: scripts/qmp/
+F: tests/qmp-test.c
 T: git git://repo.or.cz/qemu/armbru.git qapi-next
 
 Register API
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 8162f6f..fcacd06 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -300,6 +300,7 @@ check-qtest-s390x-y = tests/boot-serial-test$(EXESUF)
 
 check-qtest-generic-y += tests/qom-test$(EXESUF)
 check-qtest-generic-y += tests/ptimer-test$(EXESUF)
+check-qtest-generic-y += tests/qmp-test$(EXESUF)
 
 qapi-schema += alternate-any.json
 qapi-schema += alternate-array.json
@@ -642,6 +643,7 @@ tests/tpci200-test$(EXESUF): tests/tpci200-test.o
 tests/display-vga-test$(EXESUF): tests/display-vga-test.o
 tests/ipoctal232-test$(EXESUF): tests/ipoctal232-test.o
 tests/qom-test$(EXESUF): tests/qom-test.o
+tests/qmp-test$(EXESUF): tests/qmp-test.o
 tests/drive_del-test$(EXESUF): tests/drive_del-test.o $(libqos-pc-obj-y)
 tests/qdev-monitor-test$(EXESUF): tests/qdev-monitor-test.o $(libqos-pc-obj-y)
 tests/nvme-test$(EXESUF): tests/nvme-test.o
diff --git a/tests/qmp-test.c b/tests/qmp-test.c
new file mode 100644
index 0000000..2b88bff
--- /dev/null
+++ b/tests/qmp-test.c
@@ -0,0 +1,79 @@
+/*
+ * QTest testcase for QMP
+ *
+ * Copyright (c) 2016 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+/*
+ * This program tests QMP commands maintained with the QMP core.
+ * These are defined in qmp.c.  Tests for QMP commands defined in
+ * another subsystem should go into a test program maintained with
+ * that subsystem.
+ *
+ * TODO Actually cover the commands.  The tests we got so far only
+ * demonstrate specific bugs we've fixed.
+ */
+
+#include "qemu/osdep.h"
+#include "libqtest.h"
+
+static void test_object_add_without_props(void)
+{
+    QDict *ret, *error;
+    const gchar *klass, *desc;
+
+    ret = qmp("{'execute': 'object-add',"
+              " 'arguments': { 'qom-type': 'memory-backend-ram', 'id': 'ram1' } }");
+    g_assert_nonnull(ret);
+
+    error = qdict_get_qdict(ret, "error");
+    klass = qdict_get_try_str(error, "class");
+    desc = qdict_get_try_str(error, "desc");
+
+    g_assert_cmpstr(klass, ==, "GenericError");
+    g_assert_cmpstr(desc, ==, "can't create backend with size 0");
+
+    QDECREF(ret);
+}
+
+static void test_qom_set_without_value(void)
+{
+    QDict *ret, *error;
+    const gchar *klass, *desc;
+
+    ret = qmp("{'execute': 'qom-set',"
+              " 'arguments': { 'path': '/machine', 'property': 'rtc-time' } }");
+    g_assert_nonnull(ret);
+
+    error = qdict_get_qdict(ret, "error");
+    klass = qdict_get_try_str(error, "class");
+    desc = qdict_get_try_str(error, "desc");
+
+    g_assert_cmpstr(klass, ==, "GenericError");
+    g_assert_cmpstr(desc, ==, "Parameter 'value' is missing");
+
+    QDECREF(ret);
+}
+
+int main(int argc, char **argv)
+{
+    int ret;
+
+    g_test_init(&argc, &argv, NULL);
+
+    qtest_start("");
+
+    qtest_add_func("/qemu-qmp/object-add-without-props",
+                   test_object_add_without_props);
+    qtest_add_func("/qemu-qmp/qom-set-without-value",
+                   test_qom_set_without_value);
+
+    ret = g_test_run();
+
+    qtest_end();
+
+    return ret;
+}
-- 
2.5.5

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

* [Qemu-devel] [PULL 05/12] qapi: add assert about root value
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (3 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 04/12] tests: start generic qemu-qmp tests Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 06/12] qapi: assert list entry has a value Markus Armbruster
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

qiv->root should not be null, make that clearer with some assert.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160930095948.3154-2-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qapi/qmp-input-visitor.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index fc91e74..c7deca9 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -64,6 +64,7 @@ static QObject *qmp_input_get_object(QmpInputVisitor *qiv,
 
     if (QSLIST_EMPTY(&qiv->stack)) {
         /* Starting at root, name is ignored. */
+        assert(qiv->root);
         return qiv->root;
     }
 
@@ -395,6 +396,7 @@ Visitor *qmp_input_visitor_new(QObject *obj, bool strict)
 {
     QmpInputVisitor *v;
 
+    assert(obj);
     v = g_malloc0(sizeof(*v));
 
     v->visitor.type = VISITOR_INPUT;
-- 
2.5.5

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

* [Qemu-devel] [PULL 06/12] qapi: assert list entry has a value
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (4 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 05/12] qapi: add assert about root value Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 07/12] qapi: return a 'missing parameter' error Markus Armbruster
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

This helps to figure out the expectations.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160930095948.3154-3-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qapi/qmp-input-visitor.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index c7deca9..fe097c9 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -84,6 +84,7 @@ static QObject *qmp_input_get_object(QmpInputVisitor *qiv,
         assert(qobject_type(qobj) == QTYPE_QLIST);
         assert(!name);
         ret = qlist_entry_obj(tos->entry);
+        assert(ret);
         if (consume) {
             tos->entry = qlist_next(tos->entry);
         }
-- 
2.5.5

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

* [Qemu-devel] [PULL 07/12] qapi: return a 'missing parameter' error
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (5 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 06/12] qapi: assert list entry has a value Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 08/12] MAINTAINERS: Pass the HMP staff from Luiz to David Markus Armbruster
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The 'old' dispatch code returned a QERR_MISSING_PARAMETER for missing
parameters, but the qapi qmp_dispatch() code uses
QERR_INVALID_PARAMETER_TYPE.

Improve qapi code to return QERR_MISSING_PARAMETER where
appropriate.

Fix expected error message in iotests.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20160930095948.3154-4-marcandre.lureau@redhat.com>
[Drop incorrect error_setg() from qmp_input_type_any() and
qmp_input_type_null()]
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 qapi/qmp-input-visitor.c   | 67 +++++++++++++++++++++++++++++++++-------------
 tests/qemu-iotests/087.out |  2 +-
 2 files changed, 49 insertions(+), 20 deletions(-)

diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c
index fe097c9..37a8e1f 100644
--- a/qapi/qmp-input-visitor.c
+++ b/qapi/qmp-input-visitor.c
@@ -56,7 +56,7 @@ static QmpInputVisitor *to_qiv(Visitor *v)
 
 static QObject *qmp_input_get_object(QmpInputVisitor *qiv,
                                      const char *name,
-                                     bool consume)
+                                     bool consume, Error **errp)
 {
     StackObject *tos;
     QObject *qobj;
@@ -80,6 +80,9 @@ static QObject *qmp_input_get_object(QmpInputVisitor *qiv,
             bool removed = g_hash_table_remove(tos->h, name);
             assert(removed);
         }
+        if (!ret) {
+            error_setg(errp, QERR_MISSING_PARAMETER, name);
+        }
     } else {
         assert(qobject_type(qobj) == QTYPE_QLIST);
         assert(!name);
@@ -165,13 +168,16 @@ static void qmp_input_start_struct(Visitor *v, const char *name, void **obj,
                                    size_t size, Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, true);
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
     Error *err = NULL;
 
     if (obj) {
         *obj = NULL;
     }
-    if (!qobj || qobject_type(qobj) != QTYPE_QDICT) {
+    if (!qobj) {
+        return;
+    }
+    if (qobject_type(qobj) != QTYPE_QDICT) {
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "QDict");
         return;
@@ -193,10 +199,13 @@ static void qmp_input_start_list(Visitor *v, const char *name,
                                  GenericList **list, size_t size, Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, true);
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
     const QListEntry *entry;
 
-    if (!qobj || qobject_type(qobj) != QTYPE_QLIST) {
+    if (!qobj) {
+        return;
+    }
+    if (qobject_type(qobj) != QTYPE_QLIST) {
         if (list) {
             *list = NULL;
         }
@@ -234,11 +243,10 @@ static void qmp_input_start_alternate(Visitor *v, const char *name,
                                       bool promote_int, Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, false);
+    QObject *qobj = qmp_input_get_object(qiv, name, false, errp);
 
     if (!qobj) {
         *obj = NULL;
-        error_setg(errp, QERR_MISSING_PARAMETER, name ? name : "null");
         return;
     }
     *obj = g_malloc0(size);
@@ -252,8 +260,13 @@ static void qmp_input_type_int64(Visitor *v, const char *name, int64_t *obj,
                                  Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QInt *qint = qobject_to_qint(qmp_input_get_object(qiv, name, true));
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
+    QInt *qint;
 
+    if (!qobj) {
+        return;
+    }
+    qint = qobject_to_qint(qobj);
     if (!qint) {
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "integer");
@@ -268,8 +281,13 @@ static void qmp_input_type_uint64(Visitor *v, const char *name, uint64_t *obj,
 {
     /* FIXME: qobject_to_qint mishandles values over INT64_MAX */
     QmpInputVisitor *qiv = to_qiv(v);
-    QInt *qint = qobject_to_qint(qmp_input_get_object(qiv, name, true));
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
+    QInt *qint;
 
+    if (!qobj) {
+        return;
+    }
+    qint = qobject_to_qint(qobj);
     if (!qint) {
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "integer");
@@ -283,8 +301,13 @@ static void qmp_input_type_bool(Visitor *v, const char *name, bool *obj,
                                 Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QBool *qbool = qobject_to_qbool(qmp_input_get_object(qiv, name, true));
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
+    QBool *qbool;
 
+    if (!qobj) {
+        return;
+    }
+    qbool = qobject_to_qbool(qobj);
     if (!qbool) {
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "boolean");
@@ -298,10 +321,15 @@ static void qmp_input_type_str(Visitor *v, const char *name, char **obj,
                                Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QString *qstr = qobject_to_qstring(qmp_input_get_object(qiv, name, true));
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
+    QString *qstr;
 
+    *obj = NULL;
+    if (!qobj) {
+        return;
+    }
+    qstr = qobject_to_qstring(qobj);
     if (!qstr) {
-        *obj = NULL;
         error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
                    "string");
         return;
@@ -314,10 +342,13 @@ static void qmp_input_type_number(Visitor *v, const char *name, double *obj,
                                   Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, true);
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
     QInt *qint;
     QFloat *qfloat;
 
+    if (!qobj) {
+        return;
+    }
     qint = qobject_to_qint(qobj);
     if (qint) {
         *obj = qint_get_int(qobject_to_qint(qobj));
@@ -338,11 +369,10 @@ static void qmp_input_type_any(Visitor *v, const char *name, QObject **obj,
                                Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, true);
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
 
+    *obj = NULL;
     if (!qobj) {
-        error_setg(errp, QERR_MISSING_PARAMETER, name ? name : "null");
-        *obj = NULL;
         return;
     }
 
@@ -353,10 +383,9 @@ static void qmp_input_type_any(Visitor *v, const char *name, QObject **obj,
 static void qmp_input_type_null(Visitor *v, const char *name, Error **errp)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, true);
+    QObject *qobj = qmp_input_get_object(qiv, name, true, errp);
 
     if (!qobj) {
-        error_setg(errp, QERR_MISSING_PARAMETER, name ? name : "null");
         return;
     }
 
@@ -369,7 +398,7 @@ static void qmp_input_type_null(Visitor *v, const char *name, Error **errp)
 static void qmp_input_optional(Visitor *v, const char *name, bool *present)
 {
     QmpInputVisitor *qiv = to_qiv(v);
-    QObject *qobj = qmp_input_get_object(qiv, name, false);
+    QObject *qobj = qmp_input_get_object(qiv, name, false, NULL);
 
     if (!qobj) {
         *present = false;
diff --git a/tests/qemu-iotests/087.out b/tests/qemu-iotests/087.out
index cd02eae..dc6baf9 100644
--- a/tests/qemu-iotests/087.out
+++ b/tests/qemu-iotests/087.out
@@ -56,7 +56,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 encryption=on
 Testing: -S
 QMP_VERSION
 {"return": {}}
-{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'driver', expected: string"}}
+{"error": {"class": "GenericError", "desc": "Parameter 'driver' is missing"}}
 {"return": {}}
 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN"}
 
-- 
2.5.5

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

* [Qemu-devel] [PULL 08/12] MAINTAINERS: Pass the HMP staff from Luiz to David
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (6 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 07/12] qapi: return a 'missing parameter' error Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 09/12] MAINTAINERS: Pass the QObject staff from Luiz to Markus Markus Armbruster
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

David graciously volunteered to take this off Luiz's hands.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1475084022-30117-2-git-send-email-armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 MAINTAINERS | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 7851d0f..bd06a50 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1176,12 +1176,11 @@ F: qemu-timer.c
 F: vl.c
 
 Human Monitor (HMP)
-M: Luiz Capitulino <lcapitulino@redhat.com>
+M: Dr. David Alan Gilbert <dgilbert@redhat.com>
 S: Maintained
 F: monitor.c
 F: hmp.c
 F: hmp-commands.hx
-T: git git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
 
 Network device backends
 M: Jason Wang <jasowang@redhat.com>
-- 
2.5.5

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

* [Qemu-devel] [PULL 09/12] MAINTAINERS: Pass the QObject staff from Luiz to Markus
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (7 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 08/12] MAINTAINERS: Pass the HMP staff from Luiz to David Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 10/12] qmp: Disable query-cpu-* commands when they're unavailable Markus Armbruster
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

QObject is fairly tightly coupled to QAPI these days, and I've been
effectively maintaining it together with QAPI for a while.  Update
MAINTAINERS to reflect that.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1475084022-30117-3-git-send-email-armbru@redhat.com>
Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 MAINTAINERS | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index bd06a50..a519a04 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1245,8 +1245,8 @@ F: qapi/*.json
 T: git git://repo.or.cz/qemu/armbru.git qapi-next
 
 QObject
-M: Luiz Capitulino <lcapitulino@redhat.com>
-S: Maintained
+M: Markus Armbruster <armbru@redhat.com>
+S: Supported
 F: qobject/
 F: include/qapi/qmp/
 X: include/qapi/qmp/dispatch.h
@@ -1256,7 +1256,7 @@ F: tests/check-qint.c
 F: tests/check-qjson.c
 F: tests/check-qlist.c
 F: tests/check-qstring.c
-T: git git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
+T: git git://repo.or.cz/qemu/armbru.git qapi-next
 
 QEMU Guest Agent
 M: Michael Roth <mdroth@linux.vnet.ibm.com>
-- 
2.5.5

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

* [Qemu-devel] [PULL 10/12] qmp: Disable query-cpu-* commands when they're unavailable
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (8 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 09/12] MAINTAINERS: Pass the QObject staff from Luiz to Markus Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 11/12] docs: Belatedly update for move of qmp-commands.txt Markus Armbruster
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Eduardo Habkost

From: Eduardo Habkost <ehabkost@redhat.com>

Instead of requiring clients to actually call the query-cpu-*
commands to find out if they are implemented, remove them from
the output of "query-commands", so clients know they are not
available.

This is implemented by extending the existing hack at
qmp_unregister_commands_hack(). I wish I could avoid adding even
more #ifdefs to that code, but that's the solution we have today.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <1475696941-8056-1-git-send-email-ehabkost@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 monitor.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/monitor.c b/monitor.c
index 83c4edf..4ff74b7 100644
--- a/monitor.c
+++ b/monitor.c
@@ -992,6 +992,15 @@ static void qmp_unregister_commands_hack(void)
 #ifndef TARGET_ARM
     qmp_unregister_command("query-gic-capabilities");
 #endif
+#if !defined(TARGET_S390X)
+    qmp_unregister_command("query-cpu-model-expansion");
+    qmp_unregister_command("query-cpu-model-baseline");
+    qmp_unregister_command("query-cpu-model-comparison");
+#endif
+#if !defined(TARGET_PPC) && !defined(TARGET_ARM) && !defined(TARGET_I386) \
+    && !defined(TARGET_S390X)
+    qmp_unregister_command("query-cpu-definitions");
+#endif
 }
 
 static void qmp_init_marshal(void)
-- 
2.5.5

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

* [Qemu-devel] [PULL 11/12] docs: Belatedly update for move of qmp-commands.txt
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (9 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 10/12] qmp: Disable query-cpu-* commands when they're unavailable Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 12:09 ` [Qemu-devel] [PULL 12/12] docs: Belatedly update for move of QMP/* to docs/ Markus Armbruster
  2016-10-07 14:14 ` [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Peter Maydell
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

Missed in commit d076a2a and commit bd6092e.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1474546563-16332-1-git-send-email-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 docs/xen-save-devices-state.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/xen-save-devices-state.txt b/docs/xen-save-devices-state.txt
index 92e08db..a72ecc8 100644
--- a/docs/xen-save-devices-state.txt
+++ b/docs/xen-save-devices-state.txt
@@ -9,7 +9,7 @@ however it is also possible to save the state of all devices to file,
 without saving the RAM or the block devices of the VM.
 
 This operation is called "xen-save-devices-state" (see
-QMP/qmp-commands.txt)
+qmp-commands.txt)
 
 
 The binary format used in the file is the following:
-- 
2.5.5

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

* [Qemu-devel] [PULL 12/12] docs: Belatedly update for move of QMP/* to docs/
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (10 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 11/12] docs: Belatedly update for move of qmp-commands.txt Markus Armbruster
@ 2016-10-07 12:09 ` Markus Armbruster
  2016-10-07 14:14 ` [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Peter Maydell
  12 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 12:09 UTC (permalink / raw)
  To: qemu-devel

Missed in commit 7537fe0 and commit 9b89b6a.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1475766600-7273-1-git-send-email-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 docs/qmp-commands.txt         | 2 +-
 docs/writing-qmp-commands.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/qmp-commands.txt b/docs/qmp-commands.txt
index e0adceb..b289391 100644
--- a/docs/qmp-commands.txt
+++ b/docs/qmp-commands.txt
@@ -20,7 +20,7 @@ Also, the following notation is used to denote data flow:
 -> data issued by the Client
 <- Server data response
 
-Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
+Please, refer to the QMP specification (docs/qmp-spec.txt) for detailed
 information on the Server command and response formats.
 
 NOTE: This document is temporary and will be replaced soon.
diff --git a/docs/writing-qmp-commands.txt b/docs/writing-qmp-commands.txt
index cfa6fe7..44c14db 100644
--- a/docs/writing-qmp-commands.txt
+++ b/docs/writing-qmp-commands.txt
@@ -7,8 +7,8 @@ This document doesn't discuss QMP protocol level details, nor does it dive
 into the QAPI framework implementation.
 
 For an in-depth introduction to the QAPI framework, please refer to
-docs/qapi-code-gen.txt. For documentation about the QMP protocol, please
-check the files in QMP/.
+docs/qapi-code-gen.txt. For documentation about the QMP protocol,
+start with docs/qmp-intro.txt.
 
 == Overview ==
 
-- 
2.5.5

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

* Re: [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07
  2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
                   ` (11 preceding siblings ...)
  2016-10-07 12:09 ` [Qemu-devel] [PULL 12/12] docs: Belatedly update for move of QMP/* to docs/ Markus Armbruster
@ 2016-10-07 14:14 ` Peter Maydell
  2016-10-07 18:16   ` Markus Armbruster
  12 siblings, 1 reply; 15+ messages in thread
From: Peter Maydell @ 2016-10-07 14:14 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: QEMU Developers

On 7 October 2016 at 13:09, Markus Armbruster <armbru@redhat.com> wrote:
> The following changes since commit a65b6f27ce65e2e4f771f69d549ffa455a4d543a:
>
>   Merge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20161004' into staging (2016-10-04 18:57:12 +0100)
>
> are available in the git repository at:
>
>   git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2016-10-07
>
> for you to fetch changes up to 61fee8886034a5d983f4ae4aa74ddd947dfada1d:
>
>   docs: Belatedly update for move of QMP/* to docs/ (2016-10-07 11:07:59 +0200)
>
> ----------------------------------------------------------------
> QAPI patches for 2016-10-07
>

Fails 'make check', all builds:

TEST: tests/qmp-test... (pid=3799)
qemu-system-aarch64: -machine accel=qtest: No machine specified, and
there is no default
Use -machine help to list supported machines
socket_accept failed: Resource temporarily unavailable
**
ERROR:/home/petmay01/qemu/tests/libqtest.c:197:qtest_init: assertion
failed: (s->fd >= 0 && s->qmp_fd >= 0)
FAIL: tests/qmp-test
make: *** [check-qtest-aarch64] Error 1

thanks
-- PMM

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

* Re: [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07
  2016-10-07 14:14 ` [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Peter Maydell
@ 2016-10-07 18:16   ` Markus Armbruster
  0 siblings, 0 replies; 15+ messages in thread
From: Markus Armbruster @ 2016-10-07 18:16 UTC (permalink / raw)
  To: Peter Maydell; +Cc: QEMU Developers

Peter Maydell <peter.maydell@linaro.org> writes:

> On 7 October 2016 at 13:09, Markus Armbruster <armbru@redhat.com> wrote:
>> The following changes since commit a65b6f27ce65e2e4f771f69d549ffa455a4d543a:
>>
>>   Merge remote-tracking branch 'remotes/dgilbert/tags/pull-hmp-20161004' into staging (2016-10-04 18:57:12 +0100)
>>
>> are available in the git repository at:
>>
>>   git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2016-10-07
>>
>> for you to fetch changes up to 61fee8886034a5d983f4ae4aa74ddd947dfada1d:
>>
>>   docs: Belatedly update for move of QMP/* to docs/ (2016-10-07 11:07:59 +0200)
>>
>> ----------------------------------------------------------------
>> QAPI patches for 2016-10-07
>>
>
> Fails 'make check', all builds:
>
> TEST: tests/qmp-test... (pid=3799)
> qemu-system-aarch64: -machine accel=qtest: No machine specified, and
> there is no default
> Use -machine help to list supported machines
> socket_accept failed: Resource temporarily unavailable
> **
> ERROR:/home/petmay01/qemu/tests/libqtest.c:197:qtest_init: assertion
> failed: (s->fd >= 0 && s->qmp_fd >= 0)
> FAIL: tests/qmp-test
> make: *** [check-qtest-aarch64] Error 1

Uh, sorry.  v2 on its way.

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

end of thread, other threads:[~2016-10-07 18:21 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-07 12:09 [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 01/12] qmp: fix object-add assert() without props Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 02/12] qapi: Fix crash when 'any' or 'null' parameter is missing Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 03/12] tests/test-qmp-input-strict: Cover missing struct members Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 04/12] tests: start generic qemu-qmp tests Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 05/12] qapi: add assert about root value Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 06/12] qapi: assert list entry has a value Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 07/12] qapi: return a 'missing parameter' error Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 08/12] MAINTAINERS: Pass the HMP staff from Luiz to David Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 09/12] MAINTAINERS: Pass the QObject staff from Luiz to Markus Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 10/12] qmp: Disable query-cpu-* commands when they're unavailable Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 11/12] docs: Belatedly update for move of qmp-commands.txt Markus Armbruster
2016-10-07 12:09 ` [Qemu-devel] [PULL 12/12] docs: Belatedly update for move of QMP/* to docs/ Markus Armbruster
2016-10-07 14:14 ` [Qemu-devel] [PULL 00/12] QAPI patches for 2016-10-07 Peter Maydell
2016-10-07 18:16   ` Markus Armbruster

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