Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0
@ 2022-12-11 15:21 Giulio Benetti
  2022-12-11 16:24 ` Yann E. MORIN
  2022-12-11 20:54 ` Thomas Petazzoni via buildroot
  0 siblings, 2 replies; 5+ messages in thread
From: Giulio Benetti @ 2022-12-11 15:21 UTC (permalink / raw)
  To: buildroot; +Cc: Giulio Benetti

Add pending patches upstream[0] to fix build failure. Patches fix build
failure with Aarch64 and Linux 5.18/5.19/6.0

[0]: https://github.com/bootlin/mali-driver/pull/4

Fixes:
http://autobuild.buildroot.net/results/6f073fea149533a294dd838ce8373185236fe1d4/

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
 ...ernel.h-fix-build-failure-on-aarch64.patch | 54 +++++++++++++++++++
 ...ence.c-fix-build-failure-on-dma_resv.patch | 53 ++++++++++++++++++
 ...ence.c-add-local-dma_resv_reserve_sh.patch | 38 +++++++++++++
 ...ence.c-add-local-dma_resv_add_shared.patch | 43 +++++++++++++++
 ...ild-failure-with-Linux-version-6.0.0.patch | 49 +++++++++++++++++
 5 files changed, 237 insertions(+)
 create mode 100644 package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
 create mode 100644 package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
 create mode 100644 package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
 create mode 100644 package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
 create mode 100644 package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch

