Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Sep 2008 23:54:55 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 150150 for review
Message-ID:  <200809192354.m8JNstRI043656@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=150150

Change 150150 by zec@zec_tpx32 on 2008/09/19 23:54:22

	IFC @ 150145

Affected files ...

.. //depot/projects/vimage/src/sys/amd64/amd64/identcpu.c#9 integrate
.. //depot/projects/vimage/src/sys/boot/ofw/libofw/Makefile#3 integrate
.. //depot/projects/vimage/src/sys/boot/ofw/libofw/ofw_console.c#4 integrate
.. //depot/projects/vimage/src/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c#2 integrate
.. //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/atomic.h#3 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#11 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_proto.h#12 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_syscall.h#12 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_syscalls.c#12 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_sysent.c#12 integrate
.. //depot/projects/vimage/src/sys/compat/freebsd32/syscalls.master#13 integrate
.. //depot/projects/vimage/src/sys/conf/files.mips#3 integrate
.. //depot/projects/vimage/src/sys/conf/ldscript.mips#2 integrate
.. //depot/projects/vimage/src/sys/conf/options.mips#2 integrate
.. //depot/projects/vimage/src/sys/dev/acpica/acpi_quirk.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/cxgb/cxgb_osdep.h#11 integrate
.. //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#12 integrate
.. //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_defs.h#4 integrate
.. //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_tom.c#6 integrate
.. //depot/projects/vimage/src/sys/dev/pci/vga_pci.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/snp/snp.c#8 integrate
.. //depot/projects/vimage/src/sys/dev/usb/if_zyd.c#11 integrate
.. //depot/projects/vimage/src/sys/dev/usb/usbdevs#29 integrate
.. //depot/projects/vimage/src/sys/i386/i386/identcpu.c#10 integrate
.. //depot/projects/vimage/src/sys/i386/i386/pmap.c#20 integrate
.. //depot/projects/vimage/src/sys/kern/kern_syscalls.c#2 integrate
.. //depot/projects/vimage/src/sys/kern/vfs_cache.c#12 integrate
.. //depot/projects/vimage/src/sys/kern/vfs_mount.c#22 integrate
.. //depot/projects/vimage/src/sys/mips/adm5120/obio.c#3 integrate
.. //depot/projects/vimage/src/sys/mips/conf/IDT#3 integrate
.. //depot/projects/vimage/src/sys/mips/idt/obio.c#3 integrate
.. //depot/projects/vimage/src/sys/mips/malta/gt_pci.c#4 integrate
.. //depot/projects/vimage/src/sys/mips/mips/intr_machdep.c#4 integrate
.. //depot/projects/vimage/src/sys/net/if_lagg.c#17 integrate
.. //depot/projects/vimage/src/sys/powerpc/ofw/ofw_syscons.c#2 integrate
.. //depot/projects/vimage/src/sys/sparc64/pci/psycho.c#13 integrate
.. //depot/projects/vimage/src/sys/sparc64/pci/psychoreg.h#5 integrate
.. //depot/projects/vimage/src/sys/sys/mount.h#12 integrate
.. //depot/projects/vimage/src/sys/sys/sysent.h#6 integrate

Differences ...

==== //depot/projects/vimage/src/sys/amd64/amd64/identcpu.c#9 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.159 2008/05/23 04:03:52 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.160 2008/09/18 18:51:32 stas Exp $");
 
 #include "opt_cpu.h"
 
@@ -249,8 +249,8 @@
 				"\030POPCNT"
 				"\031<b24>"
 				"\032<b25>"
-				"\033<b26>"
-				"\034<b27>"
+				"\033XSAVE"
+				"\034OSXSAVE"
 				"\035<b28>"
 				"\036<b29>"
 				"\037<b30>"

==== //depot/projects/vimage/src/sys/boot/ofw/libofw/Makefile#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/ofw/libofw/Makefile,v 1.11 2007/06/17 00:17:15 marius Exp $
+# $FreeBSD: src/sys/boot/ofw/libofw/Makefile,v 1.13 2008/09/19 19:49:58 sobomax Exp $
 
 LIB=		ofw
 INTERNALLIB=

==== //depot/projects/vimage/src/sys/boot/ofw/libofw/ofw_console.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_console.c,v 1.13 2008/02/06 22:04:28 grehan Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_console.c,v 1.15 2008/09/19 19:49:58 sobomax Exp $");
 
 #include <sys/types.h>
 

==== //depot/projects/vimage/src/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c,v 1.2 2008/03/28 22:16:05 jb Exp $");
+__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c,v 1.3 2008/09/18 19:57:06 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/lock.h>
@@ -74,7 +74,8 @@
 	return (newval);
 }
 
