svn commit: r202102 - in user/ed/utmpx: . contrib/opie/libopie lib/libc/stdio lib/libusb share/man/man5 sys/amd64/amd64 sys/amd64/conf sys/amd64/include sys/conf sys/dev/ae sys/dev/ahci sys/dev/cfe...

Ed Schouten ed at FreeBSD.org
Mon Jan 11 18:48:46 UTC 2010


Author: ed
Date: Mon Jan 11 18:48:45 2010
New Revision: 202102
URL: http://svn.freebsd.org/changeset/base/202102

Log:
  Merge HEAD to remove conflicts.
  
  This should be the final merge before importing it into HEAD.

Added:
  user/ed/utmpx/sys/dev/cfe/cfe_env.c
     - copied unchanged from r202100, head/sys/dev/cfe/cfe_env.c
  user/ed/utmpx/sys/dev/siba/siba_cc.c
     - copied unchanged from r202100, head/sys/dev/siba/siba_cc.c
  user/ed/utmpx/sys/ia64/ia64/iodev_machdep.c
     - copied unchanged from r202100, head/sys/ia64/ia64/iodev_machdep.c
  user/ed/utmpx/sys/ia64/include/iodev.h
     - copied unchanged from r202100, head/sys/ia64/include/iodev.h
     - copied from r202100, head/sys/mips/alchemy/
  user/ed/utmpx/sys/mips/conf/ALCHEMY
     - copied unchanged from r202100, head/sys/mips/conf/ALCHEMY
  user/ed/utmpx/sys/mips/include/cdefs.h
     - copied unchanged from r202100, head/sys/mips/include/cdefs.h
  user/ed/utmpx/sys/mips/include/fls64.h
     - copied unchanged from r202100, head/sys/mips/include/fls64.h
  user/ed/utmpx/sys/mips/mips/bus_space_generic.c
     - copied unchanged from r202100, head/sys/mips/mips/bus_space_generic.c
  user/ed/utmpx/sys/mips/mips/elf_trampoline.c
     - copied unchanged from r202100, head/sys/mips/mips/elf_trampoline.c
  user/ed/utmpx/sys/mips/mips/inckern.S
     - copied unchanged from r202100, head/sys/mips/mips/inckern.S
  user/ed/utmpx/sys/mips/mips/sys_machdep.c
     - copied unchanged from r202100, head/sys/mips/mips/sys_machdep.c
  user/ed/utmpx/sys/modules/epic/
     - copied from r202100, head/sys/modules/epic/
  user/ed/utmpx/sys/sparc64/ebus/epic.c
     - copied unchanged from r202100, head/sys/sparc64/ebus/epic.c
Directory Properties:
  user/ed/utmpx/sys/mips/alchemy/   (props changed)
Deleted:
  user/ed/utmpx/sys/mips/include/bus_octeon.h
  user/ed/utmpx/sys/mips/include/intr.h
  user/ed/utmpx/sys/mips/include/pltfm.h
