summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_mem_linux.h
diff options
context:
space:
mode:
authorSidath Senanayake <sidaths@google.com>2019-08-23 15:40:27 +0200
committerSidath Senanayake <sidaths@google.com>2019-08-23 15:40:27 +0200
commit869660680efaed77cec0414161640a6f1a85d5b2 (patch)
treed36678f523da5f9148c465c3b5d5ef058401a409 /mali_kbase/mali_kbase_mem_linux.h
parent228451ed83f4840e863beff27b33ca9a460f820b (diff)
downloadgpu-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.h26
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_ */