Re: [linux-pm] [2/6] 2.6.21-rc2: known regressions

From: Jim Gettys
Date: Sun Mar 18 2007 - 13:25:34 EST


On Sun, 2007-03-18 at 17:07 +0100, Ingo Molnar wrote:
> * Pavel Machek <pavel@xxxxxx> wrote:
>
> > > Some day we may have modesetting support in the kernel for some
> > > graphics hw, right now it's pretty damn spotty.
> >
> > Yep, that's the way to go.
>
> hey, i wildly supported this approach ever since 1996, when GGI came up
> :-/
>

So wildly you wrote tons of code.... ;-).

More seriously, at the time, XFree86 would have spat in your face for
any such thing. Thankfully, times are changing.

Also more seriously, a somewhat hybrid approach is in order for mode
setting: simple mode setting isn't much code and is required for sane
behavior on crash (it is nice to get oopses onto a screen); but the full
blown mode setting/configuration problem is so large that on some
hardware, it is likely left best left to a helper process (not the X
server).

Also key to get sane behavior out of the scheduler is to get the X
server to yield (sleep in the kernel) rather than busy waiting when the
GPU is busy; a standardized interface for this for both fbdev and dri is
in order. Right now, X is a misbehaving compute bound process rather
than the properly interactive process it can/should/will be, releasing
the CPU whenever the hardware is busy. Needless to say, this wastes
cycles and hurts interactivity with just about any scheduler you can
devise. It isn't as if this is hard; on UNIX systems we did it in 1984
or thereabouts.

Of course, in 1996, XFree86 would have ignored any such interfaces, in
its insane quest for operating system independent user space drivers
requiring no standard kernel interfaces.... (it is the second part of
this where the true insanity lay).
- Jim

--
Jim Gettys
One Laptop Per Child


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/