-#if defined(__sparc64__) || defined(__powerpc__) || defined(__arm__)
+#if defined(__sparc64__) || defined(__powerpc__) || defined(__arm__) || \
+    defined(__mips__)
 void
 atomic_or_8(volatile uint8_t *target, uint8_t value)
 {

==== //depot/projects/vimage/src/sys/cddl/compat/opensolaris/sys/atomic.h#3 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/atomic.h,v 1.4 2008/05/22 08:33:24 jb Exp $
+ * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/atomic.h,v 1.5 2008/09/18 19:57:06 imp Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_ATOMIC_H_
@@ -48,7 +48,8 @@
 extern uint8_t atomic_or_8_nv(volatile uint8_t *target, uint8_t value);
 extern void membar_producer(void);
 
-#if defined(__sparc64__) || defined(__powerpc__) || defined(__arm__)
+#if defined(__sparc64__) || defined(__powerpc__) || defined(__arm__) || \
+    defined(__mips__)
 extern void atomic_or_8(volatile uint8_t *target, uint8_t value);
 #else
 static __inline void

==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#11 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.78 2008/09/15 17:39:40 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.79 2008/09/19 15:17:32 obrien Exp $");
 
 #include "opt_compat.h"
 
@@ -85,6 +85,8 @@
 
 #include <machine/cpu.h>
 
+#include <security/audit/audit.h>
+
 #include <compat/freebsd32/freebsd32_util.h>
 #include <compat/freebsd32/freebsd32.h>
 #include <compat/freebsd32/freebsd32_ipc.h>
@@ -2552,8 +2554,51 @@
 	return (cpuset_setaffinity(td, &ap));
 }
 
+int
+freebsd32_nmount(struct thread *td,
+    struct freebsd32_nmount_args /* {
+    	struct iovec *iovp;
+    	unsigned int iovcnt;
+    	int flags;
+    } */ *uap)
+{
+	struct uio *auio;
+	struct iovec *iov;
+	int error, k;
+
+	AUDIT_ARG(fflags, uap->flags);
+
+	/*
+	 * Filter out MNT_ROOTFS.  We do not want clients of nmount() in
+	 * userspace to set this flag, but we must filter it out if we want
+	 * MNT_UPDATE on the root file system to work.
+	 * MNT_ROOTFS should only be set in the kernel in vfs_mountroot_try().
+	 */
+	uap->flags &= ~MNT_ROOTFS;
+
+	/*
+	 * check that we have an even number of iovec's
+	 * and that we have at least two options.
+	 */
+	if ((uap->iovcnt & 1) || (uap->iovcnt < 4))
+		return (EINVAL);
+
+	error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio);
+	if (error)
+		return (error);
+	for (iov = auio->uio_iov, k = 0; k < uap->iovcnt; ++k, ++iov) {
+		if (iov->iov_len > MMAXOPTIONLEN) {
+			free(auio, M_IOV);
+			return (EINVAL);
+		}
+	}
+
+	error = vfs_donmount(td, uap->flags, auio);
+	free(auio, M_IOV);
+	return error;
+}
+
 #if 0
-
 int
 freebsd32_xxx(struct thread *td, struct freebsd32_xxx_args *uap)
 {
@@ -2578,5 +2623,4 @@
 	}
 	return (error);
 }
-
 #endif

==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_proto.h#12 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.90 2008/09/15 17:39:01 obrien Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183042 2008-09-15 17:37:41Z obrien 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.91 2008/09/19 15:21:40 obrien Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183188 2008-09-19 15:17:32Z obrien 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_
@@ -241,6 +241,11 @@
 	char nevents_l_[PADL_(int)]; int nevents; char nevents_r_[PADR_(int)];
 	char timeout_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * timeout; char timeout_r_[PADR_(const struct timespec32 *)];
 };
