Fwd: [android-x86-devel] Yet another nouveau question out of the blue

144 views
Skip to first unread message

Mauro Rossi

unread,
Jun 21, 2016, 1:50:24 PM6/21/16
to Android-x86
Hi, for nvidia GPU users, enjoy the good news!!!

There's an experimental set of patches that deliver a WIP implementation of multithreading for nouveau.
Preliminary tests showed no GPU lockup/hang on GT2... to GT6xx

Please be aware that these patches may be included in next release, regardless of the status of upstreming to mesa-dev, mesa-stable,

as they have already proved to be very effective for allowing Sign-In on marshmallow-x86 and preventing GPU lockups in 
all blatant scenarios of GPU lockups.

Regards.

Mauro


---------- Forwarded message ----------
From: Mauro Rossi <issor...@gmail.com>
Date: 2016-06-18 2:36 GMT+02:00
Subject: Re: [android-x86-devel] Yet another nouveau question out of the blue
To: Android-x86 development <android-...@googlegroups.com>, imi...@alum.mit.edu
Cc: Emil Velikov <emil.l....@gmail.com>, Paulo Sergio <pst...@gmail.com>, Rob Herring <robhe...@gmail.com>, JJ Meijer <jjmei...@gmail.com>, Mark Baum <markb...@gmail.com>


There is an experimental patch from ilia [1] that aims to make the
driver safe when used by multiple GL and video decoding (VDPAU/etc)
threads.

That said, it would be nice to be able to achieve both goals - find a
way to toggle/force Android to use single GL thread and having a MT
safe nouveau.

-Emil

[1] https://patchwork.freedesktop.org/patch/91692/

:-)))))

Hi, 

thanks also to Mark, who helped with the tests,
we have independent confirmations that "[RFC] nouveau: add locking" merged to 12.0.0rc2/3

delivers tremendous improvements for Android and has solved the GPU lockups for all the following scenarios:

- Sign-In
- Harism (this was very nasty with multithreading causing randomic but inevitable GPU lockups)
- 3D Resistor helper Free (same as but it was causing GPU lock at launch)


I see some artifacts with OpenGL ES 1.0 and by pressing the TAB button to show the active apps
and Basemark and Rajawali show some black panel (probably EGL swap non workign)

There are still some cases of race conditions as I saw GUI stuck in some cases and SIG_PIPE and SIG_ABRT,
but absolutely no GPU lockups!!! I can switch to console anytime.

Now the community with nvidia GPUs will be able to boot marshmallow-x86 and the bugs will be traceable.

Thanks a lot to Ilia!!!!

Mauro


Screenshot_20160618-013207.png
Screenshot_20160618-013421.png
Screenshot_20160618-013452.png
Screenshot_20160618-014825.png
Screenshot_20160618-015506.png
Screenshot_20160618-015601.png

Mauro Rossi

unread,
Jun 22, 2016, 2:09:52 PM6/22/16
to Android-x86
Hi,

The updated WIP work is in Ilia Mirkin github in nv30 branch: 

It has been merged in new mesa-12.0 branch on android-x86 sourceforge (thanks to Chih-Wei)

For people who want to try to build for testing purposes, the following drm_gralloc repo
has the necessary changes to support mesa 12.x


Especially needed is the following commit:

"android: fix gralloc_drm_pipe building error with mesa 11.3"

There are still some visual issues in some apps, like Basemark ES2 Taiji, Rajawali 
but marshmallow-x86 with nvidia is now:

1) booting and completing sign-in
2) rock-stable with multithreading on same GL context
3) exploiting nouveau OpenGL ES 3.x capabilities

Now the plan for nouveau is to continuosly improve the visual results/performance by using test/conformance tools,
like deqp, piglit automated tests suites and by toying with GPU debugging tools in Android Studio,
where is possible to inoculate Android Apps with libglapi for traceing purposes!!!

Please drop here a message if you are expert and you have suggestions, or if just interested to know more about testing/debugging tools
Mauro


Now let's say Bye-Bye these GPU lockup output in dmesg logs...
[  225.654469] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 22 [android.browser[3825]] get 00201d1d30 put 00201d224c ib_get 000000d9 ib_put 000000e2 state 40000028 (err: INVALID_MTHD) push 00406040
[  225.654525] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 22 [android.browser[3825]] get 00203f1200 put 00203f125c ib_get 000000da ib_put 000000e2 state 80000000 (err: INVALID_CMD) push 00406040
[  225.654584] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 22 [android.browser[3825]] get 00201d2674 put 00201d2f2c ib_get 000000db ib_put 000000e2 state 80006ffc (err: INVALID_CMD) push 00406040
[  225.654636] nouveau 0000:01:00.0: fifo: DMA_PUSHER - ch 22 [android.browser[3825]] get 002034f004 put 002034f048 ib_get 000000dc ib_put 000000e2 state 80000000 (err: INVALID_CMD) push 00406040
[  225.654899] nouveau 0000:01:00.0: gr: DATA_ERROR 0000000c [INVALID_BITFIELD]
[  225.654905] nouveau 0000:01:00.0: gr: 00100000 [] ch 22 [001eb67000 android.browser[3825]] subc 3 class 8297 mthd 1694 data 00fc000c
...
[  379.634010] nouveau 0000:01:00.0: android.browser[3825]: failed to idle channel 22 [android.browser[3825]]
[  394.634010] nouveau 0000:01:00.0: android.browser[3825]: failed to idle channel 22 [android.browser[3825]]
Bye-Bye to the GPU lockup output in dmesg logs...
Reply all
Reply to author
Forward
0 new messages