diff options
author | Jack Diver <diverj@google.com> | 2024-02-26 12:25:44 +0000 |
---|---|---|
committer | Michael Stokes <mjstokes@google.com> | 2024-03-05 14:26:11 +0000 |
commit | 90891bf294ebf15395c21153124cc6467bd8ab32 (patch) | |
tree | c9578e0ced51cad68faf91e49d1d242d63bc9e3f | |
parent | cfb55729953d62d99f66b0adc59963b189e9394b (diff) | |
download | gpu-android-gs-raviole-5.10-android14-qpr2.tar.gz |
mali_kbase: Prevent page migration for shrinkable regionsandroid-14.0.0_r0.76android-14.0.0_r0.75android-14.0.0_r0.74android-14.0.0_r0.73android-14.0.0_r0.72android-14.0.0_r0.71android-gs-tangorpro-5.10-android14-qpr2android-gs-raviole-5.10-android14-qpr2android-gs-pantah-5.10-android14-qpr2android-gs-lynx-5.10-android14-qpr2android-gs-felix-5.10-android14-qpr2android-gs-bluejay-5.10-android14-qpr2
Bug: 324565943
Change-Id: I706bef805b96113ad4dc1b44d3ea1a8f12652965
Signed-off-by: Jack Diver <diverj@google.com>
-rw-r--r-- | mali_kbase/platform/pixel/pixel_gpu_slc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/mali_kbase/platform/pixel/pixel_gpu_slc.c b/mali_kbase/platform/pixel/pixel_gpu_slc.c index 94409d2..18aef8a 100644 --- a/mali_kbase/platform/pixel/pixel_gpu_slc.c +++ b/mali_kbase/platform/pixel/pixel_gpu_slc.c @@ -49,7 +49,7 @@ struct gpu_slc_liveness_update_info { static void gpu_slc_lock_as(struct kbase_context *kctx) { down_write(kbase_mem_get_process_mmap_lock()); - kbase_gpu_vm_lock(kctx); + kbase_gpu_vm_lock_with_pmode_sync(kctx); } /** @@ -59,7 +59,7 @@ static void gpu_slc_lock_as(struct kbase_context *kctx) */ static void gpu_slc_unlock_as(struct kbase_context *kctx) { - kbase_gpu_vm_unlock(kctx); + kbase_gpu_vm_unlock_with_pmode_sync(kctx); up_write(kbase_mem_get_process_mmap_lock()); } @@ -97,6 +97,12 @@ static struct kbase_va_region* gpu_slc_get_region(struct kbase_context *kctx, u6 /* Validate the region */ if (kbase_is_region_invalid_or_free(reg)) goto invalid; + /* Might be shrunk */ + if (kbase_is_region_shrinkable(reg)) + goto invalid; + /* Driver internal alloc */ + if (kbase_va_region_is_no_user_free(reg)) + goto invalid; return reg; |