]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
habanalabs: add enum mmu_op_flags
authorYuri Nudelman <ynudelman@habana.ai>
Thu, 30 Sep 2021 12:52:25 +0000 (15:52 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Sun, 26 Dec 2021 06:59:04 +0000 (08:59 +0200)
The enum vm_type was abused, used once as a value (indication
memory type for map) and once as a flag (for cache invalidation).
This makes it hard to add new and still keep it meaningful, hence it
is better to split into one enum for values and one for flags.

Signed-off-by: Yuri Nudelman <ynudelman@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/common/command_buffer.c
drivers/misc/habanalabs/common/habanalabs.h
drivers/misc/habanalabs/common/memory.c
drivers/misc/habanalabs/gaudi/gaudi.c
drivers/misc/habanalabs/goya/goya.c

index 41a12bcd26e50516096dc2f0bb6256506f376fe4..fab499d252d4ac6c40471955e9bd9c726674c71c 100644 (file)
@@ -80,7 +80,7 @@ static int cb_map_mem(struct hl_ctx *ctx, struct hl_cb *cb)
                offset += va_block->size;
        }
 
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, false, VM_TYPE_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, false, MMU_OP_USERPTR);
 
        mutex_unlock(&ctx->mmu_lock);
 
@@ -97,7 +97,7 @@ err_va_umap:
                offset -= va_block->size;
        }
 
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, VM_TYPE_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, MMU_OP_USERPTR);
 
        mutex_unlock(&ctx->mmu_lock);
 
@@ -126,7 +126,7 @@ static void cb_unmap_mem(struct hl_ctx *ctx, struct hl_cb *cb)
                                        "Failed to unmap CB's va 0x%llx\n",
                                        va_block->start);
 
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, VM_TYPE_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, MMU_OP_USERPTR);
 
        mutex_unlock(&ctx->mmu_lock);
 
index 6dd7d9ee7a44d4c3492041f02ecf40eb70a600bf..202c7f7948f5ad3c7c26c33e24550c3097724bee 100644 (file)
@@ -352,6 +352,17 @@ enum vm_type {
        VM_TYPE_PHYS_PACK = 0x2
 };
 
+/**
+ * enum mmu_op_flags - mmu operation relevant information.
+ * @MMU_OP_USERPTR: operation on user memory (host resident).
+ * @MMU_OP_PHYS_PACK: operation on DRAM (device resident).
+ */
+enum mmu_op_flags {
+       MMU_OP_USERPTR = 0x1,
+       MMU_OP_PHYS_PACK = 0x2
+};
+
+
 /**
  * enum hl_device_hw_state - H/W device state. use this to understand whether
  *                           to do reset before hw_init or not
index 1185f9aec9897053bbb650f24f9850806dc8eee1..40f2197388fe1b23403166b72d384865ad5d65a7 100644 (file)
@@ -2639,8 +2639,8 @@ void hl_vm_ctx_fini(struct hl_ctx *ctx)
        mutex_lock(&ctx->mmu_lock);
 
        /* invalidate the cache once after the unmapping loop */
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, VM_TYPE_USERPTR);
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, VM_TYPE_PHYS_PACK);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, MMU_OP_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, MMU_OP_PHYS_PACK);
 
        mutex_unlock(&ctx->mmu_lock);
 
index 52fffd76f5cf8cd46220e7267d00d07f64ebc49d..2e39514ee102c51472cec396ad1ec35beeeaa87a 100644 (file)
@@ -8688,7 +8688,7 @@ static int gaudi_internal_cb_pool_init(struct hl_device *hdev,
                        hdev->internal_cb_pool_dma_addr,
                        HOST_SPACE_INTERNAL_CB_SZ);
 
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, false, VM_TYPE_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, false, MMU_OP_USERPTR);
        mutex_unlock(&ctx->mmu_lock);
 
        if (rc)
@@ -8723,7 +8723,7 @@ static void gaudi_internal_cb_pool_fini(struct hl_device *hdev,
                        HOST_SPACE_INTERNAL_CB_SZ);
        hl_unreserve_va_block(hdev, ctx, hdev->internal_cb_va_base,
                        HOST_SPACE_INTERNAL_CB_SZ);
-       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, VM_TYPE_USERPTR);
+       hdev->asic_funcs->mmu_invalidate_cache(hdev, true, MMU_OP_USERPTR);
        mutex_unlock(&ctx->mmu_lock);
 
        gen_pool_destroy(hdev->internal_cb_pool);
index 59bb12fcc935d4a4d216ed0a5385610226cb911e..6ee6d5b915a15c407762fb1f1e776131529f2559 100644 (file)
@@ -2621,7 +2621,7 @@ int goya_mmu_init(struct hl_device *hdev)
                        (~STLB_STLB_FEATURE_EN_FOLLOWER_EN_MASK));
 
        hdev->asic_funcs->mmu_invalidate_cache(hdev, true,
-                                       VM_TYPE_USERPTR | VM_TYPE_PHYS_PACK);
+                                       MMU_OP_USERPTR | MMU_OP_PHYS_PACK);
 
        WREG32(mmMMU_MMU_ENABLE, 1);
        WREG32(mmMMU_SPI_MASK, 0xF);