Re: [Qemu-devel] [PATCH v5 0/7] add fixed-width visitors and serialization tests/fixes
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
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
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
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