qtmultimedia: fix kernel warning on imx8m
This MR is just a temporary workaround for the problem with i.MX6 plugin for Qt multimedia module described in YT-141.
This module provides QML types and C++ classes to handle multimedia content and is used by seco-show-demo
to demonstrate video playback.
But on i.MX8 boards with current Yocto kirktone, following errors can be observed in dmesg when some multimedia is played via seco-show-demo
:
mm/page_alloc.c:9264 free_contig_range+0xb0/0xcc
Several similar issues have been found in google, but without any solution:
- https://bugreports.qt.io/browse/QTBUG-93200
- https://community.nxp.com/t5/i-MX-Processors/i-MX6-QMediaPlayer-does-qtvideosink-use-IPU/m-p/1047598/highlight/true
- https://community.nxp.com/t5/i-MX-Processors/imx6Quad-use-qtmultimedia-example-qmlvideo-play-mp4-loops-for/td-p/1133032
According to these discussions, this problem has been already reported to Qt maintainers, but without any result.
But some workaround has been found - instead of using DMA (memory) to provide textures to GPU/VPU, it was suggested to use an ordinary memcpy().
We checked this proposal (set a mMappable variable to false in vivanteMapping()) and it worked well on Tanaro. Herewith no performance penalty or other side effects were found on existing i.MX8 and i.MX6 boards. So, we do not see any problem with activation of this workaround.
And to investigate this issue further and to understand the root cause, we will need to debug how memory is allocated for GPU/VPU and is freed in Qt multimedia. And it will take some time.