Branch: refs/heads/master Home: https://github.com/qemu/qemu Commit: 46cfbf13b06d551072ed17fbfca67c103edf814f https://github.com/qemu/qemu/commit/46cfbf13b06d551072ed17fbfca67c103edf814f Author: Markus Armbruster <arm...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018)
Changed paths: M tests/check-qdict.c Log Message: ----------- qobject: Use qobject_to() instead of type cast The proper way to convert from (abstract) QObject to a (concrete) subtype is qobject_to(). Look for offenders that type cast instead: $ git-grep '(Q[A-Z][a-z]* \*)' hmp.c: qmp_device_add((QDict *)qdict, NULL, &err); include/qapi/qmp/qobject.h: return (QObject *)obj; qobject/qobject.c:static void (*qdestroy[QTYPE__MAX])(QObject *) = { tests/check-qdict.c: dst = (QDict *)qdict_crumple(src, &error_abort); The first two cast away const, the third isn't a type cast. Fix the fourth. Signed-off-by: Markus Armbruster <arm...@redhat.com> Message-Id: <20180426152805.8469-1-arm...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> Commit: 7ee9edfdb117da47c86c9764d90f0be11a648666 https://github.com/qemu/qemu/commit/7ee9edfdb117da47c86c9764d90f0be11a648666 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M include/qapi/qmp/qobject.h M qobject/qobject.c Log Message: ----------- qobject: Ensure base is at offset 0 All QObject types have the base QObject as their first field. This allows the simplification of qobject_to(). Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180419150145.24795-2-marcandre.lur...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> [Commit message paragraph on type casts dropped, to avoid giving the impression type casting would be okay] Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: 3d3eacaeccaab718ea0e2ddaa578bfae9e311c59 https://github.com/qemu/qemu/commit/3d3eacaeccaab718ea0e2ddaa578bfae9e311c59 Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M include/qapi/qmp/qbool.h M include/qapi/qmp/qdict.h M include/qapi/qmp/qlist.h M include/qapi/qmp/qnull.h M include/qapi/qmp/qnum.h M include/qapi/qmp/qobject.h M include/qapi/qmp/qstring.h M qobject/qobject.c M tests/check-qdict.c Log Message: ----------- qobject: use a QObjectBase_ struct By moving the base fields to a QObjectBase_, QObject can be a type which also has a 'base' field. This allows writing a generic QOBJECT() macro that will work with any QObject type, including QObject itself. The container_of() macro ensures that the object to cast has a QObjectBase_ base field, giving some type safety guarantees. QObject must have no members but QObjectBase_ base, or else QOBJECT() breaks. QObjectBase_ is not a typedef and uses a trailing underscore to make it obvious it is not for normal use and to avoid potential abuse. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180419150145.24795-3-marcandre.lur...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: cb3e7f08aeaab0ab13e629ce8496dca150a449ba https://github.com/qemu/qemu/commit/cb3e7f08aeaab0ab13e629ce8496dca150a449ba Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M block.c M block/blkdebug.c M block/blkverify.c M block/crypto.c M block/gluster.c M block/iscsi.c M block/nbd.c M block/nfs.c M block/null.c M block/nvme.c M block/parallels.c M block/qapi.c M block/qcow.c M block/qcow2.c M block/qed.c M block/quorum.c M block/rbd.c M block/sheepdog.c M block/snapshot.c M block/ssh.c M block/vdi.c M block/vhdx.c M block/vpc.c M block/vvfat.c M block/vxhs.c M blockdev.c M docs/devel/qapi-code-gen.txt M hw/i386/acpi-build.c M hw/ppc/spapr_drc.c M hw/usb/xen-usb.c M include/qapi/qmp/qnull.h M include/qapi/qmp/qobject.h M migration/migration.c M migration/qjson.c M monitor.c M qapi/qapi-dealloc-visitor.c M qapi/qmp-dispatch.c M qapi/qobject-input-visitor.c M qapi/qobject-output-visitor.c M qemu-img.c M qemu-io.c M qga/main.c M qmp.c M qobject/json-parser.c M qobject/qdict.c M qobject/qjson.c M qobject/qlist.c M qom/object.c M qom/object_interfaces.c M scripts/coccinelle/qobject.cocci M scripts/qapi/events.py M target/ppc/translate_init.c M target/s390x/cpu_models.c M tests/ahci-test.c M tests/check-qdict.c M tests/check-qjson.c M tests/check-qlist.c M tests/check-qlit.c M tests/check-qnull.c M tests/check-qnum.c M tests/check-qobject.c M tests/check-qstring.c M tests/cpu-plug-test.c M tests/device-introspect-test.c M tests/drive_del-test.c M tests/libqos/libqos.c M tests/libqos/pci-pc.c M tests/libqtest.c M tests/machine-none-test.c M tests/migration-test.c M tests/numa-test.c M tests/pvpanic-test.c M tests/q35-test.c M tests/qmp-test.c M tests/qom-test.c M tests/tco-test.c M tests/test-char.c M tests/test-keyval.c M tests/test-netfilter.c M tests/test-qemu-opts.c M tests/test-qga.c M tests/test-qmp-cmds.c M tests/test-qmp-event.c M tests/test-qobject-input-visitor.c M tests/test-qobject-output-visitor.c M tests/test-visitor-serialization.c M tests/test-x86-cpuid-compat.c M tests/tmp105-test.c M tests/vhost-user-test.c M tests/virtio-net-test.c M tests/vmgenid-test.c M tests/wdt_ib700-test.c M util/keyval.c M util/qemu-config.c Log Message: ----------- qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF Now that we can safely call QOBJECT() on QObject * as well as its subtypes, we can have macros qobject_ref() / qobject_unref() that work everywhere instead of having to use QINCREF() / QDECREF() for QObject and qobject_incref() / qobject_decref() for its subtypes. The replacement is mechanical, except I broke a long line, and added a cast in monitor_qmp_cleanup_req_queue_locked(). Unlike qobject_decref(), qobject_unref() doesn't accept void *. Note that the new macros evaluate their argument exactly once, thus no need to shout them. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180419150145.24795-4-marcandre.lur...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> [Rebased, semantic conflict resolved, commit message improved] Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: f5a74a5a50387c6f980b2e2f94f062487a1826da https://github.com/qemu/qemu/commit/f5a74a5a50387c6f980b2e2f94f062487a1826da Author: Marc-André Lureau <marcandre.lur...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M block.c M block/blkdebug.c M block/blkverify.c M block/null.c M block/nvme.c M block/quorum.c M include/qapi/qmp/qnull.h M include/qapi/qmp/qobject.h M monitor.c M qapi/qobject-input-visitor.c M qapi/qobject-output-visitor.c M qobject/qdict.c Log Message: ----------- qobject: Modify qobject_ref() to return obj For convenience and clarity, make it possible to call qobject_ref() at the time when the reference is associated with a variable, or argument, by making qobject_ref() return the same pointer as given. Use that to simplify the callers. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180419150145.24795-5-marcandre.lur...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> [Useless change to qobject_ref_impl() dropped, commit message improved slightly] Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: 96054f56396eaa0b9b5c681fc3e42a0004b17ade https://github.com/qemu/qemu/commit/96054f56396eaa0b9b5c681fc3e42a0004b17ade Author: Laszlo Ersek <ler...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M cpus.c M qapi/misc.json Log Message: ----------- qapi: fill in CpuInfoFast.arch in query-cpus-fast * Commit ca230ff33f89 added the @arch field to @CpuInfoFast, but it failed to set the new field in qmp_query_cpus_fast(), when TARGET_S390X was not defined. The updated @query-cpus-fast example in "qapi-schema.json" showed "arch":"x86" only because qmp_query_cpus_fast() calls g_malloc0() to allocate @CpuInfoFast, and the CPU_INFO_ARCH_X86 enum constant is generated with value 0. All @arch values other than @s390 implied the @CpuInfoOther sub-struct for @CpuInfoFast -- at the time of writing the patch --, thus no fields other than @arch needed to be set when TARGET_S390X was not defined. Set @arch now, by copying the corresponding assignments from qmp_query_cpus(). * Commit 25fa194b7b11 added the @riscv enum constant to @CpuInfoArch (used in both @CpuInfo and @CpuInfoFast -- the return types of the @query-cpus and @query-cpus-fast commands, respectively), and assigned, in both return structures, the @CpuInfoRISCV sub-structure to the new enum value. However, qmp_query_cpus_fast() would not populate either the @arch field or the @CpuInfoRISCV sub-structure, when TARGET_RISCV was defined; only qmp_query_cpus() would. Assign @CpuInfoOther to the @riscv enum constant in @CpuInfoFast, and populate only the @arch field in qmp_query_cpus_fast(). Getting CPU state without interrupting KVM is an exceptional thing that only S390X does currently. Quoting Cornelia Huck <coh...@redhat.com>, "s390x is exceptional in that it has state in QEMU that is actually interesting for upper layers and can be retrieved without performance penalty". See also <https://www.redhat.com/archives/libvir-list/2018-February/msg00121.html>. Cc: Cornelia Huck <coh...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Cc: Viktor VM Mihajlovski <mihaj...@linux.vnet.ibm.com> Cc: qemu-sta...@nongnu.org Fixes: ca230ff33f89bf7102cbfbc2328716da6750aaed Fixes: 25fa194b7b11901561532e435beb83d046899f7a Signed-off-by: Laszlo Ersek <ler...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Reviewed-by: Cornelia Huck <coh...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Message-Id: <20180427192852.15013-2-ler...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: 9a801c7d6c8fd927df915f2ac3eacd306e8fc334 https://github.com/qemu/qemu/commit/9a801c7d6c8fd927df915f2ac3eacd306e8fc334 Author: Laszlo Ersek <ler...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M qapi/common.json M scripts/qapi/common.py Log Message: ----------- qapi: add SysEmuTarget to "common.json" We'll soon need an enumeration type that lists all the softmmu targets that QEMU (the project) supports. Introduce @SysEmuTarget to "common.json". The enum constant @x86_64 doesn't match the QAPI convention of preferring hyphen ("-") over underscore ("_"). This is intentional; the @SysEmuTarget constants are supposed to produce QEMU executable names when stringified and appended to the "qemu-system-" prefix. Put differently, the replacement text of the TARGET_NAME preprocessor macro must be possible to look up in the list of (stringified) enum constants. Like other enum types, @SysEmuTarget too can be used for discriminator fields in unions. For the @i386 constant, a C-language union member called "i386" would be generated. On mingw build hosts, "i386" is a macro however. Add "i386" to "polluted_words" at once. Cc: "Daniel P. Berrange" <berra...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Signed-off-by: Laszlo Ersek <ler...@redhat.com> Message-Id: <20180427192852.15013-3-ler...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: b47aa7b3d44dcedf7bf541563f70704f82f500d0 https://github.com/qemu/qemu/commit/b47aa7b3d44dcedf7bf541563f70704f82f500d0 Author: Laszlo Ersek <ler...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M arch_init.c M qapi/misc.json Log Message: ----------- qapi: change the type of TargetInfo.arch from string to enum SysEmuTarget Now that we have @SysEmuTarget, it makes sense to restrict @TargetInfo.@arch to valid sysemu targets at the schema level. Cc: "Daniel P. Berrange" <berra...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Signed-off-by: Laszlo Ersek <ler...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180427192852.15013-4-ler...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: daa9d2bc6d73618bc230787ddfa821a6a6560fc2 https://github.com/qemu/qemu/commit/daa9d2bc6d73618bc230787ddfa821a6a6560fc2 Author: Laszlo Ersek <ler...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M cpus.c M qapi/misc.json Log Message: ----------- qapi: discriminate CpuInfoFast on SysEmuTarget, not CpuInfoArch Add a new field @target (of type @SysEmuTarget) to the output of the @query-cpus-fast command, which provides more information about the emulation target than the field @arch (of type @CpuInfoArch). Make @target the new discriminator for the @CpuInfoFast return structure. Keep @arch for compatibility. Cc: "Daniel P. Berrange" <berra...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Signed-off-by: Laszlo Ersek <ler...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Message-Id: <20180427192852.15013-5-ler...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: 6ffa3ab453b431ec047ff1fc87120059b5266014 https://github.com/qemu/qemu/commit/6ffa3ab453b431ec047ff1fc87120059b5266014 Author: Laszlo Ersek <ler...@redhat.com> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M qapi/misc.json M qemu-doc.texi Log Message: ----------- qapi: deprecate CpuInfoFast.arch The TARGET_BASE_ARCH values from "configure" don't all map to the @CpuInfoArch enum constants; in particular "s390x" from the former does not match @s390 in the latter. Clients are known to rely on the @s390 constant specifically, so we can't change it silently. Instead, deprecate the @CpuInfoFast.@arch member (in favor of @CpuInfoFast.@target) using the regular deprecation process. (No deprecation reminder is added to sysemu_target_to_cpuinfo_arch(): once @CpuInfoFast.@arch is removed, the assignment expression that calls sysemu_target_to_cpuinfo_arch() from qmp_query_cpus_fast() will have to disappear; in turn the static function left without callers will also break the build, thus it'll have to go.) Cc: "Daniel P. Berrange" <berra...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Signed-off-by: Laszlo Ersek <ler...@redhat.com> Message-Id: <20180427192852.15013-6-ler...@redhat.com> Reviewed-by: Eric Blake <ebl...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Commit: 7c867af89a43e4be56ea25dd9691196eb1818fe6 https://github.com/qemu/qemu/commit/7c867af89a43e4be56ea25dd9691196eb1818fe6 Author: Peter Maydell <peter.mayd...@linaro.org> Date: 2018-05-04 (Fri, 04 May 2018) Changed paths: M arch_init.c M block.c M block/blkdebug.c M block/blkverify.c M block/crypto.c M block/gluster.c M block/iscsi.c M block/nbd.c M block/nfs.c M block/null.c M block/nvme.c M block/parallels.c M block/qapi.c M block/qcow.c M block/qcow2.c M block/qed.c M block/quorum.c M block/rbd.c M block/sheepdog.c M block/snapshot.c M block/ssh.c M block/vdi.c M block/vhdx.c M block/vpc.c M block/vvfat.c M block/vxhs.c M blockdev.c M cpus.c M docs/devel/qapi-code-gen.txt M hw/i386/acpi-build.c M hw/ppc/spapr_drc.c M hw/usb/xen-usb.c M include/qapi/qmp/qbool.h M include/qapi/qmp/qdict.h M include/qapi/qmp/qlist.h M include/qapi/qmp/qnull.h M include/qapi/qmp/qnum.h M include/qapi/qmp/qobject.h M include/qapi/qmp/qstring.h M migration/migration.c M migration/qjson.c M monitor.c M qapi/common.json M qapi/misc.json M qapi/qapi-dealloc-visitor.c M qapi/qmp-dispatch.c M qapi/qobject-input-visitor.c M qapi/qobject-output-visitor.c M qemu-doc.texi M qemu-img.c M qemu-io.c M qga/main.c M qmp.c M qobject/json-parser.c M qobject/qdict.c M qobject/qjson.c M qobject/qlist.c M qobject/qobject.c M qom/object.c M qom/object_interfaces.c M scripts/coccinelle/qobject.cocci M scripts/qapi/common.py M scripts/qapi/events.py M target/ppc/translate_init.c M target/s390x/cpu_models.c M tests/ahci-test.c M tests/check-qdict.c M tests/check-qjson.c M tests/check-qlist.c M tests/check-qlit.c M tests/check-qnull.c M tests/check-qnum.c M tests/check-qobject.c M tests/check-qstring.c M tests/cpu-plug-test.c M tests/device-introspect-test.c M tests/drive_del-test.c M tests/libqos/libqos.c M tests/libqos/pci-pc.c M tests/libqtest.c M tests/machine-none-test.c M tests/migration-test.c M tests/numa-test.c M tests/pvpanic-test.c M tests/q35-test.c M tests/qmp-test.c M tests/qom-test.c M tests/tco-test.c M tests/test-char.c M tests/test-keyval.c M tests/test-netfilter.c M tests/test-qemu-opts.c M tests/test-qga.c M tests/test-qmp-cmds.c M tests/test-qmp-event.c M tests/test-qobject-input-visitor.c M tests/test-qobject-output-visitor.c M tests/test-visitor-serialization.c M tests/test-x86-cpuid-compat.c M tests/tmp105-test.c M tests/vhost-user-test.c M tests/virtio-net-test.c M tests/vmgenid-test.c M tests/wdt_ib700-test.c M util/keyval.c M util/qemu-config.c Log Message: ----------- Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2018-05-04' into staging QAPI patches for 2018-05-04 # gpg: Signature made Fri 04 May 2018 08:59:16 BST # gpg: using RSA key 3870B400EB918653 # gpg: Good signature from "Markus Armbruster <arm...@redhat.com>" # gpg: aka "Markus Armbruster <arm...@pond.sub.org>" # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653 * remotes/armbru/tags/pull-qapi-2018-05-04: qapi: deprecate CpuInfoFast.arch qapi: discriminate CpuInfoFast on SysEmuTarget, not CpuInfoArch qapi: change the type of TargetInfo.arch from string to enum SysEmuTarget qapi: add SysEmuTarget to "common.json" qapi: fill in CpuInfoFast.arch in query-cpus-fast qobject: Modify qobject_ref() to return obj qobject: Replace qobject_incref/QINCREF qobject_decref/QDECREF qobject: use a QObjectBase_ struct qobject: Ensure base is at offset 0 qobject: Use qobject_to() instead of type cast Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> Compare: https://github.com/qemu/qemu/compare/46e04dacd3a6...7c867af89a43 **NOTE:** This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019.