[PATCH v2 2/5] drm/virtio: Add a helper to map and note the dma addrs and lengths

Dmitry Osipenko dmitry.osipenko at collabora.com
Fri Oct 25 22:36:38 UTC 2024


On 10/24/24 08:49, Kasireddy, Vivek wrote:
> Hi Dmitry,
> 
>> Subject: Re: [PATCH v2 2/5] drm/virtio: Add a helper to map and note the
>> dma addrs and lengths
>>
>> On 10/22/24 07:51, Kasireddy, Vivek wrote:
>>> Hi Dmitry,
>>>
>>>>
>>>> On 8/13/24 06:49, Vivek Kasireddy wrote:
>>>>> +long virtgpu_dma_buf_import_sgt(struct virtio_gpu_mem_entry
>> **ents,
>>>>> +				unsigned int *nents,
>>>>> +				struct virtio_gpu_object *bo,
>>>>> +				struct dma_buf_attachment *attach)
>>>>> +{
>>>>> +	struct scatterlist *sl;
>>>>> +	struct sg_table *sgt;
>>>>> +	long i, ret;
>>>>> +
>>>>> +	dma_resv_assert_held(attach->dmabuf->resv);
>>>>> +
>>>>> +	ret = dma_resv_wait_timeout(attach->dmabuf->resv,
>>>>> +				    DMA_RESV_USAGE_KERNEL,
>>>>> +				    false, MAX_SCHEDULE_TIMEOUT);
>>>>
>>>> Why this wait is needed?
>>> The intention was to wait for any pending operations on the backing object
>>> to finish and let it become idle before mapping and accessing the
>> underlying
>>> memory. But I suspect this wait may not be necessary given that we would
>>> have already called dma_buf_pin() at this point, which would have had the
>>> desired effect?
>>
>> Looking at the dma_buf_map_attachment() code, I see that it does both of
>> pinning and waiting for the fence by itself. Hence should be safe to
>> drop both dma_buf_pin() and dma_resv_wait_timeout(), please test.
> Sure, I'll retest again but it looks like dma_buf_map_attachment() pins and
> or waits for fence only in specific situations. That is, it pins only if the exporter
> is non-dynamic and if CONFIG_DMABUF_MOVE_NOTIFY is not enabled. And,
> it waits for the fence only if the importer is non-dynamic. Since I have only tested
> with a dynamic exporter (Xe driver), I did not encounter any issues but it makes
> sense to augment the code to account for non-dynamic exporters as well.

If exporter or importer is not dynamic, then dma-buf core pins buffer at
the buffer importing time, see dma_buf_attach(). Hence, I expect that
everything should work fine.

>> BTW, is any DG2 GPU suitable for testing of this patchset? Will I be
>> able to test it using a regular consumer A750 card?
> Yes, you can test with any DG2 dGPU as long as you can passthrough it to the
> Guest VM. And, if there is an iGPU available on the Host, you can use GTK/SDL UI
> for local display or Spice UI for remote display if there is no iGPU on the Host.
> This is exactly how I started testing this patch series but I am now predominantly
> testing this series with SRIOV enabled iGPUs and dGPUs.

Was hoping to try out SR-IOV on A750 if it's even possible at all. But
passthrough indeed is another an option, will try with passthrough, thanks.

-- 
Best regards,
Dmitry


More information about the dri-devel mailing list