summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_mem.c
diff options
context:
space:
mode:
authorRaffaele Aquilone <raffaele.aquilone@arm.com>2024-03-14 12:50:09 +0100
committerMichael Stokes <mjstokes@google.com>2024-03-19 08:11:42 +0000
commit4e0eb5e1859ca3adf11a93a7665811facef6616d (patch)
tree76fc0f0076f31003adabd7b3f6ed19bcb1bc6c58 /mali_kbase/mali_kbase_mem.c
parent0f87558146392c9f46282a2c3862c6d6f792aeee (diff)
downloadgpu-4e0eb5e1859ca3adf11a93a7665811facef6616d.tar.gz
Bug: 329096276 Provenance: https://code.ipdelivery.arm.com/c/GPU/mali-ddk/+/6509 Change-Id: Ib283b858b8622380d876b00f9d743e8375f82627 Signed-off-by: Michael Stokes <mjstokes@google.com>
Diffstat (limited to 'mali_kbase/mali_kbase_mem.c')
-rw-r--r--mali_kbase/mali_kbase_mem.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/mali_kbase/mali_kbase_mem.c b/mali_kbase/mali_kbase_mem.c
index afc5a30..c3eb2cc 100644
--- a/mali_kbase/mali_kbase_mem.c
+++ b/mali_kbase/mali_kbase_mem.c
@@ -526,15 +526,20 @@ int kbase_gpu_munmap(struct kbase_context *kctx, struct kbase_va_region *reg)
switch (alloc->imported.user_buf.state) {
case KBASE_USER_BUF_STATE_GPU_MAPPED: {
alloc->imported.user_buf.current_mapping_usage_count = 0;
- kbase_user_buf_from_gpu_mapped_to_empty(kctx, reg);
+ kbase_mem_phy_alloc_ref_read(alloc) ?
+ kbase_user_buf_from_gpu_mapped_to_pinned(kctx, reg) :
+ kbase_user_buf_from_gpu_mapped_to_empty(kctx, reg);
break;
}
case KBASE_USER_BUF_STATE_DMA_MAPPED: {
- kbase_user_buf_from_dma_mapped_to_empty(kctx, reg);
+ kbase_mem_phy_alloc_ref_read(alloc) ?
+ kbase_user_buf_from_dma_mapped_to_pinned(kctx, reg) :
+ kbase_user_buf_from_dma_mapped_to_empty(kctx, reg);
break;
}
case KBASE_USER_BUF_STATE_PINNED: {
- kbase_user_buf_from_pinned_to_empty(kctx, reg);
+ if (!kbase_mem_phy_alloc_ref_read(alloc))
+ kbase_user_buf_from_pinned_to_empty(kctx, reg);
break;
}
case KBASE_USER_BUF_STATE_EMPTY: {