[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/5] virtio-iommu: Implement RESV_MEM probe request
From: |
Peter Xu |
Subject: |
Re: [PATCH 2/5] virtio-iommu: Implement RESV_MEM probe request |
Date: |
Thu, 7 May 2020 15:40:32 -0400 |
Hi, Eric,
On Thu, May 07, 2020 at 04:31:58PM +0200, Eric Auger wrote:
[...]
> @@ -452,17 +520,33 @@ static void virtio_iommu_handle_command(VirtIODevice
> *vdev, VirtQueue *vq)
> case VIRTIO_IOMMU_T_UNMAP:
> tail.status = virtio_iommu_handle_unmap(s, iov, iov_cnt);
> break;
> + case VIRTIO_IOMMU_T_PROBE:
> + {
> + struct virtio_iommu_req_tail *ptail;
> + uint8_t *buf = g_malloc0(s->config.probe_size + sizeof(tail));
> +
> + ptail = (struct virtio_iommu_req_tail *)
> + (buf + s->config.probe_size);
> + ptail->status = virtio_iommu_handle_probe(s, iov, iov_cnt, buf);
> +
> + sz = iov_from_buf(elem->in_sg, elem->in_num, 0,
> + buf, s->config.probe_size + sizeof(tail));
> + g_free(buf);
> + assert(sz == s->config.probe_size + sizeof(tail));
> + goto push;
> + }
> default:
> tail.status = VIRTIO_IOMMU_S_UNSUPP;
> }
> - qemu_mutex_unlock(&s->mutex);
>
> out:
> sz = iov_from_buf(elem->in_sg, elem->in_num, 0,
> &tail, sizeof(tail));
> assert(sz == sizeof(tail));
>
> - virtqueue_push(vq, elem, sizeof(tail));
> +push:
> + qemu_mutex_unlock(&s->mutex);
I think we can't move this unlock to here because otherwise "goto out" could
potentially try to unlock it without locked first. Thanks,
> + virtqueue_push(vq, elem, sz);
> virtio_notify(vdev, vq);
> g_free(elem);
> }
--
Peter Xu
- [PATCH 0/5] VIRTIO-IOMMU probe request support and MSI bypass on ARM, Eric Auger, 2020/05/07
- [PATCH 3/5] virtio-iommu: Handle reserved regions in the translation process, Eric Auger, 2020/05/07
- [PATCH 1/5] qdev: Introduce DEFINE_PROP_RESERVED_REGION, Eric Auger, 2020/05/07
- [PATCH 2/5] virtio-iommu: Implement RESV_MEM probe request, Eric Auger, 2020/05/07
- [PATCH 4/5] virtio-iommu-pci: Add array of Interval properties, Eric Auger, 2020/05/07
- [PATCH 5/5] hw/arm/virt: Let the virtio-iommu bypass MSIs, Eric Auger, 2020/05/07