Commit 77ae0b2a authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Cornelia Huck
Browse files

s390-virtio: clear {used,avail}_event_idx on reset as well



The old s390-virtio transport clears the vring used/avail indices in
the shared area on reset. When we enabled event_idx for virtio-blk, we
noticed that this is not enough: We also need to clear the published
used/avail event indices, or reboot will fail.

Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
parent f50616a8
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -77,10 +77,18 @@ void s390_virtio_reset_idx(VirtIOS390Device *dev)
            VIRTIO_VRING_AVAIL_IDX_OFFS;
        address_space_stw(&address_space_memory, idx_addr, 0,
                          MEMTXATTRS_UNSPECIFIED, NULL);
        idx_addr = virtio_queue_get_avail_addr(dev->vdev, i) +
            virtio_queue_get_avail_size(dev->vdev, i);
        address_space_stw(&address_space_memory, idx_addr, 0,
                          MEMTXATTRS_UNSPECIFIED, NULL);
        idx_addr = virtio_queue_get_used_addr(dev->vdev, i) +
            VIRTIO_VRING_USED_IDX_OFFS;
        address_space_stw(&address_space_memory, idx_addr, 0,
                          MEMTXATTRS_UNSPECIFIED, NULL);
        idx_addr = virtio_queue_get_used_addr(dev->vdev, i) +
            virtio_queue_get_used_size(dev->vdev, i);
        address_space_stw(&address_space_memory, idx_addr, 0,
                          MEMTXATTRS_UNSPECIFIED, NULL);
    }
}