mirror of
https://github.com/qemu/qemu.git
synced 2024-11-30 15:23:34 +08:00
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: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
f50616a81b
commit
77ae0b2a6e
@ -77,10 +77,18 @@ void s390_virtio_reset_idx(VirtIOS390Device *dev)
|
|||||||
VIRTIO_VRING_AVAIL_IDX_OFFS;
|
VIRTIO_VRING_AVAIL_IDX_OFFS;
|
||||||
address_space_stw(&address_space_memory, idx_addr, 0,
|
address_space_stw(&address_space_memory, idx_addr, 0,
|
||||||
MEMTXATTRS_UNSPECIFIED, NULL);
|
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) +
|
idx_addr = virtio_queue_get_used_addr(dev->vdev, i) +
|
||||||
VIRTIO_VRING_USED_IDX_OFFS;
|
VIRTIO_VRING_USED_IDX_OFFS;
|
||||||
address_space_stw(&address_space_memory, idx_addr, 0,
|
address_space_stw(&address_space_memory, idx_addr, 0,
|
||||||
MEMTXATTRS_UNSPECIFIED, NULL);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user