Modified:
  user/ed/utmpx/Makefile
  user/ed/utmpx/contrib/opie/libopie/login.c
  user/ed/utmpx/lib/libc/stdio/fread.c
  user/ed/utmpx/lib/libc/stdio/fwrite.c
  user/ed/utmpx/lib/libusb/libusb20.c
  user/ed/utmpx/share/man/man5/devfs.rules.5
  user/ed/utmpx/sys/amd64/amd64/io.c
  user/ed/utmpx/sys/amd64/amd64/mp_machdep.c
  user/ed/utmpx/sys/amd64/amd64/pmap.c
  user/ed/utmpx/sys/amd64/conf/GENERIC
  user/ed/utmpx/sys/amd64/include/iodev.h
  user/ed/utmpx/sys/conf/files.ia64
  user/ed/utmpx/sys/conf/files.sparc64
  user/ed/utmpx/sys/dev/ae/if_ae.c
  user/ed/utmpx/sys/dev/ahci/ahci.c
  user/ed/utmpx/sys/dev/cfe/cfe_api.c
  user/ed/utmpx/sys/dev/ic/ns16550.h
  user/ed/utmpx/sys/dev/io/iodev.c
  user/ed/utmpx/sys/dev/usb/serial/u3g.c
  user/ed/utmpx/sys/dev/usb/usbdevs
  user/ed/utmpx/sys/i386/conf/GENERIC
  user/ed/utmpx/sys/i386/i386/io.c
  user/ed/utmpx/sys/i386/i386/locore.s
  user/ed/utmpx/sys/i386/i386/pmap.c
  user/ed/utmpx/sys/i386/include/iodev.h
  user/ed/utmpx/sys/i386/xen/mp_machdep.c
  user/ed/utmpx/sys/i386/xen/xen_machdep.c
  user/ed/utmpx/sys/ia64/conf/DEFAULTS
  user/ed/utmpx/sys/ia64/conf/GENERIC
  user/ed/utmpx/sys/ia64/ia64/sys_machdep.c
  user/ed/utmpx/sys/ia64/include/sysarch.h
  user/ed/utmpx/sys/kern/kern_environment.c
  user/ed/utmpx/sys/mips/adm5120/adm5120_machdep.c
  user/ed/utmpx/sys/mips/adm5120/files.adm5120
  user/ed/utmpx/sys/mips/adm5120/if_admsw.c
  user/ed/utmpx/sys/mips/adm5120/obio.c
  user/ed/utmpx/sys/mips/adm5120/uart_cpu_adm5120.c
  user/ed/utmpx/sys/mips/cavium/dev/rgmii/octeon_fau.c
  user/ed/utmpx/sys/mips/cavium/dev/rgmii/octeon_fpa.c
  user/ed/utmpx/sys/mips/cavium/dev/rgmii/octeon_ipd.c
  user/ed/utmpx/sys/mips/cavium/dev/rgmii/octeon_pko.c
  user/ed/utmpx/sys/mips/cavium/dev/rgmii/octeon_rgmx.c
  user/ed/utmpx/sys/mips/cavium/files.octeon1   (contents, props changed)
  user/ed/utmpx/sys/mips/cavium/obio.c
  user/ed/utmpx/sys/mips/cavium/octeon_ebt3000_cf.c
  user/ed/utmpx/sys/mips/cavium/octeon_machdep.c
  user/ed/utmpx/sys/mips/cavium/std.octeon1   (contents, props changed)
  user/ed/utmpx/sys/mips/cavium/uart_bus_octeonusart.c
  user/ed/utmpx/sys/mips/cavium/uart_cpu_octeonusart.c
  user/ed/utmpx/sys/mips/cavium/uart_dev_oct16550.c
  user/ed/utmpx/sys/mips/conf/MALTA
  user/ed/utmpx/sys/mips/conf/OCTEON1   (contents, props changed)
  user/ed/utmpx/sys/mips/conf/OCTEON1-32   (contents, props changed)
  user/ed/utmpx/sys/mips/conf/SENTRY5
  user/ed/utmpx/sys/mips/idt/files.idt
  user/ed/utmpx/sys/mips/idt/idt_machdep.c
  user/ed/utmpx/sys/mips/idt/obio.c
  user/ed/utmpx/sys/mips/idt/uart_bus_rc32434.c
  user/ed/utmpx/sys/mips/idt/uart_cpu_rc32434.c
  user/ed/utmpx/sys/mips/include/_align.h
  user/ed/utmpx/sys/mips/include/_bus.h
  user/ed/utmpx/sys/mips/include/_types.h
  user/ed/utmpx/sys/mips/include/asm.h
  user/ed/utmpx/sys/mips/include/atomic.h
  user/ed/utmpx/sys/mips/include/bus.h
  user/ed/utmpx/sys/mips/include/cache.h
  user/ed/utmpx/sys/mips/include/cache_mipsNN.h
  user/ed/utmpx/sys/mips/include/cpu.h
  user/ed/utmpx/sys/mips/include/cpufunc.h
  user/ed/utmpx/sys/mips/include/cpuinfo.h
  user/ed/utmpx/sys/mips/include/cpuregs.h
  user/ed/utmpx/sys/mips/include/db_machdep.h
  user/ed/utmpx/sys/mips/include/elf.h
  user/ed/utmpx/sys/mips/include/endian.h
  user/ed/utmpx/sys/mips/include/float.h
  user/ed/utmpx/sys/mips/include/hwfunc.h
  user/ed/utmpx/sys/mips/include/intr_machdep.h
  user/ed/utmpx/sys/mips/include/kdb.h
  user/ed/utmpx/sys/mips/include/locore.h
  user/ed/utmpx/sys/mips/include/md_var.h
  user/ed/utmpx/sys/mips/include/param.h
  user/ed/utmpx/sys/mips/include/pcb.h
  user/ed/utmpx/sys/mips/include/pmap.h
  user/ed/utmpx/sys/mips/include/proc.h
  user/ed/utmpx/sys/mips/include/profile.h
  user/ed/utmpx/sys/mips/include/psl.h
  user/ed/utmpx/sys/mips/include/pte.h
  user/ed/utmpx/sys/mips/include/regdef.h
  user/ed/utmpx/sys/mips/include/regnum.h
  user/ed/utmpx/sys/mips/include/trap.h
  user/ed/utmpx/sys/mips/include/ucontext.h
  user/ed/utmpx/sys/mips/malta/files.malta
  user/ed/utmpx/sys/mips/malta/gt_pci.c
  user/ed/utmpx/sys/mips/malta/malta_machdep.c
  user/ed/utmpx/sys/mips/malta/maltareg.h
  user/ed/utmpx/sys/mips/malta/obio.c
  user/ed/utmpx/sys/mips/malta/std.malta
  user/ed/utmpx/sys/mips/malta/uart_bus_maltausart.c
  user/ed/utmpx/sys/mips/malta/uart_cpu_maltausart.c
  user/ed/utmpx/sys/mips/malta/yamon.h
  user/ed/utmpx/sys/mips/mips/busdma_machdep.c
  user/ed/utmpx/sys/mips/mips/cache.c
  user/ed/utmpx/sys/mips/mips/cache_mipsNN.c
  user/ed/utmpx/sys/mips/mips/copystr.S
  user/ed/utmpx/sys/mips/mips/cpu.c
  user/ed/utmpx/sys/mips/mips/db_trace.c
  user/ed/utmpx/sys/mips/mips/elf_machdep.c
  user/ed/utmpx/sys/mips/mips/exception.S
  user/ed/utmpx/sys/mips/mips/fp.S
  user/ed/utmpx/sys/mips/mips/gdb_machdep.c
  user/ed/utmpx/sys/mips/mips/genassym.c
  user/ed/utmpx/sys/mips/mips/in_cksum.c
  user/ed/utmpx/sys/mips/mips/intr_machdep.c
  user/ed/utmpx/sys/mips/mips/locore.S
  user/ed/utmpx/sys/mips/mips/machdep.c
  user/ed/utmpx/sys/mips/mips/mainbus.c
  user/ed/utmpx/sys/mips/mips/mem.c
  user/ed/utmpx/sys/mips/mips/nexus.c
  user/ed/utmpx/sys/mips/mips/pm_machdep.c
  user/ed/utmpx/sys/mips/mips/pmap.c
  user/ed/utmpx/sys/mips/mips/psraccess.S
  user/ed/utmpx/sys/mips/mips/support.S
  user/ed/utmpx/sys/mips/mips/swtch.S
  user/ed/utmpx/sys/mips/mips/tick.c
  user/ed/utmpx/sys/mips/mips/tlb.S
  user/ed/utmpx/sys/mips/mips/trap.c
  user/ed/utmpx/sys/mips/mips/vm_machdep.c
  user/ed/utmpx/sys/mips/rmi/dev/sec/rmilib.c   (contents, props changed)
  user/ed/utmpx/sys/mips/rmi/dev/sec/rmilib.h   (contents, props changed)
  user/ed/utmpx/sys/mips/rmi/dev/sec/rmisec.c   (contents, props changed)
  user/ed/utmpx/sys/mips/rmi/dev/xlr/rge.c   (contents, props changed)
  user/ed/utmpx/sys/mips/rmi/files.xlr   (contents, props changed)
  user/ed/utmpx/sys/mips/rmi/iodi.c   (contents, props changed)
  user/ed/utmpx/sys/mips/sentry5/files.sentry5
  user/ed/utmpx/sys/mips/sentry5/obio.c
  user/ed/utmpx/sys/mips/sentry5/s5_machdep.c
  user/ed/utmpx/sys/mips/sentry5/uart_bus_sbusart.c
  user/ed/utmpx/sys/mips/sentry5/uart_cpu_sbusart.c
  user/ed/utmpx/sys/mips/sibyte/sb_zbbus.c
  user/ed/utmpx/sys/mips/sibyte/sb_zbpci.c
  user/ed/utmpx/sys/modules/Makefile
  user/ed/utmpx/sys/pc98/conf/GENERIC
  user/ed/utmpx/sys/powerpc/conf/GENERIC
  user/ed/utmpx/sys/sparc64/conf/GENERIC
  user/ed/utmpx/sys/sparc64/pci/fire.c
  user/ed/utmpx/sys/sun4v/conf/GENERIC
  user/ed/utmpx/sys/sys/systm.h
  user/ed/utmpx/usr.bin/lastcomm/lastcomm.c
  user/ed/utmpx/usr.bin/make/job.c
  user/ed/utmpx/usr.bin/netstat/if.c
  user/ed/utmpx/usr.bin/netstat/main.c
  user/ed/utmpx/usr.bin/netstat/netstat.1
  user/ed/utmpx/usr.bin/netstat/netstat.h
  user/ed/utmpx/usr.sbin/usbconfig/usbconfig.c