+struct freebsd32_nmount_args {
+	char iovp_l_[PADL_(struct iovec32 *)]; struct iovec32 * iovp; char iovp_r_[PADR_(struct iovec32 *)];
+	char iovcnt_l_[PADL_(unsigned int)]; unsigned int iovcnt; char iovcnt_r_[PADR_(unsigned int)];
+	char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
 struct freebsd32_sendfile_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 	char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
@@ -413,6 +418,7 @@
 int	freebsd32_sigtimedwait(struct thread *, struct freebsd32_sigtimedwait_args *);
 int	freebsd32_sigwaitinfo(struct thread *, struct freebsd32_sigwaitinfo_args *);
 int	freebsd32_kevent(struct thread *, struct freebsd32_kevent_args *);
+int	freebsd32_nmount(struct thread *, struct freebsd32_nmount_args *);
 int	freebsd32_sendfile(struct thread *, struct freebsd32_sendfile_args *);
 int	freebsd32_sigaction(struct thread *, struct freebsd32_sigaction_args *);
 int	freebsd32_sigreturn(struct thread *, struct freebsd32_sigreturn_args *);
@@ -623,6 +629,7 @@
 #define	FREEBSD32_SYS_AUE_freebsd32_sigtimedwait	AUE_SIGWAIT
 #define	FREEBSD32_SYS_AUE_freebsd32_sigwaitinfo	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_kevent	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_nmount	AUE_NMOUNT
 #define	FREEBSD32_SYS_AUE_freebsd32_sendfile	AUE_SENDFILE
 #define	FREEBSD32_SYS_AUE_freebsd32_sigaction	AUE_SIGACTION
 #define	FREEBSD32_SYS_AUE_freebsd32_sigreturn	AUE_SIGRETURN

==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_syscall.h#12 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.89 2008/09/15 17:39:01 obrien Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183042 2008-09-15 17:37:41Z obrien 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.90 2008/09/19 15:21:40 obrien Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183188 2008-09-19 15:17:32Z obrien 
  */
 
 #define	FREEBSD32_SYS_syscall	0
@@ -283,7 +283,7 @@
 #define	FREEBSD32_SYS_extattr_delete_fd	373
 #define	FREEBSD32_SYS___setugid	374
 #define	FREEBSD32_SYS_eaccess	376
-#define	FREEBSD32_SYS_nmount	378
+#define	FREEBSD32_SYS_freebsd32_nmount	378
 #define	FREEBSD32_SYS_kenv	390
 #define	FREEBSD32_SYS_lchflags	391
 #define	FREEBSD32_SYS_uuidgen	392

==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_syscalls.c#12 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.80 2008/09/15 17:39:01 obrien Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183042 2008-09-15 17:37:41Z obrien 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.81 2008/09/19 15:21:40 obrien Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183188 2008-09-19 15:17:32Z obrien 
  */
 
 const char *freebsd32_syscallnames[] = {
@@ -385,7 +385,7 @@
 	"#375",			/* 375 = nfsclnt */
 	"eaccess",			/* 376 = eaccess */
 	"#377",			/* 377 = afs_syscall */
-	"nmount",			/* 378 = nmount */
+	"freebsd32_nmount",			/* 378 = freebsd32_nmount */
 	"#379",			/* 379 = kse_exit */
 	"#380",			/* 380 = kse_wakeup */
 	"#381",			/* 381 = kse_create */

==== //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_sysent.c#12 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.90 2008/09/15 17:39:01 obrien Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183042 2008-09-15 17:37:41Z obrien 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.91 2008/09/19 15:21:40 obrien Exp $
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183188 2008-09-19 15:17:32Z obrien 
  */
 
 #include "opt_compat.h"
@@ -416,7 +416,7 @@
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 375 = nfsclnt */
 	{ AS(eaccess_args), (sy_call_t *)eaccess, AUE_EACCESS, NULL, 0, 0 },	/* 376 = eaccess */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 377 = afs_syscall */
-	{ AS(nmount_args), (sy_call_t *)nmount, AUE_NMOUNT, NULL, 0, 0 },	/* 378 = nmount */
+	{ AS(freebsd32_nmount_args), (sy_call_t *)freebsd32_nmount, AUE_NMOUNT, NULL, 0, 0 },	/* 378 = freebsd32_nmount */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 379 = kse_exit */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 380 = kse_wakeup */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 381 = kse_create */

==== //depot/projects/vimage/src/sys/compat/freebsd32/syscalls.master#13 (text+ko) ====

@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.105 2008/09/15 17:37:41 obrien Exp $
+ $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.106 2008/09/19 15:17:32 obrien Exp $
 ;	from: @(#)syscalls.master	8.2 (Berkeley) 1/13/94
 ;	from: src/sys/kern/syscalls.master 1.107
 ;
@@ -651,7 +651,7 @@
 375	AUE_NULL	UNIMPL	nfsclnt
 376	AUE_EACCESS	NOPROTO	{ int eaccess(char *path, int flags); }
 377	AUE_NULL	UNIMPL	afs_syscall
-378	AUE_NMOUNT	NOPROTO	{ int nmount(struct iovec *iovp, \
+378	AUE_NMOUNT	STD	{ int freebsd32_nmount(struct iovec32 *iovp, \
 				    unsigned int iovcnt, int flags); }
 379	AUE_NULL	UNIMPL	kse_exit
 380	AUE_NULL	UNIMPL	kse_wakeup

==== //depot/projects/vimage/src/sys/conf/files.mips#3 (text+ko) ====

@@ -18,7 +18,7 @@
 # Copyright (c) 2001, 2004-2005, Juniper Networks, Inc.
 # All rights reserved.
 # JNPR: files.mips,v 1.11 2007/08/09 12:25:35 katta
-# $FreeBSD: src/sys/conf/files.mips,v 1.2 2008/08/27 01:41:32 imp Exp $
+# $FreeBSD: src/sys/conf/files.mips,v 1.4 2008/09/19 19:46:11 imp Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -29,7 +29,6 @@
 # ----------------------------------------------------------------------
 mips/mips/machdep.c		standard
 mips/mips/mp_machdep.c		optional smp
-mips/mips/mips_subr.c		standard
 mips/mips/psraccess.S		standard
 # ----------------------------------------------------------------------
 # Phase 3
@@ -76,6 +75,13 @@
 geom/geom_bsd_enc.c		standard
 geom/geom_mbr.c			standard
 geom/geom_mbr_enc.c		standard
+hal.o				optional	ath_hal		\
+	compile-with		"ATH_HAL_CPU=mips; ATH_ENDIAN=`if ([ x${TARGET_BIG_ENDIAN} = x ]); then echo le; else echo be; fi;`; uudecode < $S/contrib/dev/ath/public/$$ATH_HAL_CPU-$$ATH_ENDIAN-elf.hal.o.uu" \
+	no-implicit-rule
+opt_ah.h			optional	ath_hal		\
+	compile-with		"ATH_HAL_CPU=mips; ATH_ENDIAN=`if ([ x${TARGET_BIG_ENDIAN} = x ]); then echo le; else echo be; fi;`; rm -f opt_ah.h; cp $S/contrib/dev/ath/public/$$ATH_HAL_CPU-$$ATH_ENDIAN-elf.opt_ah.h opt_ah.h" \
+	no-obj no-implicit-rule before-depend			\
+	clean		"opt_ah.h"
 libkern/ashldi3.c		standard
 libkern/ashrdi3.c		standard
 libkern/divdi3.c		standard

==== //depot/projects/vimage/src/sys/conf/ldscript.mips#2 (text+ko) ====

@@ -1,5 +1,38 @@
-/* $FreeBSD: src/sys/conf/ldscript.mips,v 1.2 2008/04/30 12:44:58 gonzo Exp $ */
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+/*-
+ * Copyright (c) 2001, 2004, 2008, Juniper Networks, Inc.
+ * 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. Neither the name of the Juniper Networks, Inc. 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 JUNIPER NETWORKS 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 JUNIPER NETWORKS 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.
+ *
+ *	JNPR: ldscript.mips,v 1.3 2006/10/11 06:12:04
+ * $FreeBSD: src/sys/conf/ldscript.mips,v 1.3 2008/09/19 03:36:37 imp Exp $
+ */
+
+OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", 
+		"elf32-tradlittlemips")
+
 OUTPUT_ARCH(mips)
 ENTRY(_start)
 SEARCH_DIR(/usr/lib);

==== //depot/projects/vimage/src/sys/conf/options.mips#2 (text+ko) ====

@@ -1,4 +1,32 @@
-# $FreeBSD: src/sys/conf/options.mips,v 1.1 2008/04/13 06:25:43 imp Exp $
+# Copyright (c) 2001, 2008, Juniper Networks, Inc.
+# 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. Neither the name of the Juniper Networks, Inc. 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 JUNIPER NETWORKS 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 JUNIPER NETWORKS 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.
+#
+#	JNPR: options.mips,v 1.2 2006/09/15 12:52:34
+# $FreeBSD: src/sys/conf/options.mips,v 1.2 2008/09/19 03:36:37 imp Exp $
 
 CPU_MIPS4KC	opt_global.h
 CPU_MIPS32	opt_global.h

==== //depot/projects/vimage/src/sys/dev/acpica/acpi_quirk.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_quirk.c,v 1.4 2007/03/22 18:16:40 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_quirk.c,v 1.5 2008/09/19 15:25:13 jkim Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -149,9 +149,9 @@
     if (ACPI_FAILURE(AcpiGetTableHeader(ACPI_SIG_FADT, 0, &fadt)))
 	bzero(&fadt, sizeof(fadt));
     if (ACPI_FAILURE(AcpiGetTableHeader(ACPI_SIG_DSDT, 0, &dsdt)))
-	bzero(&fadt, sizeof(dsdt));
+	bzero(&dsdt, sizeof(dsdt));
     if (ACPI_FAILURE(AcpiGetTableHeader(ACPI_SIG_XSDT, 0, &xsdt)))
-	bzero(&fadt, sizeof(xsdt));
+	bzero(&xsdt, sizeof(xsdt));
 
     /* Then, override the quirks with any matched from table signatures. */
     for (entry = acpi_quirks_table; entry->match; entry++) {

==== //depot/projects/vimage/src/sys/dev/cxgb/cxgb_osdep.h#11 (text+ko) ====

@@ -26,7 +26,7 @@
 POSSIBILITY OF SUCH DAMAGE.
 
 
-$FreeBSD: src/sys/dev/cxgb/cxgb_osdep.h,v 1.24 2008/09/16 02:28:08 kmacy Exp $
+$FreeBSD: src/sys/dev/cxgb/cxgb_osdep.h,v 1.25 2008/09/19 21:12:19 kmacy Exp $
 
 ***************************************************************************/
 
@@ -92,7 +92,6 @@
 #define m_get_socket(m) ((m)->m_pkthdr.header)
 
 #define	KTR_CXGB	KTR_SPARE2
-void cxgb_log_tcb(struct adapter *sc, unsigned int tid);
 
 #define MT_DONTFREE  128
 

==== //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#12 (text+ko) ====

@@ -28,7 +28,7 @@
 ***************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c,v 1.20 2008/09/17 15:49:44 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c,v 1.21 2008/09/18 23:56:42 kmacy Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1733,10 +1733,9 @@
 			return (err);
 
 		inp = so_sotoinpcb(so);
+		inp_wlock(inp);
 		tp = inp_inpcbtotcpcb(inp);
-		    
-		inp_wlock(inp);
-		
+
 		oldval = tp->t_flags;
 		if (optval)
 			tp->t_flags |= TF_NODELAY;
@@ -3251,6 +3250,7 @@
 	/*
 	 * Fill out information for entering us into the syncache
 	 */
+	bzero(&inc, sizeof(inc));
 	inc.inc_fport = th.th_sport = req->peer_port;
 	inc.inc_lport = th.th_dport = req->local_port;
 	th.th_seq = req->rcv_isn;
@@ -3595,6 +3595,7 @@
 	/*
 	 * Fill out information for entering us into the syncache
 	 */
+	bzero(&inc, sizeof(inc));
 	inc.inc_fport = th.th_sport = req->peer_port;
 	inc.inc_lport = th.th_dport = req->local_port;
 	th.th_seq = req->rcv_isn;

==== //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_defs.h#4 (text+ko) ====

@@ -27,7 +27,7 @@
 POSSIBILITY OF SUCH DAMAGE.
 
 
-$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_defs.h,v 1.4 2008/04/19 03:22:42 kmacy Exp $
+$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_defs.h,v 1.5 2008/09/19 21:12:19 kmacy Exp $
 
 ***************************************************************************/
 #ifndef CXGB_DEFS_H_
@@ -49,6 +49,7 @@
 struct toepcb;
 struct listen_ctx;
 
+void cxgb_log_tcb(struct adapter *sc, unsigned int tid);
 typedef void (*defer_handler_t)(struct toedev *dev, struct mbuf *m);
 
 void t3tom_register_cpl_handler(unsigned int opcode, cxgb_cpl_handler_func h);

==== //depot/projects/vimage/src/sys/dev/cxgb/ulp/tom/cxgb_tom.c#6 (text+ko) ====

@@ -28,7 +28,7 @@
 ***************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_tom.c,v 1.8 2008/09/16 01:02:17 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/ulp/tom/cxgb_tom.c,v 1.9 2008/09/19 21:12:19 kmacy Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -145,6 +145,35 @@
 	.redirect = NULL
 };
 
+void
+cxgb_log_tcb(struct adapter *sc, unsigned int tid)
+{
+
+	char buf[TCB_SIZE];
+	uint64_t *tcb = (uint64_t *)buf;
+	int i, error;
+	struct mc7 *mem = &sc->cm;
+
+	error = t3_mc7_bd_read(mem, tid*TCB_SIZE/8, TCB_SIZE/8, tcb);
+	if (error)
+		printf("cxgb_tcb_log failed\n");
+
+
+	CTR1(KTR_CXGB, "TCB tid=%u", tid);
+	for (i = 0; i < TCB_SIZE / 32; i++) {
+
+		CTR5(KTR_CXGB, "%1d: %08x %08x %08x %08x",
+		    i, (uint32_t)tcb[1], (uint32_t)(tcb[1] >> 32),
+		    (uint32_t)tcb[0], (uint32_t)(tcb[0] >> 32));
+
+		tcb += 2;
+		CTR4(KTR_CXGB, "   %08x %08x %08x %08x",
+		    (uint32_t)tcb[1], (uint32_t)(tcb[1] >> 32),
+		    (uint32_t)tcb[0], (uint32_t)(tcb[0] >> 32));
+		tcb += 2;
+	}
+}
+
 /*
  * Add an skb to the deferred skb queue for processing from process context.
  */

==== //depot/projects/vimage/src/sys/dev/pci/vga_pci.c#3 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pci/vga_pci.c,v 1.6 2008/09/16 19:52:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pci/vga_pci.c,v 1.7 2008/09/19 19:11:35 rnoland Exp $");
 
 /*
  * Simple driver for PCI VGA display devices.  Drivers such as agp(4) and
@@ -110,6 +110,22 @@
 	return (EINVAL);
 }
 
+static int
+vga_pci_setup_intr(device_t dev, device_t child, struct resource *irq,
+    int flags, driver_filter_t *filter, driver_intr_t *intr, void *arg,
+    void **cookiep)
+{
+	return (BUS_SETUP_INTR(device_get_parent(dev), dev, irq, flags,
+	    filter, intr, arg, cookiep));
+}
+
+static int
+vga_pci_teardown_intr(device_t dev, device_t child, struct resource *irq,
+    void *cookie)
+{
+	return (BUS_TEARDOWN_INTR(device_get_parent(dev), dev, irq, cookie));
+}
+
 static struct resource *
 vga_pci_alloc_resource(device_t dev, device_t child, int type, int *rid,
     u_long start, u_long end, u_long count, u_int flags)
@@ -311,8 +327,8 @@
 	/* Bus interface */
 	DEVMETHOD(bus_read_ivar,	vga_pci_read_ivar),
 	DEVMETHOD(bus_write_ivar,	vga_pci_write_ivar),
-	DEVMETHOD(bus_setup_intr,	bus_generic_setup_intr),
-	DEVMETHOD(bus_teardown_intr,	bus_generic_teardown_intr),
+	DEVMETHOD(bus_setup_intr,	vga_pci_setup_intr),
+	DEVMETHOD(bus_teardown_intr,	vga_pci_teardown_intr),
 
 	DEVMETHOD(bus_alloc_resource,	vga_pci_alloc_resource),
 	DEVMETHOD(bus_release_resource,	vga_pci_release_resource),

==== //depot/projects/vimage/src/sys/dev/snp/snp.c#8 (text+ko) ====

@@ -15,7 +15,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/snp/snp.c,v 1.109 2008/08/15 13:07:07 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/snp/snp.c,v 1.110 2008/09/19 10:21:30 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,7 +43,7 @@
 
 static struct cdevsw snp_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT,
 	.d_open =	snpopen,
 	.d_read =	snpread,
 	.d_write =	snpwrite,

==== //depot/projects/vimage/src/sys/dev/usb/if_zyd.c#11 (text+ko) ====

@@ -1,6 +1,6 @@
 /*	$OpenBSD: if_zyd.c,v 1.52 2007/02/11 00:08:04 jsg Exp $	*/
 /*	$NetBSD: if_zyd.c,v 1.7 2007/06/21 04:04:29 kiyohara Exp $	*/
-/*	$FreeBSD: src/sys/dev/usb/if_zyd.c,v 1.20 2008/09/10 03:40:51 weongyo Exp $	*/
+/*	$FreeBSD: src/sys/dev/usb/if_zyd.c,v 1.22 2008/09/19 07:40:30 weongyo Exp $	*/
 
 /*-
  * Copyright (c) 2006 by Damien Bergamini <damien.bergamini@free.fr>
@@ -234,6 +234,7 @@
 static void	zyd_scan_start(struct ieee80211com *);
 static void	zyd_scan_end(struct ieee80211com *);
 static void	zyd_set_channel(struct ieee80211com *);
+static void	zyd_wakeup(struct zyd_softc *);
 
 static int
 zyd_match(device_t dev)
@@ -451,9 +452,6 @@
 	if (!device_is_attached(dev))
 		return 0;
 
-	/* set a flag to indicate we're detaching.  */
-	sc->sc_flags |= ZYD_FLAG_DETACHING;
-
 	/* protect a race when we have listeners related with the driver.  */
 	ifp->if_flags &= ~IFF_UP;
 
@@ -461,10 +459,14 @@
 	bpfdetach(ifp);
 	ieee80211_ifdetach(ic);
 
+	/* set a flag to indicate we're detaching.  */
+	sc->sc_flags |= ZYD_FLAG_DETACHING;
+
 	usb_rem_task(sc->sc_udev, &sc->sc_scantask);
 	usb_rem_task(sc->sc_udev, &sc->sc_task);
 	callout_stop(&sc->sc_watchdog_ch);
 
+	zyd_wakeup(sc);
 	zyd_close_pipes(sc);
 
 	if_free(ifp);
@@ -763,7 +765,9 @@
 	struct ieee80211com *ic = vap->iv_ic;
 	struct zyd_softc *sc = ic->ic_ifp->if_softc;
 
+	usb_rem_task(sc->sc_udev, &sc->sc_scantask);
 	usb_rem_task(sc->sc_udev, &sc->sc_task);
+	callout_stop(&sc->sc_watchdog_ch);
 
 	/* do it in a process context */
 	sc->sc_state = nstate;
@@ -788,6 +792,9 @@
 	uint16_t xferflags;
 	usbd_status error;
 
+	if (sc->sc_flags & ZYD_FLAG_DETACHING)
+		return ENXIO;
+
 	if ((xfer = usbd_alloc_xfer(sc->sc_udev)) == NULL)
 		return ENOMEM;
 
@@ -2746,9 +2753,6 @@
 	struct ifnet *ifp = sc->sc_ifp;
 	struct ieee80211com *ic = ifp->if_l2com;
 
-	if (sc->sc_flags & ZYD_FLAG_DETACHING)
-		return;
-
 	ZYD_LOCK(sc);
 
 	switch (sc->sc_scan_action) {
@@ -2777,6 +2781,16 @@
         ZYD_UNLOCK(sc);
 }
 
+static void
+zyd_wakeup(struct zyd_softc *sc)
+{
+	struct rq *rqp;
+
+	STAILQ_FOREACH(rqp, &sc->sc_rqh, rq) {
+		wakeup(rqp->odata);		/* wakeup sleeping caller */
+	}
+}
+
 static device_method_t zyd_methods[] = {
         /* Device interface */
         DEVMETHOD(device_probe, zyd_match),

==== //depot/projects/vimage/src/sys/dev/usb/usbdevs#29 (text+ko) ====

@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.371 2008/09/14 15:21:22 thompsa Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.372 2008/09/19 09:04:06 kevlo Exp $
 /* $NetBSD: usbdevs,v 1.392 2004/12/29 08:38:44 imp Exp $ */
 
 /*-
@@ -282,6 +282,7 @@
 vendor APPLE		0x05ac	Apple Computer
 vendor YCCABLE		0x05ad	Y.C. Cable
 vendor DIGITALPERSONA	0x05ba	DigitalPersona
+vendor 3G		0x05bc	3G Green Green Globe
 vendor RAFI		0x05bd	RAFI
 vendor TYCO		0x05be	Tyco
 vendor KAWASAKI		0x05c1	Kawasaki

==== //depot/projects/vimage/src/sys/i386/i386/identcpu.c#10 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.186 2008/09/17 20:45:18 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.187 2008/09/18 18:51:32 stas Exp $");
 
 #include "opt_cpu.h"
 
@@ -743,8 +743,8 @@
 				"\030POPCNT"
 				"\031<b24>"
 				"\032<b25>"
-				"\033<b26>"
-				"\034<b27>"
+				"\033XSAVE"
+				"\034OSXSAVE"
 				"\035<b28>"
 				"\036<b29>"
 				"\037<b30>"

==== //depot/projects/vimage/src/sys/i386/i386/pmap.c#20 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.627 2008/08/04 08:04:09 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.628 2008/09/19 03:33:49 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -2883,9 +2883,8 @@
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
 	firstpte = vtopte(trunc_4mpage(va));
-	KASSERT((*firstpte & PG_V) != 0,
-	    ("pmap_promote_pde: firstpte is missing PG_V"));
-	if ((*firstpte & PG_A) == 0) {
+	newpde = *firstpte;
+	if ((newpde & (PG_A | PG_V)) != (PG_A | PG_V)) {
 		pmap_pde_p_failures++;
 		CTR2(KTR_PMAP, "pmap_promote_pde: failure for va %#x"
 		    " in pmap %p", va, pmap);
@@ -2897,14 +2896,13 @@
 		    " in pmap %p", va, pmap);
 		return;
 	}
-	pa = *firstpte & PG_PS_FRAME;
-	newpde = *firstpte;
 	if ((newpde & (PG_M | PG_RW)) == PG_RW)
 		newpde &= ~PG_RW;
 
 	/* 
 	 * Check all the ptes before promotion
 	 */
+	pa = newpde & PG_PS_FRAME;
 	for (pte = firstpte; pte < firstpte + NPTEPG; pte++) {
 retry:
 		oldpte = *pte;

==== //depot/projects/vimage/src/sys/kern/kern_syscalls.c#2 (text+ko) ====

@@ -25,113 +25,113 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_syscalls.c,v 1.12 2006/08/01 16:32:20 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_syscalls.c,v 1.13 2008/09/18 20:10:11 jhb Exp $");
 
 #include <sys/param.h>
-#include <sys/sysproto.h>
-#include <sys/sysent.h>
-#include <sys/syscall.h>
 #include <sys/lock.h>
-#include <sys/mutex.h>
+#include <sys/module.h>
 #include <sys/sx.h>
-#include <sys/module.h>
+#include <sys/syscall.h>
+#include <sys/sysent.h>
+#include <sys/sysproto.h>
 
 /*
- * Acts like "nosys" but can be identified in sysent for dynamic call 
- * number assignment for a limited number of calls. 
- * 
+ * Acts like "nosys" but can be identified in sysent for dynamic call
+ * number assignment for a limited number of calls.
+ *
  * Place holder for system call slots reserved for loadable modules.
- */     
+ */
 int
 lkmnosys(struct thread *td, struct nosys_args *args)
 {
-	return(nosys(td, args));
+
+	return (nosys(td, args));
 }
 
 int
 lkmressys(struct thread *td, struct nosys_args *args)
 {
-	return(nosys(td, args));
+
+	return (nosys(td, args));
 }
 
 int
 syscall_register(int *offset, struct sysent *new_sysent,
-		 struct sysent *old_sysent)
+    struct sysent *old_sysent)
 {
-       if (*offset == NO_SYSCALL) {
-               int i;
+	int i;
 
-               for (i = 1; i < SYS_MAXSYSCALL; ++i)
-                       if (sysent[i].sy_call == (sy_call_t *)lkmnosys)
-                               break;
-               if (i == SYS_MAXSYSCALL)
-                       return ENFILE;
-               *offset = i;
-       } else if (*offset < 0 || *offset >= SYS_MAXSYSCALL)
-               return EINVAL;
-       else if (sysent[*offset].sy_call != (sy_call_t *)lkmnosys &&
-				sysent[*offset].sy_call != (sy_call_t *)lkmressys)
-               return EEXIST;
+	if (*offset == NO_SYSCALL) {
+		for (i = 1; i < SYS_MAXSYSCALL; ++i)
+			if (sysent[i].sy_call == (sy_call_t *)lkmnosys)
+				break;
+		if (i == SYS_MAXSYSCALL)
+			return (ENFILE);
+		*offset = i;
+	} else if (*offset < 0 || *offset >= SYS_MAXSYSCALL)
+		return (EINVAL);
+	else if (sysent[*offset].sy_call != (sy_call_t *)lkmnosys &&
+	    sysent[*offset].sy_call != (sy_call_t *)lkmressys)
+		return (EEXIST);
 
-       *old_sysent = sysent[*offset];
-       sysent[*offset] = *new_sysent;
-       return 0;
+	*old_sysent = sysent[*offset];
+	sysent[*offset] = *new_sysent;
+	return (0);
 }
 
 int
 syscall_deregister(int *offset, struct sysent *old_sysent)
 {
-       if (*offset)
-               sysent[*offset] = *old_sysent;
-       return 0;
+
+	if (*offset)
+		sysent[*offset] = *old_sysent;
+	return (0);
 }
 
 int
 syscall_module_handler(struct module *mod, int what, void *arg)
 {
-       struct syscall_module_data *data = (struct syscall_module_data*)arg;
-       modspecific_t ms;
-       int error;
+	struct syscall_module_data *data = arg;
+	modspecific_t ms;
+	int error;
 
-       switch (what) {
-       case MOD_LOAD :
-               error = syscall_register(data->offset, data->new_sysent,
-                                        &data->old_sysent);
-               if (error) {
-                       /* Leave a mark so we know to safely unload below. */
-                       data->offset = NULL;
-                       return error;
-               }
-	       ms.intval = *data->offset;
-	       MOD_XLOCK;
-	       module_setspecific(mod, &ms);
-	       MOD_XUNLOCK;
-               if (data->chainevh)
-                       error = data->chainevh(mod, what, data->chainarg);
-               return error;
+	switch (what) {
+	case MOD_LOAD:
+		error = syscall_register(data->offset, data->new_sysent,
+		    &data->old_sysent);
+		if (error) {
+			/* Leave a mark so we know to safely unload below. */
+			data->offset = NULL;
+			return (error);
+		}
+		ms.intval = *data->offset;
+		MOD_XLOCK;
+		module_setspecific(mod, &ms);
+		MOD_XUNLOCK;
+		if (data->chainevh)
+			error = data->chainevh(mod, what, data->chainarg);
+		return (error);
+	case MOD_UNLOAD:
+		/*
+		 * MOD_LOAD failed, so just return without calling the
+		 * chained handler since we didn't pass along the MOD_LOAD
+		 * event.
+		 */

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809192354.m8JNstRI043656>