Commit 8dfbaa6a authored by Jason Wang's avatar Jason Wang Committed by Michael S. Tsirkin
Browse files

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: default avatarJason Wang <jasowang@redhat.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 8ad176aa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ static int virtio_ccw_hcall_notify(const uint64_t *args)
    if (!sch || !css_subch_visible(sch)) {
        return -EINVAL;
    }
    if (queue >= VIRTIO_PCI_QUEUE_MAX) {
    if (queue >= VIRTIO_CCW_QUEUE_MAX) {
        return -EINVAL;
    }
    virtio_queue_notify(virtio_ccw_get_vdev(sch), queue);
+6 −6
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ static void virtio_ccw_start_ioeventfd(VirtioCcwDevice *dev)
        return;
    }
    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)) {
            continue;
        }
@@ -205,7 +205,7 @@ static void virtio_ccw_stop_ioeventfd(VirtioCcwDevice *dev)
        return;
    }
    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)) {
            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);

    if (index >= VIRTIO_PCI_QUEUE_MAX) {
    if (index >= VIRTIO_CCW_QUEUE_MAX) {
        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);
    }
    /* tell notify handler in case of config change */
    vdev->config_vector = VIRTIO_PCI_QUEUE_MAX;
    vdev->config_vector = VIRTIO_CCW_QUEUE_MAX;
    return 0;
}

@@ -573,7 +573,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
                                                    ccw.cda,
                                                    MEMTXATTRS_UNSPECIFIED,
                                                    NULL);
            if (vq_config.index >= VIRTIO_PCI_QUEUE_MAX) {
            if (vq_config.index >= VIRTIO_CCW_QUEUE_MAX) {
                ret = -EINVAL;
                break;
            }
@@ -1025,7 +1025,7 @@ static void virtio_ccw_notify(DeviceState *d, uint16_t vector)
        return;
    }

    if (vector < VIRTIO_PCI_QUEUE_MAX) {
    if (vector < VIRTIO_CCW_QUEUE_MAX) {
        if (!dev->indicators) {
            return;
        }
+4 −1
Original line number Diff line number Diff line
@@ -17,10 +17,13 @@
#include "hw/s390x/adapter.h"
#include "hw/virtio/virtio.h"

#define ADAPTER_ROUTES_MAX_GSI 64
#define VIRTIO_CCW_QUEUE_MAX ADAPTER_ROUTES_MAX_GSI

typedef struct AdapterRoutes {
    AdapterInfo adapter;
    int num_routes;
    int gsi[VIRTIO_PCI_QUEUE_MAX];
    int gsi[ADAPTER_ROUTES_MAX_GSI];
} AdapterRoutes;

#define TYPE_S390_FLIC_COMMON "s390-flic"