Re: [Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes

2012-05-11 Thread Michael Roth
On Fri, May 11, 2012 at 03:22:15AM +0200, Andreas Färber wrote:
 Am 27.04.2012 22:21, schrieb Michael Roth:
  These patches apply on top of qemu.git master, and can also be obtained 
  from:
  git://github.com/mdroth/qemu.git visitor-fixed-width-v5
  
  Some of these were being carried as part of Paolo's realize series due to 
  some
  conflicts, but that looks to be targetted for 1.2 now, and there's a QMP
  visitor bug and a small issue with String visitor that were caught by the 
  test
  infrastructure introduced here and fixed as part of this series, so I'd 
  like to
  get this in for 1.1
 
 Thanks, I've applied v6 to qom-next (as usual massaging the commit
 messages a bit, in particular extending the last one):
 http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next
 
 Reasoning:
 This series has been around since end of February. v3 fixed a breakage
 reported by Anthony (use of signed rather than unsigned visitors); since
 then changes were mostly rebasing, and v5/v6 pass make check and my
 smoke tests.
 While this is not strictly a QOM series, I am picking it as a
 prerequisite since Paolo had picked up patches 1, 6, 7 for his Object
 properties movement and because patch 1 is handy for newly added
 properties such as of the x86 CPU.
 Further, Paolo agreed to rebase onto this series.
 
 However, it is my understanding that patches 2 and 4 are independent
 bugfixes and as such should go into 1.1.

Agreed, my intention as well.

Thanks for taking these in!

 
 Luiz, should I send Anthony a PULL for 1.1-rc2 including those two? Can
 you ack then? Or do you want to cherry-pick them from qom-next yourself?
 
 Andreas
 
  CHANGES SINCE v4:
   - Rebased on master (a8b69b8e2431edfcb6c4cfb069787e9071d6235b) and 
  re-tested
   - Re-ordered patches so visitor bugs are applied before the test cases that
 that trigger them.
  
  CHANGES SINCE V3:
   - Rebased on master and re-tested
  
  CHANGES SINCE V2:
   - Fix qemu-test errors due to now-strict bounds-checking we doing 
  assignment
 between signed/unsigned types.
   - uint* property getters/setters no longer use int* getters/setters.
   - valid devfn range is now explicitly enforced.
  
  CHANGES SINCE V1:
   - unit tests: covert QmpOutputVisitor qobject to json before passing it to
 QmpInputVisitor*. I.e., actually do the serialization :)
   - QmpInputVisitor, add handling for when a serialized QFloat gets read back
 as a QInt
   - unit tests: add coverage for String visitor
   - StringOutputVisitor: use %f for float representation
  
  These patches add fixed-width visitor interfaces and switches all qdev users
  over to using them.
  
  We also add a test suite which covers these interfaces, and also does some
  sanity checking on Visitors (Qmp/String currently, with a pluggable 
  interface
  for future implementations) to ensure Visitor input/output handling remain
  self-consistent, which is not covered by the current visitor tests which 
  mostly
  test input/output seperately. Maintaining this invariant is necessary to 
  ensure
  that visitors can be used for serialization/deserialization in the future.
  
   hw/mc146818rtc.c   |7 -
   hw/pci.c   |2 +-
   hw/pci.h   |2 +-
   hw/qdev-addr.c |4 +-
   hw/qdev-properties.c   |  161 +---
   hw/qdev.h  |2 +-
   qapi/qapi-visit-core.c |  139 +++
   qapi/qapi-visit-core.h |   16 +
   qapi/qmp-input-visitor.c   |9 +-
   qapi/string-output-visitor.c   |2 +-
   tests/Makefile |4 +-
   tests/test-string-output-visitor.c |2 +-
   tests/test-visitor-serialization.c |  784 
  
   13 files changed, 1049 insertions(+), 85 deletions(-)
 
 -- 
 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
 GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
 



Re: [Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes

2012-05-10 Thread Andreas Färber
Am 27.04.2012 22:21, schrieb Michael Roth:
 These patches apply on top of qemu.git master, and can also be obtained from:
 git://github.com/mdroth/qemu.git visitor-fixed-width-v5
 
 Some of these were being carried as part of Paolo's realize series due to some
 conflicts, but that looks to be targetted for 1.2 now, and there's a QMP
 visitor bug and a small issue with String visitor that were caught by the test
 infrastructure introduced here and fixed as part of this series, so I'd like 
 to
 get this in for 1.1

Thanks, I've applied v6 to qom-next (as usual massaging the commit
messages a bit, in particular extending the last one):
http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next

