[meta-xilinx] [meta-xilinx-bsp][PATCH v2] kernel-module-mali: Update Mali driver to r8p0-01rel0
Manjukumar Harthikote Matha
MANJUKUM at xilinx.com
Fri May 25 11:41:39 PDT 2018
Applied
Thanks,
Manju
> -----Original Message-----
> From: Manjukumar Matha [mailto:manjukumar.harthikote-matha at xilinx.com]
> Sent: Friday, April 13, 2018 1:01 PM
> To: meta-xilinx at yoctoproject.org
> Cc: Madhurkiran Harikrishnan <MADHURKI at xilinx.com>; Madhurkiran
> Harikrishnan <MADHURKI at xilinx.com>; Manjukumar Harthikote Matha
> <MANJUKUM at xilinx.com>
> Subject: [meta-xilinx-bsp][PATCH v2] kernel-module-mali: Update Mali driver to
> r8p0-01rel0
>
> From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan at xilinx.com>
>
> This patch will update Mali kernel driver to r8p0-01rel0.
>
> Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> Tested-by: Jaewon Lee <jaewon.lee at xilinx.com>
> Reviewed-by: Hyun Kwon <hyun.kwon at xilinx.com>
> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha at xilinx.com>
> ---
> Changelog:
> v2: Add missing patches to kernel-module-mali
> 0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
> 0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
>
> .../recipes-graphics/mali/kernel-module-mali.bb | 25 ++--
> ...ange-Makefile-to-be-compatible-with-Yocto.patch | 24 ++--
> ...i-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch | 52 -------
> ...i-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch | 52 +++++++
> ...li-r7p0-00rel0-Remove-unused-trace-macros.patch | 33 -----
> ...li-r8p0-01rel0-Remove-unused-trace-macros.patch | 35 +++++
> ...i-r7p0-00rel0-Don-t-include-mali_read_phy.patch | 47 -------
> ...i-r8p0-01rel0-Don-t-include-mali_read_phy.patch | 47 +++++++
> ...kernel_linux.c-Handle-clock-when-probed-a.patch | 90 ++++++++++++
> ...-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch | 29 ----
> ...l-variable-dma_ops-is-removed-from-the-ke.patch | 35 +++++
> ...-mali-r7p0-page_cache_release-to-put_page.patch | 30 ----
> ...place-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch | 54 ++++++++
> ..._os_alloc.c-Align-with-dma_attrs-changes-.patch | 92 -------------
> ...ps-will-be-modified-by-the-driver-only-ti.patch | 34 -----
> ...al_sync-Rename-wait_queue_t-with-wait_que.patch | 108 +++++++++++++++
> ...kernel_linux.c-Handle-clock-when-probed-a.patch | 90 ------------
> ..._swap_alloc.c-Rename-global_page_state-wi.patch | 48 +++++++
> ..._pm.c-Add-PM-runtime-barrier-after-removi.patch | 4 +-
> ...kernel_linux.c-Enable-disable-clock-for-r.patch | 153 +++++++++++++++++++++
> 20 files changed, 648 insertions(+), 434 deletions(-)
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
> delete mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
> create mode 100644 meta-xilinx-bsp/recipes-graphics/mali/kernel-module-
> mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
>
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb b/meta-
> xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
> index edd8cbe..3d7c6a9 100644
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
> @@ -3,26 +3,27 @@ SECTION = "kernel/modules"
>
> LICENSE = "GPLv2"
> LIC_FILES_CHKSUM = " \
> -
> file://linux/license/gpl/mali_kernel_license.h;md5=1436c0d10458982416
> 3a3eb50fbb5050 \
> +
> file://linux/license/gpl/mali_kernel_license.h;md5=436192a2c5cfd47df0a
> d1987dffc4ae6 \
> "
>
> -PV = "r7p0-00rel0"
> +PV = "r8p0-01rel0"
>
> SRC_URI = " \
> https://developer.arm.com/-/media/Files/downloads/mali-
> drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${PV}.tgz \
> file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
> - file://0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-
> platfor.patch \
> - file://0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
> \
> - file://0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch \
> - file://0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch \
> - file://0006-staging-mali-r7p0-page_cache_release-to-put_page.patch \
> - file://0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
> \
> - file://0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch \
> - file://0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.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://0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch \
> + file://0008-mali_internal_sync-Rename-wait_queue_t-with-
> wait_que.patch \
> + file://0009-mali_memory_swap_alloc.c-Rename-global_page_state-
> wi.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\
> "
> -SRC_URI[md5sum] = "db3ef3258eb55700484ecadfdce1fee1"
> -SRC_URI[sha256sum] =
> "496ba80684aa4236806891a8445978849f7dd07299f5e58b14d52cd5e7ba0536"
> +SRC_URI[md5sum] = "8f04ae86957fd56197ad5a9d017b84ff"
> +SRC_URI[sha256sum] =
> "bfd14fa3f75a71d4ba313534e651ca1c58dc354e882c0b39867e335882a06350"
>
> inherit module
>
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-
> Change-Makefile-to-be-compatible-with-Yocto.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-
> Yocto.patch
> index 0314734..e5eeb19 100644
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-
> Makefile-to-be-compatible-with-Yocto.patch
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-
> Makefile-to-be-compatible-with-Yocto.patch
> @@ -1,20 +1,21 @@
> -From d9a4441c31faef60b7f39692df6913d58ec69d1b Mon Sep 17 00:00:00
> 2001
> -From: Hyun Kwon <hyun.kwon at xilinx.com>
> -Date: Thu, 8 Sep 2016 09:56:40 -0700
> -Subject: [PATCH 1/6] Change Makefile to be compatible with Yocto
> +From 6d283b9aa3f7fb761da4cb076b47a62275fc4caa Mon Sep 17 00:00:00
> 2001
> +From: Madhurkiran Harikrishnan <madhurki at 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 at xilinx.com>
> Signed-off-by: Hyun Kwon <hyun.kwon at xilinx.com>
> -Upstream Status: Pending
> +Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Upstream Status: Inappropriate [Xilinx specific]
> ---
> - driver/src/devicedrv/mali/Makefile | 13 +++++++++++--
> - 1 file changed, 11 insertions(+), 2 deletions(-)
> + 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 f39ae4d..9ef9713 100755
> +index 5a259fe..a6dd94c 100644
> --- Makefile
> +++ b/Makefile
> -@@ -88,7 +88,11 @@ endif
> +@@ -89,7 +89,11 @@ endif
> # Define host system directory
> KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
>
> @@ -27,12 +28,9 @@ index f39ae4d..9ef9713 100755
>
> ifeq ($(ARCH), arm)
> # when compiling for ARM we're cross compiling
> -@@ -193,10 +197,15 @@ ifeq ($(MALI_MEM_SWAP_TRACKING),1)
> - EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
> +@@ -204,9 +208,12 @@ EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
> endif
>
> -+EXTRA_DEFINES += -Wno-error=date-time
> -+
> all: $(UMP_SYMVERS_FILE)
> - $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) modules
> + $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) O=$(O) modules
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-
> staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-
> Add-the-ZYNQ-ZYNQMP-platfor.patch
> deleted file mode 100644
> index 363153e..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-
> mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -From 65a8f9eb32322538396607805dcbc28aa0aadcb7 Mon Sep 17 00:00:00
> 2001
> -From: Hyun Kwon <hyun.kwon at xilinx.com>
> -Date: Thu, 25 Jun 2015 17:14:42 -0700
> -Subject: [PATCH 2/6] staging: mali: r7p0-00rel0: 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 at xilinx.com>
> -Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> -Upstream Status: Pending
> ----
> - 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 a7ff1b2..0682842 100755
> ---- 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-bsp/recipes-graphics/mali/kernel-module-mali/0002-
> staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-
> Add-the-ZYNQ-ZYNQMP-platfor.patch
> new file mode 100644
> index 0000000..0a7b673
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at xilinx.com>
> +Signed-off-by: Michal Simek <michal.simek at 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-bsp/recipes-graphics/mali/kernel-module-mali/0003-
> staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-
> Remove-unused-trace-macros.patch
> deleted file mode 100644
> index fc0dc6e..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-
> mali-r7p0-00rel0-Remove-unused-trace-macros.patch
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -From c86d22f1133647518a68f9f1cbe73e1797e68fa8 Mon Sep 17 00:00:00
> 2001
> -From: Hyun Kwon <hyun.kwon at xilinx.com>
> -Date: Tue, 3 May 2016 08:11:38 -0700
> -Subject: [PATCH 3/6] staging: mali: r7p0-00rel0: Remove unused trace macros
> -
> -TRACE_SYSTEM_STRING is not need in each trace file anymore.
> -
> -Signed-off-by: Hyun Kwon <hyun.kwon at 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 2c91ddc..d4e45ab 100755
> ---- linux/mali_linux_trace.h
> -+++ b/linux/mali_linux_trace.h
> -@@ -13,12 +13,10 @@
> -
> - #include <linux/types.h>
> -
> --#include <linux/stringify.h>
> - #include <linux/tracepoint.h>
> -
> - #undef TRACE_SYSTEM
> - #define TRACE_SYSTEM mali
> --#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
> -
> - #define TRACE_INCLUDE_PATH .
> - #define TRACE_INCLUDE_FILE mali_linux_trace
> ---
> -2.7.4
> -
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-
> staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-
> Remove-unused-trace-macros.patch
> new file mode 100644
> index 0000000..98aa6ac
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at xilinx.com>
> +Signed-off-by: Madhurkiran Harikrishnan <madhurki at 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-bsp/recipes-graphics/mali/kernel-module-mali/0004-
> staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-
> Don-t-include-mali_read_phy.patch
> deleted file mode 100644
> index ce3bea0..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-
> mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -From 3e6fb4697bddc4cfbb82e6a0b2f9f28d5c1d0a04 Mon Sep 17 00:00:00
> 2001
> -From: Hyun Kwon <hyun.kwon at xilinx.com>
> -Date: Wed, 29 Jun 2016 09:14:37 -0700
> -Subject: [PATCH 4/6] staging: mali: r7p0-00rel0: 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 at xilinx.com>
> -Upstream Status: Pending
> ----
> - 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 0682842..c6f58d8 100755
> ---- 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-bsp/recipes-graphics/mali/kernel-module-mali/0004-
> staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-
> Don-t-include-mali_read_phy.patch
> new file mode 100644
> index 0000000..c5c4967
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at 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-bsp/recipes-graphics/mali/kernel-module-mali/0005-linux-
> mali_kernel_linux.c-Handle-clock-when-probed-a.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-
> when-probed-a.patch
> new file mode 100644
> index 0000000..3d78460
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at 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-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-
> r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-
> PAGE_CACHE.patch
> deleted file mode 100644
> index 32dd9d4..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-
> PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From ac3baaacbaa564e768529dcb2353a84eb47ae847 Mon Sep 17 00:00:00
> 2001
> -From: Hyun Kwon <hyun.kwon at xilinx.com>
> -Date: Mon, 12 Sep 2016 13:12:46 -0700
> -Subject: [PATCH 5/6] mali: r7p0: PAGE_CACHE_SHIFT to PAGE_CACHE
> -
> -09cbfea removed PAGE_CACHE_*.
> -
> -Signed-off-by: Hyun Kwon <hyun.kwon at xilinx.com>
> -Upstream Status: Pending
> ----
> - driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> -index 4793328..1aea47b 100755
> ---- linux/mali_memory_swap_alloc.c
> -+++ b/linux/mali_memory_swap_alloc.c
> -@@ -52,7 +52,7 @@ extern struct mali_mem_os_allocator
> mali_mem_os_allocator;
> - #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
> - #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0) /* Used to mark
> the given memory cookie is invalidate. */
> - #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
> --#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX
> ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_CACHE_SHIFT)
> -+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX
> ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_SHIFT)
> - #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved
> for CoW nonlinear swap backend memory, the space size is 128MB. */
> -
> - unsigned int mali_mem_swap_out_threshold_value =
> MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
> ---
> -2.7.4
> -
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-arm.c-
> global-variable-dma_ops-is-removed-from-the-ke.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-
> removed-from-the-ke.patch
> new file mode 100644
> index 0000000..3e1745f
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at 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-bsp/recipes-graphics/mali/kernel-module-mali/0006-
> staging-mali-r7p0-page_cache_release-to-put_page.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-
> page_cache_release-to-put_page.patch
> deleted file mode 100644
> index 5582bfa..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-
> mali-r7p0-page_cache_release-to-put_page.patch
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -From 9dd708ba609b826c07fa91d8a5ee56b368ae8183 Mon Sep 17 00:00:00
> 2001
> -From: "madhurki at xilinx.com" <madhurki at xilinx.com>
> -Date: Mon, 12 Sep 2016 17:14:34 -0700
> -Subject: [PATCH 6/6] staging: mali: r7p0: page_cache_release() to put_page()
> -
> -09cbfea replaced page_cache_release() to put_page().
> -
> -Signed-off-by: Hyun Kwon <hyun.kwon at xilinx.com>
> -Signed-off-by: madhurki at xilinx.com <madhurki at xilinx.com>
> -Upstream Status: Pending
> ----
> - driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> -index 1aea47b..068e4d0 100755
> ---- linux/mali_memory_swap_alloc.c
> -+++ b/linux/mali_memory_swap_alloc.c
> -@@ -183,7 +183,7 @@ static void
> mali_mem_swap_out_page_node(mali_page_node *page_node)
> - dma_unmap_page(&mali_platform_device->dev, page_node->swap_it-
> >dma_addr,
> - _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
> - set_page_dirty(page_node->swap_it->page);
> -- page_cache_release(page_node->swap_it->page);
> -+ put_page(page_node->swap_it->page);
> - }
> -
> - void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend
> *mem_bkend)
> ---
> -2.7.4
> -
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-
> Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-__GFP_REPEAT-by-
> __GFP_RETRY_MAYFAIL.patch
> new file mode 100644
> index 0000000..6e5f544
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-
> __GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
> @@ -0,0 +1,54 @@
> +From a8190cd3b346633016d1c0096ef73e0e1ceef438 Mon Sep 17 00:00:00
> 2001
> +From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Date: Tue, 5 Dec 2017 09:25:15 -0800
> +Subject: [PATCH 7/9] Replace __GFP_REPEAT by __GFP_RETRY_MAYFAIL
> +
> +Refer kernel patch dcda9b04713c3f6ff0875652924844fae28286ea
> +which replaces with a useful semantic
> +
> +Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Upstream-Status: Pending
> +---
> + driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c | 4 ++++
> + driver/src/devicedrv/mali/linux/mali_osk_notification.c | 7 ++++++-
> + 2 files changed, 10 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 5fe1270..1602371 100644
> +--- linux/mali_memory_os_alloc.c
> ++++ b/linux/mali_memory_os_alloc.c
> +@@ -202,7 +202,11 @@ 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)
> ++ gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL |
> __GFP_NOWARN | __GFP_COLD;
> ++#else
> + gfp_t flags = __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN |
> __GFP_COLD;
> ++#endif
> + int err;
> +
> + #if defined(CONFIG_ARM) && !defined(CONFIG_ARM_LPAE)
> +diff --git a/driver/src/devicedrv/mali/linux/mali_osk_notification.c
> b/driver/src/devicedrv/mali/linux/mali_osk_notification.c
> +index b22fe68..d0c302a 100644
> +--- linux/mali_osk_notification.c
> ++++ b/linux/mali_osk_notification.c
> +@@ -55,9 +55,14 @@ _mali_osk_notification_t
> *_mali_osk_notification_create(u32 type, u32 size)
> + {
> + /* OPT Recycling of notification objects */
> + _mali_osk_notification_wrapper_t *notification;
> +-
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
> ++ notification = (_mali_osk_notification_wrapper_t
> *)kmalloc(sizeof(_mali_osk_notification_wrapper_t) + size,
> ++ GFP_KERNEL | __GFP_HIGH | __GFP_RETRY_MAYFAIL);
> ++#else
> + notification = (_mali_osk_notification_wrapper_t
> *)kmalloc(sizeof(_mali_osk_notification_wrapper_t) + size,
> + GFP_KERNEL | __GFP_HIGH | __GFP_REPEAT);
> ++#endif
> ++
> + if (NULL == notification) {
> + MALI_DEBUG_PRINT(1, ("Failed to create a notification
> object\n"));
> + return NULL;
> +--
> +2.7.4
> +
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-
> mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-
> Align-with-dma_attrs-changes-.patch
> deleted file mode 100644
> index 79c507d..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-
> mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
> +++ /dev/null
> @@ -1,92 +0,0 @@
> -From f0a49bccbdd910c48aab59e07aed98093f4a0fea Mon Sep 17 00:00:00
> 2001
> -From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> -Date: Wed, 25 Jan 2017 02:59:40 -0800
> -Subject: [PATCH 1/2] mali_memory_os_alloc.c: Align with dma_attrs changes
> from
> - 4.8 Kernel
> -
> -From 4.8 Kernel the DMA attributes is no longer a pointer but an unsigned long.
> -
> -Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> -Upstream Status: Pending
> ----
> - .../devicedrv/mali/linux/mali_memory_os_alloc.c | 25 +++++++++++++++++-----
> - 1 file changed, 20 insertions(+), 5 deletions(-)
> -
> -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 7f229eb..08fa2fb 100755
> ---- linux/mali_memory_os_alloc.c
> -+++ b/linux/mali_memory_os_alloc.c
> -@@ -26,9 +26,11 @@
> - #define MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_PAGES
> (MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB * 256)
> - #define MALI_OS_MEMORY_POOL_TRIM_JIFFIES (10 * CONFIG_HZ) /* Default to
> 10s */
> -
> --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
> -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) &&
> LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
> - /* Write combine dma_attrs */
> - static DEFINE_DMA_ATTRS(dma_attrs_wc);
> -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
> -+static unsigned long dma_attrs_wc;
> - #endif
> -
> - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
> -@@ -511,10 +513,14 @@ _mali_osk_errcode_t
> mali_mem_os_get_table_page(mali_dma_addr *phys, mali_io_addr
> - spin_unlock(&mali_mem_page_table_page_pool.lock);
> -
> - if (_MALI_OSK_ERR_OK != ret) {
> --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
> -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) &&
> LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
> - *mapping = dma_alloc_attrs(&mali_platform_device->dev,
> - _MALI_OSK_MALI_PAGE_SIZE,
> &tmp_phys,
> - GFP_KERNEL, &dma_attrs_wc);
> -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
> -+ *mapping = dma_alloc_attrs(&mali_platform_device->dev,
> -+ _MALI_OSK_MALI_PAGE_SIZE,
> &tmp_phys,
> -+ GFP_KERNEL, dma_attrs_wc);
> - #else
> - *mapping = dma_alloc_writecombine(&mali_platform_device-
> >dev,
> - _MALI_OSK_MALI_PAGE_SIZE,
> &tmp_phys, GFP_KERNEL);
> -@@ -550,10 +556,14 @@ void
> mali_mem_os_release_table_page(mali_dma_addr phys, void *virt)
> - } else {
> - spin_unlock(&mali_mem_page_table_page_pool.lock);
> -
> --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
> -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) &&
> LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
> - dma_free_attrs(&mali_platform_device->dev,
> - _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
> - &dma_attrs_wc);
> -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
> -+ dma_free_attrs(&mali_platform_device->dev,
> -+ _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
> -+ dma_attrs_wc);
> - #else
> - dma_free_writecombine(&mali_platform_device->dev,
> - _MALI_OSK_MALI_PAGE_SIZE, virt, phys);
> -@@ -606,9 +616,12 @@ static void mali_mem_os_page_table_pool_free(size_t
> nr_to_free)
> -
> - /* After releasing the spinlock: free the pages we removed from the pool.
> */
> - for (i = 0; i < nr_to_free; i++) {
> --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
> -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) &&
> LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
> - dma_free_attrs(&mali_platform_device->dev,
> _MALI_OSK_MALI_PAGE_SIZE,
> - virt_arr[i], (dma_addr_t)phys_arr[i], &dma_attrs_wc);
> -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
> -+ dma_free_attrs(&mali_platform_device->dev,
> _MALI_OSK_MALI_PAGE_SIZE,
> -+ virt_arr[i], (dma_addr_t)phys_arr[i],
> dma_attrs_wc);
> - #else
> - dma_free_writecombine(&mali_platform_device->dev,
> - _MALI_OSK_MALI_PAGE_SIZE,
> -@@ -757,8 +770,10 @@ _mali_osk_errcode_t mali_mem_os_init(void)
> - return _MALI_OSK_ERR_NOMEM;
> - }
> -
> --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
> -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) &&
> LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
> - dma_set_attr(DMA_ATTR_WRITE_COMBINE, &dma_attrs_wc);
> -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
> -+ dma_attrs_wc |= DMA_ATTR_WRITE_COMBINE;
> - #endif
> -
> - register_shrinker(&mali_mem_os_allocator.shrinker);
> ---
> -2.7.4
> -
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-
> dma_ops-will-be-modified-by-the-driver-only-ti.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-
> driver-only-ti.patch
> deleted file mode 100644
> index c11b60a..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-
> dma_ops-will-be-modified-by-the-driver-only-ti.patch
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -From 4bb78550d818b9e6491fa2d3b9706bb217a1597b Mon Sep 17 00:00:00
> 2001
> -From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> -Date: Wed, 25 Jan 2017 10:00:33 -0800
> -Subject: [PATCH 2/2] arm.c: dma_ops will be modified by the driver only till
> - Kernel v4.7
> -
> -From v4.8(Platform specific) Kernel the arch_setup_dma_ops will
> -not give a dummy_dma_ops if acpi is disabled rather pass a valid
> -dma_ops.
> -
> -Signed-off-by: Madhurkiran Harikrishnan <madhurki at 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 c6f58d8..36965fe 100755
> ---- 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-bsp/recipes-graphics/mali/kernel-module-mali/0008-
> mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0008-mali_internal_sync-Rename-
> wait_queue_t-with-wait_que.patch
> new file mode 100644
> index 0000000..592fea0
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-
> mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
> @@ -0,0 +1,108 @@
> +From 717d7899f6d8048c6b88b3c52e8a9c8afbddbb65 Mon Sep 17 00:00:00
> 2001
> +From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Date: Tue, 5 Dec 2017 09:48:42 -0800
> +Subject: [PATCH 8/9] mali_internal_sync: Rename wait_queue_t with
> + wait_queue_entry_t
> +
> +Refer kernel patch ac6424b981bce1c4bc55675c6ce11bfe1bbfa64f
> +and 2055da which replaces the struct name
> +
> +Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Upstream-Status: Pending
> +---
> + .../src/devicedrv/mali/linux/mali_internal_sync.c | 27 ++++++++++++++++++++--
> + .../src/devicedrv/mali/linux/mali_internal_sync.h | 4 ++++
> + 2 files changed, 29 insertions(+), 2 deletions(-)
> +
> +diff --git a/driver/src/devicedrv/mali/linux/mali_internal_sync.c
> b/driver/src/devicedrv/mali/linux/mali_internal_sync.c
> +index 1f2574e..957a056 100644
> +--- linux/mali_internal_sync.c
> ++++ b/linux/mali_internal_sync.c
> +@@ -121,8 +121,13 @@ static void mali_internal_sync_fence_add_fence(struct
> mali_internal_sync_fence *
> + }
> + #endif
> +
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++static int mali_internal_sync_fence_wake_up_wq(wait_queue_entry_t *curr,
> unsigned mode,
> ++ int wake_flags, void *key)
> ++#else
> + static int mali_internal_sync_fence_wake_up_wq(wait_queue_t *curr, unsigned
> mode,
> + int wake_flags, void *key)
> ++#endif
> + {
> + struct mali_internal_sync_fence_waiter *wait;
> + MALI_IGNORE(mode);
> +@@ -130,8 +135,12 @@ static int
> mali_internal_sync_fence_wake_up_wq(wait_queue_t *curr, unsigned mode
> + MALI_IGNORE(key);
> +
> + wait = container_of(curr, struct mali_internal_sync_fence_waiter, work);
> +- list_del_init(&wait->work.task_list);
> +
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++ list_del_init(&wait->work.entry);
> ++#else
> ++ list_del_init(&wait->work.task_list);
> ++#endif
> + wait->callback(wait->work.private, wait);
> + return 1;
> + }
> +@@ -498,7 +507,11 @@ void mali_internal_sync_fence_waiter_init(struct
> mali_internal_sync_fence_waiter
> + MALI_DEBUG_ASSERT_POINTER(waiter);
> + MALI_DEBUG_ASSERT_POINTER(callback);
> +
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++ INIT_LIST_HEAD(&waiter->work.entry);
> ++#else
> + INIT_LIST_HEAD(&waiter->work.task_list);
> ++#endif
> + waiter->callback = callback;
> + }
> +
> +@@ -560,8 +573,13 @@ int mali_internal_sync_fence_wait_async(struct
> mali_internal_sync_fence *sync_fe
> + spin_lock_irqsave(&sync_fence->wq.lock, flags);
> + err = sync_fence->fence->ops->signaled(sync_fence->fence);
> +
> +- if (0 == err)
> ++ if (0 == err){
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++ __add_wait_queue_entry_tail(&sync_fence->wq, &waiter->work);
> ++#else
> + __add_wait_queue_tail(&sync_fence->wq, &waiter->work);
> ++#endif
> ++ }
> + spin_unlock_irqrestore(&sync_fence->wq.lock, flags);
> +
> + return err;
> +@@ -578,8 +596,13 @@ int mali_internal_sync_fence_cancel_async(struct
> mali_internal_sync_fence *sync_
> + MALI_DEBUG_ASSERT_POINTER(waiter);
> +
> + spin_lock_irqsave(&sync_fence->wq.lock, flags);
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++ if (!list_empty(&waiter->work.entry))
> ++ list_del_init(&waiter->work.entry);
> ++#else
> + if (!list_empty(&waiter->work.task_list))
> + list_del_init(&waiter->work.task_list);
> ++#endif
> + else
> + ret = -ENOENT;
> + spin_unlock_irqrestore(&sync_fence->wq.lock, flags);
> +diff --git a/driver/src/devicedrv/mali/linux/mali_internal_sync.h
> b/driver/src/devicedrv/mali/linux/mali_internal_sync.h
> +index a5655c7..70f29f9 100644
> +--- linux/mali_internal_sync.h
> ++++ b/linux/mali_internal_sync.h
> +@@ -112,7 +112,11 @@ typedef void (*mali_internal_sync_callback_t)(struct
> mali_internal_sync_fence *s
> + struct mali_internal_sync_fence_waiter *waiter);
> +
> + struct mali_internal_sync_fence_waiter {
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
> ++ wait_queue_entry_t work;
> ++#else
> + wait_queue_t work;
> ++#endif
> + mali_internal_sync_callback_t callback;
> + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
> + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
> +--
> +2.7.4
> +
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-
> mali_kernel_linux.c-Handle-clock-when-probed-a.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-
> when-probed-a.patch
> deleted file mode 100644
> index 34cbccf..0000000
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-
> mali_kernel_linux.c-Handle-clock-when-probed-a.patch
> +++ /dev/null
> @@ -1,90 +0,0 @@
> -From ba8c94302a1c606315109a9d1cee342213fdbf98 Mon Sep 17 00:00:00
> 2001
> -From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> -Date: Thu, 16 Feb 2017 12:15:58 -0800
> -Subject: [PATCH] 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 at xilinx.com>
> -Upstream-Status: Inappropriate [Specific to Xilinx ZynqMP]
> ----
> - .../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 9bfa2bd..cfde20f 100755
> ---- 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-bsp/recipes-graphics/mali/kernel-module-mali/0009-
> mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0009-mali_memory_swap_alloc.c-
> Rename-global_page_state-wi.patch
> new file mode 100644
> index 0000000..3445512
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-
> mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
> @@ -0,0 +1,48 @@
> +From 478de18bf513ecad419d25981e7b66c78126752c Mon Sep 17 00:00:00
> 2001
> +From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Date: Tue, 5 Dec 2017 09:58:36 -0800
> +Subject: [PATCH 9/9] mali_memory_swap_alloc.c: Rename global_page_state
> with
> + global_zone_page_state
> +
> +Refer Kernel commit c41f012ade0b95b0a6e25c7150673e0554736165
> +Which simply renames without any functional changes
> +
> +Signed-off-by: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> +Upstream-Status: Pending
> +---
> + driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 10 +++++++++-
> + 1 file changed, 9 insertions(+), 1 deletion(-)
> +
> +diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
> +index a54faca..e122b4c 100644
> +--- linux/mali_memory_swap_alloc.c
> ++++ b/linux/mali_memory_swap_alloc.c
> +@@ -248,7 +248,11 @@ static void
> mali_mem_swap_swapped_bkend_pool_shrink(_mali_mem_swap_pool_shrink_t
> + }
> +
> + /* Get system free pages number. */
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
> ++ system_free_size = global_zone_page_state(NR_FREE_PAGES) *
> PAGE_SIZE;
> ++#else
> + system_free_size = global_page_state(NR_FREE_PAGES) * PAGE_SIZE;
> ++#endif
> + last_gpu_utilization = _mali_ukk_utilization_gp_pp();
> +
> + if ((last_gpu_utilization < gpu_utilization_threshold_value)
> +@@ -575,8 +579,12 @@ int mali_mem_swap_alloc_pages(mali_mem_swap
> *swap_mem, u32 size, u32 *bkend_idx)
> +
> + list_add_tail(&m_page->list, &swap_mem->pages);
> + }
> +-
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
> ++ system_free_size = global_zone_page_state(NR_FREE_PAGES) *
> PAGE_SIZE;
> ++#else
> + system_free_size = global_page_state(NR_FREE_PAGES) * PAGE_SIZE;
> ++#endif
> ++
> +
> + if ((system_free_size < mali_mem_swap_out_threshold_value)
> + && (mem_backend_swapped_pool_size >
> (mali_mem_swap_out_threshold_value >> 2))
> +--
> +2.7.4
> +
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-
> common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch b/meta-xilinx-
> bsp/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-
> PM-runtime-barrier-after-removi.patch
> index ad159ba..98a86c8 100644
> --- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-
> mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
> +++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-
> mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
> @@ -1,4 +1,4 @@
> -From 572d234259158bf9f046c2393a65e2800bec1062 Mon Sep 17 00:00:00
> 2001
> +From 58e2c55176f1a146781430b2a570c8ce5f80d426 Mon Sep 17 00:00:00
> 2001
> From: Madhurkiran Harikrishnan <madhurki at xilinx.com>
> Date: Mon, 28 Aug 2017 09:40:37 -0700
> Subject: [PATCH] common/mali_pm.c: Add PM runtime barrier after removing
> @@ -15,7 +15,7 @@ Upstream-Status: Pending
> 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 1ef03a6..0343ad3 100755
> +index 858c689..62a1e5f 100644
> --- common/mali_pm.c
> +++ b/common/mali_pm.c
> @@ -301,6 +301,7 @@ void mali_pm_init_end(void)
> diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0011-linux-
> mali_kernel_linux.c-Enable-disable-clock-for-r.patch b/meta-xilinx-bsp/recipes-
> graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-
> clock-for-r.patch
> new file mode 100644
> index 0000000..38ab404
> --- /dev/null
> +++ b/meta-xilinx-bsp/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 at 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 at xilinx.com>
> +Reviewed-by: Hyun Kwon <hyunk at 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
> +
> --
> 2.7.4
More information about the meta-xilinx
mailing list