summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin DuBois <kevindubois@google.com>2023-04-20 23:24:40 +0000
committerKevin DuBois <kevindubois@google.com>2023-04-21 21:34:50 +0000
commit75b4a4ab15df252b112439300203dbc9b6d46922 (patch)
tree6e1e517d12d741d8c75fce7ff21b7e11a8bf64fd
parentf9b29365a917cd77293a1b82dbe9ea170f6c5e1b (diff)
downloadgpu-android-gs-pantah-5.10-t-qpr3-beta-3.tar.gz
This reverts commit 04bf4049652e9aa3e952bdc30c560054e1c0f060. Bug: 274827412 Reason for revert: stability Change-Id: I923387539eabbf72f51376decf95526f13339656
-rw-r--r--mali_kbase/mali_kbase_mem.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/mali_kbase/mali_kbase_mem.c b/mali_kbase/mali_kbase_mem.c
index 7765072..ce6e94c 100644
--- a/mali_kbase/mali_kbase_mem.c
+++ b/mali_kbase/mali_kbase_mem.c
@@ -380,7 +380,6 @@ void kbase_remove_va_region(struct kbase_device *kbdev,
struct rb_node *rbnext;
struct kbase_va_region *next = NULL;
struct rb_root *reg_rbtree = NULL;
- struct kbase_va_region *orig_reg = reg;
int merged_front = 0;
int merged_back = 0;
@@ -478,12 +477,6 @@ void kbase_remove_va_region(struct kbase_device *kbdev,
rb_replace_node(&(reg->rblink), &(free_reg->rblink), reg_rbtree);
}
- /* This operation is always safe because the function never frees
- * the region. If the region has been merged to both front and back,
- * then it's the previous region that is supposed to be freed.
- */
- orig_reg->start_pfn = 0;
-
out:
return;
}
@@ -1759,7 +1752,7 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg,
reg->flags & gwt_mask, kctx->as_nr,
group_id, mmu_sync_info);
if (err)
- goto bad_aliased_insert;
+ goto bad_insert;
/* Note: mapping count is tracked at alias
* creation time
@@ -1773,7 +1766,7 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg,
group_id, mmu_sync_info);
if (err)
- goto bad_aliased_insert;
+ goto bad_insert;
}
}
} else {
@@ -1814,20 +1807,10 @@ int kbase_gpu_mmap(struct kbase_context *kctx, struct kbase_va_region *reg,
return err;
-bad_aliased_insert:
- while (i-- > 0) {
- struct tagged_addr *phys_alloc = NULL;
- u64 const stride = alloc->imported.alias.stride;
-
- if (alloc->imported.alias.aliased[i].alloc != NULL)
- phys_alloc = alloc->imported.alias.aliased[i].alloc->pages +
- alloc->imported.alias.aliased[i].offset;
-
- kbase_mmu_teardown_pages(kctx->kbdev, &kctx->mmu, reg->start_pfn + (i * stride),
- phys_alloc, alloc->imported.alias.aliased[i].length,
- kctx->as_nr);
- }
bad_insert:
+ kbase_mmu_teardown_pages(kctx->kbdev, &kctx->mmu, reg->start_pfn, alloc->pages,
+ reg->nr_pages, kctx->as_nr);
+
kbase_remove_va_region(kctx->kbdev, reg);
return err;