static int virtio_ccw_set_vqs(SubchDev *sch, uint64_t addr, uint32_t align,

                              uint16_t index, uint16_t num)

{

    VirtIODevice *vdev = virtio_ccw_get_vdev(sch);



    if (index > VIRTIO_PCI_QUEUE_MAX) {

        return -EINVAL;

    }



    /* Current code in virtio.c relies on 4K alignment. */

    if (addr && (align != 4096)) {

        return -EINVAL;

    }



    if (!vdev) {

        return -EINVAL;

    }



    virtio_queue_set_addr(vdev, index, addr);

    if (!addr) {

        virtio_queue_set_vector(vdev, index, 0);

    } else {

        /* Fail if we don't have a big enough queue. */

        /* TODO: Add interface to handle vring.num changing */

        if (virtio_queue_get_num(vdev, index) > num) {

            return -EINVAL;

        }

        virtio_queue_set_vector(vdev, index, index);

    }

    /* tell notify handler in case of config change */

    vdev->config_vector = VIRTIO_PCI_QUEUE_MAX;

    return 0;

}

static int virtio_ccw_set_vqs(SubchDev *sch, uint64_t addr, uint32_t align,

                              uint16_t index, uint16_t num)

{

    VirtIODevice *vdev = virtio_ccw_get_vdev(sch);



    if (index > VIRTIO_PCI_QUEUE_MAX) {

        return -EINVAL;

    }



    

    if (addr && (align != 4096)) {

        return -EINVAL;

    }



    if (!vdev) {

        return -EINVAL;

    }



    virtio_queue_set_addr(vdev, index, addr);

    if (!addr) {

        virtio_queue_set_vector(vdev, index, 0);

    } else {

        

        

        if (virtio_queue_get_num(vdev, index) > num) {

            return -EINVAL;

        }

        virtio_queue_set_vector(vdev, index, index);

    }

    

    vdev->config_vector = VIRTIO_PCI_QUEUE_MAX;

    return 0;

}

    if (index > VIRTIO_PCI_QUEUE_MAX) {
static int FUNC_0(SubchDev *VAR_0, uint64_t VAR_1, uint32_t VAR_2,

                              uint16_t VAR_3, uint16_t VAR_4)

{

    VirtIODevice *vdev = virtio_ccw_get_vdev(VAR_0);



    if (VAR_3 > VIRTIO_PCI_QUEUE_MAX) {

        return -EINVAL;

    }



    

    if (VAR_1 && (VAR_2 != 4096)) {

        return -EINVAL;

    }



    if (!vdev) {

        return -EINVAL;

    }



    virtio_queue_set_addr(vdev, VAR_3, VAR_1);

    if (!VAR_1) {

        virtio_queue_set_vector(vdev, VAR_3, 0);

    } else {

        

        

        if (virtio_queue_get_num(vdev, VAR_3) > VAR_4) {

            return -EINVAL;

        }

        virtio_queue_set_vector(vdev, VAR_3, VAR_3);

    }

    

    vdev->config_vector = VIRTIO_PCI_QUEUE_MAX;

    return 0;

}

static int FUNC_0(SubchDev *VAR_0, uint64_t VAR_1, uint32_t VAR_2,
uint16_t VAR_3, uint16_t VAR_4)
{ VirtIODevice *vdev = virtio_ccw_get_vdev(VAR_0); if (VAR_3 > VIRTIO_PCI_QUEUE_MAX) { return -EINVAL; } if (VAR_1 && (VAR_2 != 4096)) { return -EINVAL; } if (!vdev) { return -EINVAL; } virtio_queue_set_addr(vdev, VAR_3, VAR_1); if (!VAR_1) { virtio_queue_set_vector(vdev, VAR_3, 0); } else { if (virtio_queue_get_num(vdev, VAR_3) > VAR_4) { return -EINVAL; } virtio_queue_set_vector(vdev, VAR_3, VAR_3); } vdev->config_vector = VIRTIO_PCI_QUEUE_MAX; return 0; }