mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
arm-devs queue
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABCAAGBQJSCL/GAAoJEDwlJe0UNgzeTi8P/1nnRgEJhfz3lO24+WcyJuU9 cFZzvl0+uQ0MSxOyOK/iXX1I3iwYu5EwEUj2DCaooQq9qT8Voi5zvpneI04caGRs FHLNlu5WfcbqKLGo2TtGCol8Viuybk8nO2c18d/BPz5gqbzm0+Q1EMHHTHG16z95 CSD4lgXjVVpq1/t1F7mYU3W4Lsn/bH1lfAsnH7I2UGA2iR55J7iVEG0DmS4D70IE dL4x8clCRyaIozFvJZFjKb1pfEYe60TLsXdq4c6uSL9yHyMDA3QDWVgIMom07kiK GzC9m8IBrT3YKgdSCf/tqXSWeXDmvayQhSNY/x2HUukTFcF5rqvCjFqKcpwR4q5X y0XSfcRvLGwN9gZgXoUc355GFEAe2Sxjfxq44WgMh8lt6K0NWPsNZ3+pflALkP2d /h8DHRp2gyUZVxGttSD56QK613+BQoXQV+rGw54kN7TC5auQJag5F/c2k6riWjFH NYj1ZUf+BsEbJCxG/5phwOPlJ6gTqxDqe+RGlKyViMfjiSsdLClXtKy7S+L7rqU3 1c7as4yChM7z4kyXsB3FKNg8MU1/7E9Pax1nC6y7EkgidT3PnGjfAL1vZlyRM/Gj Liad+NH3ZdSEuF0gHe2eoFohCtQbgRsYdOVQ4O15UMkyae5fAqxKTq/gssMGqYg4 +NUfWCTEUobpMpvRbCjy =oxPI -----END PGP SIGNATURE----- Merge remote-tracking branch 'pmaydell/tags/pull-arm-devs-20130812' into staging arm-devs queue # gpg: Signature made Mon 12 Aug 2013 05:58:14 AM CDT using RSA key ID 14360CDE # gpg: Can't check signature: public key not found # By Peter Maydell # Via Peter Maydell * pmaydell/tags/pull-arm-devs-20130812: hw/virtio/virtio-mmio: Make QueueNumMax read 0 for unavailable queues hw/virtio/virtio: Don't allow guests to add/remove queues Message-id: 1376305261-29561-1-git-send-email-peter.maydell@linaro.org Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
commit
6624fecd8e
2 changed files with 12 additions and 3 deletions
|
@ -151,6 +151,9 @@ static uint64_t virtio_mmio_read(void *opaque, hwaddr offset, unsigned size)
|
|||
}
|
||||
return proxy->host_features;
|
||||
case VIRTIO_MMIO_QUEUENUMMAX:
|
||||
if (!virtio_queue_get_num(vdev, vdev->queue_sel)) {
|
||||
return 0;
|
||||
}
|
||||
return VIRTQUEUE_MAX_SIZE;
|
||||
case VIRTIO_MMIO_QUEUEPFN:
|
||||
return virtio_queue_get_addr(vdev, vdev->queue_sel)
|
||||
|
|
|
@ -673,10 +673,16 @@ hwaddr virtio_queue_get_addr(VirtIODevice *vdev, int n)
|
|||
|
||||
void virtio_queue_set_num(VirtIODevice *vdev, int n, int num)
|
||||
{
|
||||
if (num <= VIRTQUEUE_MAX_SIZE) {
|
||||
vdev->vq[n].vring.num = num;
|
||||
virtqueue_init(&vdev->vq[n]);
|
||||
/* Don't allow guest to flip queue between existent and
|
||||
* nonexistent states, or to set it to an invalid size.
|
||||
*/
|
||||
if (!!num != !!vdev->vq[n].vring.num ||
|
||||
num > VIRTQUEUE_MAX_SIZE ||
|
||||
num < 0) {
|
||||
return;
|
||||
}
|
||||
vdev->vq[n].vring.num = num;
|
||||
virtqueue_init(&vdev->vq[n]);
|
||||
}
|
||||
|
||||
int virtio_queue_get_num(VirtIODevice *vdev, int n)
|
||||
|
|
Loading…
Reference in a new issue