The /dev/galcore driver in Linux 3.14 expects a driver argument like the following for the IOCTL_GCHAL_INTERFACE ioctl.
typedef struct _DRIVER_ARGS
{
gctUINT64 InputBuffer;
gctUINT64 InputBufferSize;
gctUINT64 OutputBuffer;
gctUINT64 OutputBufferSize;
}
DRIVER_ARGS;
Each InputBuffer and OutBuffer must be a gcsHAL_INTERFACE type which currently has a size of 248 bytes. To verify what the current iMX6Q libGAL.so is passing to the kernel I set a breakpoint on the first call to ioctl() when querying the interface parameters. On inspecting the $r2 ioctl argument, the current iMX6Q GPU drivers are passing a DRIVER_ARGS which contains 32-bit values, not the gcfUINT64 values expected by the 3.14 kernel. In addition, the size of the gcsHAL_INTERFACE parameters was apparently 128 bytes at the time the iMX6Q GPU driver was compiled.
(gdb) info registers
r0 0xffffffe7 4294967271
r1 0x7530 30000
r2 0x7efef7fc 2130638844
r3 0x14008 81928
r4 0x76fb9ee8 1996201704
r5 0x7530 30000
r6 0x2710 10000
r7 0x80 128
r8 0x7efef838 2130638904
r9 0x1 1
r10 0xaaa22a22 2862754338
r11 0xffffffff 4294967295
r12 0x76fb692c 1996187948
sp 0x7efef7f0 0x7efef7f0
lr 0x76fa7fec 1996128236
pc 0x76eb0bec 0x76eb0bec <ioctl+12>
cpsr 0x200e0030 537788464
(gdb) x/8x $r2
0x7efef7fc: 0x7efef838 0x00000080 0x7efef838 0x00000080
0x7efef80c: 0x00024078 0x00022930 0x00000000 0x0002407c
Please, Freescale could you rebuild these drivers to support the current 3.14 kernel!
Regards,
Jonathan Olson