All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04
@ 2015-12-04 17:56 Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 1/4] tests: Fix check-report-qtest-% target Andreas Färber
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Andreas Färber @ 2015-12-04 17:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Andreas Färber, Marc-André Lureau,
	Markus Armbruster

Hello Peter,

This is my QOM (devices) patch queue for 2.5. Please pull.

v2 squashes a fix by Markus.

Regards,
Andreas

Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>

The following changes since commit 4c65fed8bdf96780735dbdb92a8bd0d6b6526cc3:

  ui: vnc: avoid floating point exception (2015-12-03 13:34:50 +0000)

are available in the git repository at:

  git://github.com/afaerber/qemu-cpu.git tags/qom-devices-for-peter

for you to fetch changes up to 0d2cd785ef1282b14687f9f7f4b63ae4a2430be3:

  qom-test: Fix qmp() leaks (2015-12-04 18:29:31 +0100)

----------------------------------------------------------------
QOM infrastructure fixes and device conversions

* Documentation update
* qom-test and related fixes

----------------------------------------------------------------
Andreas Färber (1):
      tests: Fix check-report-qtest-% target

Cao jin (1):
      qom: Update documentation comment of struct Object

Marc-André Lureau (1):
      qom-test: Fix qmp() leaks

Markus Armbruster (1):
      tests: Use proper functions types instead of void (*fn)

 include/qom/object.h    |  3 ---
 tests/Makefile          |  4 ++--
 tests/ide-test.c        |  4 ++--
 tests/libqtest.c        | 14 ++++++++++----
 tests/libqtest.h        |  7 ++++---
 tests/qom-test.c        | 21 ++++++++++++++-------
 tests/vhost-user-test.c |  3 ++-
 7 files changed, 34 insertions(+), 22 deletions(-)

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

* [Qemu-devel] [PULL v2 1/4] tests: Fix check-report-qtest-% target
  2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
@ 2015-12-04 17:56 ` Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 2/4] qom: Update documentation comment of struct Object Andreas Färber
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Andreas Färber @ 2015-12-04 17:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: Andreas Färber

Commit e253c28 ("tests: Fix how qom-test is run") introduced
$(qtest-generic-y) and used it for check-qtest-% target, but did not
update check-report-qtest-%. This causes check-report-qtest-aarch64.xml
target to fail with a gtester usage error for lack of test arguments.

Fix this by adding $(qtest-generic-y) in check-report-qtest-%.
Also add it in check-clean target, spotted by Markus.

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 tests/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index 0ef00a1..a1d03b4 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -612,7 +612,7 @@ $(patsubst %, check-%, $(check-unit-y)): check-%: %
 $(patsubst %, check-report-qtest-%.xml, $(QTEST_TARGETS)): check-report-qtest-%.xml: $(check-qtest-y)
 	$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
 		QTEST_QEMU_IMG=qemu-img$(EXESUF) \
-	  gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $(check-qtest-$*-y),"GTESTER $@")
+	  gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER $@")
 
 check-report-unit.xml: $(check-unit-y)
 	$(call quiet-command,gtester -q $(GTESTER_OPTIONS) -o $@ -m=$(SPEED) $^, "GTESTER $@")
@@ -660,7 +660,7 @@ check: check-qapi-schema check-unit check-qtest
 check-clean:
 	$(MAKE) -C tests/tcg clean
 	rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
-	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)))
+	rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), $(check-qtest-$(target)-y)) $(check-qtest-generic-y))
 
 clean: check-clean
 
-- 
2.6.2

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

* [Qemu-devel] [PULL v2 2/4] qom: Update documentation comment of struct Object
  2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 1/4] tests: Fix check-report-qtest-% target Andreas Färber
@ 2015-12-04 17:56 ` Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 3/4] tests: Use proper functions types instead of void (*fn) Andreas Färber
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Andreas Färber @ 2015-12-04 17:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: Cao jin, Andreas Färber

