Video Malfunction with i.MX6DL and Weston

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Video Malfunction with i.MX6DL and Weston

744 Views
PaulDeMetrotion
Senior Contributor I

Below is a piece of the syslog that highlights what I believe is a VPU memory resource conflict issue that I cannot resolve. I have a sequence of videos that I can play for days without an issue. Randomly the video sequence will stop playing (black screen or white screen) while all other functionality including audio continues without a problem. All of the syslog video sequences appear to proceed in a sequential manner where memory resources are freed and allocated orderly. This specific instance has been timestamped to match the instant when video stops working and appears to be the only time that there is an overlap of resources.

I am running on a dual core i.MX6DL system running a Weston compositor. When I disable one of the cores, this problem goes away. I am thinking that one core is starting to request memory resources before the other core has completely freed its resources. Any thoughts would be appreciated as to how this can be resolved. I can provide any additional info if needed.

2017-03-15T16:24:50.655480+00:00 kernel: imx-sdma 20ec000.sdma: txd a8ae8600: freeing
2017-03-15T16:24:50.657313+00:00 gfxd[208]: [INFO]#011bitstreamMode 1, chromaInterleave 0, mapType 0, tiled2LinearEnable 0
2017-03-15T16:24:50.659814+00:00 gfxd[208]: [WARN]#011VPU iram is less than needed, some parts don't use iram
2017-03-15T16:24:50.662710+00:00 gfxd[208]: gst_imx_egl_viv_sink_egl_platform_mainloop +++
2017-03-15T16:24:50.665104+00:00 gfxd[208]: platform->video_width = 800
2017-03-15T16:24:50.666714+00:00 gfxd[208]: platform->video_height = 480
2017-03-15T16:24:50.671035+00:00 gfxd[208]: gst_imx_egl_viv_sink_egl_platform_mainloop ---
2017-03-15T16:24:50.673349+00:00 gfxd[208]: ====== AIUR: 4.0.9 build on Feb 10 2017 09:18:37. ======
2017-03-15T16:24:50.675071+00:00 gfxd[208]: #011Core: MPEG4PARSER_06.09.22 build on Jan 12 2016 05:26:25
2017-03-15T16:24:50.677782+00:00 gfxd[208]: file: /usr/lib/imx-mm/parser/lib_mp4_parser_arm11_elinux.so.3.2
2017-03-15T16:24:50.679957+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xaa300000
2017-03-15T16:24:50.687773+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb2800000
2017-03-15T16:24:50.690855+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xaa400000
2017-03-15T16:24:50.693033+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb2d00000
2017-03-15T16:24:50.694772+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb2e00000
2017-03-15T16:24:50.697218+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb2f00000
2017-03-15T16:24:50.699982+00:00 gfxd[208]: ------------------------
2017-03-15T16:24:50.702529+00:00 gfxd[208]: Track 00 [video_0] Enabled
2017-03-15T16:24:50.705158+00:00 gfxd[208]: #011Duration: 0:00:30.276000000
2017-03-15T16:24:50.707629+00:00 gfxd[208]: #011Language: und
2017-03-15T16:24:50.710461+00:00 gfxd[208]: Mime:
2017-03-15T16:24:50.712881+00:00 gfxd[208]: #011video/x-h264, parsed=(boolean)true, alignment=(string)au, stream-format=(string)avc, width=(int)800, height=(int)480, framerate=(fraction)90000/3007, codec_data=(buffer)014d4028ffe1001a674d4028eca0641ed3501010140000030004000afc803c60c65801000468efbc80
2017-03-15T16:24:50.714746+00:00 gfxd[208]: ------------------------
2017-03-15T16:24:50.717198+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3000000
2017-03-15T16:24:50.719842+00:00 gfxd[208]: ------------------------
2017-03-15T16:24:50.722245+00:00 gfxd[208]: Track 01 [audio_0] Enabled
2017-03-15T16:24:50.724088+00:00 gfxd[208]: #011Duration: 0:00:30.267000000
2017-03-15T16:24:50.736755+00:00 gfxd[208]: #011Language: und
2017-03-15T16:24:50.739779+00:00 kernel: mxc_vpu 2040000.vpu_fsl: size=0x4000, page no.=0x2040
2017-03-15T16:24:50.739871+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b54f000, pgoff=0x3a200, size=0x7c000
2017-03-15T16:24:50.739887+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0x4fe800
2017-03-15T16:24:50.742465+00:00 gfxd[208]: Mime:
2017-03-15T16:24:50.746605+00:00 gfxd[208]: #011audio/x-ac3, channels=(int)1, rate=(int)44100, bitrate=(int)0, framed=(boolean)true
2017-03-15T16:24:50.749059+00:00 gfxd[208]: ------------------------
2017-03-15T16:24:50.761014+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3100000
2017-03-15T16:24:50.762950+00:00 gfxd[208]: No accelerated IMDCT transform found
2017-03-15T16:24:50.765668+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3200000
2017-03-15T16:24:50.768471+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3300000
2017-03-15T16:24:50.769450+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb2800000
2017-03-15T16:24:50.769499+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a9a3000, pgoff=0x42800, size=0x4ff000
2017-03-15T16:24:50.769509+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0x94000
2017-03-15T16:24:50.769516+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xaa300000
2017-03-15T16:24:50.789429+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb2d00000
2017-03-15T16:24:50.789485+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b2b6000, pgoff=0x42d00, size=0xa5000
2017-03-15T16:24:50.789497+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.789505+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb2e00000
2017-03-15T16:24:50.789512+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b211000, pgoff=0x42e00, size=0xa5000
2017-03-15T16:24:50.789519+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.809546+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3100000
2017-03-15T16:24:50.809610+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a8fe000, pgoff=0x43100, size=0xa5000
2017-03-15T16:24:50.809622+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.809630+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3200000
2017-03-15T16:24:50.809637+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a859000, pgoff=0x43200, size=0xa5000
2017-03-15T16:24:50.809643+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.809652+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3300000
2017-03-15T16:24:50.809658+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a7b4000, pgoff=0x43300, size=0xa5000
2017-03-15T16:24:50.809665+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.829482+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3600000
2017-03-15T16:24:50.829560+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a3b6000, pgoff=0x43600, size=0xa5000
2017-03-15T16:24:50.829572+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.829581+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3700000
2017-03-15T16:24:50.829588+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a311000, pgoff=0x43700, size=0xa5000
2017-03-15T16:24:50.829595+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x3a400000 is phy memory
2017-03-15T16:24:50.829602+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x3a45dc00 is phy memory
2017-03-15T16:24:50.829609+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x3a475300 is phy memory
2017-03-15T16:24:50.829616+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x42e00000 is phy memory
2017-03-15T16:24:50.829623+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x42e5dc00 is phy memory
2017-03-15T16:24:50.829630+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x42e75300 is phy memory
2017-03-15T16:24:50.829637+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43000000 is phy memory
2017-03-15T16:24:50.829643+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x4305dc00 is phy memory
2017-03-15T16:24:50.829650+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43075300 is phy memory
2017-03-15T16:24:50.829657+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43200000 is phy memory
2017-03-15T16:24:50.829664+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x4325dc00 is phy memory
2017-03-15T16:24:50.829672+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43275300 is phy memory
2017-03-15T16:24:50.829678+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43400000 is phy memory
2017-03-15T16:24:50.829685+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x4345dc00 is phy memory
2017-03-15T16:24:50.829692+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43475300 is phy memory
2017-03-15T16:24:50.829698+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43600000 is phy memory
2017-03-15T16:24:50.829705+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x4365dc00 is phy memory
2017-03-15T16:24:50.829712+00:00 kernel: mxc_vpu 2040000.vpu_fsl: vpu: memory phy:0x43675300 is phy memory
2017-03-15T16:24:50.888243+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3400000
2017-03-15T16:24:50.890044+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3500000
2017-03-15T16:24:50.892051+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3600000
2017-03-15T16:24:50.893729+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [FREE] mem freed cpu_addr = 0xb3700000
2017-03-15T16:24:50.895819+00:00 kernel: imx-sdma 20ec000.sdma: load_address = 6235
2017-03-15T16:24:50.897382+00:00 kernel: imx-sdma 20ec000.sdma: wml = 0x00000018
2017-03-15T16:24:50.899036+00:00 kernel: imx-sdma 20ec000.sdma: shp_addr = 0x0202c000
2017-03-15T16:24:50.901126+00:00 kernel: imx-sdma 20ec000.sdma: per_addr = 0x00000000
2017-03-15T16:24:50.902786+00:00 kernel: imx-sdma 20ec000.sdma: event_mask0 = 0x00000000
2017-03-15T16:24:50.904871+00:00 kernel: imx-sdma 20ec000.sdma: event_mask1 = 0x00000400
2017-03-15T16:24:50.906524+00:00 kernel: imx-sdma 20ec000.sdma: sdma_prep_dma_cyclic channel: 3
2017-03-15T16:24:50.908124+00:00 kernel: imx-sdma 20ec000.sdma: entry 0: count: 7056 dma: 0x3a070000 intr
2017-03-15T16:24:50.910800+00:00 kernel: imx-sdma 20ec000.sdma: entry 1: count: 7056 dma: 0x3a071b90 intr
2017-03-15T16:24:50.912895+00:00 kernel: imx-sdma 20ec000.sdma: entry 2: count: 7056 dma: 0x3a073720 intr
2017-03-15T16:24:50.914501+00:00 kernel: imx-sdma 20ec000.sdma: entry 3: count: 7056 dma: 0x3a0752b0 intr
2017-03-15T16:24:50.916710+00:00 kernel: imx-sdma 20ec000.sdma: entry 4: count: 7056 dma: 0x3a076e40 intr
2017-03-15T16:24:50.918313+00:00 kernel: imx-sdma 20ec000.sdma: entry 5: count: 7056 dma: 0x3a0789d0 intr
2017-03-15T16:24:50.920696+00:00 kernel: imx-sdma 20ec000.sdma: entry 6: count: 7056 dma: 0x3a07a560 intr
2017-03-15T16:24:50.922394+00:00 kernel: imx-sdma 20ec000.sdma: entry 7: count: 7056 dma: 0x3a07c0f0 intr
2017-03-15T16:24:50.924432+00:00 kernel: imx-sdma 20ec000.sdma: entry 8: count: 7056 dma: 0x3a07dc80 wrap intr
2017-03-15T16:24:50.926157+00:00 kernel: imx-sdma 20ec000.sdma: vchan a83182e0: txd a8c2d080[358]: submitted
2017-03-15T16:24:50.928329+00:00 kernel: mxc_vpu 2040000.vpu_fsl: Not power off before vpu open!
2017-03-15T16:24:50.930860+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.932578+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xaa400000
2017-03-15T16:24:50.934760+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b35b000, pgoff=0x3a400, size=0xa5000
2017-03-15T16:24:50.936479+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.938791+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb2f00000
2017-03-15T16:24:50.941329+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b16c000, pgoff=0x42f00, size=0xa5000
2017-03-15T16:24:50.943157+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.945442+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3000000
2017-03-15T16:24:50.947174+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6b0c7000, pgoff=0x43000, size=0xa5000
2017-03-15T16:24:50.950813+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.954693+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3400000
2017-03-15T16:24:50.959997+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a70f000, pgoff=0x43400, size=0xa5000
2017-03-15T16:24:50.961768+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101
2017-03-15T16:24:50.966548+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc cpu_addr = 0xb3500000
2017-03-15T16:24:50.971891+00:00 kernel: mxc_vpu 2040000.vpu_fsl: start=0x6a45b000, pgoff=0x43500, size=0xa5000
2017-03-15T16:24:50.975998+00:00 kernel: mxc_vpu 2040000.vpu_fsl: [ALLOC] mem alloc size = 0xa4101

1 Reply

543 Views
claymontgomery
Contributor IV

The working implementations I have seen of using the Vivante Direct Texture extension with gstreamer on i.MX6 typically reuse a set of buffers that are allocated once, rather than deleting and reallocating them. You also might want to consider avoid using gstreamer. Lightwing, for example, does direct VPU to GPU video without gstreamer:

http://montgomery1.com/lightwing/ 

Regards, Clay

0 Kudos