[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 2/5] virtio-scsi: introduce a constant for fixed virtqueue
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v4 2/5] virtio-scsi: introduce a constant for fixed virtqueues |
Date: |
Thu, 28 May 2020 17:22:33 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
On 5/27/20 12:29 PM, Stefan Hajnoczi wrote:
> The event and control virtqueues are always present, regardless of the
> multi-queue configuration. Define a constant so that virtqueue number
> calculations are easier to read.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
> ---
> include/hw/virtio/virtio-scsi.h | 3 +++
> hw/scsi/vhost-user-scsi.c | 2 +-
> hw/scsi/virtio-scsi.c | 7 ++++---
> hw/virtio/vhost-scsi-pci.c | 3 ++-
> hw/virtio/vhost-user-scsi-pci.c | 3 ++-
> hw/virtio/virtio-scsi-pci.c | 3 ++-
> 6 files changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
> index 24e768909d..9f293bcb80 100644
> --- a/include/hw/virtio/virtio-scsi.h
> +++ b/include/hw/virtio/virtio-scsi.h
> @@ -36,6 +36,9 @@
> #define VIRTIO_SCSI_MAX_TARGET 255
> #define VIRTIO_SCSI_MAX_LUN 16383
>
> +/* Number of virtqueues that are always present */
> +#define VIRTIO_SCSI_VQ_NUM_FIXED 2
> +
> typedef struct virtio_scsi_cmd_req VirtIOSCSICmdReq;
> typedef struct virtio_scsi_cmd_resp VirtIOSCSICmdResp;
> typedef struct virtio_scsi_ctrl_tmf_req VirtIOSCSICtrlTMFReq;
> diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c
> index cbb5d97599..f8bd158c31 100644
> --- a/hw/scsi/vhost-user-scsi.c
> +++ b/hw/scsi/vhost-user-scsi.c
> @@ -115,7 +115,7 @@ static void vhost_user_scsi_realize(DeviceState *dev,
> Error **errp)
> goto free_virtio;
> }
>
> - vsc->dev.nvqs = 2 + vs->conf.num_queues;
> + vsc->dev.nvqs = VIRTIO_SCSI_VQ_NUM_FIXED + vs->conf.num_queues;
> vsc->dev.vqs = g_new0(struct vhost_virtqueue, vsc->dev.nvqs);
> vsc->dev.vq_index = 0;
> vsc->dev.backend_features = 0;
> diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
> index 9b72094a61..f3d60683bd 100644
> --- a/hw/scsi/virtio-scsi.c
> +++ b/hw/scsi/virtio-scsi.c
> @@ -191,7 +191,7 @@ static void virtio_scsi_save_request(QEMUFile *f,
> SCSIRequest *sreq)
> VirtIOSCSIReq *req = sreq->hba_private;
> VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(req->dev);
> VirtIODevice *vdev = VIRTIO_DEVICE(req->dev);
> - uint32_t n = virtio_get_queue_index(req->vq) - 2;
> + uint32_t n = virtio_get_queue_index(req->vq) - VIRTIO_SCSI_VQ_NUM_FIXED;
>
> assert(n < vs->conf.num_queues);
> qemu_put_be32s(f, &n);
> @@ -892,10 +892,11 @@ void virtio_scsi_common_realize(DeviceState *dev,
> sizeof(VirtIOSCSIConfig));
>
> if (s->conf.num_queues == 0 ||
> - s->conf.num_queues > VIRTIO_QUEUE_MAX - 2) {
> + s->conf.num_queues > VIRTIO_QUEUE_MAX -
> VIRTIO_SCSI_VQ_NUM_FIXED) {
> error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
> "must be a positive integer less than %d.",
> - s->conf.num_queues, VIRTIO_QUEUE_MAX - 2);
> + s->conf.num_queues,
> + VIRTIO_QUEUE_MAX - VIRTIO_SCSI_VQ_NUM_FIXED);
> virtio_cleanup(vdev);
> return;
> }
> diff --git a/hw/virtio/vhost-scsi-pci.c b/hw/virtio/vhost-scsi-pci.c
> index 5da6bb6449..2b25db9a3c 100644
> --- a/hw/virtio/vhost-scsi-pci.c
> +++ b/hw/virtio/vhost-scsi-pci.c
> @@ -50,7 +50,8 @@ static void vhost_scsi_pci_realize(VirtIOPCIProxy
> *vpci_dev, Error **errp)
> VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
>
> if (vpci_dev->nvectors == DEV_NVECTORS_UNSPECIFIED) {
> - vpci_dev->nvectors = vs->conf.num_queues + 3;
> + vpci_dev->nvectors = vs->conf.num_queues +
> + VIRTIO_SCSI_VQ_NUM_FIXED + 1;
> }
>
> qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus));
> diff --git a/hw/virtio/vhost-user-scsi-pci.c b/hw/virtio/vhost-user-scsi-pci.c
> index 6f3375fe55..80710ab170 100644
> --- a/hw/virtio/vhost-user-scsi-pci.c
> +++ b/hw/virtio/vhost-user-scsi-pci.c
> @@ -56,7 +56,8 @@ static void vhost_user_scsi_pci_realize(VirtIOPCIProxy
> *vpci_dev, Error **errp)
> VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
>
> if (vpci_dev->nvectors == DEV_NVECTORS_UNSPECIFIED) {
> - vpci_dev->nvectors = vs->conf.num_queues + 3;
> + vpci_dev->nvectors = vs->conf.num_queues +
> + VIRTIO_SCSI_VQ_NUM_FIXED + 1;
> }
>
> qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus));
> diff --git a/hw/virtio/virtio-scsi-pci.c b/hw/virtio/virtio-scsi-pci.c
> index e82e7e5680..c52d68053a 100644
> --- a/hw/virtio/virtio-scsi-pci.c
> +++ b/hw/virtio/virtio-scsi-pci.c
> @@ -51,7 +51,8 @@ static void virtio_scsi_pci_realize(VirtIOPCIProxy
> *vpci_dev, Error **errp)
> char *bus_name;
>
> if (vpci_dev->nvectors == DEV_NVECTORS_UNSPECIFIED) {
> - vpci_dev->nvectors = vs->conf.num_queues + 3;
> + vpci_dev->nvectors = vs->conf.num_queues +
> + VIRTIO_SCSI_VQ_NUM_FIXED + 1;
> }
>
> /*
>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
- [PATCH v4 0/5] virtio-pci: enable blk and scsi multi-queue by default, Stefan Hajnoczi, 2020/05/27
- [PATCH v4 1/5] virtio-pci: add virtio_pci_optimal_num_queues() helper, Stefan Hajnoczi, 2020/05/27
- [PATCH v4 2/5] virtio-scsi: introduce a constant for fixed virtqueues, Stefan Hajnoczi, 2020/05/27
- [PATCH v4 3/5] virtio-scsi: default num_queues to -smp N, Stefan Hajnoczi, 2020/05/27
- [PATCH v4 4/5] virtio-blk: default num_queues to -smp N, Stefan Hajnoczi, 2020/05/27
- [PATCH v4 5/5] vhost-user-blk: default num_queues to -smp N, Stefan Hajnoczi, 2020/05/27