virtio-ccw: introduce ccw specific queue limit

Cc: Alexander Graf <agraf@suse.de>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Jason Wang 2015-05-29 14:15:27 +08:00 committed by Michael S. Tsirkin
parent 8ad176aaed
commit 8dfbaa6ac4
3 changed files with 11 additions and 8 deletions

View File

@ -67,7 +67,7 @@ static int virtio_ccw_hcall_notify(const uint64_t *args)
if (!sch || !css_subch_visible(sch)) { if (!sch || !css_subch_visible(sch)) {
return -EINVAL; return -EINVAL;
} }
if (queue >= VIRTIO_PCI_QUEUE_MAX) { if (queue >= VIRTIO_CCW_QUEUE_MAX) {
return -EINVAL; return -EINVAL;
} }
virtio_queue_notify(virtio_ccw_get_vdev(sch), queue); virtio_queue_notify(virtio_ccw_get_vdev(sch), queue);

View File

@ -170,7 +170,7 @@ static void virtio_ccw_start_ioeventfd(VirtioCcwDevice *dev)
return; return;
} }
vdev = virtio_bus_get_device(&dev->bus); vdev = virtio_bus_get_device(&dev->bus);
for (n = 0; n < VIRTIO_PCI_QUEUE_MAX; n++) { for (n = 0; n < VIRTIO_CCW_QUEUE_MAX; n++) {
if (!virtio_queue_get_num(vdev, n)) { if (!virtio_queue_get_num(vdev, n)) {
continue; continue;
} }
@ -205,7 +205,7 @@ static void virtio_ccw_stop_ioeventfd(VirtioCcwDevice *dev)
return; return;
} }
vdev = virtio_bus_get_device(&dev->bus); vdev = virtio_bus_get_device(&dev->bus);
for (n = 0; n < VIRTIO_PCI_QUEUE_MAX; n++) { for (n = 0; n < VIRTIO_CCW_QUEUE_MAX; n++) {
if (!virtio_queue_get_num(vdev, n)) { if (!virtio_queue_get_num(vdev, n)) {
continue; continue;
} }
@ -266,7 +266,7 @@ static int virtio_ccw_set_vqs(SubchDev *sch, uint64_t addr, uint32_t align,
{ {
VirtIODevice *vdev = virtio_ccw_get_vdev(sch); VirtIODevice *vdev = virtio_ccw_get_vdev(sch);
if (index >= VIRTIO_PCI_QUEUE_MAX) { if (index >= VIRTIO_CCW_QUEUE_MAX) {
return -EINVAL; return -EINVAL;
} }
@ -291,7 +291,7 @@ static int virtio_ccw_set_vqs(SubchDev *sch, uint64_t addr, uint32_t align,
virtio_queue_set_vector(vdev, index, index); virtio_queue_set_vector(vdev, index, index);
} }
/* tell notify handler in case of config change */ /* tell notify handler in case of config change */
vdev->config_vector = VIRTIO_PCI_QUEUE_MAX; vdev->config_vector = VIRTIO_CCW_QUEUE_MAX;
return 0; return 0;
} }
@ -573,7 +573,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
ccw.cda, ccw.cda,
MEMTXATTRS_UNSPECIFIED, MEMTXATTRS_UNSPECIFIED,
NULL); NULL);
if (vq_config.index >= VIRTIO_PCI_QUEUE_MAX) { if (vq_config.index >= VIRTIO_CCW_QUEUE_MAX) {
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
@ -1025,7 +1025,7 @@ static void virtio_ccw_notify(DeviceState *d, uint16_t vector)
return; return;
} }
if (vector < VIRTIO_PCI_QUEUE_MAX) { if (vector < VIRTIO_CCW_QUEUE_MAX) {
if (!dev->indicators) { if (!dev->indicators) {
return; return;
} }

View File

@ -17,10 +17,13 @@
#include "hw/s390x/adapter.h" #include "hw/s390x/adapter.h"
#include "hw/virtio/virtio.h" #include "hw/virtio/virtio.h"
#define ADAPTER_ROUTES_MAX_GSI 64
#define VIRTIO_CCW_QUEUE_MAX ADAPTER_ROUTES_MAX_GSI
typedef struct AdapterRoutes { typedef struct AdapterRoutes {
AdapterInfo adapter; AdapterInfo adapter;
int num_routes; int num_routes;
int gsi[VIRTIO_PCI_QUEUE_MAX]; int gsi[ADAPTER_ROUTES_MAX_GSI];
} AdapterRoutes; } AdapterRoutes;
#define TYPE_S390_FLIC_COMMON "s390-flic" #define TYPE_S390_FLIC_COMMON "s390-flic"