Directory Properties:
  user/ed/utmpx/   (props changed)
  user/ed/utmpx/contrib/one-true-awk/   (props changed)
  user/ed/utmpx/sys/conf/ldscript.mips.mips64   (props changed)
  user/ed/utmpx/sys/conf/ldscript.mips.octeon1.32   (props changed)
  user/ed/utmpx/sys/conf/ldscript.mips.octeon1.64   (props changed)
  user/ed/utmpx/sys/conf/ldscript.mips.octeon1.n32   (props changed)
  user/ed/utmpx/sys/dev/flash/mx25l.c   (props changed)
  user/ed/utmpx/sys/dev/flash/mx25lreg.h   (props changed)
  user/ed/utmpx/sys/dev/siba/siba/   (props changed)
  user/ed/utmpx/sys/mips/atheros/   (props changed)
  user/ed/utmpx/sys/mips/cavium/   (props changed)
  user/ed/utmpx/sys/mips/conf/AR71XX   (props changed)
  user/ed/utmpx/sys/mips/conf/AR71XX.hints   (props changed)
  user/ed/utmpx/sys/mips/conf/MALTA64   (props changed)
  user/ed/utmpx/sys/mips/conf/OCTEON1.hints   (props changed)
  user/ed/utmpx/sys/mips/conf/SWARM   (props changed)
  user/ed/utmpx/sys/mips/conf/SWARM.hints   (props changed)
  user/ed/utmpx/sys/mips/conf/XLR   (props changed)
  user/ed/utmpx/sys/mips/mips/ptrace_machdep.c   (props changed)
  user/ed/utmpx/sys/mips/rmi/   (props changed)
  user/ed/utmpx/sys/mips/rmi/Makefile.msgring   (props changed)
  user/ed/utmpx/sys/mips/rmi/board.c   (props changed)
  user/ed/utmpx/sys/mips/rmi/board.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/bus_space_rmi.c   (props changed)
  user/ed/utmpx/sys/mips/rmi/clock.c   (props changed)
  user/ed/utmpx/sys/mips/rmi/clock.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/debug.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/sec/desc.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/sec/stats.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/xlr/atx_cpld.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/xlr/rge.h   (props changed)
  user/ed/utmpx/sys/mips/rmi/dev/xlr/xgmac_mdio.h   (props changed)
  user/ed/utmpx/sys/mips/sibyte/   (props changed)

Modified: user/ed/utmpx/Makefile
==============================================================================
--- user/ed/utmpx/Makefile	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/Makefile	Mon Jan 11 18:48:45 2010	(r202102)
@@ -321,8 +321,9 @@ universe_${target}:
 	@echo ">> ${target} completed on `LC_ALL=C date`"
 .endfor
 universe_kernels: universe_kernconfs
-XMACHINE!=	uname -m
-TARGET?=	${XMACHINE}
+.if !defined(TARGET)
+TARGET!=	uname -m
+.endif
 KERNCONFS!=	cd ${.CURDIR}/sys/${TARGET}/conf && \
 		find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \
 		! -name DEFAULTS ! -name NOTES

Modified: user/ed/utmpx/contrib/opie/libopie/login.c
==============================================================================
--- user/ed/utmpx/contrib/opie/libopie/login.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/contrib/opie/libopie/login.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -21,13 +21,14 @@ you didn't get a copy, you may request o
 #include "opie_cfg.h"
 #include <stdio.h>
 #include <sys/types.h>
-#include <utmp.h>
 
 #if DOUTMPX
 #include <utmpx.h>
 #define pututline(x) pututxline(x)
 #define endutent endutxent
 #define utmp utmpx
+#else
+#include <utmp.h>
 #endif /* DOUTMPX */
 
 #if HAVE_STRING_H

Modified: user/ed/utmpx/lib/libc/stdio/fread.c
==============================================================================
--- user/ed/utmpx/lib/libc/stdio/fread.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/lib/libc/stdio/fread.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -37,6 +37,8 @@ static char sccsid[] = "@(#)fread.c	8.2 
 __FBSDID("$FreeBSD$");
 
 #include "namespace.h"
