summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMadhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>2018-12-11 06:54:15 -0800
committerManjukumar Matha <manjukumar.harthikote-matha@xilinx.com>2019-06-28 14:20:30 -0700
commit22d9e2a8e00a029be125178ddddd1bbf653eb002 (patch)
tree7ce9d891c2b47b1a23a23ba3f41ae15b36b21b4d
parent092608220442b2ca86ef802cb9599c825f27216b (diff)
downloadmeta-xilinx-22d9e2a8e00a029be125178ddddd1bbf653eb002.tar.gz
kernel-module-mali: Fix errors associated with kernel upgrade to 4.19
These patches fixes errors caused by removal of ancient init_timer API. Also, addresses the removal of hot/cold cache pages in the kernel. Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
-rw-r--r--meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb3
-rw-r--r--meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch33
-rw-r--r--meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch34
-rw-r--r--meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch156
4 files changed, 226 insertions, 0 deletions
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 327f8f09..fe2fbdcf 100644
--- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
+++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
@@ -21,6 +21,9 @@ SRC_URI = " \
21 file://0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch \ 21 file://0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch \
22 file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \ 22 file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
23 file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\ 23 file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
24 file://0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch\
25 file://0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch\
26 file://0014-linux-mali_-timer-Get-rid-of-init_timer.patch\
24 " 27 "
25SRC_URI[md5sum] = "8f04ae86957fd56197ad5a9d017b84ff" 28SRC_URI[md5sum] = "8f04ae86957fd56197ad5a9d017b84ff"
26SRC_URI[sha256sum] = "bfd14fa3f75a71d4ba313534e651ca1c58dc354e882c0b39867e335882a06350" 29SRC_URI[sha256sum] = "bfd14fa3f75a71d4ba313534e651ca1c58dc354e882c0b39867e335882a06350"
diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch b/meta-xilinx-bsp/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-bsp/recipes-graphics/mali/kernel-module-mali/0012-linux-mali_memory_os_alloc-Remove-__GFP_COLD.patch
@@ -0,0 +1,33 @@
1From 779b1883d56804ecd08fe7f57d6c01e3db4e893b Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
3Date: Wed, 5 Dec 2018 18:07:29 -0800
4Subject: [PATCH 1/3] linux: mali_memory_os_alloc: Remove __GFP_COLD
5
6The support for Cache hot and cold pages are removed from the kernel.
7For more information refer kernel commit 453f85d43fa9ee243f0fc3ac4e1be45615301e3f
8
9Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
10Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
11Upstream Status: Pending
12---
13 driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c | 4 +++-
14 1 file changed, 3 insertions(+), 1 deletion(-)
15
16diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
17index 1602371..830e8c6 100644
18--- linux/mali_memory_os_alloc.c
19+++ b/linux/mali_memory_os_alloc.c
20@@ -202,7 +202,9 @@ int mali_mem_os_alloc_pages(mali_mem_os_mem *os_mem, u32 size)
21 /* Allocate new pages, if needed. */
22 for (i = 0; i < remaining; i++) {
23 dma_addr_t dma_addr;
24-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
25+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
26+ gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
27+#elif LINUX_VERSION_CODE == KERNEL_VERSION(4, 14, 0)
28 gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN | __GFP_COLD;
29 #else
30 gfp_t flags = __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN | __GFP_COLD;
31--
322.7.4
33
diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch b/meta-xilinx-bsp/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-bsp/recipes-graphics/mali/kernel-module-mali/0013-linux-mali_memory_secure-Add-header-file-dma-direct..patch
@@ -0,0 +1,34 @@
1From d20b6eb3e48e56558488dbdda98875b1aed0c29f Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
3Date: Wed, 5 Dec 2018 18:13:28 -0800
4Subject: [PATCH 2/3] linux: mali_memory_secure: Add header file dma-direct.h
5
6Add dma-direct.h header, as API dma_to_phys is defined here.
7refer kernel commit ea8c64ace86647260ec4255f483e5844d62af2df
8
9Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
10Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
11Upstream Status: Pending
12---
13 driver/src/devicedrv/mali/linux/mali_memory_secure.c | 4 ++++
14 1 file changed, 4 insertions(+)
15
16diff --git a/driver/src/devicedrv/mali/linux/mali_memory_secure.c b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
17index 2836b1b..4f55fa5 100644
18--- linux/mali_memory_secure.c
19+++ b/linux/mali_memory_secure.c
20@@ -13,7 +13,11 @@
21 #include "mali_memory_secure.h"
22 #include "mali_osk.h"
23 #include <linux/mutex.h>
24+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
25+#include <linux/dma-direct.h>
26+#else
27 #include <linux/dma-mapping.h>
28+#endif
29 #include <linux/dma-buf.h>
30
31 _mali_osk_errcode_t mali_mem_secure_attach_dma_buf(mali_mem_secure *secure_mem, u32 size, int mem_fd)
32--
332.7.4
34
diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch b/meta-xilinx-bsp/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-bsp/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch
@@ -0,0 +1,156 @@
1From b6936450484b5aa9dd2438367a907af020341d1d Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
3Date: Thu, 6 Dec 2018 13:30:44 -0800
4Subject: [PATCH 3/3] linux: mali_*timer: Get rid of init_timer
5
6kernel 4.19 got rid of ancient init_timer. Hence, replace it with
7timer_setup API. For more information refer kernel commit
87eeb6b893bd28c68b6d664de1d3120e49b855cdb
9
10Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
11Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
12Upstream Status: Pending
13---
14 driver/src/devicedrv/mali/common/mali_control_timer.c | 6 ++++++
15 driver/src/devicedrv/mali/common/mali_group.c | 6 ++++++
16 driver/src/devicedrv/mali/common/mali_osk.h | 15 ++++++++++++++-
17 driver/src/devicedrv/mali/linux/mali_osk_timers.c | 15 ++++++++++++++-
18 4 files changed, 40 insertions(+), 2 deletions(-)
19
20diff --git a/driver/src/devicedrv/mali/common/mali_control_timer.c b/driver/src/devicedrv/mali/common/mali_control_timer.c
21index 1296ffe..d24b934 100644
22--- common/mali_control_timer.c
23+++ b/common/mali_control_timer.c
24@@ -65,11 +65,17 @@ _mali_osk_errcode_t mali_control_timer_init(void)
25 }
26 }
27
28+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
29+ mali_control_timer = _mali_osk_timer_init(mali_control_timer_callback);
30+#else
31 mali_control_timer = _mali_osk_timer_init();
32+#endif
33 if (NULL == mali_control_timer) {
34 return _MALI_OSK_ERR_FAULT;
35 }
36+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
37 _mali_osk_timer_setcallback(mali_control_timer, mali_control_timer_callback, NULL);
38+#endif
39
40 return _MALI_OSK_ERR_OK;
41 }
42diff --git a/driver/src/devicedrv/mali/common/mali_group.c b/driver/src/devicedrv/mali/common/mali_group.c
43index 5c7b3f4..1702e9a 100644
44--- common/mali_group.c
45+++ b/common/mali_group.c
46@@ -65,9 +65,15 @@ struct mali_group *mali_group_create(struct mali_l2_cache_core *core,
47
48 group = _mali_osk_calloc(1, sizeof(struct mali_group));
49 if (NULL != group) {
50+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
51+ group->timeout_timer = _mali_osk_timer_init(mali_group_timeout);
52+#else
53 group->timeout_timer = _mali_osk_timer_init();
54+#endif
55 if (NULL != group->timeout_timer) {
56+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
57 _mali_osk_timer_setcallback(group->timeout_timer, mali_group_timeout, (void *)group);
58+#endif
59
60 group->l2_cache_core[0] = core;
61 _mali_osk_list_init(&group->group_list);
62diff --git a/driver/src/devicedrv/mali/common/mali_osk.h b/driver/src/devicedrv/mali/common/mali_osk.h
63index a501778..fe93d79 100644
64--- common/mali_osk.h
65+++ b/common/mali_osk.h
66@@ -947,7 +947,17 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
67 * asked for.
68 *
69 * @{ */
70-
71+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
72+/** @brief Initialize a timer
73+ *
74+ * Allocates resources for a new timer, and initializes them. This does not
75+ * start the timer.
76+ *
77+ * @param callback Function to call when timer expires
78+ * @return a pointer to the allocated timer object, or NULL on failure.
79+ */
80+_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback);
81+#else
82 /** @brief Initialize a timer
83 *
84 * Allocates resources for a new timer, and initializes them. This does not
85@@ -956,6 +966,7 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
86 * @return a pointer to the allocated timer object, or NULL on failure.
87 */
88 _mali_osk_timer_t *_mali_osk_timer_init(void);
89+#endif
90
91 /** @brief Start a timer
92 *
93@@ -1034,6 +1045,7 @@ void _mali_osk_timer_del_async(_mali_osk_timer_t *tim);
94 */
95 mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
96
97+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
98 /** @brief Set a timer's callback parameters.
99 *
100 * This must be called at least once before a timer is started/modified.
101@@ -1047,6 +1059,7 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
102 * @param data Function-specific data to supply to the function on expiry.
103 */
104 void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data);
105+#endif
106
107 /** @brief Terminate a timer, and deallocate resources.
108 *
109diff --git a/driver/src/devicedrv/mali/linux/mali_osk_timers.c b/driver/src/devicedrv/mali/linux/mali_osk_timers.c
110index e5d7238..f9b5a86 100644
111--- linux/mali_osk_timers.c
112+++ b/linux/mali_osk_timers.c
113@@ -21,13 +21,24 @@
114 struct _mali_osk_timer_t_struct {
115 struct timer_list timer;
116 };
117-
118+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
119+typedef void (*timer_timeout_function_t)(struct timer_list *);
120+#else
121 typedef void (*timer_timeout_function_t)(unsigned long);
122+#endif
123
124+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
125+_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback)
126+#else
127 _mali_osk_timer_t *_mali_osk_timer_init(void)
128+#endif
129 {
130 _mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
131+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
132+ if (NULL != t) timer_setup(&t->timer, (timer_timeout_function_t)callback, 0);
133+#else
134 if (NULL != t) init_timer(&t->timer);
135+#endif
136 return t;
137 }
138
139@@ -62,12 +73,14 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
140 return 1 == timer_pending(&(tim->timer));
141 }
142
143+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
144 void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
145 {
146 MALI_DEBUG_ASSERT_POINTER(tim);
147 tim->timer.data = (unsigned long)data;
148 tim->timer.function = (timer_timeout_function_t)callback;
149 }
150+#endif
151
152 void _mali_osk_timer_term(_mali_osk_timer_t *tim)
153 {
154--
1552.7.4
156