radeon CS parser refactoring

Marek Olšák maraeo at gmail.com
Mon Jan 7 16:21:42 PST 2013


On Tue, Jan 8, 2013 at 12:09 AM, Ilija Hadzic
<ihadzic at research.bell-labs.com> wrote:
>
>
> On Fri, 4 Jan 2013, Alex Deucher wrote:
>
>> R6xx and r7xx are really all you need to worry about in this case.
>> R1xx-r5xx UMS uses a different kernel interface for command submission
>> and evergreen and later don't have UMS drm support.  UMS r6xx/r7xx
>> support used the same kernel interface for command submission but the
>> kernel side was much simpler.
>
>
> OK, I have found an old machine with RV730 GPU and a known-working UMS:
> 2.6.35 kernel, 6.13.2 DDX, 7.8.2 mesa (classic), 1.9 Xorg). I changed the
> kernel to the latest drm-next and ran tests with and without my
> CS-refactoring patches. Here are the results:
>
> * It appears that drm-next in its current state is broken with regard
>   to UMS (nothing to do with my patches, it was pre-broken to begin with).
>   UMS provokes the kernel into a NULL-pointer dereference oops. Good news
>   is that I have tracked down the crash and I will be sending the patches
>   with the fix shortly.
>
> * There are multiple patches that contributed to the breakage of UMS.
>   I didn't bother pin-pointing them all, but one that I looked
>   (6a7068b4) dates back to April 2012 so there are kernels out in
>   distros that crash on UMS. That probably tells us how many UMS
>   users are left out there :-). BTW, the reason UMS crashes is
>   because parser->rdev is NULL in UMS mode so every patch that tries
>   to dereference it (and shares the code path with UMS) will cause an
>   oops (it will become clear when you see the patches).
>
> * So, having fixed the above incidental finding, I got my machine
>   with ancient UMS-userspace and a shiny latest drm-next kernel (plus
>   my CS-refactoring patches plus my yet-to-be-sent UMS fixes) to
>   work. My test consists of bringing up Gnome (it's Gnome 2 on that
>   machine), running glxgears, sphereworld (an example code from
>   OpenGL Superbible book), and OpenArena. Everything seems to work.
>
> * Going back to KMS and retesting there, things still look good.
>
> So this (with tests I did on Friday) should cover all the cases.
>
>
>> Additionally, UMS requires the old
>> non-gallium 3D drivers.  It sounds like some other change in the ddx
>> broke UMS support for r6xx/r7xx.
>
>
> The DDX segfault I reported on Friday was provoked by trying to run Gallium
> 3D driver on the top of UMS. Once I switched back to classic, the crash went
> away. So I guess the userspace crash was provoked by some obscure path that
> was never intended to be exercised. I don't think
> it's worth investigating further.

IIRC, the radeon gallium drivers call abort() if they encounter an
unsupported DRM version (that is UMS).

Marek


More information about the dri-devel mailing list