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