From patchwork Sun Apr 14 12:07:00 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: fred.konrad@greensocs.com X-Patchwork-Id: 236429 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DD0E82C00C6 for ; Sun, 14 Apr 2013 22:07:53 +1000 (EST) Received: from localhost ([::1]:55894 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URLip-0000Zd-Ve for incoming@patchwork.ozlabs.org; Sun, 14 Apr 2013 08:07:52 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37261) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URLiR-0000V0-4n for qemu-devel@nongnu.org; Sun, 14 Apr 2013 08:07:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URLiO-0008L1-DZ for qemu-devel@nongnu.org; Sun, 14 Apr 2013 08:07:27 -0400 Received: from greensocs.com ([87.106.252.221]:39060 helo=s15328186.onlinehome-server.info) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URLiO-0008Jw-2G for qemu-devel@nongnu.org; Sun, 14 Apr 2013 08:07:24 -0400 Received: from localhost (unknown [127.0.0.1]) by s15328186.onlinehome-server.info (Postfix) with ESMTP id 2D90A400091; Sun, 14 Apr 2013 12:07:22 +0000 (UTC) Received: from s15328186.onlinehome-server.info ([127.0.0.1]) by localhost (s15328186.onlinehome-server.info [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PMM0W5l-BB+U; Sun, 14 Apr 2013 14:07:16 +0200 (CEST) Received: by s15328186.onlinehome-server.info (Postfix, from userid 491) id 89C3140B250; Sun, 14 Apr 2013 14:07:16 +0200 (CEST) Received: from compaq.katmai.xl.cx.katmai.xl.cx (lan31-11-83-155-143-136.fbx.proxad.net [83.155.143.136]) by s15328186.onlinehome-server.info (Postfix) with ESMTPSA id 02C83400091; Sun, 14 Apr 2013 14:07:14 +0200 (CEST) From: fred.konrad@greensocs.com To: qemu-devel@nongnu.org, aliguori@us.ibm.com Date: Sun, 14 Apr 2013 14:07:00 +0200 Message-Id: <1365941220-8114-1-git-send-email-fred.konrad@greensocs.com> X-Mailer: git-send-email 1.7.11.7 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 87.106.252.221 Cc: cornelia.huck@de.ibm.com, peter.maydell@linaro.org, Luiz Capitulino , mark.burton@greensocs.com, fred.konrad@greensocs.com Subject: [Qemu-devel] [PATCH v2] virtio-balloon: fix dynamic properties. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: KONRAD Frederic To keep compatibility with the old virtio-balloon-x, add the dynamic properties to virtio-balloon-pci and virtio-balloon-ccw. Cc: Luiz Capitulino Signed-off-by: KONRAD Frederic Changes v1 -> v2: * Use public API instead of exposing the "private" functions. --- hw/s390x/virtio-ccw.c | 34 ++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 4dec0cd..3b5a1f9 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -621,11 +621,45 @@ static int virtio_ccw_balloon_init(VirtioCcwDevice *ccw_dev) return virtio_ccw_device_init(ccw_dev, VIRTIO_DEVICE(vdev)); } +static void balloon_ccw_stats_get_all(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonCcw *dev = opaque; + object_property_get(OBJECT(&dev->vdev), v, "guest-stats", errp); +} + +static void balloon_ccw_stats_get_poll_interval(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonCcw *dev = opaque; + object_property_get(OBJECT(&dev->vdev), v, "guest-stats-polling-interval", + errp); +} + +static void balloon_ccw_stats_set_poll_interval(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonCcw *dev = opaque; + object_property_set(OBJECT(&dev->vdev), v, "guest-stats-polling-interval", + errp); +} + static void virtio_ccw_balloon_instance_init(Object *obj) { VirtIOBalloonCcw *dev = VIRTIO_BALLOON_CCW(obj); object_initialize(OBJECT(&dev->vdev), TYPE_VIRTIO_BALLOON); object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL); + + object_property_add(obj, "guest-stats", "guest statistics", + balloon_ccw_stats_get_all, NULL, NULL, dev, NULL); + + object_property_add(obj, "guest-stats-polling-interval", "int", + balloon_ccw_stats_get_poll_interval, + balloon_ccw_stats_set_poll_interval, + NULL, dev, NULL); } static int virtio_ccw_scsi_init(VirtioCcwDevice *ccw_dev) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 2b22588..db0eefd 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -33,6 +33,7 @@ #include "virtio-pci.h" #include "qemu/range.h" #include "hw/virtio/virtio-bus.h" +#include "qapi/visitor.h" /* from Linux's linux/virtio_pci.h */ @@ -1409,6 +1410,32 @@ static const TypeInfo virtio_scsi_pci_info = { /* virtio-balloon-pci */ +static void balloon_pci_stats_get_all(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonPCI *dev = opaque; + object_property_get(OBJECT(&dev->vdev), v, "guest-stats", errp); +} + +static void balloon_pci_stats_get_poll_interval(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonPCI *dev = opaque; + object_property_get(OBJECT(&dev->vdev), v, "guest-stats-polling-interval", + errp); +} + +static void balloon_pci_stats_set_poll_interval(Object *obj, struct Visitor *v, + void *opaque, const char *name, + Error **errp) +{ + VirtIOBalloonPCI *dev = opaque; + object_property_set(OBJECT(&dev->vdev), v, "guest-stats-polling-interval", + errp); +} + static Property virtio_balloon_pci_properties[] = { DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), @@ -1450,6 +1477,15 @@ static void virtio_balloon_pci_instance_init(Object *obj) VirtIOBalloonPCI *dev = VIRTIO_BALLOON_PCI(obj); object_initialize(OBJECT(&dev->vdev), TYPE_VIRTIO_BALLOON); object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL); + + object_property_add(obj, "guest-stats", "guest statistics", + balloon_pci_stats_get_all, NULL, NULL, dev, + NULL); + + object_property_add(obj, "guest-stats-polling-interval", "int", + balloon_pci_stats_get_poll_interval, + balloon_pci_stats_set_poll_interval, + NULL, dev, NULL); } static const TypeInfo virtio_balloon_pci_info = {