summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lkm/ap/Makefile5
-rw-r--r--lkm/ap/ap.475
-rw-r--r--lkm/ap/aperture.c18
-rw-r--r--lkm/ap/version.c7
4 files changed, 97 insertions, 8 deletions
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 <sys/errno.h>
#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";