[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/7] virtio: use address_space_map/unmap to acce
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH 3/7] virtio: use address_space_map/unmap to access descriptors |
Date: |
Tue, 24 Jan 2017 12:30:31 +0000 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Fri, Jan 20, 2017 at 06:07:53PM +0100, Paolo Bonzini wrote:
> @@ -455,10 +455,18 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned
> int *in_bytes,
> goto err;
> }
>
> - desc_pa = vq->vring.desc;
> - vring_desc_read(vdev, &desc, desc_pa, i);
> + len = max * sizeof(VRingDesc);
> + desc_ptr = address_space_map(vdev->dma_as, vq->vring.desc, &len,
> false);
> + if (len < max * sizeof(VRingDesc)) {
> + virtio_error(vdev, "Cannot map descriptor ring");
> + goto err;
> + }
> +
> + vring_desc_read(vdev, &desc, desc_ptr, i);
>
> if (desc.flags & VRING_DESC_F_INDIRECT) {
> + address_space_unmap(vdev->dma_as, desc_ptr, len, false, 0);
Missing "dest_ptr = NULL" to prevent double unmap if the next goto err
is taken.
> @@ -689,18 +706,33 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
> }
>
> i = head;
> - vring_desc_read(vdev, &desc, desc_pa, i);
> +
> + len = max * sizeof(VRingDesc);
> + desc_ptr = address_space_map(vdev->dma_as, vq->vring.desc, &len, false);
> + if (len < max * sizeof(VRingDesc)) {
> + virtio_error(vdev, "Cannot map descriptor ring");
> + return NULL;
desc_ptr still needs to be unmapped if non-NULL. The same applies
below in virtqueue_pop().
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH 0/7] virtio: use MemoryRegionCache for descriptors and rings, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 2/7] virtio: add virtio_*_phys_cached, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 1/7] virtio: make virtio_should_notify static, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 4/7] virtio: use MemoryRegionCache to access descriptors, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 3/7] virtio: use address_space_map/unmap to access descriptors, Paolo Bonzini, 2017/01/20
- Re: [Qemu-devel] [PATCH 3/7] virtio: use address_space_map/unmap to access descriptors,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH 5/7] virtio: add MemoryListener to cache ring translations, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 6/7] virtio: use VRingMemoryRegionCaches for descriptor ring, Paolo Bonzini, 2017/01/20
- [Qemu-devel] [PATCH 7/7] virtio: use VRingMemoryRegionCaches for avail and used rings, Paolo Bonzini, 2017/01/20
- Re: [Qemu-devel] [PATCH 0/7] virtio: use MemoryRegionCache for descriptors and rings, Michael S. Tsirkin, 2017/01/20
- Re: [Qemu-devel] [PATCH 0/7] virtio: use MemoryRegionCache for descriptors and rings, Michael S. Tsirkin, 2017/01/24