Hello,
I try to run any DirectFB (Multi Application Core) application (with Fusion library and the linux-fusion kernel module) on i.MX6 Solo. The version of DirectFB is 1.4.0 (LTIB).
My system was failed with the debugging message (shown below)
"Fusion/Init: Mapping shared area failed!"
This log message occurs when mmap() failed in fusion_enter() in fusion.c .
-----------------------------------------------------------------------------------------
shared = mmap( (void*) 0x20000000 + 0x2000 * world_index, sizeof(FusionWorldShared),
PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, fd, 0 );
if (shared == MAP_FAILED) {
D_PERROR( "Fusion/Init: Mapping shared area failed! tid[%d]\n",direct_gettid() );
goto error;
}
------------------------------------------------------------------------------------------
The first application (FER_ANY, FUSION_ID_MASTER) passes mmap() successfully.
But from the second application, mmap() returns an error (MAP_FAILED).
I found the cause of this fail(MAP_FAILED) in fusion_mmap() in fuseiondev.c
-----------------------------------------------------------------------------------------
if (fusionee_id(fusionee) != FUSION_ID_MASTER && (vma->vm_flags & VM_WRITE))
return -EPERM;
-----------------------------------------------------------------------------------------
From the second application, the fusion_id is not FUSION_ID_MASTER and the flag has O_RDWR.
So the applications that fusion_id is not FUSION_ID_MASTER will fail when executing mmap().
If the code above (fusion_mmap()) is correct, it seems I am using DirectFB incorrectly.
Please help me if you know this problem.
Hi Minseok,
Linux-fusion is not officially supported to any i.MX6, I guess nor supported on arm devices, since not sure if it works with 2.6.xx kernels. however hope links here helps:
Problem with DirectFB (Multi App Core) on Coldfire
https://community.nxp.com/message/62269?commentID=62269#comment-62269
regards