diff options
author | Sidath Senanayake <sidaths@google.com> | 2019-08-23 15:40:27 +0200 |
---|---|---|
committer | Sidath Senanayake <sidaths@google.com> | 2019-08-23 15:40:27 +0200 |
commit | 869660680efaed77cec0414161640a6f1a85d5b2 (patch) | |
tree | d36678f523da5f9148c465c3b5d5ef058401a409 /mali_kbase/mali_kbase_mem_linux.h | |
parent | 228451ed83f4840e863beff27b33ca9a460f820b (diff) | |
download | gpu-869660680efaed77cec0414161640a6f1a85d5b2.tar.gz |
Mali Valhall DDK r20p0 KMD
Provenance:
f3deff212 (collaborate/EAC/v_r20p0)
VX504X08X-BU-00000-r20p0-01rel0 - Android DDK
Signed-off-by: Sidath Senanayake <sidaths@google.com>
Change-Id: If3c1611d83966bcb25a85ad27638612c121cb545
Diffstat (limited to 'mali_kbase/mali_kbase_mem_linux.h')
-rw-r--r-- | mali_kbase/mali_kbase_mem_linux.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mali_kbase/mali_kbase_mem_linux.h b/mali_kbase/mali_kbase_mem_linux.h index e34972f..02f1c3b 100644 --- a/mali_kbase/mali_kbase_mem_linux.h +++ b/mali_kbase/mali_kbase_mem_linux.h @@ -440,4 +440,30 @@ void kbase_phy_alloc_mapping_put(struct kbase_context *kctx, */ u32 kbase_get_cache_line_alignment(struct kbase_device *kbdev); +#if (KERNEL_VERSION(4, 20, 0) > LINUX_VERSION_CODE) +static inline vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, pgprot_t pgprot) +{ + int err; + +#if ((KERNEL_VERSION(4, 4, 147) >= LINUX_VERSION_CODE) || \ + ((KERNEL_VERSION(4, 6, 0) > LINUX_VERSION_CODE) && \ + (KERNEL_VERSION(4, 5, 0) <= LINUX_VERSION_CODE))) + if (pgprot_val(pgprot) != pgprot_val(vma->vm_page_prot)) + return VM_FAULT_SIGBUS; + + err = vm_insert_pfn(vma, addr, pfn); +#else + err = vm_insert_pfn_prot(vma, addr, pfn, pgprot); +#endif + + if (unlikely(err == -ENOMEM)) + return VM_FAULT_OOM; + if (unlikely(err < 0 && err != -EBUSY)) + return VM_FAULT_SIGBUS; + + return VM_FAULT_NOPAGE; +} +#endif + #endif /* _KBASE_MEM_LINUX_H_ */ |