+#include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include "un-namespace.h"
@@ -69,8 +71,27 @@ __fread(void * __restrict buf, size_t si
 	/*
 	 * ANSI and SUSv2 require a return value of 0 if size or count are 0.
 	 */
-	if ((resid = count * size) == 0)
+	if ((count == 0) || (size == 0))
 		return (0);
+
+	/*
+	 * Check for integer overflow.  As an optimization, first check that
+	 * at least one of {count, size} is at least 2^16, since if both
+	 * values are less than that, their product can't possible overflow
+	 * (size_t is always at least 32 bits on FreeBSD).
+	 */
+	if (((count | size) > 0xFFFF) &&
+	    (count > SIZE_MAX / size)) {
+		errno = EINVAL;
+		fp->_flags |= __SERR;
+		return (0);
+	}
+
+	/*
+	 * Compute the (now required to not overflow) number of bytes to
+	 * read and actually do the work.
+	 */
+	resid = count * size;
 	ORIENT(fp, -1);
 	if (fp->_r < 0)
 		fp->_r = 0;

Modified: user/ed/utmpx/lib/libc/stdio/fwrite.c
==============================================================================
--- user/ed/utmpx/lib/libc/stdio/fwrite.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/lib/libc/stdio/fwrite.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -37,6 +37,8 @@ static char sccsid[] = "@(#)fwrite.c	8.1
 __FBSDID("$FreeBSD$");
 
 #include "namespace.h"
+#include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include "un-namespace.h"
 #include "local.h"
@@ -60,10 +62,24 @@ fwrite(buf, size, count, fp)
 	/*
 	 * ANSI and SUSv2 require a return value of 0 if size or count are 0.
 	 */
-	n = count * size;
-	if (n == 0)
+	if ((count == 0) || (size == 0))
 		return (0);
 
+	/*
+	 * Check for integer overflow.  As an optimization, first check that
+	 * at least one of {count, size} is at least 2^16, since if both
+	 * values are less than that, their product can't possible overflow
+	 * (size_t is always at least 32 bits on FreeBSD).
+	 */
+	if (((count | size) > 0xFFFF) &&
+	    (count > SIZE_MAX / size)) {
+		errno = EINVAL;
+		fp->_flags |= __SERR;
+		return (0);
+	}
+
+	n = count * size;
+
 	iov.iov_base = (void *)buf;
 	uio.uio_resid = iov.iov_len = n;
 	uio.uio_iov = &iov;

Modified: user/ed/utmpx/lib/libusb/libusb20.c
==============================================================================
--- user/ed/utmpx/lib/libusb/libusb20.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/lib/libusb/libusb20.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -130,8 +130,19 @@ libusb20_tr_close(struct libusb20_transf
 	if (xfer->ppBuffer) {
 		free(xfer->ppBuffer);
 	}
-	/* clear some fields */
+	/* reset variable fields in case the transfer is opened again */
+	xfer->priv_sc0 = 0;
+	xfer->priv_sc1 = 0;
 	xfer->is_opened = 0;
+	xfer->is_pending = 0;
+	xfer->is_cancel = 0;
+	xfer->is_draining = 0;
+	xfer->is_restart = 0;
+	xfer->status = 0;
+	xfer->flags = 0;
+	xfer->nFrames = 0;
+	xfer->aFrames = 0;
+	xfer->timeout = 0;
 	xfer->maxFrames = 0;
 	xfer->maxTotalLength = 0;
 	xfer->maxPacketLen = 0;

Modified: user/ed/utmpx/share/man/man5/devfs.rules.5
==============================================================================
--- user/ed/utmpx/share/man/man5/devfs.rules.5	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/share/man/man5/devfs.rules.5	Mon Jan 11 18:48:45 2010	(r202102)
@@ -100,13 +100,15 @@ The first line declares and starts a new
 .Va localrules
 and the number 10.
 .Pp
-To make all the
-.Xr ulpt 4
-devices accessible to their owner and the
+To give
+.Xr usbconfig 8
+and
+.Xr libusb 3
+enabled applications permission to all usb devices for their owner and the
 .Dq Li usb
 group, a similar rule may be used:
 .Pp
-.Dl "add path 'ulpt*' mode 0660 group usb"
+.Dl "add path 'usb/*' mode 0660 group usb"
 .Sh SEE ALSO
 .Xr glob 3 ,
 .Xr devfs 5 ,

Modified: user/ed/utmpx/sys/amd64/amd64/io.c
==============================================================================
--- user/ed/utmpx/sys/amd64/amd64/io.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/amd64/amd64/io.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -76,3 +76,12 @@ ioclose(struct cdev *dev __unused, int f
 
 	return (0);
 }
+
+/* ARGSUSED */
+int
+ioioctl(struct cdev *dev __unused, u_long cmd __unused, caddr_t data __unused,
+    int fflag __unused, struct thread *td __unused)
+{
+
+	return (ENXIO);
+}

Modified: user/ed/utmpx/sys/amd64/amd64/mp_machdep.c
==============================================================================
--- user/ed/utmpx/sys/amd64/amd64/mp_machdep.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/amd64/amd64/mp_machdep.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -98,12 +98,6 @@ char *doublefault_stack;
 char *nmi_stack;
 void *dpcpu;
 
-/* Hotwire a 0->4MB V==P mapping */
-extern pt_entry_t *KPTphys;
-
-/* SMP page table page */
-extern pt_entry_t *SMPpt;
-
 struct pcb stoppcbs[MAXCPU];
 struct xpcb **stopxpcbs = NULL;
 

Modified: user/ed/utmpx/sys/amd64/amd64/pmap.c
==============================================================================
--- user/ed/utmpx/sys/amd64/amd64/pmap.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/amd64/amd64/pmap.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -664,7 +664,6 @@ pmap_page_init(vm_page_t m)
 void
 pmap_init(void)
 {
-	pd_entry_t *pd;
 	vm_page_t mpte;
 	vm_size_t s;
 	int i, pv_npg;
@@ -673,18 +672,13 @@ pmap_init(void)
 	 * Initialize the vm page array entries for the kernel pmap's
 	 * page table pages.
 	 */ 
-	pd = pmap_pde(kernel_pmap, KERNBASE);
 	for (i = 0; i < NKPT; i++) {
-		if ((pd[i] & (PG_PS | PG_V)) == (PG_PS | PG_V))
-			continue;
-		KASSERT((pd[i] & PG_V) != 0,
-		    ("pmap_init: page table page is missing"));
-		mpte = PHYS_TO_VM_PAGE(pd[i] & PG_FRAME);
+		mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT));
 		KASSERT(mpte >= vm_page_array &&
 		    mpte < &vm_page_array[vm_page_array_size],
 		    ("pmap_init: page table page is out of range"));
 		mpte->pindex = pmap_pde_pindex(KERNBASE) + i;
-		mpte->phys_addr = pd[i] & PG_FRAME;
+		mpte->phys_addr = KPTphys + (i << PAGE_SHIFT);
 	}
 
 	/*

Modified: user/ed/utmpx/sys/amd64/conf/GENERIC
==============================================================================
--- user/ed/utmpx/sys/amd64/conf/GENERIC	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/amd64/conf/GENERIC	Mon Jan 11 18:48:45 2010	(r202102)
@@ -75,6 +75,7 @@ options 	MAC			# TrustedBSD MAC Framewor
 options		FLOWTABLE		# per-cpu routing cache
 #options 	KDTRACE_FRAME		# Ensure frames are compiled in
 #options 	KDTRACE_HOOKS		# Kernel DTrace hooks
+options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
 
 # Debugging for use in -current
 options 	KDB			# Enable kernel debugger support.

Modified: user/ed/utmpx/sys/amd64/include/iodev.h
==============================================================================
--- user/ed/utmpx/sys/amd64/include/iodev.h	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/amd64/include/iodev.h	Mon Jan 11 18:48:45 2010	(r202102)
@@ -28,3 +28,4 @@
 
 d_open_t	ioopen;
 d_close_t	ioclose;
+d_ioctl_t	ioioctl;

Modified: user/ed/utmpx/sys/conf/files.ia64
==============================================================================
--- user/ed/utmpx/sys/conf/files.ia64	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/conf/files.ia64	Mon Jan 11 18:48:45 2010	(r202102)
@@ -54,6 +54,7 @@ dev/atkbdc/psm.c		optional	psm atkbdc
 dev/fb/fb.c			optional	fb | vga
 dev/fb/vga.c			optional	vga
 dev/hwpmc/hwpmc_ia64.c		optional	hwpmc
+dev/io/iodev.c			optional	io
 dev/kbd/kbd.c			optional	atkbd | sc | ukbd | usb2_input_kbd
 dev/syscons/scterm-teken.c	optional	sc
 dev/syscons/scvgarndr.c		optional	sc vga
@@ -86,6 +87,7 @@ ia64/ia64/gdb_machdep.c		optional	gdb
 ia64/ia64/highfp.c		standard
 ia64/ia64/in_cksum.c		optional	inet
 ia64/ia64/interrupt.c		standard
+ia64/ia64/iodev_machdep.c	optional	io
 ia64/ia64/locore.S		standard	no-obj
 ia64/ia64/machdep.c		standard
 ia64/ia64/mca.c			standard

Modified: user/ed/utmpx/sys/conf/files.sparc64
==============================================================================
--- user/ed/utmpx/sys/conf/files.sparc64	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/conf/files.sparc64	Mon Jan 11 18:48:45 2010	(r202102)
@@ -67,12 +67,14 @@ libkern/flsl.c			standard
 libkern/memmove.c		standard
 sparc64/central/central.c	optional	central
 sparc64/ebus/ebus.c		optional	ebus
+sparc64/ebus/epic.c		optional	epic ebus
 sparc64/fhc/clkbrd.c		optional	fhc
 sparc64/fhc/fhc.c		optional	fhc
 sparc64/isa/isa.c		optional	isa
 sparc64/isa/isa_dma.c		optional	isa
 sparc64/isa/ofw_isa.c		optional	ebus | isa
 sparc64/pci/apb.c		optional	pci
+sparc64/pci/fire.c		optional	pci
 sparc64/pci/ofw_pcib.c		optional	pci
 sparc64/pci/ofw_pcib_subr.c	optional	pci
 sparc64/pci/ofw_pcibus.c	optional	pci

Modified: user/ed/utmpx/sys/dev/ae/if_ae.c
==============================================================================
--- user/ed/utmpx/sys/dev/ae/if_ae.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/ae/if_ae.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -367,6 +367,7 @@ ae_attach(device_t dev)
 	if (ifp == NULL) {
 		device_printf(dev, "could not allocate ifnet structure.\n");
 		error = ENXIO;
+		goto fail;
 	}
 
 	ifp->if_softc = sc;

Modified: user/ed/utmpx/sys/dev/ahci/ahci.c
==============================================================================
--- user/ed/utmpx/sys/dev/ahci/ahci.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/ahci/ahci.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -570,6 +570,12 @@ ahci_setup_interrupt(device_t dev)
 			device_printf(dev, "unable to setup interrupt\n");
 			return ENXIO;
 		}
+		if (ctlr->numirqs > 1) {
+			bus_describe_intr(dev, ctlr->irqs[i].r_irq,
+			    ctlr->irqs[i].handle,
+			    ctlr->irqs[i].mode == AHCI_IRQ_MODE_ONE ?
+			    "ch%d" : "%d", i);
+		}
 	}
 	return (0);
 }
@@ -622,8 +628,14 @@ ahci_intr_one(void *data)
 	int unit;
 
 	unit = irq->r_irq_rid - 1;
+	/* Some controllers have edge triggered IS. */
+	if (ctlr->quirks & AHCI_Q_EDGEIS)
+		ATA_OUTL(ctlr->r_mem, AHCI_IS, 1 << unit);
 	if ((arg = ctlr->interrupt[unit].argument))
 	    ctlr->interrupt[unit].function(arg);
+	/* AHCI declares level triggered IS. */
+	if (!(ctlr->quirks & AHCI_Q_EDGEIS))
+		ATA_OUTL(ctlr->r_mem, AHCI_IS, 1 << unit);
 }
 
 static struct resource *