From: Cao jin <caoj.fnst@cn.fujitsu.com>

It doesn't have "GSList *interfaces" anymore, drop the paragraph.

Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 include/qom/object.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index f172fea..4509166 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -394,9 +394,6 @@ struct ObjectClass
  * As a result, #Object contains a reference to the objects type as its
  * first member.  This allows identification of the real type of the object at
  * run time.
- *
- * #Object also contains a list of #Interfaces that this object
- * implements.
  */
 struct Object
 {
-- 
2.6.2

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

* [Qemu-devel] [PULL v2 3/4] tests: Use proper functions types instead of void (*fn)
  2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 1/4] tests: Fix check-report-qtest-% target Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 2/4] qom: Update documentation comment of struct Object Andreas Färber
@ 2015-12-04 17:56 ` Andreas Färber
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 4/4] qom-test: Fix qmp() leaks Andreas Färber
  2015-12-07 11:04 ` [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Peter Maydell
  4 siblings, 0 replies; 6+ messages in thread
From: Andreas Färber @ 2015-12-04 17:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: John Snow, Markus Armbruster, open list:IDE, Andreas Färber

From: Markus Armbruster <armbru@redhat.com>

We have several function parameters declared as void (*fn).  This is
just a stupid way to write void *, and the only purpose writing it
like that could serve is obscuring the sin of bypassing the type
system without need.

The original sin is commit 49ee359: its qtest_add_func() is a wrapper
for g_test_add_func().  Fix the parameter type to match
g_test_add_func()'s.  This uncovers type errors in ide-test.c; fix
them.

Commit 7949c0e faithfully repeated the sin for qtest_add_data_func().
Fix it the same way, along with a harmless type error uncovered in
vhost-user-test.c.

Commit 063c23d repeated it for qtest_add_abrt_handler().  The screwy
parameter gets assigned to GHook member func, so change its type to
match.  Requires wrapping kill_qemu() to keep the type checker happy.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[AF/armbru: Inline GTestFunc/GTestDataFunc typedef for old GLib]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 tests/ide-test.c        |  4 ++--
 tests/libqtest.c        | 14 ++++++++++----
 tests/libqtest.h        |  7 ++++---
 tests/vhost-user-test.c |  3 ++-
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/tests/ide-test.c b/tests/ide-test.c
index c3aacd2..b864701 100644
--- a/tests/ide-test.c
+++ b/tests/ide-test.c
@@ -593,12 +593,12 @@ static void test_flush_nodev(void)
     ide_test_quit();
 }
 
-static void test_pci_retry_flush(const char *machine)
+static void test_pci_retry_flush(void)
 {
     test_retry_flush("pc");
 }
 
-static void test_isa_retry_flush(const char *machine)
+static void test_isa_retry_flush(void)
 {
     test_retry_flush("isapc");
 }
diff --git a/tests/libqtest.c b/tests/libqtest.c
index 9753161..fa314e1 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -110,6 +110,11 @@ static void kill_qemu(QTestState *s)
     }
 }
 
+static void kill_qemu_hook_func(void *s)
+{
+    kill_qemu(s);
+}
+
 static void sigabrt_handler(int signo)
 {
     g_hook_list_invoke(&abrt_hooks, FALSE);
@@ -133,7 +138,7 @@ static void cleanup_sigabrt_handler(void)
     sigaction(SIGABRT, &sigact_old, NULL);
 }
 
