accel/habanalabs: always pass exported size to alloc_sgt_from_device_pages()
authorTomer Tayar <ttayar@habana.ai>
Fri, 4 Aug 2023 14:12:58 +0000 (17:12 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 9 Oct 2023 09:37:21 +0000 (12:37 +0300)
For Gaudi1 the exported dma-buf is always composed of a single page, and
therefore the exported size is equal to this page's size.
When calling alloc_sgt_from_device_pages(), we pass 0 as the exported
size and internally calculate it as "number of pages * page size".
This makes alloc_sgt_from_device_pages() less clear, because the
exported size parameter is not understood as a restriction on the pages'
size.
Modify to always pass the exported size explicitly.

Signed-off-by: Tomer Tayar <ttayar@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/accel/habanalabs/common/memory.c

index 1b1b4256b0116ee4470c4a84a9854515a60f527a..c7e49cb383cff46a164ff39054efd90c5c8c008d 100644 (file)
@@ -1561,8 +1561,7 @@ static struct sg_table *alloc_sgt_from_device_pages(struct hl_device *hdev, u64
        if (!sgt)
                return ERR_PTR(-ENOMEM);
 
-       /* remove export size restrictions in case not explicitly defined */
-       cur_size_to_export = exported_size ? exported_size : (npages * page_size);
+       cur_size_to_export = exported_size;
 
        /* If the size of each page is larger than the dma max segment size,
         * then we can't combine pages and the number of entries in the SGL
@@ -1728,7 +1727,7 @@ static struct sg_table *hl_map_dmabuf(struct dma_buf_attachment *attachment,
                                                &hl_dmabuf->device_address,
                                                1,
                                                hl_dmabuf->dmabuf->size,
-                                               0,
+                                               hl_dmabuf->dmabuf->size,
                                                attachment->dev,
                                                dir);