Modified: user/ed/utmpx/sys/dev/cfe/cfe_api.c
==============================================================================
--- user/ed/utmpx/sys/dev/cfe/cfe_api.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/cfe/cfe_api.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -160,7 +160,7 @@ cfe_enumenv(int idx, char *name, int nam
 {
     cfe_xiocb_t xiocb;
 
-    xiocb.xiocb_fcode = CFE_CMD_ENV_SET;
+    xiocb.xiocb_fcode = CFE_CMD_ENV_ENUM;
     xiocb.xiocb_status = 0;
     xiocb.xiocb_handle = 0;
     xiocb.xiocb_flags = 0;

Copied: user/ed/utmpx/sys/dev/cfe/cfe_env.c (from r202100, head/sys/dev/cfe/cfe_env.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/utmpx/sys/dev/cfe/cfe_env.c	Mon Jan 11 18:48:45 2010	(r202102, copy of r202100, head/sys/dev/cfe/cfe_env.c)
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2009 Neelkanth Natu
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+
+#include <dev/cfe/cfe_api.h>
+
+__FBSDID("$FreeBSD$");
+
+#ifndef	CFE_ENV_SIZE
+#define	CFE_ENV_SIZE	PAGE_SIZE	/* default is one page */
+#endif
+
+extern void cfe_env_init(void);
+
+static char cfe_env_buf[CFE_ENV_SIZE];
+
+void
+cfe_env_init(void)
+{
+	int idx, len;
+	char name[64], val[128], *cp, *cplim;
+
+	cp = cfe_env_buf;
+	cplim = cp + CFE_ENV_SIZE;
+
+	idx = 0;
+	while (1) {
+		if (cfe_enumenv(idx, name, sizeof(name), val, sizeof(val)) != 0)
+			break;
+
+		if (bootverbose)
+			printf("Importing CFE env: \"%s=%s\"\n", name, val);
+
+		/*
+		 * name=val\0\0
+		 */
+		len = strlen(name) + 1 + strlen(val) + 1 + 1;
+		if (cplim - cp < len)
+			printf("No space to store CFE env: \"%s=%s\"\n",
+				name, val);
+		else
+			cp += sprintf(cp, "%s=%s", name, val) + 1;
+		++idx;
+	}
+	*cp++ = '\0';
+
+	kern_envp = cfe_env_buf;
+}

Modified: user/ed/utmpx/sys/dev/ic/ns16550.h
==============================================================================
--- user/ed/utmpx/sys/dev/ic/ns16550.h	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/ic/ns16550.h	Mon Jan 11 18:48:45 2010	(r202102)
@@ -52,6 +52,7 @@
 #define	REG_IIR		com_iir
 #define	IIR_IMASK	0xf
 #define	IIR_RXTOUT	0xc
+#define	IIR_BUSY	0x7
 #define	IIR_RLS		0x6
 #define	IIR_RXRDY	0x4
 #define	IIR_TXRDY	0x2
@@ -181,6 +182,10 @@
 #define	com_xoff1	6	/* XOFF 1 character (R/W) */
 #define	com_xoff2	7	/* XOFF 2 character (R/W) */
 
+#define com_usr		39	/* Octeon 16750/16550 Uart Status Reg */
+#define REG_USR		com_usr
+#define USR_TXFIFO_NOTFULL 2    /* Uart TX FIFO Not full */
+
 /* 16950 register #1.  Access enabled by ACR[7].  Also requires !LCR[7]. */
 #define	com_asr		1	/* additional status register (R[0-7]/W[0-1]) */
 

Modified: user/ed/utmpx/sys/dev/io/iodev.c
==============================================================================
--- user/ed/utmpx/sys/dev/io/iodev.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/io/iodev.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -41,8 +41,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/uio.h>
 
-#include <machine/specialreg.h>
-
 #include <vm/vm.h>
 #include <vm/pmap.h>
 
@@ -54,6 +52,7 @@ static struct cdevsw io_cdevsw = {
 	.d_version =	D_VERSION,
 	.d_open =	ioopen,
 	.d_close =	ioclose,
+	.d_ioctl =	ioioctl,
 	.d_name =	"io",
 };
 

Copied: user/ed/utmpx/sys/dev/siba/siba_cc.c (from r202100, head/sys/dev/siba/siba_cc.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/utmpx/sys/dev/siba/siba_cc.c	Mon Jan 11 18:48:45 2010	(r202102, copy of r202100, head/sys/dev/siba/siba_cc.c)
@@ -0,0 +1,154 @@
+/*-
+ * Copyright (c) 2007 Bruce M. Simpson.
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+/*
+ * Child driver for ChipCommon core.
+ * This is not MI code at the moment.
+ * Two 16C550 compatible UARTs live here. On the WGT634U, uart1 is the
+ * system console, and uart0 is not pinned out.
+ *  Because their presence is conditional, they should probably
+ *  be attached from here.
+ * GPIO lives here.
+ * The hardware watchdog lives here.
+ * Clock control registers live here.
+ *  You don't need to read them to determine the clock speed on the 5365,
+ *  which is always 200MHz and thus may be hardcoded (for now).
+ * Flash config registers live here. There may or may not be system flash.
+ * The external interface bus lives here (conditionally).
+ * There is a JTAG interface here which may be used to attach probes to
+ * the SoC for debugging.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/rman.h>
+#include <sys/malloc.h>
+
+#include <machine/bus.h>
+
+#include <dev/siba/sibavar.h>
+#include <dev/siba/sibareg.h>
+#include <dev/siba/siba_ids.h>
+
+static int	siba_cc_attach(device_t);
+static int	siba_cc_probe(device_t);
+static void	siba_cc_intr(void *v);
+
+static int
+siba_cc_probe(device_t dev)
+{
+
+	if (siba_get_vendor(dev) == SIBA_VID_BROADCOM &&
+	    siba_get_device(dev) == SIBA_DEVID_CHIPCOMMON) {
+		device_set_desc(dev, "ChipCommon core");
+		return (BUS_PROBE_DEFAULT);
+	}
+
+	return (ENXIO);
+}
+
+struct siba_cc_softc {
+	void *notused;
+};
+
+static int
+siba_cc_attach(device_t dev)
+{
+	//struct siba_cc_softc *sc = device_get_softc(dev);
+	struct resource *mem;
+	struct resource *irq;
+	int rid;
+
+	/*
+	 * Allocate the resources which the parent bus has already
+	 * determined for us.
+	 * TODO: interrupt routing
+	 */
+#define MIPS_MEM_RID 0x20
+	rid = MIPS_MEM_RID;
+	mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+	if (mem == NULL) {
+		device_printf(dev, "unable to allocate memory\n");
+		return (ENXIO);
+	}
+
+	rid = 0;
+	irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, 0);
+	if (irq == NULL) {
+		device_printf(dev, "unable to allocate irq\n");
+		return (ENXIO);
+	}
+
+	/* now setup the interrupt */
+	/* may be fast, exclusive or mpsafe at a later date */
+
+	/*
+	 * XXX is this interrupt line in ChipCommon used for anything
+	 * other than the uart? in that case we shouldn't hog it ourselves
+	 * and let uart claim it to avoid polled mode.
+	 */
+	int err;
+	void *cookie;
+	err = bus_setup_intr(dev, irq, INTR_TYPE_TTY, NULL, siba_cc_intr, NULL,
+	    &cookie);
+	if (err != 0) {
+		device_printf(dev, "unable to setup intr\n");
+		return (ENXIO);
+	}
+
+	/* TODO: attach uart child */
+
+	return (0);
+}
+
+static void
+siba_cc_intr(void *v)
+{
+
+}
+
+static device_method_t siba_cc_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_attach,	siba_cc_attach),
+	DEVMETHOD(device_probe,		siba_cc_probe),
+
+	{0, 0},
+};
+
+static driver_t siba_cc_driver = {
+	"siba_cc",
+	siba_cc_methods,
+	sizeof(struct siba_softc),
+};
+static devclass_t siba_cc_devclass;
+
+DRIVER_MODULE(siba_cc, siba, siba_cc_driver, siba_cc_devclass, 0, 0);

