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