Subject: Re: Put big hunks of the Xserver in the kernel?
To: Frank van der Linden <firstname.lastname@example.org>
From: None <Chris_G_Demetriou@NIAGARA.NECTAR.CS.CMU.EDU>
Date: 01/29/1996 18:10:47
> In a Perfect World, the kernel should take care of the actual low-level
> device-driving, not the X server. Kernel bloat might be avoided by
> having a basic VGA driver in the kernel, and loading an LKM for the
> right video card once you need to get more out of it.
What is "low-level"? drawing lines via hardware assist? setting a
You can't have a "draw a line" syscall, because performance would suck...
Every graphics driver that i'm aware of:
(1) does the minimum it has to to use the device as a tty,
(2) passes all further work on th the X server.
This is not wrong; the kernel has to be small.
What i'm most concerned about on the i386 port is the fact that some
people advocate that the X server should have few if any protection
checks done on what it's accessing.
what i'd like to see is:
(1) for PCI boards, the driver should allow access to
registers (where appropriate, and only the necessary
registers), and should allow the display memory to be
mapped via mmap.
(2) for ISA/EISA boards, the driver should allow access
to registers, where appropriate, etc., and should do
_something_ to allow display memory to be accessed.
(that 'something' could be the same as the aperture
driver, or whatever).
I don't think it's reasonable to give X access to all I/O ports, and I
don't think it's reasonable to give X access to all of memory. On the
other hand, you can't require X to do a syscall every time it needs
to draw a line...
Another consideration is that on the Alpha, 'inb' and friends behave
_much_ differently than they do on the i386, and it's not clear to me
that they can be properly implemented in user-land and look much like
they currently do. On the alpha, i think i'd be willing to pay the
hit of a syscall per inb/outb, because i don't think they happen (or
should happen) often (just for setup, etc.). Unfortunately, I'm not
familiar enough with the VGA X server code to know if my assumption is