cvs commit: src/sys/ia64/ia64 sys_machdep.c
src/sys/ia64/include sysarch.h
Doug Rabson
dfr at nlsystems.com
Tue Oct 28 02:10:48 PST 2003
On Tue, 2003-10-28 at 09:27, Marcel Moolenaar wrote:
> On Tue, Oct 28, 2003 at 09:09:29AM +0000, Doug Rabson wrote:
> > Shouldn't there some kind of access control here? It appears as if
> > anyone at all can do inx/outx.
>
> Eventually, yes. There's a possibility that I remove these. The X
> server needs to be able to mmap uncachable memory for access to
> the hardware. This could also be used to do I/O. The only thing the
> kernel needs to export is the base of the memory mapped I/O space
> with sysctl in that case.
>
> Note that this affects the VM and PMAP interfaces :-(
Right. I seem to remember that the linux kernel makes it fairly easy to
map pages with specific access modes into user space. Possibly we could
get away with defining new VM_PROT_ flags, e.g.:
#define VM_PROT_UNCACHED 0x10
#define VM_PROT_WRITECOMBINED 0x20
Apart from that, you could either add flags to mmap(2) or define a mmap
entry point for /dev/io. Doing it via /dev/io gives you the access
control too - the X server opens /dev/io while it has elevated
permissions and then drops back to user credentials.
>
> > Also, I have a vague feeling that the
> > Linux kernel manages to support userland inx/outx without system calls -
> > if so, how do they do that?
>
> I think mmap is used for that as well.
I can't see any specific mmap flags for uncached pages but my linux
sources are quite old (2.5.66). I don't have the time to dig around in
the latest kernel and glibc sources today, unfortunately.
>
> > Possibly with modern hardware the cost of the bus transaction dwarfs the
> > cost of doing a system call so perhaps it doesn't matter.
>
> The sysarch approach is not optimal. I don't think it's very performance
> critical. Modern graphics hardware is memory mapped anyway.
Indeed. In fact the best approach for modern hardware is to use
kernel-mediated DMA transfers. This is how the 3D drivers work and its
likely to be used by the 2D drivers more and more over time.
More information about the cvs-src
mailing list