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. BTW, is any DG2 GPU suitable for testing of this patchset? Will I be able to test it using a regular consumer A750 card? -- Best regards, Dmitry