diff options
author | Sidath Senanayake <sidaths@google.com> | 2021-06-16 14:36:34 +0100 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-07-23 17:23:53 +0000 |
commit | 75593be594927d4cf2b8e0ca3f3f304d6482539e (patch) | |
tree | 2260301000f3379b91d05181e29a8c2f96dba399 /mali_kbase/mali_kbase_mem.c | |
parent | bb5eae0a1480d69a1117d0c8e22ef74975a0373a (diff) | |
download | gpu-75593be594927d4cf2b8e0ca3f3f304d6482539e.tar.gz |
mali_kbase: mem: use mem-pin APIs in >= 5.9 kernels
For >=5.9 kernels,
get_user_pages_remote => pin_user_pages_remote
put_page => unpin_user_page
Bug: 183641831
Bug: 185478741
Test: atest -c -d android.hardware.camera2.cts.ImageReaderTest#testImageReaderPrivateWithProtectedUsageFlag
Provenance: https://collaborate.code.arm.com/3220
Signed-off-by: Sidath Senanayake <sidaths@google.com>
Change-Id: I2ad5ff7f3b171a61a41fdf2b9ae1f932be53685c
Diffstat (limited to 'mali_kbase/mali_kbase_mem.c')
-rw-r--r-- | mali_kbase/mali_kbase_mem.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/mali_kbase/mali_kbase_mem.c b/mali_kbase/mali_kbase_mem.c index 830898f..3944899 100644 --- a/mali_kbase/mali_kbase_mem.c +++ b/mali_kbase/mali_kbase_mem.c @@ -4456,6 +4456,15 @@ void kbase_jit_report_update_pressure(struct kbase_context *kctx, } #endif /* MALI_JIT_PRESSURE_LIMIT_BASE */ +static void unpin_user_buf_page(struct page *page) +{ +#if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE + put_page(page); +#else + unpin_user_page(page); +#endif +} + #if MALI_USE_CSF static void kbase_jd_user_buf_unpin_pages(struct kbase_mem_phy_alloc *alloc) { @@ -4466,7 +4475,7 @@ static void kbase_jd_user_buf_unpin_pages(struct kbase_mem_phy_alloc *alloc) WARN_ON(alloc->nents != alloc->imported.user_buf.nr_pages); for (i = 0; i < alloc->nents; i++) - put_page(pages[i]); + unpin_user_buf_page(pages[i]); } } #endif @@ -4525,11 +4534,10 @@ KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE reg->flags & KBASE_REG_GPU_WR ? FOLL_WRITE : 0, pages, NULL, NULL); #else - pinned_pages = get_user_pages_remote(mm, - address, - alloc->imported.user_buf.nr_pages, - reg->flags & KBASE_REG_GPU_WR ? FOLL_WRITE : 0, - pages, NULL, NULL); + pinned_pages = pin_user_pages_remote( + mm, address, alloc->imported.user_buf.nr_pages, + reg->flags & KBASE_REG_GPU_WR ? FOLL_WRITE : 0, pages, NULL, + NULL); #endif if (pinned_pages <= 0) @@ -4537,7 +4545,7 @@ KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE if (pinned_pages != alloc->imported.user_buf.nr_pages) { for (i = 0; i < pinned_pages; i++) - put_page(pages[i]); + unpin_user_buf_page(pages[i]); return -ENOMEM; } @@ -4613,7 +4621,7 @@ unwind: } while (++i < pinned_pages) { - put_page(pages[i]); + unpin_user_buf_page(pages[i]); pages[i] = NULL; } @@ -4643,7 +4651,7 @@ static void kbase_jd_user_buf_unmap(struct kbase_context *kctx, if (writeable) set_page_dirty_lock(pages[i]); #if !MALI_USE_CSF - put_page(pages[i]); + unpin_user_buf_page(pages[i]); pages[i] = NULL; #endif |