Modified: user/ed/utmpx/sys/dev/usb/serial/u3g.c
==============================================================================
--- user/ed/utmpx/sys/dev/usb/serial/u3g.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/usb/serial/u3g.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -316,6 +316,7 @@ static const struct usb_device_id u3g_de
 	U3G_DEV(OPTION, E7041, 0),
 	U3G_DEV(OPTION, E7061, 0),
 	U3G_DEV(OPTION, E7100, 0),
+	U3G_DEV(OPTION, GE40X, 0),
 	U3G_DEV(OPTION, GT3G, 0),
 	U3G_DEV(OPTION, GT3GPLUS, 0),
 	U3G_DEV(OPTION, GT3GQUAD, 0),

Modified: user/ed/utmpx/sys/dev/usb/usbdevs
==============================================================================
--- user/ed/utmpx/sys/dev/usb/usbdevs	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/dev/usb/usbdevs	Mon Jan 11 18:48:45 2010	(r202102)
@@ -2099,6 +2099,7 @@ product OPTION E7041		0x7041	3G modem
 product OPTION E7061		0x7061	3G modem
 product OPTION E7100		0x7100	3G modem
 product OPTION GTM380		0x7201	3G modem
+product OPTION GE40X		0x7601	Globetrotter HSUPA
 
 /* OQO */
 product OQO WIFI01		0x0002	model 01 WiFi interface

