This fixes an error when using the module in a kernel configured with
the CONFIG_DMA_API_DEBUG flag.

utgard fd4b0000.gpu: DMA-API: device driver failed to check map
error[device address=0x00000000325b0000] [size=4096 bytes] [mapped as
page]
...
 [<ffffff80082f72bc>] check_unmap+0x44c/0x7e8
 [<ffffff80082f76b8>] debug_dma_unmap_page+0x60/0x68
 [<ffffff8000622e60>] mali_mem_os_alloc_pages+0x230/0x498 [mali]
...

Acked-by: Hyun Kwon <[email protected]>
Signed-off-by: Jean-Francois Dagenais <[email protected]>
---
 .../recipes-graphics/mali/kernel-module-mali.bb         |  1 +
 .../0007-fix-driver-failed-to-check-map-error.patch     | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-fix-driver-failed-to-check-map-error.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 0f44d25..5833239 100644
--- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
+++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
@@ -16,6 +16,7 @@ SRC_URI = " \
        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-fix-driver-failed-to-check-map-error.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\
        "
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-fix-driver-failed-to-check-map-error.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-fix-driver-failed-to-check-map-error.patch
new file mode 100644
index 0000000..5363c37
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-fix-driver-failed-to-check-map-error.patch
@@ -0,0 +1,17 @@
+Index: mali/linux/mali_memory_os_alloc.c
+===================================================================
+--- mali.orig/linux/mali_memory_os_alloc.c
++++ mali/linux/mali_memory_os_alloc.c
+@@ -239,8 +239,10 @@ int mali_mem_os_alloc_pages(mali_mem_os_
+               /* Ensure page is flushed from CPU caches. */
+               dma_addr = dma_map_page(&mali_platform_device->dev, new_page,
+                                       0, _MALI_OSK_MALI_PAGE_SIZE, 
DMA_BIDIRECTIONAL);
+-              dma_unmap_page(&mali_platform_device->dev, dma_addr,
+-                             _MALI_OSK_MALI_PAGE_SIZE, DMA_BIDIRECTIONAL);
++              err = dma_mapping_error(&mali_platform_device->dev, dma_addr);
++              if (likely(!err))
++                      dma_unmap_page(&mali_platform_device->dev, dma_addr,
++                                     _MALI_OSK_MALI_PAGE_SIZE, 
DMA_BIDIRECTIONAL);
+               dma_addr = dma_map_page(&mali_platform_device->dev, new_page,
+                                       0, _MALI_OSK_MALI_PAGE_SIZE, 
DMA_BIDIRECTIONAL);
+ 
-- 
2.11.0

-- 
_______________________________________________
meta-xilinx mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to