[PATCH] [SRU] [X/raspi2] Fix kernel hang when vc4 is enabled and fb0 is

Paolo Pisati paolo.pisati at canonical.com
Thu Aug 3 10:17:12 UTC 2017


BugLink: https://bugs.launchpad.net/bugs/1708417

Impact:

There is a kernel hang in 4.4.y if the vc4 driver is enabled, and another
program opens /dev/fb0 to display an image.

The problem is present in 4.4 up to 4.8 - the fix was found by bisecting between
4.7 and 4.8, and rebasing the Raspberry BSP on top of each bisect - it's a clean
cherry-pick from upstream.

Fix:

Apply the attached patch and recompile the kernel.

How to test:

Enable the gpu hardware acceleration by loading the vc4 overlay:

config.txt:
...
dtoverlay=vc4-kms-v3d
...

reboot and check that vc4 was activated:

$ dmesg | grep vc4

...
[ 15.274385] vc4-drm soc:gpu: bound 3f902000.hdmi (ops vc4_hdmi_ops [vc4])
[ 15.274660] vc4_dsi 3f700000.dsi: DSI not set up by firmware.
[ 15.274753] vc4-drm soc:gpu: bound 3f700000.dsi (ops vc4_dsi_ops [vc4])
[ 15.274873] vc4-drm soc:gpu: bound 3f400000.hvs (ops vc4_hvs_ops [vc4])
[ 15.275178] vc4-drm soc:gpu: bound 3f206000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 15.275407] vc4-drm soc:gpu: bound 3f207000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 15.275643] vc4-drm soc:gpu: bound 3f807000.pixelvalve (ops vc4_crtc_ops [vc4])
[ 15.275818] vc4-drm soc:gpu: bound 3fc00000.v3d (ops vc4_v3d_ops [vc4])
[ 15.403354] vc4-drm soc:gpu: fb0: frame buffer device
...

then download and compile psplash:

$ git clone git://git.yoctoproject.org/psplash
$ cd psplash
$ autoreconf --install
$ ./configure
$ make
$ sudo ./psplash

here the board should hang, pull the plug to get it back.
Now install the patched kernel, and execute psplash again - the board will be
fine, and a bitmap will be displayed on hdmi, ctrl+c to exit psplash.

--

Robin Murphy (1):
  drm/fb_cma_helper: Implement fb_mmap callback

 drivers/gpu/drm/drm_fb_cma_helper.c | 8 ++++++++
 1 file changed, 8 insertions(+)

-- 
2.7.4





More information about the kernel-team mailing list