This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: GC320 memory configuration

Part Number: AM5728

Tool/software: Linux

Hi. we need various continuous  memory of vivante(gc320) for GUI. total size is 80MB.

 - 1280x720, 1920x1080, 1280x300, and so on. total size is 80MB.

As we trace gc320 drvier, we often notice allocating non-continuous memory  for short continuous-memory as below it.

#define gcdDEFAULT_CONTIGUOUS_SIZE (4 << 20)  at extra-drivers\ti-gc320-driver-5.0.11.p7\hal\os\linux\kernel\gc_hal_kernel_probe.c

If we increase gcdDEFAULT_CONTIGUOUS_SIZE -> 16MB or 32MB, we find decoding error(VPE memory).  How do increase it ?

As other solution, we can consider TI OMAP or CMEM.

but,  we have short memory for limiting TI OMAP memory(128MB), and then we don't use TI OMAP memory(it already three display, 3D GPU and IVA-HD).

If we CMEM ( we use CMEM_alloc2 API( internaly it return mmapd address(at cmem-mod-4.14.00.00+gitAUTOINC+b514a99ac4\src\cmem\api\cmem.c )   )  , this API is used VPE for deinterlace , it works very good ), vivante gc320 have error as below it.

 status = gcoSURF_SetWindow(lpSurface->Surface, 0, 0, width, height);  -> gckKERNEL_Dispatch ( gc_hal_kernel.c ) -> case gcvHAL_MAP_USER_MEMORY -> gckOS_MapUserMemory have error.

In order words, vivante gc320 driver don't support importing cmem when i use CMEM_alloc2 API .