Reasoning:
This series has been around since end of February. v3 fixed a breakage
reported by Anthony (use of signed rather than unsigned visitors); since
then changes were mostly rebasing, and v5/v6 pass make check and my
smoke tests.
While this is not strictly a QOM series, I am picking it as a
prerequisite since Paolo had picked up patches 1, 6, 7 for his Object
properties movement and because patch 1 is handy for newly added
properties such as of the x86 CPU.
Further, Paolo agreed to rebase onto this series.

However, it is my understanding that patches 2 and 4 are independent
bugfixes and as such should go into 1.1.

Luiz, should I send Anthony a PULL for 1.1-rc2 including those two? Can
you ack then? Or do you want to cherry-pick them from qom-next yourself?

Andreas

 CHANGES SINCE v4:
  - Rebased on master (a8b69b8e2431edfcb6c4cfb069787e9071d6235b) and re-tested
  - Re-ordered patches so visitor bugs are applied before the test cases that
that trigger them.
 
 CHANGES SINCE V3:
  - Rebased on master and re-tested
 
 CHANGES SINCE V2:
  - Fix qemu-test errors due to now-strict bounds-checking we doing assignment
between signed/unsigned types.
  - uint* property getters/setters no longer use int* getters/setters.
  - valid devfn range is now explicitly enforced.
 
 CHANGES SINCE V1:
  - unit tests: covert QmpOutputVisitor qobject to json before passing it to
QmpInputVisitor*. I.e., actually do the serialization :)
  - QmpInputVisitor, add handling for when a serialized QFloat gets read back
as a QInt
  - unit tests: add coverage for String visitor
  - StringOutputVisitor: use %f for float representation
 
 These patches add fixed-width visitor interfaces and switches all qdev users
 over to using them.
 
 We also add a test suite which covers these interfaces, and also does some
 sanity checking on Visitors (Qmp/String currently, with a pluggable interface
 for future implementations) to ensure Visitor input/output handling remain
 self-consistent, which is not covered by the current visitor tests which 
 mostly
 test input/output seperately. Maintaining this invariant is necessary to 
 ensure
 that visitors can be used for serialization/deserialization in the future.
 
  hw/mc146818rtc.c   |7 -
  hw/pci.c   |2 +-
  hw/pci.h   |2 +-
  hw/qdev-addr.c |4 +-
  hw/qdev-properties.c   |  161 +---
  hw/qdev.h  |2 +-
  qapi/qapi-visit-core.c |  139 +++
  qapi/qapi-visit-core.h |   16 +
  qapi/qmp-input-visitor.c   |9 +-
  qapi/string-output-visitor.c   |2 +-
  tests/Makefile |4 +-
  tests/test-string-output-visitor.c |2 +-
  tests/test-visitor-serialization.c |  784 
 
  13 files changed, 1049 insertions(+), 85 deletions(-)

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



Re: [Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes

2012-05-01 Thread Andreas Färber
Am 27.04.2012 22:21, schrieb Michael Roth:
 These patches apply on top of qemu.git master, and can also be obtained from:
 git://github.com/mdroth/qemu.git visitor-fixed-width-v5

I've tested that branch by running some random guests without noticeable
problems and by testing X86CPU level/xlevel simplifications on top
(attached).

NOTE: There is a v6 patch with fixed commit message hidden as reply
within this series but there is no matching -v6 branch pushed yet.

That being said, v5 series

Tested-by: Andreas Färber afaer...@suse.de

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
From b19a05c8dff628af5f0170cc53c8319af0074104 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= afaer...@suse.de
Date: Tue, 1 May 2012 23:33:13 +0200
Subject: [PATCH] target-i386: Use uint32 visitor for [x]level properties
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This simplifies the code and resolves TODOs.

Signed-off-by: Andreas Färber afaer...@suse.de
---
 target-i386/cpu.c |   42 --
 1 files changed, 4 insertions(+), 38 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 65d9af6..af8e1f3 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -715,66 +715,32 @@ static void x86_cpuid_get_level(Object *obj, Visitor *v, void *opaque,
 const char *name, Error **errp)
 {
 X86CPU *cpu = X86_CPU(obj);
-int64_t value;
 
-value = cpu-env.cpuid_level;
-/* TODO Use visit_type_uint32() once available */
-visit_type_int(v, value, name, errp);
+visit_type_uint32(v, cpu-env.cpuid_level, name, errp);
 }
 
 static void x86_cpuid_set_level(Object *obj, Visitor *v, void *opaque,
 const char *name, Error **errp)
 {
 X86CPU *cpu = X86_CPU(obj);
-const int64_t min = 0;
-const int64_t max = UINT32_MAX;
-int64_t value;
-
-/* TODO Use visit_type_uint32() once available */
-visit_type_int(v, value, name, errp);
-if (error_is_set(errp)) {
-return;
-}
-if (value  min || value  max) {
-error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, ,
-  name ? name : null, value, min, max);
-return;
-}
 
-cpu-env.cpuid_level = value;
+visit_type_uint32(v, cpu-env.cpuid_level, name, errp);
 }
 
 static void x86_cpuid_get_xlevel(Object *obj, Visitor *v, void *opaque,
  const char *name, Error **errp)
 {
 X86CPU *cpu = X86_CPU(obj);
-int64_t value;
 
-value = cpu-env.cpuid_xlevel;
-/* TODO Use visit_type_uint32() once available */
-visit_type_int(v, value, name, errp);
+visit_type_uint32(v, cpu-env.cpuid_xlevel, name, errp);
 }
 
 static void x86_cpuid_set_xlevel(Object *obj, Visitor *v, void *opaque,
  const char *name, Error **errp)
 {
 X86CPU *cpu = X86_CPU(obj);
-const int64_t min = 0;
-const int64_t max = UINT32_MAX;
-int64_t value;
-
-/* TODO Use visit_type_uint32() once available */
-visit_type_int(v, value, name, errp);
-if (error_is_set(errp)) {
-return;
-}
-if (value  min || value  max) {
-error_set(errp, QERR_PROPERTY_VALUE_OUT_OF_RANGE, ,
-  name ? name : null, value, min, max);
-return;
-}
 
-cpu-env.cpuid_xlevel = value;
+visit_type_uint32(v, cpu-env.cpuid_xlevel, name, errp);
 }
 
 static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
