Bug 5219

Summary: meta-fsl-arm kernel crash when using graphics acceleration
Product: [Build System, Metadata & Runtime] BSPs Reporter: lpa <lee.page>
Component: bsps-meta-fsl-armAssignee: Daiane <angolini>
Status: VERIFIED FIXED QA Contact:
Severity: major    
Priority: Medium+ CC: jessica.zhang, otavio, sgw, sjolley.yp.pm
Version: unspecified   
Target Milestone: 1.5.3   
Hardware: Other   
OS: arm   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
minicom log
none
Additional log from /var/log/messages none

Description lpa 2013-09-17 15:14:55 UTC
Created attachment 1514 [details]
minicom log

Hardware i.MX6dl
Branch master revision c3c1d2616e59ba314c6ff602b99909da632a11d5
Kernel 3.0.35-4.0.0+yocto+g3383d80

Running chromium package from meta-browser layer with GPU acceleration enabled. Several crashes have occurred with this build. The kernel appears to
panic due to null pointer dereference, each time the address can differ.

Examples.

Unable to handle kernel paging request at virtual address ffedf135

Unable to handle kernel NULL pointer dereference at virtual address
00000003

Unable to handle kernel NULL pointer dereference at virtual address
00000017

Unable to handle kernel paging request at virtual address fffffffc

Unable to handle kernel paging request at virtual address ff2518b5

Further information provided in the attached log files.

Are there any pending patches for the GPU drivers not yet available on the master branch?
Comment 1 Otavio Salvador 2013-09-17 17:16:03 UTC
How someone can reproduce this? Is it using normal Chromium package?
Comment 2 lpa 2013-09-18 16:52:40 UTC
Created attachment 1518 [details]
Additional log from /var/log/messages
Comment 3 lpa 2013-10-02 12:53:30 UTC
Chromium recipe used.

meta-browser/recipes-browser/chromium/chromium_29.0.1518.2.bb

Changed do_configure to link against libGAL otherwise chromium failed to start due to missing symbols from libGAL.

 do_configure() {
         cd ${S}
         # replace LD with CXX, to workaround a possible gyp issue?
-         LD="${CXX}" export LD
+         LD="${CXX} -lGAL -lEGL -lGLESv2" export LD

Started chromium with these parameters.

google-chrome --ignore-gpu-blacklist --enable-gpu --use-gl=egl --enable-accelerated-2d-canvas --force-compositing-mode &

Tested with multiple open tabs. Sites such as http://browsermark.rightware.com/
After some indeterminate amount of time, ~15 mins of usage, the kernel Oops occurs.
Comment 4 lpa 2013-10-02 13:01:49 UTC
Switched to chromium 31.0.1636.0 and changed gyp settings instead of LD flag.

+--- a/ui/gl/gl.gyp
++++ b/ui/gl/gl.gyp
+@@ -123,6 +123,12 @@
+         '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
+         '<(gl_binding_output_dir)/gl_interface_autogen_gl.h',
+       ],
++      'link_settings': {
++        'libraries': [
++          '-lEGL',
++          '-lGAL',
++        ],
++      },

Since the change the kernel Oops has not yet reoccurred.
Comment 5 lpa 2013-10-02 13:08:31 UTC
The kernel Oops only occurred with gpu enabled in chromium 29. Additional kernel debug flags, CONFIG_DEBUG_PAGEALLOC=y, indicated memory corruption with the gpu enabled.

galcore galcore.0: rpm_suspend returns 0
galcore galcore.0: rpm_resume flags 0x4
galcore galcore.0: rpm_resume returns 0
galcore galcore.0: rpm_resume flags 0x4
galcore galcore.0: rpm_resume returns 1
pagealloc: memory corruption
96681000: e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff  ................
96681010: e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff  ................
96681020: e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff  ................
96681030: e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff  ................
96681040: e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff e5 e5 e5 ff  ................

Are unit tests available for testing gpu drivers?
Comment 6 Otavio Salvador 2014-05-22 19:04:29 UTC
Fixed in update in Dora for 3.0.35-4.1.0.
Comment 7 Otavio Salvador 2014-07-21 16:36:27 UTC
Working fine for a while, close it.