-void qtest_add_abrt_handler(void (*fn), const void *data)
+void qtest_add_abrt_handler(GHookFunc fn, const void *data)
 {
     GHook *hook;
 
@@ -170,7 +175,7 @@ QTestState *qtest_init(const char *extra_args)
     sock = init_socket(socket_path);
     qmpsock = init_socket(qmp_socket_path);
 
-    qtest_add_abrt_handler(kill_qemu, s);
+    qtest_add_abrt_handler(kill_qemu_hook_func, s);
 
     s->qemu_pid = fork();
     if (s->qemu_pid == 0) {
@@ -755,14 +760,15 @@ void qtest_memread(QTestState *s, uint64_t addr, void *data, size_t size)
     g_strfreev(args);
 }
 
-void qtest_add_func(const char *str, void (*fn))
+void qtest_add_func(const char *str, void (*fn)(void))
 {
     gchar *path = g_strdup_printf("/%s/%s", qtest_get_arch(), str);
     g_test_add_func(path, fn);
     g_free(path);
 }
 
-void qtest_add_data_func(const char *str, const void *data, void (*fn))
+void qtest_add_data_func(const char *str, const void *data,
+                         void (*fn)(const void *))
 {
     gchar *path = g_strdup_printf("/%s/%s", qtest_get_arch(), str);
     g_test_add_data_func(path, data, fn);
diff --git a/tests/libqtest.h b/tests/libqtest.h
index df08745..ebdd5bb 100644
--- a/tests/libqtest.h
+++ b/tests/libqtest.h
@@ -416,7 +416,7 @@ const char *qtest_get_arch(void);
  * The path is prefixed with the architecture under test, as
  * returned by qtest_get_arch().
  */
-void qtest_add_func(const char *str, void (*fn));
+void qtest_add_func(const char *str, void (*fn)(void));
 
 /**
  * qtest_add_data_func:
@@ -428,7 +428,8 @@ void qtest_add_func(const char *str, void (*fn));
  * The path is prefixed with the architecture under test, as
  * returned by qtest_get_arch().
  */
-void qtest_add_data_func(const char *str, const void *data, void (*fn));
+void qtest_add_data_func(const char *str, const void *data,
+                         void (*fn)(const void *));
 
 /**
  * qtest_add:
@@ -450,7 +451,7 @@ void qtest_add_data_func(const char *str, const void *data, void (*fn));
         g_free(path); \
     } while (0)
 
-void qtest_add_abrt_handler(void (*fn), const void *data);
+void qtest_add_abrt_handler(GHookFunc fn, const void *data);
 
 /**
  * qtest_start:
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index 29de739..991fd85 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -173,8 +173,9 @@ static void wait_for_fds(TestServer *s)
     g_mutex_unlock(&s->data_mutex);
 }
 
-static void read_guest_mem(TestServer *s)
+static void read_guest_mem(const void *data)
 {
+    TestServer *s = (void *)data;
     uint32_t *guest_mem;
     int i, j;
     size_t size;
-- 
2.6.2

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

* [Qemu-devel] [PULL v2 4/4] qom-test: Fix qmp() leaks
  2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
                   ` (2 preceding siblings ...)
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 3/4] tests: Use proper functions types instead of void (*fn) Andreas Färber
@ 2015-12-04 17:56 ` Andreas Färber
  2015-12-07 11:04 ` [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Peter Maydell
  4 siblings, 0 replies; 6+ messages in thread
From: Andreas Färber @ 2015-12-04 17:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Markus Armbruster, Andreas Färber

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

Before this patch ASAN reported:
SUMMARY: AddressSanitizer: 677165875 byte(s) leaked in 1272437 allocation(s)

After this patch:
SUMMARY: AddressSanitizer: 465 byte(s) leaked in 32 allocation(s)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <1448551895-871-1-git-send-email-marcandre.lureau@redhat.com>
[Straightforwardly rebased onto the previous patch]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 tests/qom-test.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/tests/qom-test.c b/tests/qom-test.c
index fde04e7..3e5e873 100644
--- a/tests/qom-test.c
+++ b/tests/qom-test.c
@@ -47,7 +47,7 @@ static bool is_blacklisted(const char *arch, const char *mach)
 static void test_properties(const char *path, bool recurse)
 {
     char *child_path;
-    QDict *response, *tuple;
+    QDict *response, *tuple, *tmp;
     QList *list;
     QListEntry *entry;
 
@@ -57,6 +57,7 @@ static void test_properties(const char *path, bool recurse)
     g_assert(response);
 
     if (!recurse) {
+        QDECREF(response);
         return;
     }
 
@@ -75,14 +76,16 @@ static void test_properties(const char *path, bool recurse)
         } else {
             const char *prop = qdict_get_str(tuple, "name");
             g_test_message("Testing property %s.%s", path, prop);
-            response = qmp("{ 'execute': 'qom-get',"
-                           "  'arguments': { 'path': %s,"
-                           "                 'property': %s } }",
-                           path, prop);
+            tmp = qmp("{ 'execute': 'qom-get',"
+                      "  'arguments': { 'path': %s,"
+                      "                 'property': %s } }",
+                      path, prop);
             /* qom-get may fail but should not, e.g., segfault. */
-            g_assert(response);
+            g_assert(tmp);
+            QDECREF(tmp);
         }
     }
