]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
accel/habanalabs: use exported size from dma_buf and not from phys_pg_pack
authorTomer Tayar <ttayar@habana.ai>
Fri, 4 Aug 2023 14:42:13 +0000 (17:42 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 9 Oct 2023 09:37:21 +0000 (12:37 +0300)
The 'exported_size' member in 'struct hl_vm_phys_pg_pack' is used to
keep the exported dma-buf size, to be later used when the buffer is
mapped.
However it is possible that the same phys_pg_pack will be exported more
than once, and independently of when the mapping takes place.
Remove this member from the phys_pg_pack structure, and simply use the
size in the dma-buf object as the exported size when mapping.

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/habanalabs.h
drivers/accel/habanalabs/common/memory.c

index 6f2cbd3c2e95d3f5d894ce601805875944cae09a..4c5d55c9109d33d48908cb0a3d73dc1b3cb4a6fd 100644 (file)
@@ -2159,7 +2159,6 @@ struct hl_vm_hw_block_list_node {
  * @pages: the physical page array.
  * @npages: num physical pages in the pack.
  * @total_size: total size of all the pages in this list.
- * @exported_size: buffer exported size.
  * @node: used to attach to deletion list that is used when all the allocations are cleared
  *        at the teardown of the context.
  * @mapping_cnt: number of shared mappings.
@@ -2176,7 +2175,6 @@ struct hl_vm_phys_pg_pack {
        u64                     *pages;
        u64                     npages;
        u64                     total_size;
-       u64                     exported_size;
        struct list_head        node;
        atomic_t                mapping_cnt;
        u32                     asid;
index c7e49cb383cff46a164ff39054efd90c5c8c008d..27ab176c55c1ffea24dadc760202fbcf833c7369 100644 (file)
@@ -1719,7 +1719,7 @@ static struct sg_table *hl_map_dmabuf(struct dma_buf_attachment *attachment,
                                                phys_pg_pack->pages,
                                                phys_pg_pack->npages,
                                                phys_pg_pack->page_size,
-                                               phys_pg_pack->exported_size,
+                                               hl_dmabuf->dmabuf->size,
                                                attachment->dev,
                                                dir);
        else
@@ -2044,7 +2044,6 @@ static int export_dmabuf_from_addr(struct hl_ctx *ctx, u64 addr, u64 size, u64 o
                if (rc)
                        goto dec_memhash_export_cnt;
 
-               phys_pg_pack->exported_size = size;
                hl_dmabuf->phys_pg_pack = phys_pg_pack;
                hl_dmabuf->memhash_hnode = hnode;
        } else {