Modified: user/ed/utmpx/sys/i386/conf/GENERIC
==============================================================================
--- user/ed/utmpx/sys/i386/conf/GENERIC	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/conf/GENERIC	Mon Jan 11 18:48:45 2010	(r202102)
@@ -75,6 +75,7 @@ options 	AUDIT			# Security event auditi
 options 	MAC			# TrustedBSD MAC Framework
 options		FLOWTABLE		# per-cpu routing cache
 #options 	KDTRACE_HOOKS		# Kernel DTrace hooks
+options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
 
 # Debugging for use in -current
 options 	KDB			# Enable kernel debugger support.

Modified: user/ed/utmpx/sys/i386/i386/io.c
==============================================================================
--- user/ed/utmpx/sys/i386/i386/io.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/i386/io.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -76,3 +76,12 @@ ioclose(struct cdev *dev __unused, int f
 
 	return (0);
 }
+
+/* ARGSUSED */
+int
+ioioctl(struct cdev *dev __unused, u_long cmd __unused, caddr_t data __unused,
+    int fflag __unused, struct thread *td __unused)
+{
+
+	return (ENXIO);
+}

Modified: user/ed/utmpx/sys/i386/i386/locore.s
==============================================================================
--- user/ed/utmpx/sys/i386/i386/locore.s	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/i386/locore.s	Mon Jan 11 18:48:45 2010	(r202102)
@@ -104,9 +104,7 @@ IdlePTD:	.long	0		/* phys addr of kernel
 IdlePDPT:	.long	0		/* phys addr of kernel PDPT */
 #endif
 
-#ifdef SMP
 	.globl	KPTphys
-#endif
 KPTphys:	.long	0		/* phys addr of kernel page tables */
 
 	.globl	proc0kstack

Modified: user/ed/utmpx/sys/i386/i386/pmap.c
==============================================================================
--- user/ed/utmpx/sys/i386/i386/pmap.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/i386/pmap.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -206,6 +206,7 @@ int pseflag = 0;		/* PG_PS or-in */
 static int nkpt;
 vm_offset_t kernel_vm_end;
 extern u_int32_t KERNend;
+extern u_int32_t KPTphys;
 
 #ifdef PAE
 pt_entry_t pg_nx;
@@ -659,13 +660,13 @@ pmap_init(void)
 	 * Initialize the vm page array entries for the kernel pmap's
 	 * page table pages.
 	 */ 
