aboutsummaryrefslogtreecommitdiffstats
path: root/meta-xilinx-core/recipes-graphics/mali
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-core/recipes-graphics/mali')
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch47
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch52
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch35
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch47
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch90
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch35
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch31
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch153
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch33
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch34
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch156
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0015-fix-driver-failed-to-check-map-error.patch17
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch47
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch146
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch32
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch36
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch92
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch37
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch38
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch33
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0024-Use-community-device-tree-names.patch91
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch67
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0026-Fix-gpu-driver-probe-failure.patch46
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch95
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.1.bb58
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.2.bb54
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.1.bb58
-rw-r--r--meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.2.bb58
28 files changed, 1718 insertions, 0 deletions
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
new file mode 100644
index 00000000..3c82f602
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
@@ -0,0 +1,47 @@
+From 6d283b9aa3f7fb761da4cb076b47a62275fc4caa Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Tue, 21 Nov 2017 03:57:25 -0800
+Subject: [PATCH 1/9] Change Makefile to be compatible with Yocto
+
+Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
+Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ driver/src/devicedrv/mali/Makefile | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/Makefile b/driver/src/devicedrv/mali/Makefile
+index 5a259fe..a6dd94c 100644
+--- Makefile
++++ b/Makefile
+@@ -89,7 +89,11 @@ endif
+ # Define host system directory
+ KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
+
+-include $(KDIR)/.config
++ifeq ($(O),)
++ -include $(KDIR)/.config
++else
++ -include $(O)/.config
++endif
+
+ ifeq ($(ARCH), arm)
+ # when compiling for ARM we're cross compiling
+@@ -204,9 +208,12 @@ EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
+ endif
+
+ all: $(UMP_SYMVERS_FILE)
+- $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) modules
++ $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) O=$(O) modules
+ @rm $(FILES_PREFIX)__malidrv_build_info.c $(FILES_PREFIX)__malidrv_build_info.o
+
++modules_install:
++ $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) modules_install
++
+ clean:
+ $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean
+
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
new file mode 100644
index 00000000..0a7b6736
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
@@ -0,0 +1,52 @@
+From f27aab2b0e4d5dea9b5a0e4648c142257940c428 Mon Sep 17 00:00:00 2001
+From: Hyun Kwon <hyun.kwon@xilinx.com>
+Date: Thu, 25 Jun 2015 17:14:42 -0700
+Subject: [PATCH 2/9] staging: mali: r8p0-01rel0: Add the ZYNQ/ZYNQMP platform
+
+Add the number of PP cores that is required for Zynq/ZynqMP configuration.
+
+Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
+index 4e09aca..fac99bc 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -261,6 +261,10 @@ static struct mali_gpu_device_data mali_gpu_data = {
+ .dedicated_mem_start = 0x80000000, /* Physical start address (use 0xD0000000 for old indirect setup) */
+ .dedicated_mem_size = 0x10000000, /* 256MB */
+ #endif
++#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
++ .fb_start = 0x00000000,
++ .fb_size = 0xfffff000,
++#else
+ #if defined(CONFIG_ARM64)
+ /* Some framebuffer drivers get the framebuffer dynamically, such as through GEM,
+ * in which the memory resource can't be predicted in advance.
+@@ -271,6 +275,7 @@ static struct mali_gpu_device_data mali_gpu_data = {
+ .fb_start = 0xe0000000,
+ .fb_size = 0x01000000,
+ #endif
++#endif /* !defined(CONFIG_ARCH_ZYNQ) && !defined(CONFIG_ARCH_ZYNQMP) */
+ .control_interval = 1000, /* 1000ms */
+ .utilization_callback = mali_gpu_utilization_callback,
+ .get_clock_info = NULL,
+@@ -505,6 +510,11 @@ int mali_platform_device_init(struct platform_device *device)
+ mali_write_phys(0xC0010020, 0xA); /* Enable direct memory mapping for FPGA */
+ }
+ }
++#elif defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
++
++ MALI_DEBUG_PRINT(4, ("Registering Zynq/ZynqMP Mali-400 device\n"));
++ num_pp_cores = 2;
++
+ #endif
+
+ /* After kernel 3.15 device tree will default set dev
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
new file mode 100644
index 00000000..98aa6ac9
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
@@ -0,0 +1,35 @@
+From d6e44bbf8d1377f78481f611dec237e8d24baf74 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Tue, 21 Nov 2017 04:00:27 -0800
+Subject: [PATCH 3/9] staging: mali: r8p0-01rel0: Remove unused trace macros
+
+TRACE_SYSTEM_STRING is not need in each trace file anymore.
+
+Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_linux_trace.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_linux_trace.h b/driver/src/devicedrv/mali/linux/mali_linux_trace.h
+index 7f0b19d..33cb1ca 100644
+--- linux/mali_linux_trace.h
++++ b/linux/mali_linux_trace.h
+@@ -13,13 +13,11 @@
+
+ #include <linux/types.h>
+
+-#include <linux/stringify.h>
+ #include <linux/tracepoint.h>
+
+ #undef TRACE_SYSTEM
+ #define TRACE_SYSTEM mali
+ #ifndef TRACEPOINTS_ENABLED
+-#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
+ #endif
+ #define TRACE_INCLUDE_PATH .
+ #define TRACE_INCLUDE_FILE mali_linux_trace
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
new file mode 100644
index 00000000..c5c49679
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
@@ -0,0 +1,47 @@
+From 2f5e8944357f43fbde4cb642c6ee4a699c88efb5 Mon Sep 17 00:00:00 2001
+From: Hyun Kwon <hyun.kwon@xilinx.com>
+Date: Wed, 29 Jun 2016 09:14:37 -0700
+Subject: [PATCH 4/9] staging: mali: r8p0-01rel0: Don't include
+ mali_read_phys() for zynq/zynqmp
+
+mali_read_phys() is not used with CONFIG_ARCH_ZYNQ and CONFIG_ARCH_ZYNQMP.
+
+Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
+index fac99bc..62f9be6 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -38,7 +38,9 @@
+ static int mali_core_scaling_enable = 0;
+
+ void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data);
++#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
+ static u32 mali_read_phys(u32 phys_addr);
++#endif
+ #if defined(CONFIG_ARCH_REALVIEW)
+ static void mali_write_phys(u32 phys_addr, u32 value);
+ #endif
+@@ -578,6 +580,7 @@ int mali_platform_device_deinit(struct platform_device *device)
+
+ #endif /* CONFIG_MALI_DT */
+
++#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
+ static u32 mali_read_phys(u32 phys_addr)
+ {
+ u32 phys_addr_page = phys_addr & 0xFFFFE000;
+@@ -592,6 +595,7 @@ static u32 mali_read_phys(u32 phys_addr)
+
+ return ret;
+ }
++#endif
+
+ #if defined(CONFIG_ARCH_REALVIEW)
+ static void mali_write_phys(u32 phys_addr, u32 value)
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
new file mode 100644
index 00000000..3d784604
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
@@ -0,0 +1,90 @@
+From e67e20ec6ff0c9720d87844270421453c738066a Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Thu, 16 Feb 2017 12:15:58 -0800
+Subject: [PATCH 5/9] linux/mali_kernel_linux.c: Handle clock when probed and
+ removed
+
+This patch will handle the clock through clock
+specifier for GPU PP0 and PP1.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ .../src/devicedrv/mali/linux/mali_kernel_linux.c | 40 +++++++++++++++++++++-
+ 1 file changed, 39 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
+index d7893a3..f15fb56 100644
+--- linux/mali_kernel_linux.c
++++ b/linux/mali_kernel_linux.c
+@@ -45,6 +45,14 @@
+ #if defined(CONFIG_MALI400_INTERNAL_PROFILING)
+ #include "mali_profiling_internal.h"
+ #endif
++
++#if defined(CONFIG_ARCH_ZYNQMP)
++/* Initialize variables for clocks */
++struct clk *clk_gpu;
++struct clk *clk_gpu_pp0;
++struct clk *clk_gpu_pp1;
++#endif
++
+ #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
+ #include "mali_osk_profiling.h"
+ #include "mali_dvfs_policy.h"
+@@ -580,7 +588,23 @@ static int mali_probe(struct platform_device *pdev)
+ }
+ #endif
+
+-
++#if defined(CONFIG_ARCH_ZYNQMP)
++ /* Initialize clocks for GPU and PP */
++ clk_gpu = devm_clk_get(&pdev->dev, "gpu");
++ if (IS_ERR(clk_gpu))
++ return PTR_ERR(clk_gpu);
++ clk_prepare_enable(clk_gpu);
++
++ clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
++ if (IS_ERR(clk_gpu_pp0))
++ return PTR_ERR(clk_gpu_pp0);
++ clk_prepare_enable(clk_gpu_pp0);
++
++ clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
++ if (IS_ERR(clk_gpu_pp1))
++ return PTR_ERR(clk_gpu_pp1);
++ clk_prepare_enable(clk_gpu_pp1);
++#endif
+ if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
+ /* Initialize the Mali GPU HW specified by pdev */
+ if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
+@@ -608,6 +632,12 @@ static int mali_probe(struct platform_device *pdev)
+ _mali_osk_wq_term();
+ }
+
++#if defined(CONFIG_ARCH_ZYNQMP)
++ clk_disable_unprepare(clk_gpu);
++ clk_disable_unprepare(clk_gpu_pp0);
++ clk_disable_unprepare(clk_gpu_pp1);
++#endif
++
+ #ifdef CONFIG_MALI_DEVFREQ
+ mali_devfreq_term(mdev);
+ devfreq_init_failed:
+@@ -673,6 +703,14 @@ static int mali_remove(struct platform_device *pdev)
+ mali_platform_device_deinit(mali_platform_device);
+ #endif
+ mali_platform_device = NULL;
++
++#if defined(CONFIG_ARCH_ZYNQMP)
++ /* Remove clock */
++ clk_disable_unprepare(clk_gpu);
++ clk_disable_unprepare(clk_gpu_pp0);
++ clk_disable_unprepare(clk_gpu_pp1);
++#endif
++
+ return 0;
+ }
+
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
new file mode 100644
index 00000000..3e1745fd
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
@@ -0,0 +1,35 @@
+From ed7242238151c12029c566d1974058c579d8ae3d Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Wed, 25 Jan 2017 10:00:33 -0800
+Subject: [PATCH 6/9] arm.c: global variable dma_ops is removed from the kernel
+ 4.7
+
+Refer kernel commit 1dccb598df549d892b6450c261da54cdd7af44b4, the global
+dma_ops variable and the special-casing for ACPI is removed , and just
+returns the dma ops that got set for the device, or the dummy_dma_ops
+if none were present.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
+index 62f9be6..57ca989 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -529,8 +529,9 @@ int mali_platform_device_init(struct platform_device *device)
+ */
+ if (!device->dev.dma_mask)
+ device->dev.dma_mask = &device->dev.coherent_dma_mask;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
+ device->dev.archdata.dma_ops = dma_ops;
+-
++#endif
+ err = platform_device_add_data(device, &mali_gpu_data, sizeof(mali_gpu_data));
+
+ if (0 == err) {
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
new file mode 100644
index 00000000..98a86c88
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
@@ -0,0 +1,31 @@
+From 58e2c55176f1a146781430b2a570c8ce5f80d426 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Mon, 28 Aug 2017 09:40:37 -0700
+Subject: [PATCH] common/mali_pm.c: Add PM runtime barrier after removing
+ suspend
+
+Runtime PM suspend "put" results in addition of PM suspend
+API in work queue. This barrier API will remove it from
+the work queue.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Upstream-Status: Pending
+---
+ driver/src/devicedrv/mali/common/mali_pm.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/driver/src/devicedrv/mali/common/mali_pm.c b/driver/src/devicedrv/mali/common/mali_pm.c
+index 858c689..62a1e5f 100644
+--- common/mali_pm.c
++++ b/common/mali_pm.c
+@@ -301,6 +301,7 @@ void mali_pm_init_end(void)
+ }
+
+ _mali_osk_pm_dev_ref_put();
++ _mali_osk_pm_dev_barrier();
+ }
+
+ void mali_pm_update_sync(void)
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
new file mode 100644
index 00000000..38ab4042
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
@@ -0,0 +1,153 @@
+From aeff13ad9e9ef73172a9325f669aefd3c0403dbb Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Date: Wed, 21 Feb 2018 16:52:15 -0800
+Subject: [PATCH] linux/mali_kernel_linux.c: Enable/disable clock for runtime
+ resume/suspend
+
+Enable/Disable the clock for GP,PP0 and PP1 during runtime
+resume/suspend.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
+Reviewed-by: Hyun Kwon <hyunk@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ .../src/devicedrv/mali/linux/mali_kernel_linux.c | 65 ++++++++++++++++++----
+ 1 file changed, 54 insertions(+), 11 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
+index f15fb56..e61f33b 100644
+--- linux/mali_kernel_linux.c
++++ b/linux/mali_kernel_linux.c
+@@ -51,6 +51,7 @@
+ struct clk *clk_gpu;
+ struct clk *clk_gpu_pp0;
+ struct clk *clk_gpu_pp1;
++mali_bool clk_enabled;
+ #endif
+
+ #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
+@@ -281,6 +282,46 @@ struct file_operations mali_fops = {
+ .mmap = mali_mmap
+ };
+
++static int mali_enable_clk(void)
++{
++#if defined(CONFIG_ARCH_ZYNQMP)
++ int err = 0;
++
++ if (clk_enabled)
++ return 0;
++
++ clk_enabled = MALI_TRUE;
++ err = clk_prepare_enable(clk_gpu);
++ if (err) {
++ MALI_PRINT_ERROR(("Could not enable clock for GP\n\r"));
++ return err;
++ }
++ err = clk_prepare_enable(clk_gpu_pp0);
++ if (err) {
++ MALI_PRINT_ERROR(("Could not enable clock for PP0\n\r"));
++ return err;
++ }
++ err = clk_prepare_enable(clk_gpu_pp1);
++ if (err) {
++ MALI_PRINT_ERROR(("Could not enable clock for PP1\n\r"));
++ return err;
++ }
++#endif
++ return 0;
++}
++
++static void mali_disable_clk(void)
++{
++#if defined(CONFIG_ARCH_ZYNQMP)
++ if (clk_enabled) {
++ clk_enabled = MALI_FALSE;
++ clk_disable_unprepare(clk_gpu);
++ clk_disable_unprepare(clk_gpu_pp0);
++ clk_disable_unprepare(clk_gpu_pp1);
++ }
++#endif
++}
++
+ #if MALI_ENABLE_CPU_CYCLES
+ void mali_init_cpu_time_counters(int reset, int enable_divide_by_64)
+ {
+@@ -593,18 +634,19 @@ static int mali_probe(struct platform_device *pdev)
+ clk_gpu = devm_clk_get(&pdev->dev, "gpu");
+ if (IS_ERR(clk_gpu))
+ return PTR_ERR(clk_gpu);
+- clk_prepare_enable(clk_gpu);
+
+ clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
+ if (IS_ERR(clk_gpu_pp0))
+ return PTR_ERR(clk_gpu_pp0);
+- clk_prepare_enable(clk_gpu_pp0);
+
+ clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
+ if (IS_ERR(clk_gpu_pp1))
+ return PTR_ERR(clk_gpu_pp1);
+- clk_prepare_enable(clk_gpu_pp1);
+ #endif
++
++ err = mali_enable_clk();
++ if (err)
++ return err;
+ if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
+ /* Initialize the Mali GPU HW specified by pdev */
+ if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
+@@ -632,11 +674,6 @@ static int mali_probe(struct platform_device *pdev)
+ _mali_osk_wq_term();
+ }
+
+-#if defined(CONFIG_ARCH_ZYNQMP)
+- clk_disable_unprepare(clk_gpu);
+- clk_disable_unprepare(clk_gpu_pp0);
+- clk_disable_unprepare(clk_gpu_pp1);
+-#endif
+
+ #ifdef CONFIG_MALI_DEVFREQ
+ mali_devfreq_term(mdev);
+@@ -644,6 +681,7 @@ devfreq_init_failed:
+ mali_pm_metrics_term(mdev);
+ pm_metrics_init_failed:
+ clk_disable_unprepare(mdev->clock);
++ mali_disable_clk();
+ clock_prepare_failed:
+ clk_put(mdev->clock);
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && defined(CONFIG_OF) \
+@@ -706,9 +744,7 @@ static int mali_remove(struct platform_device *pdev)
+
+ #if defined(CONFIG_ARCH_ZYNQMP)
+ /* Remove clock */
+- clk_disable_unprepare(clk_gpu);
+- clk_disable_unprepare(clk_gpu_pp0);
+- clk_disable_unprepare(clk_gpu_pp1);
++ mali_disable_clk();
+ #endif
+
+ return 0;
+@@ -816,6 +852,8 @@ static int mali_driver_runtime_suspend(struct device *dev)
+ devfreq_suspend_device(mdev->devfreq);
+ #endif
+
++ mali_disable_clk();
++
+ return 0;
+ } else {
+ return -EBUSY;
+@@ -824,6 +862,11 @@ static int mali_driver_runtime_suspend(struct device *dev)
+
+ static int mali_driver_runtime_resume(struct device *dev)
+ {
++ int err ;
++
++ err = mali_enable_clk();
++ if (err)
++ return err;
+ #ifdef CONFIG_MALI_DEVFREQ
+ struct mali_device *mdev = dev_get_drvdata(dev);
+ if (!mdev)
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch
new file mode 100644
index 00000000..24f0a22c
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch
@@ -0,0 +1,33 @@
+From 779b1883d56804ecd08fe7f57d6c01e3db4e893b Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Wed, 5 Dec 2018 18:07:29 -0800
+Subject: [PATCH 1/3] linux: mali_memory_os_alloc: Remove __GFP_COLD
+
+The support for Cache hot and cold pages are removed from the kernel.
+For more information refer kernel commit 453f85d43fa9ee243f0fc3ac4e1be45615301e3f
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
+index 1602371..830e8c6 100644
+--- linux/mali_memory_os_alloc.c
++++ b/linux/mali_memory_os_alloc.c
+@@ -202,7 +202,9 @@ int mali_mem_os_alloc_pages(mali_mem_os_mem *os_mem, u32 size)
+ /* Allocate new pages, if needed. */
+ for (i = 0; i < remaining; i++) {
+ dma_addr_t dma_addr;
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
++ gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
++#elif LINUX_VERSION_CODE == KERNEL_VERSION(4, 14, 0)
+ gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN | __GFP_COLD;
+ #else
+ gfp_t flags = __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN | __GFP_COLD;
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch
new file mode 100644
index 00000000..c28a83f4
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch
@@ -0,0 +1,34 @@
+From d20b6eb3e48e56558488dbdda98875b1aed0c29f Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Wed, 5 Dec 2018 18:13:28 -0800
+Subject: [PATCH 2/3] linux: mali_memory_secure: Add header file dma-direct.h
+
+Add dma-direct.h header, as API dma_to_phys is defined here.
+refer kernel commit ea8c64ace86647260ec4255f483e5844d62af2df
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_memory_secure.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_secure.c b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
+index 2836b1b..4f55fa5 100644
+--- linux/mali_memory_secure.c
++++ b/linux/mali_memory_secure.c
+@@ -13,7 +13,11 @@
+ #include "mali_memory_secure.h"
+ #include "mali_osk.h"
+ #include <linux/mutex.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
++#include <linux/dma-direct.h>
++#else
+ #include <linux/dma-mapping.h>
++#endif
+ #include <linux/dma-buf.h>
+
+ _mali_osk_errcode_t mali_mem_secure_attach_dma_buf(mali_mem_secure *secure_mem, u32 size, int mem_fd)
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch
new file mode 100644
index 00000000..a7c1d5cc
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch
@@ -0,0 +1,156 @@
+From b6936450484b5aa9dd2438367a907af020341d1d Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Thu, 6 Dec 2018 13:30:44 -0800
+Subject: [PATCH 3/3] linux: mali_*timer: Get rid of init_timer
+
+kernel 4.19 got rid of ancient init_timer. Hence, replace it with
+timer_setup API. For more information refer kernel commit
+7eeb6b893bd28c68b6d664de1d3120e49b855cdb
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/common/mali_control_timer.c | 6 ++++++
+ driver/src/devicedrv/mali/common/mali_group.c | 6 ++++++
+ driver/src/devicedrv/mali/common/mali_osk.h | 15 ++++++++++++++-
+ driver/src/devicedrv/mali/linux/mali_osk_timers.c | 15 ++++++++++++++-
+ 4 files changed, 40 insertions(+), 2 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/common/mali_control_timer.c b/driver/src/devicedrv/mali/common/mali_control_timer.c
+index 1296ffe..d24b934 100644
+--- common/mali_control_timer.c
++++ b/common/mali_control_timer.c
+@@ -65,11 +65,17 @@ _mali_osk_errcode_t mali_control_timer_init(void)
+ }
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++ mali_control_timer = _mali_osk_timer_init(mali_control_timer_callback);
++#else
+ mali_control_timer = _mali_osk_timer_init();
++#endif
+ if (NULL == mali_control_timer) {
+ return _MALI_OSK_ERR_FAULT;
+ }
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ _mali_osk_timer_setcallback(mali_control_timer, mali_control_timer_callback, NULL);
++#endif
+
+ return _MALI_OSK_ERR_OK;
+ }
+diff --git a/driver/src/devicedrv/mali/common/mali_group.c b/driver/src/devicedrv/mali/common/mali_group.c
+index 5c7b3f4..1702e9a 100644
+--- common/mali_group.c
++++ b/common/mali_group.c
+@@ -65,9 +65,15 @@ struct mali_group *mali_group_create(struct mali_l2_cache_core *core,
+
+ group = _mali_osk_calloc(1, sizeof(struct mali_group));
+ if (NULL != group) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++ group->timeout_timer = _mali_osk_timer_init(mali_group_timeout);
++#else
+ group->timeout_timer = _mali_osk_timer_init();
++#endif
+ if (NULL != group->timeout_timer) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ _mali_osk_timer_setcallback(group->timeout_timer, mali_group_timeout, (void *)group);
++#endif
+
+ group->l2_cache_core[0] = core;
+ _mali_osk_list_init(&group->group_list);
+diff --git a/driver/src/devicedrv/mali/common/mali_osk.h b/driver/src/devicedrv/mali/common/mali_osk.h
+index a501778..fe93d79 100644
+--- common/mali_osk.h
++++ b/common/mali_osk.h
+@@ -947,7 +947,17 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
+ * asked for.
+ *
+ * @{ */
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++/** @brief Initialize a timer
++ *
++ * Allocates resources for a new timer, and initializes them. This does not
++ * start the timer.
++ *
++ * @param callback Function to call when timer expires
++ * @return a pointer to the allocated timer object, or NULL on failure.
++ */
++_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback);
++#else
+ /** @brief Initialize a timer
+ *
+ * Allocates resources for a new timer, and initializes them. This does not
+@@ -956,6 +966,7 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
+ * @return a pointer to the allocated timer object, or NULL on failure.
+ */
+ _mali_osk_timer_t *_mali_osk_timer_init(void);
++#endif
+
+ /** @brief Start a timer
+ *
+@@ -1034,6 +1045,7 @@ void _mali_osk_timer_del_async(_mali_osk_timer_t *tim);
+ */
+ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ /** @brief Set a timer's callback parameters.
+ *
+ * This must be called at least once before a timer is started/modified.
+@@ -1047,6 +1059,7 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
+ * @param data Function-specific data to supply to the function on expiry.
+ */
+ void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data);
++#endif
+
+ /** @brief Terminate a timer, and deallocate resources.
+ *
+diff --git a/driver/src/devicedrv/mali/linux/mali_osk_timers.c b/driver/src/devicedrv/mali/linux/mali_osk_timers.c
+index e5d7238..f9b5a86 100644
+--- linux/mali_osk_timers.c
++++ b/linux/mali_osk_timers.c
+@@ -21,13 +21,24 @@
+ struct _mali_osk_timer_t_struct {
+ struct timer_list timer;
+ };
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++typedef void (*timer_timeout_function_t)(struct timer_list *);
++#else
+ typedef void (*timer_timeout_function_t)(unsigned long);
++#endif
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback)
++#else
+ _mali_osk_timer_t *_mali_osk_timer_init(void)
++#endif
+ {
+ _mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++ if (NULL != t) timer_setup(&t->timer, (timer_timeout_function_t)callback, 0);
++#else
+ if (NULL != t) init_timer(&t->timer);
++#endif
+ return t;
+ }
+
+@@ -62,12 +73,14 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
+ return 1 == timer_pending(&(tim->timer));
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
+ {
+ MALI_DEBUG_ASSERT_POINTER(tim);
+ tim->timer.data = (unsigned long)data;
+ tim->timer.function = (timer_timeout_function_t)callback;
+ }
++#endif
+
+ void _mali_osk_timer_term(_mali_osk_timer_t *tim)
+ {
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0015-fix-driver-failed-to-check-map-error.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0015-fix-driver-failed-to-check-map-error.patch
new file mode 100644
index 00000000..5363c37e
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0015-fix-driver-failed-to-check-map-error.patch
@@ -0,0 +1,17 @@
+Index: mali/linux/mali_memory_os_alloc.c
+===================================================================
+--- mali.orig/linux/mali_memory_os_alloc.c
++++ mali/linux/mali_memory_os_alloc.c
+@@ -239,8 +239,10 @@ int mali_mem_os_alloc_pages(mali_mem_os_
+ /* Ensure page is flushed from CPU caches. */
+ dma_addr = dma_map_page(&mali_platform_device->dev, new_page,
+ 0, _MALI_OSK_MALI_PAGE_SIZE, DMA_BIDIRECTIONAL);
+- dma_unmap_page(&mali_platform_device->dev, dma_addr,
+- _MALI_OSK_MALI_PAGE_SIZE, DMA_BIDIRECTIONAL);
++ err = dma_mapping_error(&mali_platform_device->dev, dma_addr);
++ if (likely(!err))
++ dma_unmap_page(&mali_platform_device->dev, dma_addr,
++ _MALI_OSK_MALI_PAGE_SIZE, DMA_BIDIRECTIONAL);
+ dma_addr = dma_map_page(&mali_platform_device->dev, new_page,
+ 0, _MALI_OSK_MALI_PAGE_SIZE, DMA_BIDIRECTIONAL);
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch
new file mode 100644
index 00000000..dc8bbebf
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch
@@ -0,0 +1,47 @@
+From 8cf1dd43f3f25cb4afb84dfc3b0e7c02bc8f7f0c Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Mon, 24 Feb 2020 18:19:37 -0800
+Subject: [LINUX][rel-v2020.1][PATCH v1 1/3] mali_memory_secure: Kernel 5.0
+ onwards 'access_ok' API does not take 'type' as input parameter
+
+'access_ok' no longer needs 'type' as input paramter from kernel 5.0
+onwards.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+---
+ driver/src/devicedrv/mali/linux/mali_ukk_mem.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_ukk_mem.c b/driver/src/devicedrv/mali/linux/mali_ukk_mem.c
+index 4ec57dc..270bb6d 100644
+--- linux/mali_ukk_mem.c
++++ b/linux/mali_ukk_mem.c
+@@ -207,8 +207,13 @@ int mem_write_safe_wrapper(struct mali_session_data *session_data, _mali_uk_mem_
+ kargs.ctx = (uintptr_t)session_data;
+
+ /* Check if we can access the buffers */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
++ if (!access_ok((const void __user *)kargs.dest, kargs.size)
++ || !access_ok((const void __user *)kargs.src, kargs.size)) {
++#else
+ if (!access_ok(VERIFY_WRITE, kargs.dest, kargs.size)
+ || !access_ok(VERIFY_READ, kargs.src, kargs.size)) {
++#endif
+ return -EINVAL;
+ }
+
+@@ -266,7 +271,11 @@ int mem_dump_mmu_page_table_wrapper(struct mali_session_data *session_data, _mal
+ goto err_exit;
+
+ user_buffer = (void __user *)(uintptr_t)kargs.buffer;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
++ if (!access_ok(user_buffer, kargs.size))
++#else
+ if (!access_ok(VERIFY_WRITE, user_buffer, kargs.size))
++#endif
+ goto err_exit;
+
+ /* allocate temporary buffer (kernel side) to store mmu page table info */
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch
new file mode 100644
index 00000000..9c4bbee9
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch
@@ -0,0 +1,146 @@
+From 953cab73b8bc487da330aa454abd7f8c7466737e Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Mon, 24 Feb 2020 18:32:16 -0800
+Subject: [LINUX][rel-v2020.1][PATCH v1 2/3] Support for vm_insert_pfn
+ deprecated from kernel 4.20
+
+From kernel 4.20 onwards, support for vm_insert_pfn is deprecated.
+Hence, replace the same with vmf_insert_pfn.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+---
+ .../devicedrv/mali/linux/mali_memory_block_alloc.c | 6 +++++-
+ driver/src/devicedrv/mali/linux/mali_memory_cow.c | 14 ++++++++++++--
+ .../src/devicedrv/mali/linux/mali_memory_os_alloc.c | 20 +++++++++++++++++---
+ driver/src/devicedrv/mali/linux/mali_memory_secure.c | 7 ++++++-
+ 4 files changed, 40 insertions(+), 7 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c
+index 0c5b6c3..e528699 100644
+--- linux/mali_memory_block_alloc.c
++++ b/linux/mali_memory_block_alloc.c
+@@ -309,9 +309,13 @@ int mali_mem_block_cpu_map(mali_mem_backend *mem_bkend, struct vm_area_struct *v
+
+ list_for_each_entry(m_page, &block_mem->pfns, list) {
+ MALI_DEBUG_ASSERT(m_page->type == MALI_PAGE_NODE_BLOCK);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
+-
+ if (unlikely(0 != ret)) {
++#endif
+ return -EFAULT;
+ }
+ addr += _MALI_OSK_MALI_PAGE_SIZE;
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_cow.c b/driver/src/devicedrv/mali/linux/mali_memory_cow.c
+index f1d44fe..1dae1d6 100644
+--- linux/mali_memory_cow.c
++++ b/linux/mali_memory_cow.c
+@@ -532,9 +532,14 @@ int mali_mem_cow_cpu_map(mali_mem_backend *mem_bkend, struct vm_area_struct *vma
+ * flush which makes it way slower than remap_pfn_range or vm_insert_pfn.
+ ret = vm_insert_page(vma, addr, page);
+ */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
+-
+ if (unlikely(0 != ret)) {
++#endif
++
+ return ret;
+ }
+ addr += _MALI_OSK_MALI_PAGE_SIZE;
+@@ -569,9 +574,14 @@ _mali_osk_errcode_t mali_mem_cow_cpu_map_pages_locked(mali_mem_backend *mem_bken
+
+ list_for_each_entry(m_page, &cow->pages, list) {
+ if ((count >= offset) && (count < offset + num)) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, vaddr, _mali_page_node_get_pfn(m_page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, vaddr, _mali_page_node_get_pfn(m_page));
+-
+ if (unlikely(0 != ret)) {
++#endif
++
+ if (count == offset) {
+ return _MALI_OSK_ERR_FAULT;
+ } else {
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
+index 3fb6f05..7de3920 100644
+--- linux/mali_memory_os_alloc.c
++++ b/linux/mali_memory_os_alloc.c
+@@ -378,9 +378,14 @@ int mali_mem_os_cpu_map(mali_mem_backend *mem_bkend, struct vm_area_struct *vma)
+ ret = vm_insert_page(vma, addr, page);
+ */
+ page = m_page->page;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, addr, page_to_pfn(page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, addr, page_to_pfn(page));
+-
+ if (unlikely(0 != ret)) {
++#endif
++
+ return -EFAULT;
+ }
+ addr += _MALI_OSK_MALI_PAGE_SIZE;
+@@ -416,9 +421,13 @@ _mali_osk_errcode_t mali_mem_os_resize_cpu_map_locked(mali_mem_backend *mem_bken
+
+ vm_end -= _MALI_OSK_MALI_PAGE_SIZE;
+ if (mapping_page_num > 0) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, vm_end, page_to_pfn(m_page->page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, vm_end, page_to_pfn(m_page->page));
+-
+ if (unlikely(0 != ret)) {
++#endif
+ /*will return -EBUSY If the page has already been mapped into table, but it's OK*/
+ if (-EBUSY == ret) {
+ break;
+@@ -439,9 +448,14 @@ _mali_osk_errcode_t mali_mem_os_resize_cpu_map_locked(mali_mem_backend *mem_bken
+ list_for_each_entry(m_page, &os_mem->pages, list) {
+ if (count >= offset) {
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, vstart, page_to_pfn(m_page->page));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, vstart, page_to_pfn(m_page->page));
+-
+ if (unlikely(0 != ret)) {
++#endif
++
+ /*will return -EBUSY If the page has already been mapped into table, but it's OK*/
+ if (-EBUSY == ret) {
+ break;
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_secure.c b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
+index 5546304..cebd1c8 100644
+--- linux/mali_memory_secure.c
++++ b/linux/mali_memory_secure.c
+@@ -132,9 +132,14 @@ int mali_mem_secure_cpu_map(mali_mem_backend *mem_bkend, struct vm_area_struct *
+ MALI_DEBUG_ASSERT(0 == size % _MALI_OSK_MALI_PAGE_SIZE);
+
+ for (j = 0; j < size / _MALI_OSK_MALI_PAGE_SIZE; j++) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ ret = vmf_insert_pfn(vma, addr, PFN_DOWN(phys));
++ if (unlikely(VM_FAULT_ERROR & ret)) {
++#else
+ ret = vm_insert_pfn(vma, addr, PFN_DOWN(phys));
+-
+ if (unlikely(0 != ret)) {
++#endif
++
+ return -EFAULT;
+ }
+ addr += _MALI_OSK_MALI_PAGE_SIZE;
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch
new file mode 100644
index 00000000..9797db62
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch
@@ -0,0 +1,32 @@
+From ad5c569f0cc40698699fc2f2c1db3ceb9f8b8f35 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Tue, 25 Feb 2020 11:36:01 -0800
+Subject: [LINUX][rel-v2020.1][PATCH v1 3/3] Change return type to vm_fault_t
+ for fault handler
+
+From kernel 4.17 onwards the return type of fault handler for
+vm_operations is of type 'vm_fault_t'.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+---
+ driver/src/devicedrv/mali/linux/mali_memory.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory.c b/driver/src/devicedrv/mali/linux/mali_memory.c
+index c0f0982..2b2b209 100644
+--- linux/mali_memory.c
++++ b/linux/mali_memory.c
+@@ -70,7 +70,9 @@ static void mali_mem_vma_close(struct vm_area_struct *vma)
+ }
+ }
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)
++static vm_fault_t mali_mem_vma_fault(struct vm_fault *vmf)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ static int mali_mem_vma_fault(struct vm_fault *vmf)
+ #else
+ static int mali_mem_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch
new file mode 100644
index 00000000..154bb673
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch
@@ -0,0 +1,36 @@
+From c6a6b39cea3fdfd91cae7f2a4ef6f36d2c55fdd6 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+Date: Tue, 25 Feb 2020 15:17:17 -0800
+Subject: [LINUX][rel-v2020.1][PATCH v1] "get_monotonic_boottime(&ts)"
+ deprecated from kernel 4.20 onwards
+
+As "get_monotonic_boottime(&ts)" is deprecated, replace the same with
+"ktime_get_boottime_ts64(&ts)". Refer kernel commit ID
+976516404ff3fab2a8caa8bd6f5efc1437fed0b8
+
+Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
+---
+ driver/src/devicedrv/mali/linux/mali_osk_time.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_osk_time.c b/driver/src/devicedrv/mali/linux/mali_osk_time.c
+index 03046a5..bfcbf7f 100644
+--- linux/mali_osk_time.c
++++ b/linux/mali_osk_time.c
+@@ -53,7 +53,13 @@ u64 _mali_osk_time_get_ns(void)
+
+ u64 _mali_osk_boot_time_get_ns(void)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
++ struct timespec64 tsval;
++ ktime_get_boottime_ts64(&tsval);
++ return (u64)timespec64_to_ns(&tsval);
++#else
+ struct timespec tsval;
+ get_monotonic_boottime(&tsval);
+ return (u64)timespec_to_ns(&tsval);
++#endif
+ }
+--
+2.7.4
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch
new file mode 100644
index 00000000..ff86091f
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch
@@ -0,0 +1,92 @@
+From cbc2351e8acf7ed38f6d965e5ea21620e45eda30 Mon Sep 17 00:00:00 2001
+From: Dylan Yip <dylan.yip@xilinx.com>
+Date: Tue, 9 Feb 2021 10:05:41 -0800
+Subject: [PATCH 20/23] Fix ioremap_nocache() deprecation in kernel 5.6
+
+As of commit 4bdc0d676a643140 ("remove ioremap_nocache and
+devm_ioremap_nocache") from kernel 5.6, ioremap_nocache has been
+removed because ioremap is already non-cached by default. So replace all
+calls with ioremap.
+
+Signed-off-by: Dylan Yip <dylan.yip@xilinx.com>
+---
+ linux/mali_memory_cow.c | 4 ++++
+ linux/mali_osk_low_level_mem.c | 4 ++++
+ platform/arm/arm.c | 12 ++++++++++++
+ 3 files changed, 20 insertions(+)
+
+diff --git a/linux/mali_memory_cow.c b/linux/mali_memory_cow.c
+index 1dae1d6..6fadd42 100644
+--- a/linux/mali_memory_cow.c
++++ b/linux/mali_memory_cow.c
+@@ -693,7 +693,11 @@ void _mali_mem_cow_copy_page(mali_page_node *src_node, mali_page_node *dst_node)
+ /*
+ * use ioremap to map src for BLOCK memory
+ */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ src = ioremap(_mali_page_node_get_dma_addr(src_node), _MALI_OSK_MALI_PAGE_SIZE);
++#else
+ src = ioremap_nocache(_mali_page_node_get_dma_addr(src_node), _MALI_OSK_MALI_PAGE_SIZE);
++#endif
+ memcpy(dst, src , _MALI_OSK_MALI_PAGE_SIZE);
+ iounmap(src);
+ }
+diff --git a/linux/mali_osk_low_level_mem.c b/linux/mali_osk_low_level_mem.c
+index 84f93d9..5a0a725 100644
+--- a/linux/mali_osk_low_level_mem.c
++++ b/linux/mali_osk_low_level_mem.c
+@@ -33,7 +33,11 @@ void _mali_osk_write_mem_barrier(void)
+
+ mali_io_address _mali_osk_mem_mapioregion(uintptr_t phys, u32 size, const char *description)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ return (mali_io_address)ioremap(phys, size);
++#else
+ return (mali_io_address)ioremap_nocache(phys, size);
++#endif
+ }
+
+ void _mali_osk_mem_unmapioregion(uintptr_t phys, u32 size, mali_io_address virt)
+diff --git a/platform/arm/arm.c b/platform/arm/arm.c
+index b2fb746..e468263 100644
+--- a/platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -98,7 +98,11 @@ static int mali_secure_mode_init_juno(void)
+
+ MALI_DEBUG_ASSERT(NULL == secure_mode_mapped_addr);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ secure_mode_mapped_addr = ioremap(phys_addr_page, map_size);
++#else
+ secure_mode_mapped_addr = ioremap_nocache(phys_addr_page, map_size);
++#endif
+ if (NULL != secure_mode_mapped_addr) {
+ return mali_gpu_reset_and_secure_mode_disable_juno();
+ }
+@@ -588,7 +592,11 @@ static u32 mali_read_phys(u32 phys_addr)
+ u32 phys_offset = phys_addr & 0x00001FFF;
+ u32 map_size = phys_offset + sizeof(u32);
+ u32 ret = 0xDEADBEEF;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ void *mem_mapped = ioremap(phys_addr_page, map_size);
++#else
+ void *mem_mapped = ioremap_nocache(phys_addr_page, map_size);
++#endif
+ if (NULL != mem_mapped) {
+ ret = (u32)ioread32(((u8 *)mem_mapped) + phys_offset);
+ iounmap(mem_mapped);
+@@ -604,7 +612,11 @@ static void mali_write_phys(u32 phys_addr, u32 value)
+ u32 phys_addr_page = phys_addr & 0xFFFFE000;
+ u32 phys_offset = phys_addr & 0x00001FFF;
+ u32 map_size = phys_offset + sizeof(u32);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ void *mem_mapped = ioremap(phys_addr_page, map_size);
++#else
+ void *mem_mapped = ioremap_nocache(phys_addr_page, map_size);
++#endif
+ if (NULL != mem_mapped) {
+ iowrite32(value, ((u8 *)mem_mapped) + phys_offset);
+ iounmap(mem_mapped);
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch
new file mode 100644
index 00000000..adef8e18
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch
@@ -0,0 +1,37 @@
+From bc0f85271681532c7e394229f0155366d1de8779 Mon Sep 17 00:00:00 2001
+From: Dylan Yip <dylan.yip@xilinx.com>
+Date: Mon, 8 Feb 2021 23:47:01 -0800
+Subject: [PATCH 21/23] Use updated timekeeping functions in kernel 5.6
+
+As of commit 412c53a680a9 ("y2038: remove unused time32 interfaces"), 32
+bit timekeeping functions like getnstimeofday() have been removed. So
+use the 64 bit replacements.
+
+Signed-off-by: Dylan Yip <dylan.yip@xilinx.com>
+---
+ linux/mali_osk_time.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/linux/mali_osk_time.c b/linux/mali_osk_time.c
+index bfcbf7f..583d82b 100644
+--- a/linux/mali_osk_time.c
++++ b/linux/mali_osk_time.c
+@@ -46,9 +46,15 @@ void _mali_osk_time_ubusydelay(u32 usecs)
+
+ u64 _mali_osk_time_get_ns(void)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ struct timespec64 tsval;
++ ktime_get_real_ts64(&tsval);
++ return (u64)timespec64_to_ns(&tsval);
++#else
+ struct timespec tsval;
+ getnstimeofday(&tsval);
+ return (u64)timespec_to_ns(&tsval);
++#endif
+ }
+
+ u64 _mali_osk_boot_time_get_ns(void)
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch
new file mode 100644
index 00000000..181df7b7
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch
@@ -0,0 +1,38 @@
+From d17933b6909cc29103befc2ef4e6cf413d9e8fb6 Mon Sep 17 00:00:00 2001
+From: Dylan Yip <dylan.yip@xilinx.com>
+Date: Tue, 9 Feb 2021 08:58:44 -0800
+Subject: [PATCH 22/23] Set HAVE_UNLOCKED_IOCTL default to true
+
+As of commit b19dd42faf41 ("bkl: Remove locked .ioctl file operation")
+of kernel 2.6, the ioctl operation has been replaced with
+unlocked_ioctl. Since this change has been around for almost 10 years,
+go ahead and set the default HAVE_UNLOCKED_IOCTL to be true.
+
+Signed-off-by: Dylan Yip <dylan.yip@xilinx.com>
+---
+ Kbuild | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Kbuild b/Kbuild
+index 02c3f3d..8c6e6e0 100644
+--- a/Kbuild
++++ b/Kbuild
+@@ -21,6 +21,7 @@ MALI_PP_SCHEDULER_KEEP_SUB_JOB_STARTS_ALIGNED ?= 0
+ MALI_PP_SCHEDULER_FORCE_NO_JOB_OVERLAP_BETWEEN_APPS ?= 0
+ MALI_UPPER_HALF_SCHEDULING ?= 1
+ MALI_ENABLE_CPU_CYCLES ?= 0
++HAVE_UNLOCKED_IOCTL ?= 1
+
+ # For customer releases the Linux Device Drivers will be provided as ARM proprietary and GPL releases:
+ # The ARM proprietary product will only include the license/proprietary directory
+@@ -179,6 +180,7 @@ ccflags-y += -DMALI_STATE_TRACKING=1
+ ccflags-y += -DMALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB=$(OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB)
+ ccflags-y += -DUSING_GPU_UTILIZATION=$(USING_GPU_UTILIZATION)
+ ccflags-y += -DMALI_ENABLE_CPU_CYCLES=$(MALI_ENABLE_CPU_CYCLES)
++ccflags-y += -DHAVE_UNLOCKED_IOCTL=$(HAVE_UNLOCKED_IOCTL)
+
+ ifeq ($(MALI_UPPER_HALF_SCHEDULING),1)
+ ccflags-y += -DMALI_UPPER_HALF_SCHEDULING
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch
new file mode 100644
index 00000000..bab2bd37
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch
@@ -0,0 +1,33 @@
+From e2b52e358e0e030d3881ef80ef09de3662b41210 Mon Sep 17 00:00:00 2001
+From: Dylan Yip <dylan.yip@xilinx.com>
+Date: Tue, 9 Feb 2021 09:48:01 -0800
+Subject: [PATCH 23/23] Use PTR_ERR_OR_ZERO instead of PTR_RET
+
+As of commit fad7c9020948 ("err.h: remove deprecated PTR_RET for good")
+in kernel 5.7, PTR_RET has been removed and replaced with
+PTR_ERR_OR_ZERO. So use this API instead.
+
+Signed-off-by: Dylan Yip <dylan.yip@xilinx.com>
+---
+ linux/mali_memory_dma_buf.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/linux/mali_memory_dma_buf.c b/linux/mali_memory_dma_buf.c
+index 905cd8b..fcdcaac 100644
+--- a/linux/mali_memory_dma_buf.c
++++ b/linux/mali_memory_dma_buf.c
+@@ -281,7 +281,11 @@ int mali_dma_buf_get_size(struct mali_session_data *session, _mali_uk_dma_buf_ge
+ buf = dma_buf_get(fd);
+ if (IS_ERR_OR_NULL(buf)) {
+ MALI_DEBUG_PRINT_ERROR(("Failed to get dma-buf from fd: %d\n", fd));
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0)
++ return PTR_ERR_OR_ZERO(buf);
++#else
+ return PTR_RET(buf);
++#endif
+ }
+
+ if (0 != put_user(buf->size, &user_arg->size)) {
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0024-Use-community-device-tree-names.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0024-Use-community-device-tree-names.patch
new file mode 100644
index 00000000..5b3eeedc
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0024-Use-community-device-tree-names.patch
@@ -0,0 +1,91 @@
+Use the community device-tree names
+
+The community LIMA driver uses a series of names that are different then
+the legacy Xilinx names. Moves from the legacy names to the more standard
+names.
+
+This will allow us to have a single device tree that works with both the
+mali driver, as well as the lima driver.
+
+Interrupt-names:
+ IRQGP -> gp
+ IRQGPMMU -> gpmmu
+ IRQPP0 -> pp0
+ IRQPPMMU0 -> ppmmu0
+ IRQPP1 -> pp1
+ IRQPPMMU1 -> ppmmu1
+ ...
+
+Clock-names:
+ gpu_pp0 -> core
+ gpu_pp1 -> bus
+
+Signed-off-by: Mark Hatle <mark.hatle@amd.com>
+
+diff -ur a/linux/mali_kernel_linux.c b/linux/mali_kernel_linux.c
+--- a/linux/mali_kernel_linux.c 2018-09-17 04:04:48.000000000 -0700
++++ b/linux/mali_kernel_linux.c 2022-10-24 14:01:54.614376177 -0700
+@@ -635,11 +635,11 @@
+ if (IS_ERR(clk_gpu))
+ return PTR_ERR(clk_gpu);
+
+- clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
++ clk_gpu_pp0 = devm_clk_get(&pdev->dev, "core");
+ if (IS_ERR(clk_gpu_pp0))
+ return PTR_ERR(clk_gpu_pp0);
+
+- clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
++ clk_gpu_pp1 = devm_clk_get(&pdev->dev, "bus");
+ if (IS_ERR(clk_gpu_pp1))
+ return PTR_ERR(clk_gpu_pp1);
+ #endif
+diff -ur a/linux/mali_osk_mali.c b/linux/mali_osk_mali.c
+--- a/linux/mali_osk_mali.c 2018-09-12 23:52:20.000000000 -0700
++++ b/linux/mali_osk_mali.c 2022-10-24 14:00:28.470380512 -0700
+@@ -72,26 +72,26 @@
+ #define MALI_OSK_RESOURCE_DMA_LOCATION 26
+
+ static _mali_osk_resource_t mali_osk_resource_bank[MALI_OSK_MAX_RESOURCE_NUMBER] = {
+- {.description = "Mali_GP", .base = MALI_OFFSET_GP, .irq_name = "IRQGP",},
+- {.description = "Mali_GP_MMU", .base = MALI_OFFSET_GP_MMU, .irq_name = "IRQGPMMU",},
+- {.description = "Mali_PP0", .base = MALI_OFFSET_PP0, .irq_name = "IRQPP0",},
+- {.description = "Mali_PP0_MMU", .base = MALI_OFFSET_PP0_MMU, .irq_name = "IRQPPMMU0",},
+- {.description = "Mali_PP1", .base = MALI_OFFSET_PP1, .irq_name = "IRQPP1",},
+- {.description = "Mali_PP1_MMU", .base = MALI_OFFSET_PP1_MMU, .irq_name = "IRQPPMMU1",},
+- {.description = "Mali_PP2", .base = MALI_OFFSET_PP2, .irq_name = "IRQPP2",},
+- {.description = "Mali_PP2_MMU", .base = MALI_OFFSET_PP2_MMU, .irq_name = "IRQPPMMU2",},
+- {.description = "Mali_PP3", .base = MALI_OFFSET_PP3, .irq_name = "IRQPP3",},
+- {.description = "Mali_PP3_MMU", .base = MALI_OFFSET_PP3_MMU, .irq_name = "IRQPPMMU3",},
+- {.description = "Mali_PP4", .base = MALI_OFFSET_PP4, .irq_name = "IRQPP4",},
+- {.description = "Mali_PP4_MMU", .base = MALI_OFFSET_PP4_MMU, .irq_name = "IRQPPMMU4",},
+- {.description = "Mali_PP5", .base = MALI_OFFSET_PP5, .irq_name = "IRQPP5",},
+- {.description = "Mali_PP5_MMU", .base = MALI_OFFSET_PP5_MMU, .irq_name = "IRQPPMMU5",},
+- {.description = "Mali_PP6", .base = MALI_OFFSET_PP6, .irq_name = "IRQPP6",},
+- {.description = "Mali_PP6_MMU", .base = MALI_OFFSET_PP6_MMU, .irq_name = "IRQPPMMU6",},
+- {.description = "Mali_PP7", .base = MALI_OFFSET_PP7, .irq_name = "IRQPP7",},
+- {.description = "Mali_PP7_MMU", .base = MALI_OFFSET_PP7_MMU, .irq_name = "IRQPPMMU",},
+- {.description = "Mali_PP_Broadcast", .base = MALI_OFFSET_PP_BCAST, .irq_name = "IRQPP",},
+- {.description = "Mali_PMU", .base = MALI_OFFSET_PMU, .irq_name = "IRQPMU",},
++ {.description = "Mali_GP", .base = MALI_OFFSET_GP, .irq_name = "gp",},
++ {.description = "Mali_GP_MMU", .base = MALI_OFFSET_GP_MMU, .irq_name = "gpmmu",},
++ {.description = "Mali_PP0", .base = MALI_OFFSET_PP0, .irq_name = "pp0",},
++ {.description = "Mali_PP0_MMU", .base = MALI_OFFSET_PP0_MMU, .irq_name = "ppmmu0",},
++ {.description = "Mali_PP1", .base = MALI_OFFSET_PP1, .irq_name = "pp1",},
++ {.description = "Mali_PP1_MMU", .base = MALI_OFFSET_PP1_MMU, .irq_name = "ppmmu1",},
++ {.description = "Mali_PP2", .base = MALI_OFFSET_PP2, .irq_name = "pp2",},
++ {.description = "Mali_PP2_MMU", .base = MALI_OFFSET_PP2_MMU, .irq_name = "ppmmu2",},
++ {.description = "Mali_PP3", .base = MALI_OFFSET_PP3, .irq_name = "pp3",},
++ {.description = "Mali_PP3_MMU", .base = MALI_OFFSET_PP3_MMU, .irq_name = "ppmmu3",},
++ {.description = "Mali_PP4", .base = MALI_OFFSET_PP4, .irq_name = "pp4",},
++ {.description = "Mali_PP4_MMU", .base = MALI_OFFSET_PP4_MMU, .irq_name = "ppmmu4",},
++ {.description = "Mali_PP5", .base = MALI_OFFSET_PP5, .irq_name = "pp5",},
++ {.description = "Mali_PP5_MMU", .base = MALI_OFFSET_PP5_MMU, .irq_name = "ppmmu5",},
++ {.description = "Mali_PP6", .base = MALI_OFFSET_PP6, .irq_name = "pp6",},
++ {.description = "Mali_PP6_MMU", .base = MALI_OFFSET_PP6_MMU, .irq_name = "ppmmu6",},
++ {.description = "Mali_PP7", .base = MALI_OFFSET_PP7, .irq_name = "pp7",},
++ {.description = "Mali_PP7_MMU", .base = MALI_OFFSET_PP7_MMU, .irq_name = "ppmmu",},
++ {.description = "Mali_PP_Broadcast", .base = MALI_OFFSET_PP_BCAST, .irq_name = "pp",},
++ {.description = "Mali_PMU", .base = MALI_OFFSET_PMU, .irq_name = "pmu",},
+ {.description = "Mali_L2", .base = MALI_OFFSET_L2_RESOURCE0,},
+ {.description = "Mali_L2", .base = MALI_OFFSET_L2_RESOURCE1,},
+ {.description = "Mali_L2", .base = MALI_OFFSET_L2_RESOURCE2,},
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch
new file mode 100644
index 00000000..f3bcd4f1
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch
@@ -0,0 +1,67 @@
+From d4fcb32f8dc85d01c6e0dc8e5d85c7ed43f0866c Mon Sep 17 00:00:00 2001
+From: Yash Ladani <yash.ladani@amd.com>
+Date: Tue, 6 Dec 2022 00:52:53 -0800
+Subject: [PATCH] Import DMA_BUF module and update register_shrinker function
+ for kernel 5.16 or higher
+
+Added MODULE_IMPORT_NS(DMA_BUF) for kernel version 5.16 or higher.
+register_shrinker function call now requires two arguments
+for kernel 5.16 or higher updated this function call.
+
+Signed-off-by: Yash Ladani <yash.ladani@amd.com>
+---
+ linux/mali_memory_dma_buf.c | 4 ++++
+ linux/mali_memory_os_alloc.c | 5 ++++-
+ linux/mali_memory_secure.c | 4 ++++
+ 3 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/linux/mali_memory_dma_buf.c b/linux/mali_memory_dma_buf.c
+index fcdcaac..72e28a8 100644
+--- a/linux/mali_memory_dma_buf.c
++++ b/linux/mali_memory_dma_buf.c
+@@ -34,6 +34,10 @@
+ #include "mali_memory_virtual.h"
+ #include "mali_pp_job.h"
+
++#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0)
++MODULE_IMPORT_NS(DMA_BUF);
++#endif
++
+ /*
+ * Map DMA buf attachment \a mem into \a session at virtual address \a virt.
+ */
+diff --git a/linux/mali_memory_os_alloc.c b/linux/mali_memory_os_alloc.c
+index 7de3920..5bf08f8 100644
+--- a/linux/mali_memory_os_alloc.c
++++ b/linux/mali_memory_os_alloc.c
+@@ -801,8 +801,11 @@ _mali_osk_errcode_t mali_mem_os_init(void)
+ dma_set_attr(DMA_ATTR_WRITE_COMBINE, &dma_attrs_wc);
+ #endif
+
++#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0)
++ register_shrinker(&mali_mem_os_allocator.shrinker, "mali");
++#else
+ register_shrinker(&mali_mem_os_allocator.shrinker);
+-
++#endif
+ return _MALI_OSK_ERR_OK;
+ }
+
+diff --git a/linux/mali_memory_secure.c b/linux/mali_memory_secure.c
+index cebd1c8..a9d932f 100644
+--- a/linux/mali_memory_secure.c
++++ b/linux/mali_memory_secure.c
+@@ -20,6 +20,10 @@
+ #endif
+ #include <linux/dma-buf.h>
+
++#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 15, 0)
++MODULE_IMPORT_NS(DMA_BUF);
++#endif
++
+ _mali_osk_errcode_t mali_mem_secure_attach_dma_buf(mali_mem_secure *secure_mem, u32 size, int mem_fd)
+ {
+ struct dma_buf *buf;
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0026-Fix-gpu-driver-probe-failure.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0026-Fix-gpu-driver-probe-failure.patch
new file mode 100644
index 00000000..247c92ff
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0026-Fix-gpu-driver-probe-failure.patch
@@ -0,0 +1,46 @@
+From d7a56b7bdf1ea34194fe86639cc318d7a33b9abb Mon Sep 17 00:00:00 2001
+From: Parth Gajjar <parth.gajjar@xilinx.com>
+Date: Thu, 12 Jan 2023 06:00:20 -0800
+Subject: [PATCH] Fix gpu driver probe failure
+
+In patch a1a2b7125e1079cfcc13a116aa3af3df2f9e002b
+(Drop static setup of IRQ resource from DT core) platform_get_resource()
+stopped from returning the IRQ, as all drivers were supposed to have
+switched to platform_get_irq().
+Using platform_get_irq_optional() to avoid printing error messages
+for interrupts not found.
+
+Signed-off-by: Parth Gajjar <parth.gajjar@xilinx.com>
+---
+ linux/mali_osk_mali.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/linux/mali_osk_mali.c b/linux/mali_osk_mali.c
+index c22758d..3f66132 100644
+--- a/linux/mali_osk_mali.c
++++ b/linux/mali_osk_mali.c
+@@ -113,7 +113,7 @@ static int _mali_osk_get_compatible_name(const char **out_string)
+ _mali_osk_errcode_t _mali_osk_resource_initialize(void)
+ {
+ mali_bool mali_is_450 = MALI_FALSE, mali_is_470 = MALI_FALSE;
+- int i, pp_core_num = 0, l2_core_num = 0;
++ int i, pp_core_num = 0, l2_core_num = 0, irq = 0;
+ struct resource *res;
+ const char *compatible_name = NULL;
+
+@@ -128,9 +128,9 @@ _mali_osk_errcode_t _mali_osk_resource_initialize(void)
+ }
+
+ for (i = 0; i < MALI_OSK_RESOURCE_WITH_IRQ_NUMBER; i++) {
+- res = platform_get_resource_byname(mali_platform_device, IORESOURCE_IRQ, mali_osk_resource_bank[i].irq_name);
+- if (res) {
+- mali_osk_resource_bank[i].irq = res->start;
++ irq = platform_get_irq_byname_optional(mali_platform_device, mali_osk_resource_bank[i].irq_name);
++ if (irq > 0) {
++ mali_osk_resource_bank[i].irq = irq;
+ } else {
+ mali_osk_resource_bank[i].base = MALI_OSK_INVALID_RESOURCE_ADDRESS;
+ }
+--
+2.17.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch
new file mode 100644
index 00000000..18081dc3
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali/0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch
@@ -0,0 +1,95 @@
+From a64707b7fea40d326c5b18636a41a5994f60048d Mon Sep 17 00:00:00 2001
+From: Parth Gajjar <parth.gajjar@amd.com>
+Date: Fri, 24 Feb 2023 05:11:38 -0800
+Subject: [PATCH] Updated clock name and structure to match LIMA driver
+
+Clock-names:
+ gpu -> bus
+ gpu_pp0,gpu_pp1 -> core
+
+This will allow us to have a single device tree that works with both the
+mali driver, as well as the lima driver.
+
+Signed-off-by: Parth Gajjar <parth.gajjar@amd.com>
+---
+ linux/mali_kernel_linux.c | 37 +++++++------------
+ 1 file changed, 13 insertions(+), 24 deletions(-)
+
+diff --git a/linux/mali_kernel_linux.c b/linux/mali_kernel_linux.c
+index ad450b4..050af67 100644
+--- a/linux/mali_kernel_linux.c
++++ b/linux/mali_kernel_linux.c
+@@ -48,9 +48,8 @@
+
+ #if defined(CONFIG_ARCH_ZYNQMP)
+ /* Initialize variables for clocks */
+-struct clk *clk_gpu;
+-struct clk *clk_gpu_pp0;
+-struct clk *clk_gpu_pp1;
++struct clk *clk_bus;
++struct clk *clk_core;
+ mali_bool clk_enabled;
+ #endif
+
+@@ -291,19 +290,14 @@ static int mali_enable_clk(void)
+ return 0;
+
+ clk_enabled = MALI_TRUE;
+- err = clk_prepare_enable(clk_gpu);
++ err = clk_prepare_enable(clk_bus);
+ if (err) {
+ MALI_PRINT_ERROR(("Could not enable clock for GP\n\r"));
+ return err;
+ }
+- err = clk_prepare_enable(clk_gpu_pp0);
++ err = clk_prepare_enable(clk_core);
+ if (err) {
+- MALI_PRINT_ERROR(("Could not enable clock for PP0\n\r"));
+- return err;
+- }
+- err = clk_prepare_enable(clk_gpu_pp1);
+- if (err) {
+- MALI_PRINT_ERROR(("Could not enable clock for PP1\n\r"));
++ MALI_PRINT_ERROR(("Could not enable clock for PP\n\r"));
+ return err;
+ }
+ #endif
+@@ -315,9 +309,8 @@ static void mali_disable_clk(void)
+ #if defined(CONFIG_ARCH_ZYNQMP)
+ if (clk_enabled) {
+ clk_enabled = MALI_FALSE;
+- clk_disable_unprepare(clk_gpu);
+- clk_disable_unprepare(clk_gpu_pp0);
+- clk_disable_unprepare(clk_gpu_pp1);
++ clk_disable_unprepare(clk_bus);
++ clk_disable_unprepare(clk_core);
+ }
+ #endif
+ }
+@@ -631,17 +624,13 @@ static int mali_probe(struct platform_device *pdev)
+
+ #if defined(CONFIG_ARCH_ZYNQMP)
+ /* Initialize clocks for GPU and PP */
+- clk_gpu = devm_clk_get(&pdev->dev, "gpu");
+- if (IS_ERR(clk_gpu))
+- return PTR_ERR(clk_gpu);
+-
+- clk_gpu_pp0 = devm_clk_get(&pdev->dev, "core");
+- if (IS_ERR(clk_gpu_pp0))
+- return PTR_ERR(clk_gpu_pp0);
++ clk_bus = devm_clk_get(&pdev->dev, "bus");
++ if (IS_ERR(clk_bus))
++ return PTR_ERR(clk_bus);
+
+- clk_gpu_pp1 = devm_clk_get(&pdev->dev, "bus");
+- if (IS_ERR(clk_gpu_pp1))
+- return PTR_ERR(clk_gpu_pp1);
++ clk_core = devm_clk_get(&pdev->dev, "core");
++ if (IS_ERR(clk_core))
++ return PTR_ERR(clk_core);
+ #endif
+
+ err = mali_enable_clk();
+--
+2.25.1
+
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.1.bb b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.1.bb
new file mode 100644
index 00000000..56431a7f
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.1.bb
@@ -0,0 +1,58 @@
+SUMMARY = "A Mali 400 Linux Kernel module"
+SECTION = "kernel/modules"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = " \
+ file://linux/license/gpl/mali_kernel_license.h;md5=f5af2d61f4c1eb262cb6a557aaa1070a \
+ "
+
+MALI_VERSION = "r9p0-01rel0"
+PV =. "${MALI_VERSION}-v"
+
+SRC_URI = " \
+ https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${MALI_VERSION}.tgz \
+ file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
+ file://0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
+ file://0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch \
+ file://0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch \
+ file://0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+ file://0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch \
+ file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
+ file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
+ file://0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch\
+ file://0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch\
+ file://0014-linux-mali_-timer-Get-rid-of-init_timer.patch\
+ file://0015-fix-driver-failed-to-check-map-error.patch \
+ file://0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch \
+ file://0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch \
+ file://0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch \
+ file://0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch \
+ file://0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch \
+ file://0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch \
+ file://0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch \
+ file://0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch \
+ file://0024-Use-community-device-tree-names.patch \
+ file://0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch \
+ file://0026-Fix-gpu-driver-probe-failure.patch \
+ file://0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch \
+ "
+SRC_URI[md5sum] = "85ea110dd6675c70b7d01af87ec9633c"
+SRC_URI[sha256sum] = "7a67127341d17640c1fff5dad80258fb2a37c8a2121b81525fe2327e4532ce2b"
+
+inherit features_check module
+
+PARALLEL_MAKE = "-j 1"
+
+S = "${WORKDIR}/DX910-SW-99002-${MALI_VERSION}/driver/src/devicedrv/mali"
+
+REQUIRED_MACHINE_FEATURES = "mali400"
+
+EXTRA_OEMAKE = 'KDIR="${STAGING_KERNEL_DIR}" \
+ ARCH="${ARCH}" \
+ BUILD=release \
+ MALI_PLATFORM="arm" \
+ USING_DT=1 \
+ MALI_SHARED_INTERRUPTS=1 \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ MALI_QUIET=1 \
+ '
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.2.bb b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.2.bb
new file mode 100644
index 00000000..e8e46543
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2022.2.bb
@@ -0,0 +1,54 @@
+SUMMARY = "A Mali 400 Linux Kernel module"
+SECTION = "kernel/modules"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = " \
+ file://linux/license/gpl/mali_kernel_license.h;md5=f5af2d61f4c1eb262cb6a557aaa1070a \
+ "
+
+MALI_VERSION = "r9p0-01rel0"
+PV =. "${MALI_VERSION}-v"
+
+SRC_URI = " \
+ https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${MALI_VERSION}.tgz \
+ file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
+ file://0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
+ file://0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch \
+ file://0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch \
+ file://0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+ file://0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch \
+ file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
+ file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
+ file://0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch\
+ file://0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch\
+ file://0014-linux-mali_-timer-Get-rid-of-init_timer.patch\
+ file://0015-fix-driver-failed-to-check-map-error.patch \
+ file://0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch \
+ file://0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch \
+ file://0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch \
+ file://0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch \
+ file://0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch \
+ file://0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch \
+ file://0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch \
+ file://0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch \
+ "
+SRC_URI[md5sum] = "85ea110dd6675c70b7d01af87ec9633c"
+SRC_URI[sha256sum] = "7a67127341d17640c1fff5dad80258fb2a37c8a2121b81525fe2327e4532ce2b"
+
+inherit features_check module
+
+PARALLEL_MAKE = "-j 1"
+
+S = "${WORKDIR}/DX910-SW-99002-${MALI_VERSION}/driver/src/devicedrv/mali"
+
+REQUIRED_MACHINE_FEATURES = "mali400"
+
+EXTRA_OEMAKE = 'KDIR="${STAGING_KERNEL_DIR}" \
+ ARCH="${ARCH}" \
+ BUILD=release \
+ MALI_PLATFORM="arm" \
+ USING_DT=1 \
+ MALI_SHARED_INTERRUPTS=1 \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ MALI_QUIET=1 \
+ '
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.1.bb b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.1.bb
new file mode 100644
index 00000000..56431a7f
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.1.bb
@@ -0,0 +1,58 @@
+SUMMARY = "A Mali 400 Linux Kernel module"
+SECTION = "kernel/modules"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = " \
+ file://linux/license/gpl/mali_kernel_license.h;md5=f5af2d61f4c1eb262cb6a557aaa1070a \
+ "
+
+MALI_VERSION = "r9p0-01rel0"
+PV =. "${MALI_VERSION}-v"
+
+SRC_URI = " \
+ https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${MALI_VERSION}.tgz \
+ file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
+ file://0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
+ file://0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch \
+ file://0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch \
+ file://0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+ file://0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch \
+ file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
+ file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
+ file://0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch\
+ file://0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch\
+ file://0014-linux-mali_-timer-Get-rid-of-init_timer.patch\
+ file://0015-fix-driver-failed-to-check-map-error.patch \
+ file://0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch \
+ file://0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch \
+ file://0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch \
+ file://0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch \
+ file://0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch \
+ file://0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch \
+ file://0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch \
+ file://0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch \
+ file://0024-Use-community-device-tree-names.patch \
+ file://0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch \
+ file://0026-Fix-gpu-driver-probe-failure.patch \
+ file://0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch \
+ "
+SRC_URI[md5sum] = "85ea110dd6675c70b7d01af87ec9633c"
+SRC_URI[sha256sum] = "7a67127341d17640c1fff5dad80258fb2a37c8a2121b81525fe2327e4532ce2b"
+
+inherit features_check module
+
+PARALLEL_MAKE = "-j 1"
+
+S = "${WORKDIR}/DX910-SW-99002-${MALI_VERSION}/driver/src/devicedrv/mali"
+
+REQUIRED_MACHINE_FEATURES = "mali400"
+
+EXTRA_OEMAKE = 'KDIR="${STAGING_KERNEL_DIR}" \
+ ARCH="${ARCH}" \
+ BUILD=release \
+ MALI_PLATFORM="arm" \
+ USING_DT=1 \
+ MALI_SHARED_INTERRUPTS=1 \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ MALI_QUIET=1 \
+ '
diff --git a/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.2.bb b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.2.bb
new file mode 100644
index 00000000..56431a7f
--- /dev/null
+++ b/meta-xilinx-core/recipes-graphics/mali/kernel-module-mali_2023.2.bb
@@ -0,0 +1,58 @@
+SUMMARY = "A Mali 400 Linux Kernel module"
+SECTION = "kernel/modules"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = " \
+ file://linux/license/gpl/mali_kernel_license.h;md5=f5af2d61f4c1eb262cb6a557aaa1070a \
+ "
+
+MALI_VERSION = "r9p0-01rel0"
+PV =. "${MALI_VERSION}-v"
+
+SRC_URI = " \
+ https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${MALI_VERSION}.tgz \
+ file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
+ file://0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
+ file://0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch \
+ file://0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch \
+ file://0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+ file://0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch \
+ file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
+ file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
+ file://0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch\
+ file://0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch\
+ file://0014-linux-mali_-timer-Get-rid-of-init_timer.patch\
+ file://0015-fix-driver-failed-to-check-map-error.patch \
+ file://0016-mali_memory_secure-Kernel-5.0-onwards-access_ok-API-.patch \
+ file://0017-Support-for-vm_insert_pfn-deprecated-from-kernel-4.2.patch \
+ file://0018-Change-return-type-to-vm_fault_t-for-fault-handler.patch \
+ file://0019-get_monotonic_boottime-ts-deprecated-from-kernel-4.2.patch \
+ file://0020-Fix-ioremap_nocache-deprecation-in-kernel-5.6.patch \
+ file://0021-Use-updated-timekeeping-functions-in-kernel-5.6.patch \
+ file://0022-Set-HAVE_UNLOCKED_IOCTL-default-to-true.patch \
+ file://0023-Use-PTR_ERR_OR_ZERO-instead-of-PTR_RET.patch \
+ file://0024-Use-community-device-tree-names.patch \
+ file://0025-Import-DMA_BUF-module-and-update-register_shrinker-f.patch \
+ file://0026-Fix-gpu-driver-probe-failure.patch \
+ file://0027-Updated-clock-name-and-structure-to-match-LIMA-drive.patch \
+ "
+SRC_URI[md5sum] = "85ea110dd6675c70b7d01af87ec9633c"
+SRC_URI[sha256sum] = "7a67127341d17640c1fff5dad80258fb2a37c8a2121b81525fe2327e4532ce2b"
+
+inherit features_check module
+
+PARALLEL_MAKE = "-j 1"
+
+S = "${WORKDIR}/DX910-SW-99002-${MALI_VERSION}/driver/src/devicedrv/mali"
+
+REQUIRED_MACHINE_FEATURES = "mali400"
+
+EXTRA_OEMAKE = 'KDIR="${STAGING_KERNEL_DIR}" \
+ ARCH="${ARCH}" \
+ BUILD=release \
+ MALI_PLATFORM="arm" \
+ USING_DT=1 \
+ MALI_SHARED_INTERRUPTS=1 \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ MALI_QUIET=1 \
+ '