|
From: | Maxime Coquelin |
Subject: | Re: [Qemu-stable] [PATCH v2 1/2] virtio: Add function to check whether backend supports VIRTIO_1 |
Date: | Fri, 9 Sep 2016 19:49:13 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 09/09/2016 07:47 PM, Michael S. Tsirkin wrote:
On Fri, Sep 09, 2016 at 08:00:31PM +0300, Marcel Apfelbaum wrote:On 09/09/2016 04:10 PM, Maxime Coquelin wrote:This patch adds virtio_test_backend_virtio_1() function to check whether backend supports VIRTIO_F_VERSION_1 before the negociation takes place. Cc: Cornelia Huck <address@hidden> Cc: Marcel Apfelbaum <address@hidden> Cc: Michael S. Tsirkin <address@hidden> Cc: address@hidden Signed-off-by: Maxime Coquelin <address@hidden> --- hw/virtio/virtio.c | 13 +++++++++++++ include/hw/virtio/virtio.h | 1 + 2 files changed, 14 insertions(+) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 74c085c..8b30b69 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1481,6 +1481,19 @@ void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t size) virtio_save(VIRTIO_DEVICE(opaque), f); } +bool virtio_test_backend_virtio_1(VirtIODevice *vdev, Error **errp) +{ + VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev); + uint64_t feature; +I would set "feature = 0" even if doesn't really matter. Anyway: Reviewed-by: Marcel Apfelbaum <address@hidden> Thanks, Marcelwhy wouldn't it matter? Looks like an uninitialized variable to me.
Oh yes, you are right, it should be initialized. Just wait confirmation from Michael on the RFC before sending a v3. Thanks, Maxime
+ virtio_add_feature(&feature, VIRTIO_F_VERSION_1); + + assert(k->get_features != NULL); + feature = k->get_features(vdev, feature, errp); + + return virtio_has_feature(feature, VIRTIO_F_VERSION_1); +} + static int virtio_set_features_nocheck(VirtIODevice *vdev, uint64_t val) { VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev); diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index d2490c1..3a31754 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -235,6 +235,7 @@ int virtio_set_status(VirtIODevice *vdev, uint8_t val); void virtio_reset(void *opaque); void virtio_update_irq(VirtIODevice *vdev); int virtio_set_features(VirtIODevice *vdev, uint64_t val); +bool virtio_test_backend_virtio_1(VirtIODevice *vdev, Error **errp); /* Base devices. */ typedef struct VirtIOBlkConf VirtIOBlkConf;
[Prev in Thread] | Current Thread | [Next in Thread] |