-	for (i = 0; i < nkpt; i++) {
-		mpte = PHYS_TO_VM_PAGE(PTD[i + KPTDI] & PG_FRAME);
+	for (i = 0; i < NKPT; i++) {
+		mpte = PHYS_TO_VM_PAGE(KPTphys + (i << PAGE_SHIFT));
 		KASSERT(mpte >= vm_page_array &&
 		    mpte < &vm_page_array[vm_page_array_size],
 		    ("pmap_init: page table page is out of range"));
 		mpte->pindex = i + KPTDI;
-		mpte->phys_addr = PTD[i + KPTDI] & PG_FRAME;
+		mpte->phys_addr = KPTphys + (i << PAGE_SHIFT);
 	}
 
 	/*

Modified: user/ed/utmpx/sys/i386/include/iodev.h
==============================================================================
--- user/ed/utmpx/sys/i386/include/iodev.h	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/include/iodev.h	Mon Jan 11 18:48:45 2010	(r202102)
@@ -28,3 +28,4 @@
 
 d_open_t	ioopen;
 d_close_t	ioclose;
+d_ioctl_t	ioioctl;

Modified: user/ed/utmpx/sys/i386/xen/mp_machdep.c
==============================================================================
--- user/ed/utmpx/sys/i386/xen/mp_machdep.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/xen/mp_machdep.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -105,9 +105,6 @@ static char callfunc_name[NR_CPUS][15];
 /* Free these after use */
 void *bootstacks[MAXCPU];
 
-/* Hotwire a 0->4MB V==P mapping */
-extern pt_entry_t *KPTphys;
-
 struct pcb stoppcbs[MAXCPU];
 
 /* Variables needed for SMP tlb shootdown. */

Modified: user/ed/utmpx/sys/i386/xen/xen_machdep.c
==============================================================================
--- user/ed/utmpx/sys/i386/xen/xen_machdep.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/i386/xen/xen_machdep.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -715,9 +715,6 @@ xen_destroy_contiguous_region(void *addr
 	balloon_unlock(flags);
 }
 
-extern unsigned long cpu0prvpage;
-extern unsigned long *SMPpt;
-extern  struct user	*proc0uarea;
 extern  vm_offset_t	proc0kstack;
 extern int vm86paddr, vm86phystk;
 char *bootmem_start, *bootmem_current, *bootmem_end;

Modified: user/ed/utmpx/sys/ia64/conf/DEFAULTS
==============================================================================
--- user/ed/utmpx/sys/ia64/conf/DEFAULTS	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/ia64/conf/DEFAULTS	Mon Jan 11 18:48:45 2010	(r202102)
@@ -9,6 +9,7 @@ machine		ia64
 device		acpi		# ACPI support
 
 # Pseudo devices.
+device		io		# I/O & EFI runtime device
 device		mem		# Memory and kernel memory devices
 
 # UART chips on this platform

Modified: user/ed/utmpx/sys/ia64/conf/GENERIC
==============================================================================
--- user/ed/utmpx/sys/ia64/conf/GENERIC	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/ia64/conf/GENERIC	Mon Jan 11 18:48:45 2010	(r202102)
@@ -67,6 +67,7 @@ options 	WITNESS		# Enable checks to det
 options 	WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
 options 	_KPOSIX_PRIORITY_SCHEDULING	# Posix P1003_1B RT extensions
 options 	HWPMC_HOOKS	# Necessary kernel hooks for hwpmc(4)
+options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
 
 # Various "busses"
 device		firewire	# FireWire bus code

Copied: user/ed/utmpx/sys/ia64/ia64/iodev_machdep.c (from r202100, head/sys/ia64/ia64/iodev_machdep.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/utmpx/sys/ia64/ia64/iodev_machdep.c	Mon Jan 11 18:48:45 2010	(r202102, copy of r202100, head/sys/ia64/ia64/iodev_machdep.c)
@@ -0,0 +1,160 @@
+/*-
+ * Copyright (c) 2010 Marcel Moolenaar
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/conf.h>
+#include <sys/fcntl.h>
+#include <sys/ioccom.h>
+#include <sys/priv.h>
+#include <sys/proc.h>
+#include <sys/systm.h>
+
+#include <machine/bus.h>
+#include <machine/iodev.h>
+
+static int iodev_pio_read(struct iodev_pio_req *req);
+static int iodev_pio_write(struct iodev_pio_req *req);
+
+/* ARGSUSED */
+int
+ioopen(struct cdev *dev __unused, int flags __unused, int fmt __unused,
+    struct thread *td)
+{
+	int error;
+
+	error = priv_check(td, PRIV_IO);
+	if (error == 0)
+		error = securelevel_gt(td->td_ucred, 0);
+
+	return (error);
+}
+
+/* ARGSUSED */
+int
+ioclose(struct cdev *dev __unused, int flags __unused, int fmt __unused,
+    struct thread *td __unused)
+{
+
+	return (0);
+}
+
+/* ARGSUSED */
+int
+ioioctl(struct cdev *dev __unused, u_long cmd, caddr_t data,
+    int fflag __unused, struct thread *td __unused)
+{
+	struct iodev_pio_req *pio_req;
+	int error;
+
+	error = ENOIOCTL;
+	switch (cmd) {
+	case IODEV_PIO:
+		pio_req = (struct iodev_pio_req *)data;
+		switch (pio_req->access) {
+		case IODEV_PIO_READ:
+			error = iodev_pio_read(pio_req);
+			break;
+		case IODEV_PIO_WRITE:
+			error = iodev_pio_write(pio_req);
+			break;
+		default:
+			error = EINVAL;
+			break;
+		}
+		break;
+	}
+
+	return (error);
+}
+
+static int
+iodev_pio_read(struct iodev_pio_req *req)
+{
+
+	switch (req->width) {
+	case 1:
+		req->val = bus_space_read_io_1(req->port);
+		break;
+	case 2:
+		if (req->port & 1) {
+			req->val = bus_space_read_io_1(req->port);
+			req->val |= bus_space_read_io_1(req->port + 1) << 8;
+		} else
+			req->val = bus_space_read_io_2(req->port);
+		break;
+	case 4:
+		if (req->port & 1) {
+			req->val = bus_space_read_io_1(req->port);
+			req->val |= bus_space_read_io_2(req->port + 1) << 8;
+			req->val |= bus_space_read_io_1(req->port + 3) << 24;
+		} else if (req->port & 2) {
+			req->val = bus_space_read_io_2(req->port);
+			req->val |= bus_space_read_io_2(req->port + 2) << 16;
+		} else
+			req->val = bus_space_read_io_4(req->port);
+		break;
+	default:
+		return (EINVAL);
+	}
+
+	return (0);
+}
+
+static int
+iodev_pio_write(struct iodev_pio_req *req)
+{
+
+	switch (req->width) {
+	case 1:
+		bus_space_write_io_1(req->port, req->val);
+		break;
+	case 2:
+		if (req->port & 1) {
+			bus_space_write_io_1(req->port, req->val);
+			bus_space_write_io_1(req->port + 1, req->val >> 8);
+		} else
+			bus_space_write_io_2(req->port, req->val);
+		break;
+	case 4:
+		if (req->port & 1) {
+			bus_space_write_io_1(req->port, req->val);
+			bus_space_write_io_2(req->port + 1, req->val >> 8);
+			bus_space_write_io_1(req->port + 3, req->val >> 24);
+		} else if (req->port & 2) {
+			bus_space_write_io_2(req->port, req->val);
+			bus_space_write_io_2(req->port + 2, req->val >> 16);
+		} else
+			bus_space_write_io_4(req->port, req->val);
+		break;
+	default:
+		return (EINVAL);
+	}
+
+	return (0);
+}

Modified: user/ed/utmpx/sys/ia64/ia64/sys_machdep.c
==============================================================================
--- user/ed/utmpx/sys/ia64/ia64/sys_machdep.c	Mon Jan 11 18:44:41 2010	(r202101)
+++ user/ed/utmpx/sys/ia64/ia64/sys_machdep.c	Mon Jan 11 18:48:45 2010	(r202102)
@@ -49,72 +49,9 @@ struct sysarch_args {
 int
 sysarch(struct thread *td, struct sysarch_args *uap)
 {
-	struct ia64_iodesc iod;
 	int error;
 
-	error = 0;
 	switch(uap->op) {
-	case IA64_IORD:
-		copyin(uap->parms, &iod, sizeof(iod));
-		switch (iod.width) {
-		case 1:
-			iod.val = inb(iod.port);
-			break;
-		case 2:
-			if (iod.port & 1) {
-				iod.val = inb(iod.port);
-				iod.val |= inb(iod.port + 1) << 8;
-			} else
-				iod.val = inw(iod.port);
-			break;
-		case 4:
-			if (iod.port & 3) {
-				if (iod.port & 1) {
-					iod.val = inb(iod.port);
-					iod.val |= inw(iod.port + 1) << 8;
-					iod.val |= inb(iod.port + 3) << 24;
-				} else {
-					iod.val = inw(iod.port);
-					iod.val |= inw(iod.port + 2) << 16;
-				}
-			} else
-				iod.val = inl(iod.port);
-			break;
-		default:
-			error = EINVAL;
-		}
-		copyout(&iod, uap->parms, sizeof(iod));
-		break;
-	case IA64_IOWR:
-		copyin(uap->parms, &iod, sizeof(iod));
-		switch (iod.width) {
-		case 1:
-			outb(iod.port, iod.val);
-			break;
-		case 2:
-			if (iod.port & 1) {
-				outb(iod.port, iod.val);
-				outb(iod.port + 1, iod.val >> 8);
-			} else
-				outw(iod.port, iod.val);
-			break;
-		case 4:
-			if (iod.port & 3) {
-				if (iod.port & 1) {
-					outb(iod.port, iod.val);
-					outw(iod.port + 1, iod.val >> 8);
-					outb(iod.port + 3, iod.val >> 24);
-				} else {
-					outw(iod.port, iod.val);
-					outw(iod.port + 2, iod.val >> 16);
-				}
-			} else
-				outl(iod.port, iod.val);
-			break;
-		default:
-			error = EINVAL;
-		}
-		break;
 	default:
 		error = EINVAL;
 		break;

Copied: user/ed/utmpx/sys/ia64/include/iodev.h (from r202100, head/sys/ia64/include/iodev.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/ed/utmpx/sys/ia64/include/iodev.h	Mon Jan 11 18:48:45 2010	(r202102, copy of r202100, head/sys/ia64/include/iodev.h)
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2010 Marcel Moolenaar
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _MACHINE_IODEV_H_
+#define	_MACHINE_IODEV_H_
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list