[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/5] virtio-iommu: Implement RESV_MEM probe request
From: |
Auger Eric |
Subject: |
Re: [PATCH 2/5] virtio-iommu: Implement RESV_MEM probe request |
Date: |
Fri, 8 May 2020 08:23:18 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
Hi Peter,
On 5/7/20 9:40 PM, Peter Xu wrote:
> 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,
You're right. I will revisit that.
Thanks!
Eric
>
>> + virtqueue_push(vq, elem, sz);
>> virtio_notify(vdev, vq);
>> g_free(elem);
>> }
>
- [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