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 

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?= 
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 
---
 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