-- 
1.7.7



Re: [Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes

2012-04-28 Thread Paolo Bonzini
Il 27/04/2012 22:21, Michael Roth ha scritto:
 Some of these were being carried as part of Paolo's realize series due to some
 conflicts, but that looks to be targetted for 1.2 now, and there's a QMP
 visitor bug and a small issue with String visitor that were caught by the test
 infrastructure introduced here and fixed as part of this series, so I'd like 
 to
 get this in for 1.1

Agreed.

Paolo




[Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes

2012-04-27 Thread Michael Roth
These patches apply on top of qemu.git master, and can also be obtained from:
git://github.com/mdroth/qemu.git visitor-fixed-width-v5

Some of these were being carried as part of Paolo's realize series due to some
conflicts, but that looks to be targetted for 1.2 now, and there's a QMP
visitor bug and a small issue with String visitor that were caught by the test
infrastructure introduced here and fixed as part of this series, so I'd like to
get this in for 1.1

CHANGES SINCE v4:
 - Rebased on master (a8b69b8e2431edfcb6c4cfb069787e9071d6235b) and re-tested
 - Re-ordered patches so visitor bugs are applied before the test cases that
   that trigger them.

CHANGES SINCE V3:
 - Rebased on master and re-tested

CHANGES SINCE V2:
 - Fix qemu-test errors due to now-strict bounds-checking we doing assignment
   between signed/unsigned types.
 - uint* property getters/setters no longer use int* getters/setters.
 - valid devfn range is now explicitly enforced.

CHANGES SINCE V1:
 - unit tests: covert QmpOutputVisitor qobject to json before passing it to
   QmpInputVisitor*. I.e., actually do the serialization :)
 - QmpInputVisitor, add handling for when a serialized QFloat gets read back
   as a QInt
 - unit tests: add coverage for String visitor
 - StringOutputVisitor: use %f for float representation

These patches add fixed-width visitor interfaces and switches all qdev users
over to using them.

We also add a test suite which covers these interfaces, and also does some
sanity checking on Visitors (Qmp/String currently, with a pluggable interface
for future implementations) to ensure Visitor input/output handling remain
self-consistent, which is not covered by the current visitor tests which mostly
test input/output seperately. Maintaining this invariant is necessary to ensure
that visitors can be used for serialization/deserialization in the future.

 hw/mc146818rtc.c   |7 -
 hw/pci.c   |2 +-
 hw/pci.h   |2 +-
 hw/qdev-addr.c |4 +-
 hw/qdev-properties.c   |  161 +---
 hw/qdev.h  |2 +-
 qapi/qapi-visit-core.c |  139 +++
 qapi/qapi-visit-core.h |   16 +
 qapi/qmp-input-visitor.c   |9 +-
 qapi/string-output-visitor.c   |2 +-
 tests/Makefile |4 +-
 tests/test-string-output-visitor.c |2 +-
 tests/test-visitor-serialization.c |  784 
 13 files changed, 1049 insertions(+), 85 deletions(-)