> > Are you aware of the linuxconsole project at
> > linuxconsole.sourceforge.net, looks like this kind of thing is included
> > in thier plans. Stuff is already getting merged into the 2.5 development
> > kernels.

Hmmm... OK, but this gives us only the VT's, keyboards and mice - the
video problem is the same, isn't it? That is, unless we want to use
the fbdev, losing all acceleration and support for many cards. Or am
I wrong - is there some acceleration in the framebuffer and its X
driver?

> 1) Some way for two (human and unix) users to get their own desktops,
> completely seperated for security reasons etc etc.  As ppl have pointed out,
> either with two seperate servers, or one server with security somehow bolted
> on.

That's what I want to do. OK, you all have convinced me that the multi-
user single-server is not a good idea. In that case, we face the
problem of conflicting VGA card access by multiple servers. XFree
currently expects that it is the only program accessing any video
hardware, which obviously is a mistaken assumption in the case we
want to implement. Now, I am afraid I miss a piece of technical
background here, so please, fill me in if possible, or point me to a
resource:

If I remember correctly, the original VGA has I/O ports at somewhere
around 0x3C0, and memory at 0xA0000 (or 0xB0000, or 0xB8000). Now,
with PCI/AGP VGA cards, I assumed that the address ranges are
dynamically allocated at startup just like with other PCI devices,
with some kind of a hack to support backwards compatibility.

However, this does not seem to be the case. Many modern VGA's that I
have seen have no I/O port entry in /proc/pci (some do - my ATI All In
Wonder 128 has 0xC000 - 0xC0FF). Does it mean that they use only the
backwards-compatible I/O addresses? Or do they use memory I/O
instead? (Because they do have a memory address listed in /proc/pci.)

If I guess correctly, the multiple VGA's share the backwards-
compatible I/O port range at 0x3Cx. Certainly, it seems so from the
files vgaHW.[ch]. This must mean that for any access to these ports -
initialization, mode change etc. - all other VGA's bus access must be
disabled and only the one VGA enabled. From what I have seen, it
seems that currently X disables all VGA's bus access except for the
one (or more) that it handles, and it stays that way for the lifetime
of the server, except for mode changes, VT switches etc.

Again, if I understand correctly, for multiple X servers we would
have to isolate all shared I/O port accesses and enclose them in
lock acquire/lock release. For the rest of the servers' lifetime
(when no mode change is occuring), the cards' I/O access should stay
disabled. Right?

(This all should apply to shared memory accesses too, I suppose -
except I'm not sure what would happen to a DGA application writing to
the framebuffer while memory access is disabled for that card??? Or
are applications never writing directly to the card's framebuffer?)

Now, please tell me, someone knowledgeable, if my above written
guesses and conclusions are anywhere near the truth. :-) Thanks.

In the positive case, is it even possible to isolate I/O accesses in
a driver-independent way? Where would I start? I'm willing to try to
do the hard work, but I need guidance from someone who understands
XFree internals. (Even then, it may prove to be too much for me...)

Thanks for all input. I'm glad I at least managed to stir a
discussion this time. :-)

Vaclav Dvorak   [EMAIL PROTECTED]
IDAS, s.r.o.    http://www.idas.cz
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to