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.

CMEM (Linuxutils 3.21.00.04 ) + Kernel 2.6.37 freeze/hang

Other Parts Discussed in Thread: DM3730, OMAP3530

Hi all,

I have a problem with CMEM which hang/freeze my board based on a dm3730 soc + 512Mb of ram.

I set my mem=430M@80000000

And CMEM params :

modprobe cmemk phys_start=0x9AE00000 phys_end=0x9CE00000 pools=20x4096,4x131072,2x5250000,6x1843200,2x691200

And launch apitestd apps result :

CMEM Debug: init: successfully opened /dev/cmem, matching driver version...
CMEM Debug: getVersion: entered
CMEM Debug: getVersion: exiting, ioctl CMEM_IOCGETVERSION returned 0x3000100
CMEM Debug: init: ... match good (0x3000100)
CMEM Debug: init: exiting, returning success
CMEM initialized.
CMEM Debug: getVersion: entered
CMEM Debug: getVersion: exiting, ioctl CMEM_IOCGETVERSION returned 0x3000100
CMEM version = 0x3000100
CMEM Debug: getBlock: entered
CMEM Debug: getBlock: exiting, ioctl CMEM_IOCGETBLOCK succeeded, returning *pphys_base=0x9ae00000, *psize=0x2000000
CMEM memory block 0: phys start = 0x9ae00000, size = 0x2000000
CMEM Debug: getBlock: entered
CMEM Error: getBlock: Failed to retrieve memory block bounds for block 1 from driver: -1.
Failed to retrieve CMEM memory block 1 bounds
CMEM memory block 1: phys start = 0x9ae00000, size = 0x2000000
allocating heap buffers from CMEM memory block 0...
CMEM Debug: alloc: entered w/ size 0x4c4b40, params - type HEAP, flags NONCACHED, align 0
CMEM Debug: allocHeap: allocated phys buffer 0x9ae00000
CMEM Debug: allocHeap: mmap succeeded, returning virt buffer 0x4023f000
CMEM Debug: alloc: entered w/ size 0x4c4b40, params - type HEAP, flags NONCACHED, align 0
CMEM Debug: allocHeap: allocated phys buffer 0x9b2c5000
CMEM Debug: allocHeap: mmap succeeded, returning virt buffer 0x40797000
CMEM Debug: alloc: entered w/ size 0x4c4b40, params - type HEAP, flags NONCACHED, align 0
CMEM Error: allocHeap: ioctl CMEM_IOCALLOCHEAP failed: -1
...done, 2 allocated
Press ENTER to continue (after 'cat /proc/cmem' if desired).

freeing heap blocks...
CMEM Debug: free: entered w/ ptr 0x4023f000, params - type HEAP

My 1st problem was freezing when used TIViddec2 or TIauddec gst pluggins which make a call cmem_getphys() freezing my board, after i tested only cmem and had this problem.

The board freeze here, after some investigation i suspect this call to freeze/hang my board :

ioctl(cmem_fd, cmd | CMEM_IOCMAGIC, &freeDesc)

I'm a little lost, because when i use CMEM with this parameters everything work :

modprobe cmemk allowOverlap=1 phys_start=0x86300000 phys_end=0x87300000 \
pools=1x5250000,6x829440,1x345600,1x691200,1x1
+ mem=99M@0x80000000 mem=384M@0x88000000 (which is the default config for omap3530 soc)

Any advice will be appreciate ?

Mika

  • Hi Mika,

    The failure you are observing in CMEM's apitest is because you ran out of memory for the heap. You have allocated 0x2000000 for CMEM, and used up 0x1674FA0 in pool buffers (sum up 20x4096,4x131072,2x5250000,6x1843200,2x691200). This means only 0x98B060 remains and can be used by the CMEM heap. This corresponds to roughly 10 million bytes.  In apitest, each memory allocation is 5 million bytes, so the third memory allocation from the heap would fail.

    You need to either increase the amount of memory allocated for CMEM or reduce the amount of pool buffers for the example to work.

    Not sure if the error you are observing in the GST plugins is related.

    Best regards,

    Vincent