From 807ff604540676f1ff7473adff8582c37cacb287 Mon Sep 17 00:00:00 2001 From: mickey Date: Sun, 19 Jan 1997 12:29:23 +0000 Subject: [PATCH] update to the 1.6 aperture driver from 3.2 XFree86. add manual (composed from mem(4) and README) --- lkm/ap/Makefile | 5 ++-- lkm/ap/ap.4 | 75 +++++++++++++++++++++++++++++++++++++++++++++++ lkm/ap/aperture.c | 18 ++++++++++-- lkm/ap/version.c | 7 +++-- 4 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 lkm/ap/ap.4 diff --git a/lkm/ap/Makefile b/lkm/ap/Makefile index 84bed5e0f6d..6e921ea4d38 100644 --- a/lkm/ap/Makefile +++ b/lkm/ap/Makefile @@ -1,8 +1,9 @@ -# $OpenBSD: Makefile,v 1.3 1996/06/03 04:02:22 mickey Exp $ +# $OpenBSD: Makefile,v 1.4 1997/01/19 12:29:23 mickey Exp $ LKM= ap SRCS+= aperture.c lkm.c version.c -NOMAN= noman +MAN= ap.4 +MLINKS= ap.4 xf86.4 .ifmake !(install) SUBDIR= aptest diff --git a/lkm/ap/ap.4 b/lkm/ap/ap.4 new file mode 100644 index 00000000000..db3d22800f1 --- /dev/null +++ b/lkm/ap/ap.4 @@ -0,0 +1,75 @@ +.\" $OpenBSD: ap.4,v 1.1 1997/01/19 12:29:25 mickey Exp $ +.\" +.\" Copyright (c) 1991 The Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from: @(#)mem.4 5.3 (Berkeley) 5/2/91 +.\" from Id: mem.4,v 1.1.1.1 1995/10/18 08:44:29 deraadt Exp +.\" +.Dd Jan 19, 1997 +.Dt AP 4 +.Os +.Sh NAME +.Nm xf86 +.Nd XFree86 Framebuffer aperture driver +.Sh DESCRIPTION +This module was written to help work around the security feature of +the OS that prevents read/write access to /dev/mem. +.Pp +XFree86 can take advantage of having direct access to video +memory (especially with VLB and PCI cards) and even requires it for +the P9000 server. +.Pp +This driver works like the standard +.Nm /dev/mem +driver. It just allows +mapping of the VGA framebuffer even if kernel security level is > 0. +The driver only implements the +.Xr open 2 , +.Xr close 2 , +.Xr mmap 2 +calls. In +order not to defeat kernel security, only one open() at a time is +allowed and only a process with effective user id of 0 can perform +it. So while you're running XFree86, no other process will be allowed +to open +.Nm /dev/xf86 +.Sh FILES +.Bl -tag -width Pa -compact +.It Pa /dev/xf86 +.El +.Sh SEE ALSO +.Xr mem 4 , +.Xr kmem 4 +.Sh HISTORY +This work is heavily inspired from the Solaris x86 aperture driver by +Doug Anson (danson@lgc.com) and David Holland (davidh@use.com). + diff --git a/lkm/ap/aperture.c b/lkm/ap/aperture.c index 89543c1f386..89c9931f9d2 100644 --- a/lkm/ap/aperture.c +++ b/lkm/ap/aperture.c @@ -1,4 +1,4 @@ -/* $OpenBSD: aperture.c,v 1.2 1996/12/21 22:23:38 millert Exp $ */ +/* $OpenbSD$ */ /* * Copyright 1994 the XFree86 Project Inc. @@ -14,7 +14,13 @@ #include #define VGA_START 0xA0000 +#ifdef PC98 +#define VGA_END 0xFFFFF +#define HOLE16M_START 0xF00000 +#define HOLE16M_END 0xFFFFFF +#else #define VGA_END 0xBFFFF +#endif /* open counter */ static int ap_open_count = 0; @@ -25,6 +31,7 @@ static int ap_open_count = 0; int apopen(dev_t dev, int oflags, int devtype, struct proc *p) { + if (suser(p->p_ucred, &p->p_acflag) != 0) { return(EPERM); } @@ -62,8 +69,13 @@ apmmap(dev_t dev, int offset, int length) printf("apmmap: addr 0x%x\n", offset); #endif if ((minor(dev) == 0) - && ((offset >= VGA_START && offset <= VGA_END) - || (unsigned)offset > (unsigned)ctob(physmem))) { + && ((offset >= VGA_START && offset <= VGA_END ) + || (unsigned)offset > (unsigned)ctob(physmem) +#ifdef PC98 + || ((unsigned)offset >=HOLE16M_START + && (unsigned)offset <= HOLE16M_END) +#endif + )) { return i386_btop(offset); } else { return(-1); diff --git a/lkm/ap/version.c b/lkm/ap/version.c index b545be13898..ce0ea447c61 100644 --- a/lkm/ap/version.c +++ b/lkm/ap/version.c @@ -1,8 +1,9 @@ -/* $OpenBSD: version.c,v 1.1 1996/03/05 11:25:36 mickey Exp $ */ +/* $OpenbSD$ */ + /* * Loadable Kernel Module for XFree86 Aperture driver * - * Copyright (c) 1994 The XFree86 Project Inc. + * Copyright (c) 1994,1996 The XFree86 Project Inc. */ char *ap_major_version = "1"; -char *ap_minor_version = "4"; +char *ap_minor_version = "6"; -- 2.20.1