+    QDECREF(response);
 }
 
 static void test_machine(gconstpointer data)
@@ -98,9 +101,11 @@ static void test_machine(gconstpointer data)
 
     response = qmp("{ 'execute': 'quit' }");
     g_assert(qdict_haskey(response, "return"));
+    QDECREF(response);
 
     qtest_end();
     g_free(args);
+    g_free((void *)machine);
 }
 
 static void add_machine_test_cases(void)
@@ -129,10 +134,12 @@ static void add_machine_test_cases(void)
         mname = qstring_get_str(qstr);
         if (!is_blacklisted(arch, mname)) {
             path = g_strdup_printf("qom/%s", mname);
-            qtest_add_data_func(path, mname, test_machine);
+            qtest_add_data_func(path, g_strdup(mname), test_machine);
         }
     }
+
     qtest_end();
+    QDECREF(response);
 }
 
 int main(int argc, char **argv)
-- 
2.6.2

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

* Re: [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04
  2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
                   ` (3 preceding siblings ...)
  2015-12-04 17:56 ` [Qemu-devel] [PULL v2 4/4] qom-test: Fix qmp() leaks Andreas Färber
@ 2015-12-07 11:04 ` Peter Maydell
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Maydell @ 2015-12-07 11:04 UTC (permalink / raw)
  To: Andreas Färber
  Cc: Marc-André Lureau, QEMU Developers, Markus Armbruster

On 4 December 2015 at 17:56, Andreas Färber <afaerber@suse.de> wrote:
> Hello Peter,
>
> This is my QOM (devices) patch queue for 2.5. Please pull.
>
> v2 squashes a fix by Markus.
>
> Regards,
> Andreas
>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> The following changes since commit 4c65fed8bdf96780735dbdb92a8bd0d6b6526cc3:
>
>   ui: vnc: avoid floating point exception (2015-12-03 13:34:50 +0000)
>
> are available in the git repository at:
>
>   git://github.com/afaerber/qemu-cpu.git tags/qom-devices-for-peter
>
> for you to fetch changes up to 0d2cd785ef1282b14687f9f7f4b63ae4a2430be3:
>
>   qom-test: Fix qmp() leaks (2015-12-04 18:29:31 +0100)
>

Applied, thanks.

-- PMM

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

end of thread, other threads:[~2015-12-07 11:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-04 17:56 [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Andreas Färber
2015-12-04 17:56 ` [Qemu-devel] [PULL v2 1/4] tests: Fix check-report-qtest-% target Andreas Färber
2015-12-04 17:56 ` [Qemu-devel] [PULL v2 2/4] qom: Update documentation comment of struct Object Andreas Färber
2015-12-04 17:56 ` [Qemu-devel] [PULL v2 3/4] tests: Use proper functions types instead of void (*fn) Andreas Färber
2015-12-04 17:56 ` [Qemu-devel] [PULL v2 4/4] qom-test: Fix qmp() leaks Andreas Färber
2015-12-07 11:04 ` [Qemu-devel] [PULL for-2.5 v2 0/4] QOM devices patch queue 2015-12-04 Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.