I  want to allocate continuous memory  but  non-continus memory at vivante gc320 . How can i work it ? 

  • Hi Joonho,

    Please check this example application on how to export CMEM allocated memory to Vivante driver - 

    https://git.ti.com/sitara-linux/video-graphics-test

    Please check video_graphics_test.cpp, cmem_buf.cpp and gc320.cpp file. You will need enhanced QT eglfs_kms QPA to run this example application. The enhanced QPA along with this example application will be available in PLSDK 4.3 release scheduled end of 1Q, 2018.  

  • Hi. Thank you for helping export CMEM allocated memory to Vivante driver.
    we review this app source and then apply our source.
    but, When Vivante driver flush cache, kernel die as below it. I think vivante driver don't access CMEM physical address.

    our cmem confguration is as below it ( cmem(block id 2) works very good for VPE . )

    arch/arm/boot/dts/am57xx-evm-cmem.dtsi

    cmem_block_mem_1: cmem_block_mem@a0100000 {
    reg = <0x0 0xa0100000 0x0 0x12800000>;
    no-map;
    status = "okay";
    };
    ......

    when we use CMEM_alloc2(2, 507904, &cmem_alloc_params); // align is 0x80 . w x h of surface = 1024 x 124
    , our cmem log is as below it.

    [ 44.223435] CMEMK Debug: ALLOCHEAPCACHED ioctl received on heap pool for block 2
    [ 44.223447] CMEMK Debug: map_header: ioremap_page_range(0xa43f8000, 0x1000)=0xf4ac3000
    [ 44.223453] CMEMK Debug: map_header: ioremap_page_range(0xa4474000, 0x1000)=0xf4ac5000
    [ 44.223455] CMEMK Debug: unmap_header: unmap_kernel_page_rage(0xf4ac5000, 0x1000)
    [ 44.223462] CMEMK Debug: unmap_header: unmap_kernel_page_rage(0xf4ac3000, 0x1000)
    [ 44.223469] CMEMK Debug: ALLOCHEAPCACHED: allocated 0x7c000 size buffer at 0xa43f8000 (phys address)
    [ 44.223483] CMEMK Debug: mmap: vma->vm_start = 0xb0364000
    [ 44.223486] CMEMK Debug: mmap: vma->vm_end = 0xb03e0000
    [ 44.223488] CMEMK Debug: mmap: size = 0x7c000
    [ 44.223490] CMEMK Debug: mmap: vma->vm_pgoff = 0xa43f8
    [ 44.223504] CMEMK Debug: EXPORTDMABUF ioctl received.
    [ 44.223508] CMEMK Debug: get_phys: find_vma translated user 0xb0364000 to 0xa43f8000
    [ 44.223520] CMEMK Debug: map_virt_addr: ioremap_page_range(0xa43f8000, 0x7c000)=0xf4e00000

    Trace of our source is as below it.
    cmem_buf = CMEM_alloc2(2, 507904, &cmem_alloc_params); // align is 0x80 . w x h of surface = 1024 x 124
    ....
    gcoSURF_SetBuffer(.. vaddr /*cmem_buf */, ..);
    gcoSURF_SetWindow(lpSurface->Surface, 0, 0, width, height)
    -> gckKERNEL_Dispatch (gc_hal_kernelc.) -> gckOS_MapUserMemory (gc_hal_kernel_os.c)

    gckOS_MapUserMemory(
    IN gckOS Os,
    IN gceCORE Core,
    IN gctPOINTER Memory,
    IN gctUINT32 Physical,
    IN gctSIZE_T Size,
    OUT gctPOINTER * Info,
    OUT gctUINT32_PTR Address
    )
    {
    ..
    printk("DBG : pageCount(%d) at %s\n", pageCount, __FUNCTION__);

    for (i = 0; i < pageCount; i++)
    {
    #ifdef CONFIG_ARM
    gctUINT32 data;
    get_user(data, (gctUINT32*)((memory & PAGE_MASK) + i * PAGE_SIZE));
    #endif

    if ( pageCount == 124 ) /* When w x h of surface is 1024 x 124 , this pageCount is 124
    {
    printk("DBG : i(%d) page_to_phys(pages[i]) =%u at %s\n", i, (gctUINT32)page_to_phys(pages[i]), __FUNCTION__);
    }
    else if ( i == 0 )
    {
    printk("DBG : i(%d) page_to_phys(pages[i]) =%u at %s\n", i, (gctUINT32)page_to_phys(pages[i]), __FUNCTION__);
    }
    /* Flush(clean) the data cache. */
    gcmkONERROR(gckOS_CacheFlush(Os, _GetProcessID(), gcvNULL,
    page_to_phys(pages[i]),
    (gctPOINTER)(memory & PAGE_MASK) + i*PAGE_SIZE,
    PAGE_SIZE));
    }

    printk("DBG : after gckOS_CacheFlush.. at %s\n", __FUNCTION__);
    ...
    }

    gc_hal_kernel_patform_j6.c
    platform_cache(
    IN gckPLATFORM Platform,
    IN gctUINT32 ProcessID,
    IN gctPHYS_ADDR Handle,
    IN gctUINT32 Physical,
    IN gctPOINTER Logical,
    IN gctSIZE_T Bytes,
    IN gceCACHEOPERATION Operation
    )
    {
    ..
    if (Physical != gcvINVALID_ADDRESS) {
    /* leejoonho : 06/03/18 : this Physical is 2755624960 ( 0xA43F8000 ), this address(0xA43F8000) is cmem and very good.
    */
    printk("DBG : Physical(%u) at %s\n", Physical, __FUNCTION__);
    /* leejoonho : 06/03/18 : dma-mapping.c : arch/arm/mm/arm_dma_sync_single_for_device . this function broke kernel */
    dma_sync_single_for_device(gcvNULL,
    (dma_addr_t)Physical,
    Bytes,
    dir);
    ...
    }

    [ 54.363814] Unable to handle kernel paging request at virtual address e43f8000
    [ 54.363816] pgd = d2764600
    [ 54.363824] [e43f8000] *pgd=80000080007003, *pmd=00000000
    [ 54.363830] Internal error: Oops: 2a06 [#1] PREEMPT SMP ARM
    [ 54.363956] Modules linked in: bc_example(O) sha512_generic sha512_arm sha256_generic sha1_generic sha1_arm_neon sha1_arm md5 cbc xfrm_user xfrm4_tunnel ipcomp xfrm_ipcomp esp4 ah4 af_key xfrm_algo bluetooth sd_mod xhci_plat_hcd xhci_hcd usbcore pru_rproc rpmsg_proto pruss_intc rpmsg_rpc dwc3 pruss udc_core usb_common ahci_platform libahci_platform libahci pvrsrvkm(O) omap_aes_driver omap_wdt omap_sham libata pruss_soc_bus scsi_mod ti_vip ti_vpe ti_sc ti_csc ti_vpdma dwc3_omap rtc_omap omap_des extcon_palmas mt9t11x extcon_core des_generic pixcir_i2c_ts crypto_engine rtc_palmas omap_remoteproc virtio_rpmsg_bus rpmsg_core remoteproc sch_fq_codel uio_module_drv(O) uio gdbserverproxy(O) galcore(O) cryptodev(O) cmemk(O)
    [ 54.363961] CPU: 1 PID: 1105 Comm: omk_exe Tainted: G O 4.9.28-geed43d1050 #78
    [ 54.363963] Hardware name: Generic DRA74X (Flattened Device Tree)
    [ 54.363965] task: d22e12c0 task.stack: d22fa000
    [ 54.363976] PC is at v7_dma_clean_range+0x1c/0x34
    [ 54.363983] LR is at dma_cache_maint_page+0x90/0x144
    [ 54.363987] pc : [<c0218830>] lr : [<c021369c>] psr: 20070013
    [ 54.363987] sp : d22fbba0 ip : d22fbba0 fp : d22fbbd4
    [ 54.363989] r10: c107e904 r9 : c1006184 r8 : 00000000
    [ 54.363993] r7 : c021887c r6 : 000a43f8 r5 : 00000000 r4 : 00001000
    [ 54.363996] r3 : 0000003f r2 : 00000040 r1 : e43f9000 r0 : e43f8000
    [ 54.364000] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    [ 54.364003] Control: 30c5387d Table: 92764600 DAC: 55555555
    [ 54.364006] Process omk_exe (pid: 1105, stack limit = 0xd22fa210)
    [ 54.364009] Stack: (0xd22fbba0 to 0xd22fc000)
    [ 54.364014] bba0: 00000044 c1003018 c027d468 d4b18ee0 00000000 00000000 00001000 d32afc00
    [ 54.364018] bbc0: 00000000 c1006184 d22fbbfc d22fbbd8 c0213780 c0213618 c021887c d22fbbe8
    [ 54.364021] bbe0: 00000000 a43f8000 c0213804 d22fa000 d22fbc14 d22fbc00 c0213850 c021375c
    [ 54.364025] bc00: 00000000 a43f8000 d22fbc74 d22fbc18 bf02b870 c0213810 fffffff2 c1006184
    [ 54.364029] bc20: d22fbc44 d22fbc30 c027d490 c027ce80 bf0415c0 d22fbc6c d22fbc64 d22fbc48
    [ 54.364032] bc40: c02d2bd4 c027d474 38e38e39 b0364000 c107e904 00000000 d22fa000 d32afc00
    [ 54.364036] bc60: bf02b290 c1006184 d22fbd0c d22fbc78 bf026090 bf02b29c b0364000 00001000
    [ 54.364040] bc80: 00000003 00000000 60070013 b0364000 fffffff2 c1006184 c107e904 b0364000
    [ 54.364046] bca0: 000001f8 0000007e b0364000 00000000 fffffff2 00000000 d2797400 ffffffff
    [ 54.364050] bcc0: d3fc1b00 38e38e39 d32afc00 0000007c d22fbcfc 00000000 c02d2bd4 c027d474
    [ 54.364053] bce0: d3338400 d22fbd98 00000000 d305b200 00000001 ffffffff 00000000 00000000
    [ 54.364057] bd00: d22fbd6c d22fbd10 bf02e99c bf025850 0007c000 d22fbd2c d22fbdd4 00000000
    [ 54.364061] bd20: 00000000 df808000 00000000 00000000 00000000 00000451 00000002 c028d320
    [ 54.364064] bd40: ffffffff 00000000 d3064600 d335f880 00007530 d22fa000 d22fbd78 d22fa000
    [ 54.364068] bd60: d22fbefc d22fbd70 bf02a99c bf02dde0 00000001 00000001 beb3d828 00000000
    [ 54.364071] bd80: 00000140 00000000 beb3d828 00000000 00000140 00000000 0000000b 00000002
    [ 54.364076] bda0: 00000001 105cf61e b51b8c20 b6f81f53 00000001 b51bfed0 b0364000 00000000
    [ 54.364080] bdc0: ffffffff beb3d8ac 0007c000 00000000 7465535f 105cf61e b6fa2cf0 b51c1790
    [ 54.364085] bde0: 000139fb 3e2d6563 0082e7b0 b51b8c20 00012998 b6fa2cf0 beb3d918 b6fa3000
    [ 54.364089] be00: aaaaaaab beb3d8a8 beb3d8ac 00000000 b6f97158 00000032 00000000 00000000
    [ 54.364093] be20: 00000000 105cf61e b6f971b8 00000000 beb3d8f8 000139fb beb3d918 beb3d920
    [ 54.364096] be40: beb3d98c b6f823dd beb3d920 b6fa3ab4 00000022 b6f971b8 00000005 00000000
    [ 54.364101] be60: 00000001 b6fa3958 06052307 07e20302 38313032 00000000 b6fa3b10 0000007f
    [ 54.364105] be80: 00000004 b6e0cb3b b6e2969c 0041aeec b51bfed0 b6f9bb08 6f636720 00000000
    [ 54.364109] bea0: 00000002 00000001 00000006 000000d4 0041c9ec b6e2969c beb3d964 b6e0cdfd
    [ 54.364113] bec0: 0041c9f0 00000001 0041c9d8 00000000 b6f954c0 00418d0c beb3d7e0 d36db020
    [ 54.364116] bee0: d367a300 0000001c beb3d7e0 d22fa000 d22fbf7c d22fbf00 c033eba8 bf02a880
    [ 54.364120] bf00: beb3d9a8 0000c350 00000000 d22fbf88 d22fbf84 d22fbf20 c0292cc4 c08c652c
    [ 54.364124] bf20: d367a300 00004000 d22fbf5c d22fbf38 c034a3b4 c0288524 00002710 0000001c
    [ 54.364129] bf40: 00007530 00007530 beb3d7e0 d22fa000 d22fbf6c d367a301 0000001c d367a300
    [ 54.364134] bf60: 00007530 beb3d7e0 d22fa000 00000000 d22fbfa4 d22fbf80 c033f338 c033eb0c
    [ 54.364137] bf80: 00002710 b6e33b3c 00007530 00000036 c0207d84 d22fa000 00000000 d22fbfa8
    [ 54.364141] bfa0: c0207be0 c033f308 00002710 b6e33b3c 0000001c 00007530 beb3d7e0 00417f08
    [ 54.364145] bfc0: 00002710 b6e33b3c 00007530 00000036 00000140 00000f80 00000400 00000004
    [ 54.364148] bfe0: b6e29808 beb3d7cc b6e1567b b5243116 20070030 0000001c 00000000 00000000
    [ 54.364152] Backtrace:
    [ 54.364161] [<c021360c>] (dma_cache_maint_page) from [<c0213780>] (__dma_page_cpu_to_dev+0x30/0xb4)
    [ 54.364167] r10:c1006184 r9:00000000 r8:d32afc00 r7:00001000 r6:00000000 r5:00000000
    [ 54.364169] r4:d4b18ee0
    [ 54.364177] [<c0213750>] (__dma_page_cpu_to_dev) from [<c0213850>] (arm_dma_sync_single_for_device+0x4c/0x50)
    [ 54.364181] r7:d22fa000 r6:c0213804 r5:a43f8000 r4:00000000
    [ 54.364219] [<c0213804>] (arm_dma_sync_single_for_device) from [<bf02b870>] (platform_cache+0x5e0/0x5ec [galcore])
    [ 54.364222] r5:a43f8000 r4:00000000
    [ 54.364267] [<bf02b290>] (platform_cache [galcore]) from [<bf026090>] (gckOS_MapUserMemory+0x84c/0xc00 [galcore])
    [ 54.364272] r10:c1006184 r9:bf02b290 r8:d32afc00 r7:d22fa000 r6:00000000 r5:c107e904
    [ 54.364275] r4:b0364000
    [ 54.364320] [<bf025844>] (gckOS_MapUserMemory [galcore]) from [<bf02e99c>] (gckKERNEL_Dispatch+0xbc8/0x11d0 [galcore])
    [ 54.364325] r10:00000000 r9:00000000 r8:ffffffff r7:00000001 r6:d305b200 r5:00000000
    [ 54.364327] r4:d22fbd98
    [ 54.364372] [<bf02ddd4>] (gckKERNEL_Dispatch [galcore]) from [<bf02a99c>] (drv_ioctl+0x128/0x294 [galcore])
    [ 54.364377] r9:d22fa000 r8:d22fbd78 r7:d22fa000 r6:00007530 r5:d335f880 r4:d3064600
    [ 54.364406] [<bf02a874>] (drv_ioctl [galcore]) from [<c033eba8>] (do_vfs_ioctl+0xa8/0x7fc)
    [ 54.364410] r9:d22fa000 r8:beb3d7e0 r7:0000001c r6:d367a300 r5:d36db020 r4:beb3d7e0
    [ 54.364416] [<c033eb00>] (do_vfs_ioctl) from [<c033f338>] (SyS_ioctl+0x3c/0x64)
    [ 54.364421] r10:00000000 r9:d22fa000 r8:beb3d7e0 r7:00007530 r6:d367a300 r5:0000001c
    [ 54.364424] r4:d367a301
    [ 54.364431] [<c033f2fc>] (SyS_ioctl) from [<c0207be0>] (ret_fast_syscall+0x0/0x34)
    [ 54.364435] r9:d22fa000 r8:c0207d84 r7:00000036 r6:00007530 r5:b6e33b3c r4:00002710
    [ 54.364442] Code: e3a02004 e1a02312 e2423001 e1c00003 (ee070f3a)
    [ 54.364447] ---[ end trace 7aed95bdafa0d7c9 ]---
  • Hi Joonho,

    There should not be any issue using CMEM memory with GC320 as the video-graphics-test example application that I pointed out earlier runs well with GC320. I do not see any kernel error with gcoSURF_SetWindow() API. GC320 driver has some restriction on buffer alignment and sizes.  You may want to print those requirement and compare with actual values of the buffer you are passing. Check the function Gc320Obj::configure_surface() in the gc320.cpp file in video-graphics-test example application. There's check in the code before setting the buffer and window.

    gcmONERROR(gcoSURF_GetAlignedSize(surf_ctx[i].surf,
    &width,
    &height,
    &stride));

    if((width != bo->m_width) || (height != bo->m_height) || ((uint32_t) stride != bo->m_stride)){
    ERROR("Allocated Surf buffer width %d, height %d and stride %d doesn't meet GC320 aligned requirement on width %d, height %d and stride %d\n",
    bo->m_width, bo->m_height, bo->m_stride, width, height, stride);
    }

    uint32_t p_adr_al;
    gcmONERROR(gcoSURF_GetAlignment(gcvSURF_BITMAP, surf_format,
    &p_adr_al,
    NULL, //&p_x_al,
    NULL //&p_y_al)
    ));

    if((uint32_t)bo->m_buf[i] % p_adr_al){
    ERROR("Buffer passed to GC320 doesn't meet the alignment requirement, GC320 alignment need is %x, received buffer with %x aligned address\n",
    p_adr_al, ((uint32_t)bo->m_buf[i]%p_adr_al));
    }

     

    Also check the BufObj::BufObj() function in the cmem_buf.cpp file. Buffer size needs to be adjusted to take care of the width and height alignment requirement. 

    /* Vivante HAL needs 16 pixel alignment in width and 4 pixel alignment in
    * height and hence adjust the buffer size accrodingly.
    */
    uint32_t size = m_stride * ((m_height + 3) & ~3);

     

  • vivante_cmem.7z

    Hi.

    we attach full source(vivante_cmem.7z).

    you can see #define OMK_CMEM_SUPPORT at galRunTest2.c

    without OMK_CMEM_SUPPORT, it is work well with omap memory.

    I compiled as  make -f makefile.linux

    our compile log is as following.

    arm-linux-gnueabihf-gcc -c  -march=armv7-a -marm -mfpu=neon  -mfloat-abi=hard --sysroot=/home/jhlee/AM5728_4.0/ti-processor-sdk-linux-am57xx-evm-04.00.00.04/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi -I/home/jhlee/AM5728_4.0/omk/lib/coresystem/src/hal_include/GC320 -DLINUX -Wall -D_REENTRANT -fno-strict-aliasing -mtune=arm920 -O2 -DUSE_VDK=0 -DgcdUSE_OPENCL=0 -DgcdSTATIC_LINK=0 -DgcdREGISTER_ACCESS_FROM_USER=1 -DgcdFPGA_BUILD=0 -DgcdPAGED_MEMORY_CACHEABLE=0 -DGC_ENABLE_LOADTIME_OPT=1 -DVIVANTE_PROFILER=1 -DVIVANTE_PROFILER_CONTEXT=1 -I/home/jhlee/AM5728_4.0/omk/lib/coresystem/src/hal_include/GC320 -DLINUX -Wall -D_REENTRANT -fno-strict-aliasing -mtune=arm920 -O2 -DUSE_VDK=0 -DgcdUSE_OPENCL=0 -DgcdSTATIC_LINK=0 -DgcdREGISTER_ACCESS_FROM_USER=1 -DgcdFPGA_BUILD=0 -DgcdPAGED_MEMORY_CACHEABLE=0 -DGC_ENABLE_LOADTIME_OPT=1 -DVIVANTE_PROFILER=1 -DVIVANTE_PROFILER_CONTEXT=1 -I/home/jhlee/AM5728_4.0/omk/lib/coresystem/src/hal_include/GC320 -DLINUX -Wall -D_REENTRANT -fno-strict-aliasing -mtune=arm920 -O2 -DUSE_VDK=0 -DgcdUSE_OPENCL=0 -DgcdSTATIC_LINK=0 -DgcdREGISTER_ACCESS_FROM_USER=1 -DgcdFPGA_BUILD=0 -DgcdPAGED_MEMORY_CACHEABLE=0 -DGC_ENABLE_LOADTIME_OPT=1 -DVIVANTE_PROFILER=1 -DVIVANTE_PROFILER_CONTEXT=1 -I/home/jhlee/AM5728_4.0/unittest/vivante_cmem/build/sdk/include/HAL -I/home/jhlee/AM5728_4.0/unittest/vivante_cmem/sdk/inc -I/home/jhlee/AM5728_4.0/unittest/vivante_cmem/test/hal/common/UnitTest/inc -I/home/jhlee/AM5728_4.0/opensource/libdrm/libdrm-2.4.70/include/drm -I/home/jhlee/AM5728_4.0/opensource/libdrm/libdrm-2.4.70/omap -o bin_r/galRunTest2.o galRunTest2.c

    our board have error as following.

    root@am57xx-evm:~/gc320_cmem# ./galRunTest2 -dst A8R8G8B8 1024x124
    -dst A8R8G8B8 1024x124
    DBG : width(1024) height(124)  at main
    DBG : g_ContiguousSize(4194304) at Initialize
    DBG : width(1024) stride1(1024) height(124) size(507904) at create_cmem_buffer
    DBG : vaddr(0xb6854000) at create_cmem_buffer
    DBG111 : g_Runtime.target(0x4d26c) sleep(5) at Initialize

    [   78.213337] Backtrace:
    [   78.215813] [<c021360c>] (dma_cache_maint_page) from [<c0213780>] (__dma_page_cpu_to_dev+0x30/0xb4)
    [   78.224902]  r10:d36e0000 r9:00000000 r8:c1006184 r7:00001000 r6:00000000 r5:00000000
    [   78.232766]  r4:d4a82400
    [   78.235317] [<c0213750>] (__dma_page_cpu_to_dev) from [<c0213850>] (arm_dma_sync_single_for_device+0x4c/0x50)
    [   78.245275]  r7:bf0270c8 r6:c0213804 r5:00000000 r4:00000000
    [   78.251000] [<c0213804>] (arm_dma_sync_single_for_device) from [<bf02713c>] (platform_cache+0x74/0x5a8 [galcore])
    [   78.261307]  r5:00000000 r4:00000000
    [   78.264958] [<bf0270c8>] (platform_cache [galcore]) from [<bf021a30>] (gckOS_MapUserMemory+0x250/0xb58 [galcore])
    [   78.275268]  r10:d36e0000 r9:c107e904 r8:c1006184 r7:bf0270c8 r6:d235c000 r5:00000000
    [   78.283132]  r4:b6854000
    [   78.285735] [<bf0217e0>] (gckOS_MapUserMemory [galcore]) from [<bf02a5d0>] (gckKERNEL_Dispatch+0xbb4/0x11a8 [galcore])
    [   78.296480]  r10:00000000 r9:00000000 r8:ffffffff r7:00000001 r6:d3fc1d00 r5:00000000
    [   78.304344]  r4:d235dd98
    [   78.306947] [<bf029a1c>] (gckKERNEL_Dispatch [galcore]) from [<bf0266ac>] (drv_ioctl+0x128/0x294 [galcore])
    [   78.316732]  r9:d235c000 r8:d235dd78 r7:d235c000 r6:00007530 r5:d2749fc0 r4:d3020600
    [   78.324542] [<bf026584>] (drv_ioctl [galcore]) from [<c033eba8>] (do_vfs_ioctl+0xa8/0x7fc)
    [   78.332845]  r9:d235c000 r8:becd68b8 r7:00000003 r6:d2605b40 r5:d37fcb58 r4:becd68b8
    [   78.340625] [<c033eb00>] (do_vfs_ioctl) from [<c033f338>] (SyS_ioctl+0x3c/0x64)
    [   78.347969]  r10:00000000 r9:d235c000 r8:becd68b8 r7:00007530 r6:d2605b40 r5:00000003
    [   78.355832]  r4:d2605b40
    [   78.358383] [<c033f2fc>] (SyS_ioctl) from [<c0207be0>] (ret_fast_syscall+0x0/0x34)
    [   78.365988]  r9:d235c000 r8:c0207d84 r7:00000036 r6:00007530 r5:b6f64b3c r4:00002710
    [   78.373767] Code: e3a02004 e1a02312 e2423001 e1c00003 (ee070f3a)

    /usb/lib

    lrwxrwxrwx    1 root     root            19 Oct  3  2016 /usr/lib/libGAL.so -> libGAL.so.5.0.11.p7
    -rwxr-xr-x    1 1001     1001        229592 Jun 28  2017 /usr/lib/libGAL.so.5.0.11.p7

    What mistake do I have ?

    Thanks a lot.