diff --git a/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch b/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
new file mode 100644
index 0000000000..e2b7c99272
--- /dev/null
+++ b/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
@@ -0,0 +1,54 @@
+From 255d18a2f1c0c7e55e5165602c83b0b9950de0a4 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Wed, 16 Nov 2022 22:48:21 +0100
+Subject: [PATCH] mali_base_kernel.h: fix build failure on aarch64
+
+Aarch64 PAGE_SHIFT is not 12 and this leads to build failure:
+```
+/home/giuliobenetti/br_reproduce/0e9207ab5806efc3885c27d1e98c7625574e57a3/output-1/build/mali-driver-3d697de9bce8bc68bf9408d5407873ce32d0f4fc/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c:2266:9: error: duplicate case value
+ 2266 |         case PFN_DOWN(BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE):
+      |         ^~~~
+/home/giuliobenetti/br_reproduce/0e9207ab5806efc3885c27d1e98c7625574e57a3/output-1/build/mali-driver-3d697de9bce8bc68bf9408d5407873ce32d0f4fc/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c:2265:9: note: previously used here
+ 2265 |         case PFN_DOWN(BASEP_MEM_INVALID_HANDLE):
+      |         ^~~~
+```
+This because PFN_DOWN(x) expands to ((x) >> PAGE_SHIFT), PAGE_SHIFT is not
+always 12 and can be more like in Aarch64. This leads to override all
+switch case PFN_DOWN(0) with a 0 and so compiler complains for duplicate
+case values since all case values will be 0. Let's substitute magic number
+12 with Linux PAGE_SHIFT macro to fix this.
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h b/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
+index 6f5c68e..ded874d 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
++++ b/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
+@@ -270,14 +270,14 @@ struct base_mem_import_user_buffer {
+  */
+ #define BASE_MEM_WRITE_ALLOC_PAGES_HANDLE ((base_mem_handle) { {BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE} })
+ 
+-#define BASEP_MEM_INVALID_HANDLE               (0ull  << 12)
+-#define BASE_MEM_MMU_DUMP_HANDLE               (1ull  << 12)
+-#define BASE_MEM_TRACE_BUFFER_HANDLE           (2ull  << 12)
+-#define BASE_MEM_MAP_TRACKING_HANDLE           (3ull  << 12)
+-#define BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE     (4ull  << 12)
++#define BASEP_MEM_INVALID_HANDLE               (0ull  << PAGE_SHIFT)
++#define BASE_MEM_MMU_DUMP_HANDLE               (1ull  << PAGE_SHIFT)
++#define BASE_MEM_TRACE_BUFFER_HANDLE           (2ull  << PAGE_SHIFT)
++#define BASE_MEM_MAP_TRACKING_HANDLE           (3ull  << PAGE_SHIFT)
++#define BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE     (4ull  << PAGE_SHIFT)
+ /* reserved handles ..-64<<PAGE_SHIFT> for future special handles */
+-#define BASE_MEM_COOKIE_BASE                   (64ul  << 12)
+-#define BASE_MEM_FIRST_FREE_ADDRESS            ((BITS_PER_LONG << 12) + \
++#define BASE_MEM_COOKIE_BASE                   (64ul  << PAGE_SHIFT)
++#define BASE_MEM_FIRST_FREE_ADDRESS            ((BITS_PER_LONG << PAGE_SHIFT) + \
+ 						BASE_MEM_COOKIE_BASE)
+ 
+ /* Mask to detect 4GB boundary alignment */
+-- 
+2.34.1
+
diff --git a/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch b/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
new file mode 100644
index 0000000000..1d73afc722
--- /dev/null
+++ b/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
@@ -0,0 +1,53 @@
+From fc06033c81bec1a8dd78982d523150e8e1ccb2f0 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Wed, 16 Nov 2022 23:16:27 +0100
+Subject: [PATCH] mali_kbase_dma_fence.c: fix build failure on
+ dma_resv_get_fences() Linux 5.18 and 5.19
+
+dma_resv_get_fences() 2nd attribute pfence_excl is not required anymore
+starting from Linux 5.18[0] and it's been substituted with bool write that
+in our case we want set to true since previous dma_resv_get_fences() does
+write back all fences. Same goes for Linux 5.19[1] that introduces enum
+dma_resv_usage and for that we pass DMA_RESV_USAGE_WRITE.
+
+[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ab2b3633ccddd8f7bdf6c76f9ab3f9b2fc5d9d
+[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7bc80a5462c37eab58a9ea386064307c0f447fd1
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ .../gpu/arm/midgard/mali_kbase_dma_fence.c    | 19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+index 6b7e745..dadf5d3 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+@@ -218,7 +218,24 @@ kbase_dma_fence_cb(struct dma_fence *fence, struct dma_fence_cb *cb)
+ 		kbase_dma_fence_queue_work(katom);
+ }
+ 
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
++static int dma_resv_get_fences_rcu(struct dma_resv *obj,
++		struct dma_fence **pfence_excl,
++		unsigned int *pshared_count,
++		struct dma_fence ***pshared)
++{
++	return dma_resv_get_fences(obj, DMA_RESV_USAGE_WRITE, pshared_count,
++				   pshared);
++}
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0))
++static int dma_resv_get_fences_rcu(struct dma_resv *obj,
++		struct dma_fence **pfence_excl,
++		unsigned int *pshared_count,
++		struct dma_fence ***pshared)
++{
++	return dma_resv_get_fences(obj, true, pshared_count, pshared);
++}
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
+ static int dma_resv_get_fences_rcu(struct dma_resv *obj,
+ 	        struct dma_fence **pfence_excl,
+ 	        unsigned int *pshared_count,
+-- 
+2.34.1
+
diff --git a/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch b/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
new file mode 100644
index 0000000000..45ed969ab7
--- /dev/null
+++ b/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
@@ -0,0 +1,38 @@
+From 4b24cf96eaee891ac66ca46a166686461e8ccf2c Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Wed, 16 Nov 2022 23:38:57 +0100
+Subject: [PATCH] mali_kbase_dma_fence.c: add local dma_resv_reserve_shared()
+ for Linux 5.19
+
+Starting from Linux 5.19[0] dma_resv_reserve_shared() is renamed to
+dma_resv_reserve_fences() so let's implement locally
+dma_resv_reserve_shared() calling dma_resv_reserve_fences().
+
+[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8d4c18bfbc4ab467188dbe45cc8155759f49d9e
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+index dadf5d3..bb1565a 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+@@ -332,6 +332,13 @@ void kbase_dma_fence_add_reservation(struct dma_resv *resv,
+ 	(info->dma_fence_resv_count)++;
+ }
+ 
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
++int dma_resv_reserve_shared(struct dma_resv *obj, unsigned int num_fences)
++{
++	return dma_resv_reserve_fences(obj, num_fences);
++}
++#endif
++
+ int kbase_dma_fence_wait(struct kbase_jd_atom *katom,
+ 			 struct kbase_dma_fence_resv_info *info)
+ {
+-- 
+2.34.1
+
diff --git a/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch b/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
new file mode 100644
index 0000000000..a1e6bcd7da
--- /dev/null
+++ b/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
@@ -0,0 +1,43 @@
+From 6aca0b5ae4b981bf836a6130bba8be53bb9a4e8f Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Wed, 16 Nov 2022 23:49:48 +0100
+Subject: [PATCH] mali_kbase_dma_fence.c: add local
+ dma_resv_add_shared/excl_fence() for Linux 5.19
+
+Starting from Linux 5.19[0] dma_resv_add_shared/excl_fence() functions get
+hidden and unified with function dma_resv_add_fence() which third argument
+'enum dma_resv_usage usage' decides if create a shared(DMA_RESV_USAGE_READ)
+or exclusive(DMA_RESV_USAGE_WRITE) fence. So let's implement locally both
+functions calling dma_resv_add_fence() accordingly.
+
+[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=73511edf8b196e6f1ccda0fdf294ff57aa2dc9db
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+index bb1565a..52194b2 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+@@ -337,6 +337,16 @@ int dma_resv_reserve_shared(struct dma_resv *obj, unsigned int num_fences)
+ {
+ 	return dma_resv_reserve_fences(obj, num_fences);
+ }
++
++void dma_resv_add_shared_fence(struct dma_resv *obj, struct dma_fence *fence)
++{
++	dma_resv_add_fence(obj, fence, DMA_RESV_USAGE_READ);
++}
++
++void dma_resv_add_excl_fence(struct dma_resv *obj, struct dma_fence *fence)
++{
++	dma_resv_add_fence(obj, fence, DMA_RESV_USAGE_WRITE);
++}
+ #endif
+ 
+ int kbase_dma_fence_wait(struct kbase_jd_atom *katom,
+-- 
+2.34.1
+
diff --git a/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch b/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch
new file mode 100644
index 0000000000..af5b15b302
--- /dev/null
+++ b/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch
@@ -0,0 +1,49 @@
+From bac84845f27b689fc614fb5b4a964e0177572905 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti@benettiengineering.com>
+Date: Mon, 10 Oct 2022 23:35:26 +0200
+Subject: [PATCH] Fix build failure with Linux version >= 6.0.0
+
+Function regsiter_shrinker() now needs a string as a second argument to
+log the caller, so let's pass "mali" string if Linux version >= 6.0.0
+
+Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
+---
+ r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c | 4 ++++
+ r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c  | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
+index 20f86b9..710ebac 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
+@@ -446,7 +446,11 @@ int kbase_mem_evictable_init(struct kbase_context *kctx)
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
+ 	kctx->reclaim.batch = 0;
+ #endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)
++	register_shrinker(&kctx->reclaim, "mali");
++#else
+ 	register_shrinker(&kctx->reclaim);
++#endif
+ 	return 0;
+ }
+ 
+diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
+index 696730a..4d908ac 100644
+--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
+@@ -379,7 +379,11 @@ int kbase_mem_pool_init(struct kbase_mem_pool *pool,
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
+ 	pool->reclaim.batch = 0;
+ #endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)
++	register_shrinker(&pool->reclaim, "mali");
++#else
+ 	register_shrinker(&pool->reclaim);
++#endif
+ 
+ 	pool_dbg(pool, "initialized\n");
+ 
+-- 
+2.34.1
+
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0
  2022-12-11 15:21 [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0 Giulio Benetti
@ 2022-12-11 16:24 ` Yann E. MORIN
  2022-12-11 16:26   ` Yann E. MORIN
  2022-12-11 20:54 ` Thomas Petazzoni via buildroot
  1 sibling, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2022-12-11 16:24 UTC (permalink / raw)
  To: Giulio Benetti; +Cc: buildroot

Giulio, All,

On 2022-12-11 16:21 +0100, Giulio Benetti spake thusly:
> Add pending patches upstream[0] to fix build failure. Patches fix build
> failure with Aarch64 and Linux 5.18/5.19/6.0
> 
> [0]: https://github.com/bootlin/mali-driver/pull/4
> 
> Fixes:
> http://autobuild.buildroot.net/results/6f073fea149533a294dd838ce8373185236fe1d4/
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  ...ernel.h-fix-build-failure-on-aarch64.patch | 54 +++++++++++++++++++
>  ...ence.c-fix-build-failure-on-dma_resv.patch | 53 ++++++++++++++++++
>  ...ence.c-add-local-dma_resv_reserve_sh.patch | 38 +++++++++++++
>  ...ence.c-add-local-dma_resv_add_shared.patch | 43 +++++++++++++++
>  ...ild-failure-with-Linux-version-6.0.0.patch | 49 +++++++++++++++++
>  5 files changed, 237 insertions(+)
>  create mode 100644 package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
>  create mode 100644 package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
>  create mode 100644 package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
>  create mode 100644 package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
>  create mode 100644 package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch
> 
> diff --git a/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch b/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
> new file mode 100644
> index 0000000000..e2b7c99272
> --- /dev/null
> +++ b/package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
> @@ -0,0 +1,54 @@
> +From 255d18a2f1c0c7e55e5165602c83b0b9950de0a4 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 16 Nov 2022 22:48:21 +0100
> +Subject: [PATCH] mali_base_kernel.h: fix build failure on aarch64
> +
> +Aarch64 PAGE_SHIFT is not 12 and this leads to build failure:
> +```
> +/home/giuliobenetti/br_reproduce/0e9207ab5806efc3885c27d1e98c7625574e57a3/output-1/build/mali-driver-3d697de9bce8bc68bf9408d5407873ce32d0f4fc/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c:2266:9: error: duplicate case value
> + 2266 |         case PFN_DOWN(BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE):
> +      |         ^~~~
> +/home/giuliobenetti/br_reproduce/0e9207ab5806efc3885c27d1e98c7625574e57a3/output-1/build/mali-driver-3d697de9bce8bc68bf9408d5407873ce32d0f4fc/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c:2265:9: note: previously used here
> + 2265 |         case PFN_DOWN(BASEP_MEM_INVALID_HANDLE):
> +      |         ^~~~
> +```
> +This because PFN_DOWN(x) expands to ((x) >> PAGE_SHIFT), PAGE_SHIFT is not
> +always 12 and can be more like in Aarch64. This leads to override all
> +switch case PFN_DOWN(0) with a 0 and so compiler complains for duplicate
> +case values since all case values will be 0. Let's substitute magic number
> +12 with Linux PAGE_SHIFT macro to fix this.
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h | 14 +++++++-------
> + 1 file changed, 7 insertions(+), 7 deletions(-)
> +
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h b/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
> +index 6f5c68e..ded874d 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_base_kernel.h
> +@@ -270,14 +270,14 @@ struct base_mem_import_user_buffer {
> +  */
> + #define BASE_MEM_WRITE_ALLOC_PAGES_HANDLE ((base_mem_handle) { {BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE} })
> + 
> +-#define BASEP_MEM_INVALID_HANDLE               (0ull  << 12)
> +-#define BASE_MEM_MMU_DUMP_HANDLE               (1ull  << 12)
> +-#define BASE_MEM_TRACE_BUFFER_HANDLE           (2ull  << 12)
> +-#define BASE_MEM_MAP_TRACKING_HANDLE           (3ull  << 12)
> +-#define BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE     (4ull  << 12)
> ++#define BASEP_MEM_INVALID_HANDLE               (0ull  << PAGE_SHIFT)
> ++#define BASE_MEM_MMU_DUMP_HANDLE               (1ull  << PAGE_SHIFT)
> ++#define BASE_MEM_TRACE_BUFFER_HANDLE           (2ull  << PAGE_SHIFT)
> ++#define BASE_MEM_MAP_TRACKING_HANDLE           (3ull  << PAGE_SHIFT)
> ++#define BASEP_MEM_WRITE_ALLOC_PAGES_HANDLE     (4ull  << PAGE_SHIFT)
> + /* reserved handles ..-64<<PAGE_SHIFT> for future special handles */
> +-#define BASE_MEM_COOKIE_BASE                   (64ul  << 12)
> +-#define BASE_MEM_FIRST_FREE_ADDRESS            ((BITS_PER_LONG << 12) + \
> ++#define BASE_MEM_COOKIE_BASE                   (64ul  << PAGE_SHIFT)
> ++#define BASE_MEM_FIRST_FREE_ADDRESS            ((BITS_PER_LONG << PAGE_SHIFT) + \
> + 						BASE_MEM_COOKIE_BASE)
> + 
> + /* Mask to detect 4GB boundary alignment */
> +-- 
> +2.34.1
> +
> diff --git a/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch b/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
> new file mode 100644
> index 0000000000..1d73afc722
> --- /dev/null
> +++ b/package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
> @@ -0,0 +1,53 @@
> +From fc06033c81bec1a8dd78982d523150e8e1ccb2f0 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 16 Nov 2022 23:16:27 +0100
> +Subject: [PATCH] mali_kbase_dma_fence.c: fix build failure on
> + dma_resv_get_fences() Linux 5.18 and 5.19
> +
> +dma_resv_get_fences() 2nd attribute pfence_excl is not required anymore
> +starting from Linux 5.18[0] and it's been substituted with bool write that
> +in our case we want set to true since previous dma_resv_get_fences() does
> +write back all fences. Same goes for Linux 5.19[1] that introduces enum
> +dma_resv_usage and for that we pass DMA_RESV_USAGE_WRITE.
> +
> +[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=75ab2b3633ccddd8f7bdf6c76f9ab3f9b2fc5d9d
> +[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7bc80a5462c37eab58a9ea386064307c0f447fd1
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + .../gpu/arm/midgard/mali_kbase_dma_fence.c    | 19 ++++++++++++++++++-
> + 1 file changed, 18 insertions(+), 1 deletion(-)
> +
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +index 6b7e745..dadf5d3 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +@@ -218,7 +218,24 @@ kbase_dma_fence_cb(struct dma_fence *fence, struct dma_fence_cb *cb)
> + 		kbase_dma_fence_queue_work(katom);
> + }
> + 
> +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
> ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
> ++static int dma_resv_get_fences_rcu(struct dma_resv *obj,
> ++		struct dma_fence **pfence_excl,
> ++		unsigned int *pshared_count,
> ++		struct dma_fence ***pshared)
> ++{
> ++	return dma_resv_get_fences(obj, DMA_RESV_USAGE_WRITE, pshared_count,
> ++				   pshared);
> ++}
> ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0))
> ++static int dma_resv_get_fences_rcu(struct dma_resv *obj,
> ++		struct dma_fence **pfence_excl,
> ++		unsigned int *pshared_count,
> ++		struct dma_fence ***pshared)
> ++{
> ++	return dma_resv_get_fences(obj, true, pshared_count, pshared);
> ++}
> ++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
> + static int dma_resv_get_fences_rcu(struct dma_resv *obj,
> + 	        struct dma_fence **pfence_excl,
> + 	        unsigned int *pshared_count,
> +-- 
> +2.34.1
> +
> diff --git a/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch b/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
> new file mode 100644
> index 0000000000..45ed969ab7
> --- /dev/null
> +++ b/package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
> @@ -0,0 +1,38 @@
> +From 4b24cf96eaee891ac66ca46a166686461e8ccf2c Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 16 Nov 2022 23:38:57 +0100
> +Subject: [PATCH] mali_kbase_dma_fence.c: add local dma_resv_reserve_shared()
> + for Linux 5.19
> +
> +Starting from Linux 5.19[0] dma_resv_reserve_shared() is renamed to
> +dma_resv_reserve_fences() so let's implement locally
> +dma_resv_reserve_shared() calling dma_resv_reserve_fences().
> +
> +[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8d4c18bfbc4ab467188dbe45cc8155759f49d9e
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c | 7 +++++++
> + 1 file changed, 7 insertions(+)
> +
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +index dadf5d3..bb1565a 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +@@ -332,6 +332,13 @@ void kbase_dma_fence_add_reservation(struct dma_resv *resv,
> + 	(info->dma_fence_resv_count)++;
> + }
> + 
> ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
> ++int dma_resv_reserve_shared(struct dma_resv *obj, unsigned int num_fences)
> ++{
> ++	return dma_resv_reserve_fences(obj, num_fences);
> ++}
> ++#endif
> ++
> + int kbase_dma_fence_wait(struct kbase_jd_atom *katom,
> + 			 struct kbase_dma_fence_resv_info *info)
> + {
> +-- 
> +2.34.1
> +
> diff --git a/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch b/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
> new file mode 100644
> index 0000000000..a1e6bcd7da
> --- /dev/null
> +++ b/package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
> @@ -0,0 +1,43 @@
> +From 6aca0b5ae4b981bf836a6130bba8be53bb9a4e8f Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Wed, 16 Nov 2022 23:49:48 +0100
> +Subject: [PATCH] mali_kbase_dma_fence.c: add local
> + dma_resv_add_shared/excl_fence() for Linux 5.19
> +
> +Starting from Linux 5.19[0] dma_resv_add_shared/excl_fence() functions get
> +hidden and unified with function dma_resv_add_fence() which third argument
> +'enum dma_resv_usage usage' decides if create a shared(DMA_RESV_USAGE_READ)
> +or exclusive(DMA_RESV_USAGE_WRITE) fence. So let's implement locally both
> +functions calling dma_resv_add_fence() accordingly.
> +
> +[0]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=73511edf8b196e6f1ccda0fdf294ff57aa2dc9db
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c | 10 ++++++++++
> + 1 file changed, 10 insertions(+)
> +
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +index bb1565a..52194b2 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
> +@@ -337,6 +337,16 @@ int dma_resv_reserve_shared(struct dma_resv *obj, unsigned int num_fences)
> + {
> + 	return dma_resv_reserve_fences(obj, num_fences);
> + }
> ++
> ++void dma_resv_add_shared_fence(struct dma_resv *obj, struct dma_fence *fence)
> ++{
> ++	dma_resv_add_fence(obj, fence, DMA_RESV_USAGE_READ);
> ++}
> ++
> ++void dma_resv_add_excl_fence(struct dma_resv *obj, struct dma_fence *fence)
> ++{
> ++	dma_resv_add_fence(obj, fence, DMA_RESV_USAGE_WRITE);
> ++}
> + #endif
> + 
> + int kbase_dma_fence_wait(struct kbase_jd_atom *katom,
> +-- 
> +2.34.1
> +
> diff --git a/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch b/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch
> new file mode 100644
> index 0000000000..af5b15b302
> --- /dev/null
> +++ b/package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch
> @@ -0,0 +1,49 @@
> +From bac84845f27b689fc614fb5b4a964e0177572905 Mon Sep 17 00:00:00 2001
> +From: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +Date: Mon, 10 Oct 2022 23:35:26 +0200
> +Subject: [PATCH] Fix build failure with Linux version >= 6.0.0
> +
> +Function regsiter_shrinker() now needs a string as a second argument to
> +log the caller, so let's pass "mali" string if Linux version >= 6.0.0
> +
> +Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> +---
> + r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c | 4 ++++
> + r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c  | 4 ++++
> + 2 files changed, 8 insertions(+)
> +
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
> +index 20f86b9..710ebac 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
> +@@ -446,7 +446,11 @@ int kbase_mem_evictable_init(struct kbase_context *kctx)
> + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
> + 	kctx->reclaim.batch = 0;
> + #endif
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)
> ++	register_shrinker(&kctx->reclaim, "mali");
> ++#else
> + 	register_shrinker(&kctx->reclaim);
> ++#endif
> + 	return 0;
> + }
> + 
> +diff --git a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
> +index 696730a..4d908ac 100644
> +--- a/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
> ++++ b/r8p0/drivers/gpu/arm/midgard/mali_kbase_mem_pool.c
> +@@ -379,7 +379,11 @@ int kbase_mem_pool_init(struct kbase_mem_pool *pool,
> + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
> + 	pool->reclaim.batch = 0;
> + #endif
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0)
> ++	register_shrinker(&pool->reclaim, "mali");
> ++#else
> + 	register_shrinker(&pool->reclaim);
> ++#endif
> + 
> + 	pool_dbg(pool, "initialized\n");
> + 
> +-- 
> +2.34.1
> +
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0
  2022-12-11 16:24 ` Yann E. MORIN
@ 2022-12-11 16:26   ` Yann E. MORIN
  0 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2022-12-11 16:26 UTC (permalink / raw)
  To: Giulio Benetti; +Cc: buildroot

Giulio, All,

On 2022-12-11 17:24 +0100, Yann E. MORIN spake thusly:
> On 2022-12-11 16:21 +0100, Giulio Benetti spake thusly:
> > Add pending patches upstream[0] to fix build failure. Patches fix build
> > failure with Aarch64 and Linux 5.18/5.19/6.0
> > 
> > [0]: https://github.com/bootlin/mali-driver/pull/4
> > 
> > Fixes:
> > http://autobuild.buildroot.net/results/6f073fea149533a294dd838ce8373185236fe1d4/
> > 
> > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> 
> Applied to master, thanks.

Nope, nope, nope; not that one... Sorry for the confusion...

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0
  2022-12-11 15:21 [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0 Giulio Benetti
  2022-12-11 16:24 ` Yann E. MORIN
@ 2022-12-11 20:54 ` Thomas Petazzoni via buildroot
  2022-12-21 17:17   ` Peter Korsgaard
  1 sibling, 1 reply; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-12-11 20:54 UTC (permalink / raw)
  To: Giulio Benetti; +Cc: buildroot

Hello Giulio,

On Sun, 11 Dec 2022 16:21:53 +0100
Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

> Add pending patches upstream[0] to fix build failure. Patches fix build
> failure with Aarch64 and Linux 5.18/5.19/6.0
> 
> [0]: https://github.com/bootlin/mali-driver/pull/4
> 
> Fixes:
> http://autobuild.buildroot.net/results/6f073fea149533a294dd838ce8373185236fe1d4/
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> ---
>  ...ernel.h-fix-build-failure-on-aarch64.patch | 54 +++++++++++++++++++
>  ...ence.c-fix-build-failure-on-dma_resv.patch | 53 ++++++++++++++++++
>  ...ence.c-add-local-dma_resv_reserve_sh.patch | 38 +++++++++++++
>  ...ence.c-add-local-dma_resv_add_shared.patch | 43 +++++++++++++++
>  ...ild-failure-with-Linux-version-6.0.0.patch | 49 +++++++++++++++++
>  5 files changed, 237 insertions(+)
>  create mode 100644 package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
>  create mode 100644 package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
>  create mode 100644 package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
>  create mode 100644 package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
>  create mode 100644 package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch

I have applied, but what I did is that I merged your pull request in
the mali-driver project, and then turn this Buildroot change into a
simpler version bump.

Also, while at it, I granted you maintainer rights to the
github.com/bootlin/mali-driver repo so that you can directly push
things there: you're de facto the person looking into this currently!

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0
  2022-12-11 20:54 ` Thomas Petazzoni via buildroot
@ 2022-12-21 17:17   ` Peter Korsgaard
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2022-12-21 17:17 UTC (permalink / raw)
  To: Thomas Petazzoni via buildroot; +Cc: Giulio Benetti, Thomas Petazzoni

>>>>> "Thomas" == Thomas Petazzoni via buildroot <buildroot@buildroot.org> writes:

 > Hello Giulio,
 > On Sun, 11 Dec 2022 16:21:53 +0100
 > Giulio Benetti <giulio.benetti@benettiengineering.com> wrote:

 >> Add pending patches upstream[0] to fix build failure. Patches fix build
 >> failure with Aarch64 and Linux 5.18/5.19/6.0
 >> 
 >> [0]: https://github.com/bootlin/mali-driver/pull/4
 >> 
 >> Fixes:
 >> http://autobuild.buildroot.net/results/6f073fea149533a294dd838ce8373185236fe1d4/
 >> 
 >> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
 >> ---
 >> ...ernel.h-fix-build-failure-on-aarch64.patch | 54 +++++++++++++++++++
 >> ...ence.c-fix-build-failure-on-dma_resv.patch | 53 ++++++++++++++++++
 >> ...ence.c-add-local-dma_resv_reserve_sh.patch | 38 +++++++++++++
 >> ...ence.c-add-local-dma_resv_add_shared.patch | 43 +++++++++++++++
 >> ...ild-failure-with-Linux-version-6.0.0.patch | 49 +++++++++++++++++
 >> 5 files changed, 237 insertions(+)
 >> create mode 100644 package/mali-driver/0001-mali_base_kernel.h-fix-build-failure-on-aarch64.patch
 >> create mode 100644 package/mali-driver/0002-mali_kbase_dma_fence.c-fix-build-failure-on-dma_resv.patch
 >> create mode 100644 package/mali-driver/0003-mali_kbase_dma_fence.c-add-local-dma_resv_reserve_sh.patch
 >> create mode 100644 package/mali-driver/0004-mali_kbase_dma_fence.c-add-local-dma_resv_add_shared.patch
 >> create mode 100644 package/mali-driver/0005-Fix-build-failure-with-Linux-version-6.0.0.patch

 > I have applied, but what I did is that I merged your pull request in
 > the mali-driver project, and then turn this Buildroot change into a
 > simpler version bump.

 > Also, while at it, I granted you maintainer rights to the
 > github.com/bootlin/mali-driver repo so that you can directly push
 > things there: you're de facto the person looking into this currently!

Committed to 2022.11.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-12-21 17:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-11 15:21 [Buildroot] [PATCH] package/mali-driver: bump to latest version to build with Linux version up to 6.0 Giulio Benetti
2022-12-11 16:24 ` Yann E. MORIN
2022-12-11 16:26   ` Yann E. MORIN
2022-12-11 20:54 ` Thomas Petazzoni via buildroot
2022-12-21 17:17   ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox