svn commit: r185921 - in projects/arpv2_merge_1: contrib/pf lib/libc/stdio sys/boot/zfs sys/compat/freebsd32 sys/compat/linprocfs sys/conf sys/contrib/pf/net sys/dev/ath/ath_hal sys/dev/ath/ath_hal...

Kip Macy kmacy at FreeBSD.org
Thu Dec 11 00:08:30 PST 2008


Author: kmacy
Date: Thu Dec 11 08:08:28 2008
New Revision: 185921
URL: http://svn.freebsd.org/changeset/base/185921

Log:
  IFC 185817:185918
  merge latest from HEAD

Added:
  projects/arpv2_merge_1/sys/kern/kern_vimage.c
Modified:
  projects/arpv2_merge_1/contrib/pf/   (props changed)
  projects/arpv2_merge_1/lib/libc/stdio/vfprintf.c
  projects/arpv2_merge_1/lib/libc/stdio/vfwprintf.c
  projects/arpv2_merge_1/sys/boot/zfs/zfs.c
  projects/arpv2_merge_1/sys/boot/zfs/zfsimpl.c
  projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_proto.h
  projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_signal.h
  projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscall.h
  projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscalls.c
  projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_sysent.c
  projects/arpv2_merge_1/sys/compat/freebsd32/syscalls.master
  projects/arpv2_merge_1/sys/compat/linprocfs/linprocfs.c
  projects/arpv2_merge_1/sys/conf/files
  projects/arpv2_merge_1/sys/conf/options
  projects/arpv2_merge_1/sys/contrib/pf/net/pf_subr.c
  projects/arpv2_merge_1/sys/dev/ath/ath_hal/ah_eeprom_v14.c   (contents, props changed)
  projects/arpv2_merge_1/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c   (contents, props changed)
  projects/arpv2_merge_1/sys/dev/pccbb/pccbb_pci.c
  projects/arpv2_merge_1/sys/dev/re/if_re.c
  projects/arpv2_merge_1/sys/fs/procfs/procfs_map.c
  projects/arpv2_merge_1/sys/kern/kern_jail.c
  projects/arpv2_merge_1/sys/kern/kern_linker.c
  projects/arpv2_merge_1/sys/kern/kern_mbuf.c
  projects/arpv2_merge_1/sys/kern/subr_prf.c
  projects/arpv2_merge_1/sys/kern/uipc_socket.c
  projects/arpv2_merge_1/sys/kern/vfs_aio.c
  projects/arpv2_merge_1/sys/mips/adm5120/adm5120_machdep.c
  projects/arpv2_merge_1/sys/modules/aio/Makefile
  projects/arpv2_merge_1/sys/net/if.c
  projects/arpv2_merge_1/sys/net/if_bridge.c
  projects/arpv2_merge_1/sys/net/if_ethersubr.c
  projects/arpv2_merge_1/sys/net/if_gif.c
  projects/arpv2_merge_1/sys/net/if_gif.h
  projects/arpv2_merge_1/sys/net/route.c
  projects/arpv2_merge_1/sys/net/rtsock.c
  projects/arpv2_merge_1/sys/net/vnet.h
  projects/arpv2_merge_1/sys/netgraph/netgraph.h
  projects/arpv2_merge_1/sys/netgraph/ng_base.c
  projects/arpv2_merge_1/sys/netgraph/ng_bridge.c
  projects/arpv2_merge_1/sys/netgraph/ng_eiface.c
  projects/arpv2_merge_1/sys/netgraph/ng_iface.c
  projects/arpv2_merge_1/sys/netgraph/ng_ipfw.c
  projects/arpv2_merge_1/sys/netinet/if_ether.c
  projects/arpv2_merge_1/sys/netinet/in_pcb.c
  projects/arpv2_merge_1/sys/netinet/in_proto.c
  projects/arpv2_merge_1/sys/netinet/ip_divert.c
  projects/arpv2_merge_1/sys/netinet/ip_dummynet.c
  projects/arpv2_merge_1/sys/netinet/ip_fw.h
  projects/arpv2_merge_1/sys/netinet/ip_fw2.c
  projects/arpv2_merge_1/sys/netinet/ip_fw_nat.c
  projects/arpv2_merge_1/sys/netinet/ip_fw_pfil.c
  projects/arpv2_merge_1/sys/netinet/ip_input.c
  projects/arpv2_merge_1/sys/netinet/ip_output.c
  projects/arpv2_merge_1/sys/netinet/ip_var.h
  projects/arpv2_merge_1/sys/netinet/libalias/alias_db.c
  projects/arpv2_merge_1/sys/netinet/raw_ip.c
  projects/arpv2_merge_1/sys/netinet/sctp_os_bsd.h
  projects/arpv2_merge_1/sys/netinet/sctp_pcb.c
  projects/arpv2_merge_1/sys/netinet/tcp_sack.c
  projects/arpv2_merge_1/sys/netinet/tcp_subr.c
  projects/arpv2_merge_1/sys/netinet/tcp_syncache.h
  projects/arpv2_merge_1/sys/netinet/tcp_var.h
  projects/arpv2_merge_1/sys/netinet/udp_usrreq.c
  projects/arpv2_merge_1/sys/netinet/vinet.h
  projects/arpv2_merge_1/sys/netinet6/in6_proto.c
  projects/arpv2_merge_1/sys/netinet6/ip6_input.c
  projects/arpv2_merge_1/sys/netinet6/nd6.c
  projects/arpv2_merge_1/sys/netinet6/vinet6.h
  projects/arpv2_merge_1/sys/netipsec/ipsec.c
  projects/arpv2_merge_1/sys/netipsec/vipsec.h
  projects/arpv2_merge_1/sys/nfsserver/nfs_fha.c
  projects/arpv2_merge_1/sys/pci/if_rlreg.h
  projects/arpv2_merge_1/sys/sys/aio.h
  projects/arpv2_merge_1/sys/sys/kernel.h
  projects/arpv2_merge_1/sys/sys/sysctl.h
  projects/arpv2_merge_1/sys/sys/vimage.h
  projects/arpv2_merge_1/usr.bin/fetch/fetch.c
  projects/arpv2_merge_1/usr.sbin/jexec/jexec.c
  projects/arpv2_merge_1/usr.sbin/jls/jls.c

Modified: projects/arpv2_merge_1/lib/libc/stdio/vfprintf.c
==============================================================================
--- projects/arpv2_merge_1/lib/libc/stdio/vfprintf.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/lib/libc/stdio/vfprintf.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -396,12 +396,6 @@ __vfprintf(FILE *fp, const char *fmt0, v
 	char sign;		/* sign prefix (' ', '+', '-', or \0) */
 	char thousands_sep;	/* locale specific thousands separator */
 	const char *grouping;	/* locale specific numeric grouping rules */
-
-	if (__use_xprintf == 0 && getenv("USE_XPRINTF"))
-		__use_xprintf = 1;
-	if (__use_xprintf > 0)
-		return (__xvprintf(fp, fmt0, ap));
-
 #ifndef NO_FLOATING_POINT
 	/*
 	 * We can decompose the printed representation of floating
@@ -568,14 +562,11 @@ __vfprintf(FILE *fp, const char *fmt0, v
 		val = GETARG (int); \
 	}
 
+	if (__use_xprintf == 0 && getenv("USE_XPRINTF"))
+		__use_xprintf = 1;
+	if (__use_xprintf > 0)
+		return (__xvprintf(fp, fmt0, ap));
 
-	thousands_sep = '\0';
-	grouping = NULL;
-	convbuf = NULL;
-#ifndef NO_FLOATING_POINT
-	dtoaresult = NULL;
-	decimal_point = localeconv()->decimal_point;
-#endif
 	/* sorry, fprintf(read_only_file, "") returns EOF, not 0 */
 	if (prepwrite(fp) != 0)
 		return (EOF);
@@ -585,6 +576,9 @@ __vfprintf(FILE *fp, const char *fmt0, v
 	    fp->_file >= 0)
 		return (__sbprintf(fp, fmt0, ap));
 
+	thousands_sep = '\0';
+	grouping = NULL;
+	convbuf = NULL;
 	fmt = (char *)fmt0;
 	argtable = NULL;
 	nextarg = 1;
@@ -593,6 +587,10 @@ __vfprintf(FILE *fp, const char *fmt0, v
 	uio.uio_resid = 0;
 	uio.uio_iovcnt = 0;
 	ret = 0;
+#ifndef NO_FLOATING_POINT
+	dtoaresult = NULL;
+	decimal_point = localeconv()->decimal_point;
+#endif
 
 	/*
 	 * Scan the format for conversions (`%' character).

Modified: projects/arpv2_merge_1/lib/libc/stdio/vfwprintf.c
==============================================================================
--- projects/arpv2_merge_1/lib/libc/stdio/vfwprintf.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/lib/libc/stdio/vfwprintf.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -575,12 +575,6 @@ __vfwprintf(FILE *fp, const wchar_t *fmt
 	}
 
 
-	thousands_sep = '\0';
-	grouping = NULL;
-#ifndef NO_FLOATING_POINT
-	decimal_point = localeconv()->decimal_point;
-#endif
-	convbuf = NULL;
 	/* sorry, fwprintf(read_only_file, L"") returns WEOF, not 0 */
 	if (prepwrite(fp) != 0)
 		return (EOF);
@@ -590,11 +584,17 @@ __vfwprintf(FILE *fp, const wchar_t *fmt
 	    fp->_file >= 0)
 		return (__sbprintf(fp, fmt0, ap));
 
+	thousands_sep = '\0';
+	grouping = NULL;
+	convbuf = NULL;
 	fmt = (wchar_t *)fmt0;
 	argtable = NULL;
 	nextarg = 1;
 	va_copy(orgap, ap);
 	ret = 0;
+#ifndef NO_FLOATING_POINT
+	decimal_point = localeconv()->decimal_point;
+#endif
 
 	/*
 	 * Scan the format for conversions (`%' character).

Modified: projects/arpv2_merge_1/sys/boot/zfs/zfs.c
==============================================================================
--- projects/arpv2_merge_1/sys/boot/zfs/zfs.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/boot/zfs/zfs.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -474,7 +474,6 @@ zfs_dev_open(struct open_file *f, ...)
 	 * the pool.
 	 */
 	unit = dev->d_unit;
-	free(dev);
 	
 	i = 0;
 	STAILQ_FOREACH(spa, &zfs_pools, spa_link) {

Modified: projects/arpv2_merge_1/sys/boot/zfs/zfsimpl.c
==============================================================================
--- projects/arpv2_merge_1/sys/boot/zfs/zfsimpl.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/boot/zfs/zfsimpl.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -623,7 +623,7 @@ vdev_probe(vdev_read_t *read, void *read
 	uint64_t pool_txg, pool_guid;
 	const char *pool_name;
 	const unsigned char *vdevs;
-	int i;
+	int i, rc;
 	char upbuf[1024];
 	const struct uberblock *up;
 
@@ -723,7 +723,9 @@ vdev_probe(vdev_read_t *read, void *read
 			DATA_TYPE_NVLIST, 0, &vdevs)) {
 		return (EIO);
 	}
-	vdev_init_from_nvlist(vdevs, &top_vdev);
+	rc = vdev_init_from_nvlist(vdevs, &top_vdev);
+	if (rc)
+		return (rc);
 
 	/*
 	 * Add the toplevel vdev to the pool if its not already there.

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_proto.h
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_proto.h	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_proto.h	Thu Dec 11 08:08:28 2008	(r185921)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185435 2008-11-29 14:32:14Z bz 
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185878 2008-12-10 20:56:19Z jhb 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_
@@ -215,6 +215,18 @@ struct freebsd32_nanosleep_args {
 	char rqtp_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * rqtp; char rqtp_r_[PADR_(const struct timespec32 *)];
 	char rmtp_l_[PADL_(struct timespec32 *)]; struct timespec32 * rmtp; char rmtp_r_[PADR_(struct timespec32 *)];
 };
+struct freebsd32_aio_read_args {
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
+struct freebsd32_aio_write_args {
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
+struct freebsd32_lio_listio_args {
+	char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+	char acb_list_l_[PADL_(struct aiocb32 *const *)]; struct aiocb32 *const * acb_list; char acb_list_r_[PADR_(struct aiocb32 *const *)];
+	char nent_l_[PADL_(int)]; int nent; char nent_r_[PADR_(int)];
+	char sig_l_[PADL_(struct sigevent *)]; struct sigevent * sig; char sig_r_[PADR_(struct sigevent *)];
+};
 struct freebsd32_lutimes_args {
 	char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
 	char tptr_l_[PADL_(struct timeval32 *)]; struct timeval32 * tptr; char tptr_r_[PADR_(struct timeval32 *)];
@@ -235,6 +247,33 @@ struct freebsd32_modstat_args {
 	char modid_l_[PADL_(int)]; int modid; char modid_r_[PADR_(int)];
 	char stat_l_[PADL_(struct module_stat32 *)]; struct module_stat32 * stat; char stat_r_[PADR_(struct module_stat32 *)];
 };
+struct freebsd32_aio_return_args {
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
+struct freebsd32_aio_suspend_args {
+	char aiocbp_l_[PADL_(struct aiocb32 *const *)]; struct aiocb32 *const * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *const *)];
+	char nent_l_[PADL_(int)]; int nent; char nent_r_[PADR_(int)];
+	char timeout_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * timeout; char timeout_r_[PADR_(const struct timespec32 *)];
+};
+struct freebsd32_aio_cancel_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
+struct freebsd32_aio_error_args {
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
+struct freebsd32_oaio_read_args {
+	char aiocbp_l_[PADL_(struct oaiocb32 *)]; struct oaiocb32 * aiocbp; char aiocbp_r_[PADR_(struct oaiocb32 *)];
+};
+struct freebsd32_oaio_write_args {
+	char aiocbp_l_[PADL_(struct oaiocb32 *)]; struct oaiocb32 * aiocbp; char aiocbp_r_[PADR_(struct oaiocb32 *)];
+};
+struct freebsd32_olio_listio_args {
+	char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+	char acb_list_l_[PADL_(struct oaiocb32 *const *)]; struct oaiocb32 *const * acb_list; char acb_list_r_[PADR_(struct oaiocb32 *const *)];
+	char nent_l_[PADL_(int)]; int nent; char nent_r_[PADR_(int)];
+	char sig_l_[PADL_(struct osigevent32 *)]; struct osigevent32 * sig; char sig_r_[PADR_(struct osigevent32 *)];
+};
 struct freebsd32_jail_args {
 	char jail_l_[PADL_(struct jail32 *)]; struct jail32 * jail; char jail_r_[PADR_(struct jail32 *)];
 };
@@ -247,6 +286,10 @@ struct freebsd32_sigwaitinfo_args {
 	char set_l_[PADL_(const sigset_t *)]; const sigset_t * set; char set_r_[PADR_(const sigset_t *)];
 	char info_l_[PADL_(siginfo_t *)]; siginfo_t * info; char info_r_[PADR_(siginfo_t *)];
 };
+struct freebsd32_aio_waitcomplete_args {
+	char aiocbp_l_[PADL_(struct aiocb32 **)]; struct aiocb32 ** aiocbp; char aiocbp_r_[PADR_(struct aiocb32 **)];
+	char timeout_l_[PADL_(struct timespec32 *)]; struct timespec32 * timeout; char timeout_r_[PADR_(struct timespec32 *)];
+};
 struct freebsd32_kevent_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 	char changelist_l_[PADL_(const struct kevent32 *)]; const struct kevent32 * changelist; char changelist_r_[PADR_(const struct kevent32 *)];
@@ -308,6 +351,10 @@ struct freebsd32_thr_new_args {
 	char param_l_[PADL_(struct thr_param32 *)]; struct thr_param32 * param; char param_r_[PADR_(struct thr_param32 *)];
 	char param_size_l_[PADL_(int)]; int param_size; char param_size_r_[PADR_(int)];
 };
+struct freebsd32_aio_fsync_args {
+	char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
+	char aiocbp_l_[PADL_(struct aiocb32 *)]; struct aiocb32 * aiocbp; char aiocbp_r_[PADR_(struct aiocb32 *)];
+};
 struct freebsd32_pread_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 	char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
@@ -427,13 +474,24 @@ int	freebsd32_clock_gettime(struct threa
 int	freebsd32_clock_settime(struct thread *, struct freebsd32_clock_settime_args *);
 int	freebsd32_clock_getres(struct thread *, struct freebsd32_clock_getres_args *);
 int	freebsd32_nanosleep(struct thread *, struct freebsd32_nanosleep_args *);
+int	freebsd32_aio_read(struct thread *, struct freebsd32_aio_read_args *);
+int	freebsd32_aio_write(struct thread *, struct freebsd32_aio_write_args *);
+int	freebsd32_lio_listio(struct thread *, struct freebsd32_lio_listio_args *);
 int	freebsd32_lutimes(struct thread *, struct freebsd32_lutimes_args *);
 int	freebsd32_preadv(struct thread *, struct freebsd32_preadv_args *);
 int	freebsd32_pwritev(struct thread *, struct freebsd32_pwritev_args *);
 int	freebsd32_modstat(struct thread *, struct freebsd32_modstat_args *);
+int	freebsd32_aio_return(struct thread *, struct freebsd32_aio_return_args *);
+int	freebsd32_aio_suspend(struct thread *, struct freebsd32_aio_suspend_args *);
+int	freebsd32_aio_cancel(struct thread *, struct freebsd32_aio_cancel_args *);
+int	freebsd32_aio_error(struct thread *, struct freebsd32_aio_error_args *);
+int	freebsd32_oaio_read(struct thread *, struct freebsd32_oaio_read_args *);
+int	freebsd32_oaio_write(struct thread *, struct freebsd32_oaio_write_args *);
+int	freebsd32_olio_listio(struct thread *, struct freebsd32_olio_listio_args *);
 int	freebsd32_jail(struct thread *, struct freebsd32_jail_args *);
 int	freebsd32_sigtimedwait(struct thread *, struct freebsd32_sigtimedwait_args *);
 int	freebsd32_sigwaitinfo(struct thread *, struct freebsd32_sigwaitinfo_args *);
+int	freebsd32_aio_waitcomplete(struct thread *, struct freebsd32_aio_waitcomplete_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 *);
@@ -447,6 +505,7 @@ int	freebsd32_umtx_unlock(struct thread 
 int	freebsd32_thr_suspend(struct thread *, struct freebsd32_thr_suspend_args *);
 int	freebsd32_umtx_op(struct thread *, struct freebsd32_umtx_op_args *);
 int	freebsd32_thr_new(struct thread *, struct freebsd32_thr_new_args *);
+int	freebsd32_aio_fsync(struct thread *, struct freebsd32_aio_fsync_args *);
 int	freebsd32_pread(struct thread *, struct freebsd32_pread_args *);
 int	freebsd32_pwrite(struct thread *, struct freebsd32_pwrite_args *);
 int	freebsd32_mmap(struct thread *, struct freebsd32_mmap_args *);
@@ -641,13 +700,24 @@ int	freebsd6_freebsd32_ftruncate(struct 
 #define	FREEBSD32_SYS_AUE_freebsd32_clock_settime	AUE_CLOCK_SETTIME
 #define	FREEBSD32_SYS_AUE_freebsd32_clock_getres	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_nanosleep	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_read	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_write	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_lio_listio	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_lutimes	AUE_LUTIMES
 #define	FREEBSD32_SYS_AUE_freebsd32_preadv	AUE_PREADV
 #define	FREEBSD32_SYS_AUE_freebsd32_pwritev	AUE_PWRITEV
 #define	FREEBSD32_SYS_AUE_freebsd32_modstat	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_return	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_suspend	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_cancel	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_error	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_oaio_read	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_oaio_write	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_olio_listio	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_jail	AUE_JAIL
 #define	FREEBSD32_SYS_AUE_freebsd32_sigtimedwait	AUE_SIGWAIT
 #define	FREEBSD32_SYS_AUE_freebsd32_sigwaitinfo	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_waitcomplete	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
@@ -661,6 +731,7 @@ int	freebsd6_freebsd32_ftruncate(struct 
 #define	FREEBSD32_SYS_AUE_freebsd32_thr_suspend	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_umtx_op	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_thr_new	AUE_NULL
+#define	FREEBSD32_SYS_AUE_freebsd32_aio_fsync	AUE_NULL
 #define	FREEBSD32_SYS_AUE_freebsd32_pread	AUE_PREAD
 #define	FREEBSD32_SYS_AUE_freebsd32_pwrite	AUE_PWRITE
 #define	FREEBSD32_SYS_AUE_freebsd32_mmap	AUE_MMAP

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_signal.h
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_signal.h	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_signal.h	Thu Dec 11 08:08:28 2008	(r185921)
@@ -36,6 +36,9 @@ struct sigaltstack32 {
 };
 
 union sigval32 {
+	int			sival_int;
+	u_int32_t		sival_ptr;
+	/* 6.0 compatibility */
 	int			sigval_int;
 	u_int32_t		sigval_ptr;
 };
@@ -70,6 +73,29 @@ struct siginfo32 {
 	} _reason;
 };
 
+struct osigevent32 {
+	int	sigev_notify;		/* Notification type */
+	union {
+		int	__sigev_signo;	/* Signal number */
+		int	__sigev_notify_kqueue;
+	} __sigev_u;
+	union sigval32 sigev_value;	/* Signal value */
+};
+
+struct sigevent32 {
+	int	sigev_notify;		/* Notification type */
+	int	sigev_signo;		/* Signal number */
+	union sigval32 sigev_value;	/* Signal value */
+	union {
+		__lwpid_t	_threadid;
+		struct {
+			uint32_t _function;
+			uint32_t _attribute;
+		} _sigev_thread;
+		uint32_t __spare__[8];
+	} _sigev_un;
+};
+
 void siginfo_to_siginfo32(siginfo_t *src, struct siginfo32 *dst);
 
 #endif /* !_COMPAT_FREEBSD32_SIGNAL_H_ */

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscall.h
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscall.h	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscall.h	Thu Dec 11 08:08:28 2008	(r185921)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185435 2008-11-29 14:32:14Z bz 
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185878 2008-12-10 20:56:19Z jhb 
  */
 
 #define	FREEBSD32_SYS_syscall	0
@@ -210,6 +210,9 @@
 #define	FREEBSD32_SYS_openbsd_poll	252
 #define	FREEBSD32_SYS_issetugid	253
 #define	FREEBSD32_SYS_lchown	254
+#define	FREEBSD32_SYS_freebsd32_aio_read	255
+#define	FREEBSD32_SYS_freebsd32_aio_write	256
+#define	FREEBSD32_SYS_freebsd32_lio_listio	257
 #define	FREEBSD32_SYS_getdents	272
 #define	FREEBSD32_SYS_lchmod	274
 #define	FREEBSD32_SYS_netbsd_lchown	275
@@ -237,6 +240,13 @@
 #define	FREEBSD32_SYS_setresuid	311
 #define	FREEBSD32_SYS_setresgid	312
 				/* 313 is obsolete signanosleep */
+#define	FREEBSD32_SYS_freebsd32_aio_return	314
+#define	FREEBSD32_SYS_freebsd32_aio_suspend	315
+#define	FREEBSD32_SYS_freebsd32_aio_cancel	316
+#define	FREEBSD32_SYS_freebsd32_aio_error	317
+#define	FREEBSD32_SYS_freebsd32_oaio_read	318
+#define	FREEBSD32_SYS_freebsd32_oaio_write	319
+#define	FREEBSD32_SYS_freebsd32_olio_listio	320
 #define	FREEBSD32_SYS_yield	321
 				/* 322 is obsolete thr_sleep */
 				/* 323 is obsolete thr_wakeup */
@@ -274,6 +284,7 @@
 #define	FREEBSD32_SYS_extattr_set_file	356
 #define	FREEBSD32_SYS_extattr_get_file	357
 #define	FREEBSD32_SYS_extattr_delete_file	358
+#define	FREEBSD32_SYS_freebsd32_aio_waitcomplete	359
 #define	FREEBSD32_SYS_getresuid	360
 #define	FREEBSD32_SYS_getresgid	361
 #define	FREEBSD32_SYS_kqueue	362
@@ -321,6 +332,7 @@
 #define	FREEBSD32_SYS_sigqueue	456
 #define	FREEBSD32_SYS_abort2	463
 #define	FREEBSD32_SYS_thr_set_name	464
+#define	FREEBSD32_SYS_freebsd32_aio_fsync	465
 #define	FREEBSD32_SYS_rtprio_thread	466
 #define	FREEBSD32_SYS_sctp_peeloff	471
 #define	FREEBSD32_SYS_sctp_generic_sendmsg	472

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscalls.c
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscalls.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_syscalls.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185435 2008-11-29 14:32:14Z bz 
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185878 2008-12-10 20:56:19Z jhb 
  */
 
 const char *freebsd32_syscallnames[] = {
@@ -262,9 +262,9 @@ const char *freebsd32_syscallnames[] = {
 	"openbsd_poll",			/* 252 = openbsd_poll */
 	"issetugid",			/* 253 = issetugid */
 	"lchown",			/* 254 = lchown */
-	"#255",			/* 255 = nosys */
-	"#256",			/* 256 = nosys */
-	"#257",			/* 257 = nosys */
+	"freebsd32_aio_read",			/* 255 = freebsd32_aio_read */
+	"freebsd32_aio_write",			/* 256 = freebsd32_aio_write */
+	"freebsd32_lio_listio",			/* 257 = freebsd32_lio_listio */
 	"#258",			/* 258 = nosys */
 	"#259",			/* 259 = nosys */
 	"#260",			/* 260 = nosys */
@@ -321,13 +321,13 @@ const char *freebsd32_syscallnames[] = {
 	"setresuid",			/* 311 = setresuid */
 	"setresgid",			/* 312 = setresgid */
 	"obs_signanosleep",			/* 313 = obsolete signanosleep */
-	"#314",			/* 314 = aio_return */
-	"#315",			/* 315 = aio_suspend */
-	"#316",			/* 316 = aio_cancel */
-	"#317",			/* 317 = aio_error */
-	"#318",			/* 318 = aio_read */
-	"#319",			/* 319 = aio_write */
-	"#320",			/* 320 = lio_listio */
+	"freebsd32_aio_return",			/* 314 = freebsd32_aio_return */
+	"freebsd32_aio_suspend",			/* 315 = freebsd32_aio_suspend */
+	"freebsd32_aio_cancel",			/* 316 = freebsd32_aio_cancel */
+	"freebsd32_aio_error",			/* 317 = freebsd32_aio_error */
+	"freebsd32_oaio_read",			/* 318 = freebsd32_oaio_read */
+	"freebsd32_oaio_write",			/* 319 = freebsd32_oaio_write */
+	"freebsd32_olio_listio",			/* 320 = freebsd32_olio_listio */
 	"yield",			/* 321 = yield */
 	"obs_thr_sleep",			/* 322 = obsolete thr_sleep */
 	"obs_thr_wakeup",			/* 323 = obsolete thr_wakeup */
@@ -366,7 +366,7 @@ const char *freebsd32_syscallnames[] = {
 	"extattr_set_file",			/* 356 = extattr_set_file */
 	"extattr_get_file",			/* 357 = extattr_get_file */
 	"extattr_delete_file",			/* 358 = extattr_delete_file */
-	"#359",			/* 359 = aio_waitcomplete */
+	"freebsd32_aio_waitcomplete",			/* 359 = freebsd32_aio_waitcomplete */
 	"getresuid",			/* 360 = getresuid */
 	"getresgid",			/* 361 = getresgid */
 	"kqueue",			/* 362 = kqueue */
@@ -472,7 +472,7 @@ const char *freebsd32_syscallnames[] = {
 	"#462",			/* 462 = kmq_unlink */
 	"abort2",			/* 463 = abort2 */
 	"thr_set_name",			/* 464 = thr_set_name */
-	"#465",			/* 465 = aio_fsync */
+	"freebsd32_aio_fsync",			/* 465 = freebsd32_aio_fsync */
 	"rtprio_thread",			/* 466 = rtprio_thread */
 	"#467",			/* 467 = nosys */
 	"#468",			/* 468 = nosys */

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_sysent.c
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_sysent.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/freebsd32_sysent.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185435 2008-11-29 14:32:14Z bz 
+ * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 185878 2008-12-10 20:56:19Z jhb 
  */
 
 #include "opt_compat.h"
@@ -293,9 +293,9 @@ struct sysent freebsd32_sysent[] = {
 	{ AS(openbsd_poll_args), (sy_call_t *)openbsd_poll, AUE_POLL, NULL, 0, 0 },	/* 252 = openbsd_poll */
 	{ 0, (sy_call_t *)issetugid, AUE_ISSETUGID, NULL, 0, 0 },	/* 253 = issetugid */
 	{ AS(lchown_args), (sy_call_t *)lchown, AUE_LCHOWN, NULL, 0, 0 },	/* 254 = lchown */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 255 = nosys */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 256 = nosys */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 257 = nosys */
+	{ AS(freebsd32_aio_read_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 255 = freebsd32_aio_read */
+	{ AS(freebsd32_aio_write_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 256 = freebsd32_aio_write */
+	{ AS(freebsd32_lio_listio_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 257 = freebsd32_lio_listio */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 258 = nosys */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 259 = nosys */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 260 = nosys */
@@ -352,13 +352,13 @@ struct sysent freebsd32_sysent[] = {
 	{ AS(setresuid_args), (sy_call_t *)setresuid, AUE_SETRESUID, NULL, 0, 0 },	/* 311 = setresuid */
 	{ AS(setresgid_args), (sy_call_t *)setresgid, AUE_SETRESGID, NULL, 0, 0 },	/* 312 = setresgid */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 313 = obsolete signanosleep */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 314 = aio_return */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 315 = aio_suspend */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 316 = aio_cancel */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 317 = aio_error */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 318 = aio_read */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 319 = aio_write */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 320 = lio_listio */
+	{ AS(freebsd32_aio_return_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 314 = freebsd32_aio_return */
+	{ AS(freebsd32_aio_suspend_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 315 = freebsd32_aio_suspend */
+	{ AS(freebsd32_aio_cancel_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 316 = freebsd32_aio_cancel */
+	{ AS(freebsd32_aio_error_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 317 = freebsd32_aio_error */
+	{ AS(freebsd32_oaio_read_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 318 = freebsd32_oaio_read */
+	{ AS(freebsd32_oaio_write_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 319 = freebsd32_oaio_write */
+	{ AS(freebsd32_olio_listio_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 320 = freebsd32_olio_listio */
 	{ 0, (sy_call_t *)yield, AUE_NULL, NULL, 0, 0 },		/* 321 = yield */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 322 = obsolete thr_sleep */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 323 = obsolete thr_wakeup */
@@ -397,7 +397,7 @@ struct sysent freebsd32_sysent[] = {
 	{ AS(extattr_set_file_args), (sy_call_t *)extattr_set_file, AUE_EXTATTR_SET_FILE, NULL, 0, 0 },	/* 356 = extattr_set_file */
 	{ AS(extattr_get_file_args), (sy_call_t *)extattr_get_file, AUE_EXTATTR_GET_FILE, NULL, 0, 0 },	/* 357 = extattr_get_file */
 	{ AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file, AUE_EXTATTR_DELETE_FILE, NULL, 0, 0 },	/* 358 = extattr_delete_file */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 359 = aio_waitcomplete */
+	{ AS(freebsd32_aio_waitcomplete_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 359 = freebsd32_aio_waitcomplete */
 	{ AS(getresuid_args), (sy_call_t *)getresuid, AUE_GETRESUID, NULL, 0, 0 },	/* 360 = getresuid */
 	{ AS(getresgid_args), (sy_call_t *)getresgid, AUE_GETRESGID, NULL, 0, 0 },	/* 361 = getresgid */
 	{ 0, (sy_call_t *)kqueue, AUE_KQUEUE, NULL, 0, 0 },		/* 362 = kqueue */
@@ -503,7 +503,7 @@ struct sysent freebsd32_sysent[] = {
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 462 = kmq_unlink */
 	{ AS(abort2_args), (sy_call_t *)abort2, AUE_NULL, NULL, 0, 0 },	/* 463 = abort2 */
 	{ AS(thr_set_name_args), (sy_call_t *)thr_set_name, AUE_NULL, NULL, 0, 0 },	/* 464 = thr_set_name */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 465 = aio_fsync */
+	{ AS(freebsd32_aio_fsync_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0 },	/* 465 = freebsd32_aio_fsync */
 	{ AS(rtprio_thread_args), (sy_call_t *)rtprio_thread, AUE_RTPRIO, NULL, 0, 0 },	/* 466 = rtprio_thread */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 467 = nosys */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },			/* 468 = nosys */

Modified: projects/arpv2_merge_1/sys/compat/freebsd32/syscalls.master
==============================================================================
--- projects/arpv2_merge_1/sys/compat/freebsd32/syscalls.master	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/freebsd32/syscalls.master	Thu Dec 11 08:08:28 2008	(r185921)
@@ -454,9 +454,13 @@
 				    u_int nfds, int timeout); }
 253	AUE_ISSETUGID	NOPROTO	{ int issetugid(void); }
 254	AUE_LCHOWN	NOPROTO	{ int lchown(char *path, int uid, int gid); }
-255	AUE_NULL	UNIMPL	nosys
-256	AUE_NULL	UNIMPL	nosys
-257	AUE_NULL	UNIMPL	nosys
+255	AUE_NULL	NOSTD	{ int freebsd32_aio_read( \
+				    struct aiocb32 *aiocbp); }
+256	AUE_NULL	NOSTD	{ int freebsd32_aio_write( \
+				    struct aiocb32 *aiocbp); }
+257	AUE_NULL	NOSTD	{ int freebsd32_lio_listio(int mode, \
+				    struct aiocb32 * const *acb_list, \
+				    int nent, struct sigevent *sig); }
 258	AUE_NULL	UNIMPL	nosys
 259	AUE_NULL	UNIMPL	nosys
 260	AUE_NULL	UNIMPL	nosys
@@ -535,13 +539,22 @@
 312	AUE_SETRESGID	NOPROTO	{ int setresgid(gid_t rgid, gid_t egid, \
 				    gid_t sgid); }
 313	AUE_NULL	OBSOL	signanosleep
-314	AUE_NULL	UNIMPL	aio_return
-315	AUE_NULL	UNIMPL	aio_suspend
-316	AUE_NULL	UNIMPL	aio_cancel
-317	AUE_NULL	UNIMPL	aio_error
-318	AUE_NULL	UNIMPL	aio_read
-319	AUE_NULL	UNIMPL	aio_write
-320	AUE_NULL	UNIMPL	lio_listio
+314	AUE_NULL	NOSTD	{ int freebsd32_aio_return( \
+				    struct aiocb32 *aiocbp); }
+315	AUE_NULL	NOSTD	{ int freebsd32_aio_suspend( \
+				    struct aiocb32 * const * aiocbp, int nent, \
+				    const struct timespec32 *timeout); }
+316	AUE_NULL	NOSTD	{ int freebsd32_aio_cancel(int fd, \
+				    struct aiocb32 *aiocbp); }
+317	AUE_NULL	NOSTD	{ int freebsd32_aio_error( \
+				    struct aiocb32 *aiocbp); }
+318	AUE_NULL	NOSTD	{ int freebsd32_oaio_read( \
+				    struct oaiocb32 *aiocbp); }
+319	AUE_NULL	NOSTD	{ int freebsd32_oaio_write( \
+				    struct oaiocb32 *aiocbp); }
+320	AUE_NULL	NOSTD	{ int freebsd32_olio_listio(int mode, \
+				    struct oaiocb32 * const *acb_list, \
+				    int nent, struct osigevent32 *sig); }
 321	AUE_NULL	NOPROTO	{ int yield(void); }
 322	AUE_NULL	OBSOL	thr_sleep
 323	AUE_NULL	OBSOL	thr_wakeup
@@ -618,7 +631,9 @@
 358	AUE_EXTATTR_DELETE_FILE	NOPROTO	{ int extattr_delete_file( \
 				    const char *path, int attrnamespace, \
 				    const char *attrname); }
-359	AUE_NULL	UNIMPL	aio_waitcomplete
+359	AUE_NULL	NOSTD	{ int freebsd32_aio_waitcomplete( \
+				    struct aiocb32 **aiocbp, \
+				    struct timespec32 *timeout); }
 360	AUE_GETRESUID	NOPROTO	{ int getresuid(uid_t *ruid, uid_t *euid, \
 				    uid_t *suid); }
 361	AUE_GETRESGID	NOPROTO	{ int getresgid(gid_t *rgid, gid_t *egid, \
@@ -766,7 +781,8 @@
 462	AUE_NULL	UNIMPL	kmq_unlink
 463	AUE_NULL	NOPROTO	{ int abort2(const char *why, int nargs, void **args); }
 464	AUE_NULL 	NOPROTO	{ int thr_set_name(long id, const char *name); }
-465	AUE_NULL	UNIMPL	aio_fsync
+465	AUE_NULL	NOSTD	{ int freebsd32_aio_fsync(int op, \
+				    struct aiocb32 *aiocbp); }
 466	AUE_RTPRIO	NOPROTO	{ int rtprio_thread(int function, \
 				    lwpid_t lwpid, struct rtprio *rtp); }
 467	AUE_NULL	UNIMPL	nosys

Modified: projects/arpv2_merge_1/sys/compat/linprocfs/linprocfs.c
==============================================================================
--- projects/arpv2_merge_1/sys/compat/linprocfs/linprocfs.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/compat/linprocfs/linprocfs.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -969,11 +969,11 @@ linprocfs_doprocmaps(PFS_FILL_ARGS)
 		    );
 		if (freename)
 			free(freename, M_TEMP);
+		vm_map_lock_read(map);
 		if (error == -1) {
 			error = 0;
 			break;
 		}
-		vm_map_lock_read(map);
 		if (last_timestamp + 1 != map->timestamp) {
 			/*
 			 * Look again for the entry because the map was

Modified: projects/arpv2_merge_1/sys/conf/files
==============================================================================
--- projects/arpv2_merge_1/sys/conf/files	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/conf/files	Thu Dec 11 08:08:28 2008	(r185921)
@@ -1953,6 +1953,7 @@ kern/kern_timeout.c		standard
 kern/kern_umtx.c		standard
 kern/kern_uuid.c		standard
 kern/kern_xxx.c			standard
+kern/kern_vimage.c		standard
 kern/link_elf.c			standard
 kern/linker_if.m		standard
 kern/md4c.c			optional netsmb

Modified: projects/arpv2_merge_1/sys/conf/options
==============================================================================
--- projects/arpv2_merge_1/sys/conf/options	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/conf/options	Thu Dec 11 08:08:28 2008	(r185921)
@@ -415,6 +415,7 @@ TCPDEBUG
 TCP_OFFLOAD_DISABLE	opt_inet.h #Disable code to dispatch tcp offloading
 TCP_SIGNATURE		opt_inet.h
 VLAN_ARRAY		opt_vlan.h
+VIMAGE_GLOBALS		opt_global.h
 XBONEHACK
 
 #

Modified: projects/arpv2_merge_1/sys/contrib/pf/net/pf_subr.c
==============================================================================
--- projects/arpv2_merge_1/sys/contrib/pf/net/pf_subr.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/contrib/pf/net/pf_subr.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -124,15 +124,14 @@ static MD5_CTX isn_ctx;
 u_int32_t
 pf_new_isn(struct pf_state *s)
 {
-	INIT_VNET_INET(curvnet);
 	u_int32_t md5_buffer[4];
 	u_int32_t new_isn;
 	struct pf_state_host *src, *dst;
 
 	/* Seed if this is the first use, reseed if requested. */
-	if (V_isn_last_reseed == 0) {
-		read_random(&V_isn_secret, sizeof(V_isn_secret));
-		V_isn_last_reseed = ticks;
+	if (isn_last_reseed == 0) {
+		read_random(&isn_secret, sizeof(isn_secret));
+		isn_last_reseed = ticks;
 	}
 
 	if (s->direction == PF_IN) {
@@ -144,28 +143,28 @@ pf_new_isn(struct pf_state *s)
 	}
 
 	/* Compute the md5 hash and return the ISN. */
-	MD5Init(&V_isn_ctx);
-	MD5Update(&V_isn_ctx, (u_char *) &dst->port, sizeof(u_short));
-	MD5Update(&V_isn_ctx, (u_char *) &src->port, sizeof(u_short));
+	MD5Init(&isn_ctx);
+	MD5Update(&isn_ctx, (u_char *) &dst->port, sizeof(u_short));
+	MD5Update(&isn_ctx, (u_char *) &src->port, sizeof(u_short));
 #ifdef INET6
 	if (s->af == AF_INET6) {
-		MD5Update(&V_isn_ctx, (u_char *) &dst->addr,
+		MD5Update(&isn_ctx, (u_char *) &dst->addr,
 			  sizeof(struct in6_addr));
-		MD5Update(&V_isn_ctx, (u_char *) &src->addr,
+		MD5Update(&isn_ctx, (u_char *) &src->addr,
 			  sizeof(struct in6_addr));
 	} else
 #endif
 	{
-		MD5Update(&V_isn_ctx, (u_char *) &dst->addr,
+		MD5Update(&isn_ctx, (u_char *) &dst->addr,
 			  sizeof(struct in_addr));
-		MD5Update(&V_isn_ctx, (u_char *) &src->addr,
+		MD5Update(&isn_ctx, (u_char *) &src->addr,
 			  sizeof(struct in_addr));
 	}
-	MD5Update(&V_isn_ctx, (u_char *) &V_isn_secret, sizeof(V_isn_secret));
-	MD5Final((u_char *) &md5_buffer, &V_isn_ctx);
+	MD5Update(&isn_ctx, (u_char *) &isn_secret, sizeof(isn_secret));
+	MD5Final((u_char *) &md5_buffer, &isn_ctx);
 	new_isn = (tcp_seq) md5_buffer[0];
-	V_isn_offset += ISN_STATIC_INCREMENT +
+	isn_offset += ISN_STATIC_INCREMENT +
 		(arc4random() & ISN_RANDOM_INCREMENT);
-	new_isn += V_isn_offset;
+	new_isn += isn_offset;
 	return (new_isn);
 }

Modified: projects/arpv2_merge_1/sys/dev/ath/ath_hal/ah_eeprom_v14.c
==============================================================================
--- projects/arpv2_merge_1/sys/dev/ath/ath_hal/ah_eeprom_v14.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/dev/ath/ath_hal/ah_eeprom_v14.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -14,7 +14,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
- * $Id: ah_eeprom_v14.c,v 1.4 2008/11/10 19:04:26 sam Exp $
+ * $FreeBSD$
  */
 #include "opt_ah.h"
 
@@ -54,6 +54,7 @@ v14EepromGet(struct ath_hal *ah, int par
 			    __func__, ath_hal_ether_sprintf(macaddr));
 			return HAL_EEBADMAC;
 		}
+		return HAL_OK;
         case AR_EEP_REGDMN_0:
 		return pBase->regDmn[0];
         case AR_EEP_REGDMN_1:

Modified: projects/arpv2_merge_1/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
==============================================================================
--- projects/arpv2_merge_1/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -14,7 +14,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
- * $Id: ar5212_misc.c,v 1.12 2008/11/27 22:30:00 sam Exp $
+ * $FreeBSD$
  */
 #include "opt_ah.h"
 
@@ -803,6 +803,7 @@ ar5212GetCapability(struct ath_hal *ah, 
 			return (ahp->ah_staId1Defaults &
 			    AR_STA_ID1_CRPT_MIC_ENABLE) ?  HAL_OK : HAL_ENXIO;
 		}
+		return HAL_EINVAL;
 	case HAL_CAP_TKIP_SPLIT:	/* hardware TKIP uses split keys */
 		switch (capability) {
 		case 0:			/* hardware capability */

Modified: projects/arpv2_merge_1/sys/dev/pccbb/pccbb_pci.c
==============================================================================
--- projects/arpv2_merge_1/sys/dev/pccbb/pccbb_pci.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/dev/pccbb/pccbb_pci.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -682,40 +682,67 @@ cbb_pci_shutdown(device_t brdev)
 	return (0);
 }
 
-#define DELTA (CBB_SOCKET_MASK_CD)
 static int
 cbb_pci_filt(void *arg)
 {
 	struct cbb_softc *sc = arg;
 	uint32_t sockevent;
+	uint8_t csc;
 	int retval = FILTER_STRAY;
 
 	/*
-	 * Read the socket event.  Sometimes, the theory goes, the PCI
-	 * bus is so loaded that it cannot satisfy the read request, so
-	 * we get garbage back from the following read.  We have to filter
-	 * out the garbage so that we don't spontaneously reset the card
-	 * under high load.  PCI isn't supposed to act like this.  No doubt
-	 * this is a bug in the PCI bridge chipset (or cbb brige) that's being
-	 * used in certain amd64 laptops today.  Work around the issue by
-	 * assuming that any bits we don't know about being set means that
-	 * we got garbage.
+	 * Some chips also require us to read the old ExCA registe for card
+	 * status change when we route CSC vis PCI.  This isn't supposed to be
+	 * required, but it clears the interrupt state on some chipsets.
+	 * Maybe there's a setting that would obviate its need.  Maybe we
+	 * should test the status bits and deal with them, but so far we've
+	 * not found any machines that don't also give us the socket status
+	 * indication above.
+	 *
+	 * This call used to be unconditional.  However, further research
+	 * suggests that we hit this condition when the card READY interrupt
+	 * fired.  So now we only read it for 16-bit cards, and we only claim
+	 * the interrupt if READY is set.  If this still causes problems, then
+	 * the next step would be to read this if we have a 16-bit card *OR*
+	 * we have no card.  We treat the READY signal as if it were the power
+	 * completion signal.  Some bridges may double signal things here, bit
+	 * signalling twice should be OK since we only sleep on the powerintr
+	 * in one place and a double wakeup would be benign there.
+	 */
+	if (sc->flags & CBB_16BIT_CARD) {
+		csc = exca_getb(&sc->exca[0], EXCA_CSC);
+		if (csc & EXCA_CSC_READY) {
+			atomic_add_int(&sc->powerintr, 1);
+			wakeup((void *)&sc->powerintr);
+			retval = FILTER_HANDLED;
+		}
+	}
+
+	/*
+	 * Read the socket event.  Sometimes, the theory goes, the PCI bus is
+	 * so loaded that it cannot satisfy the read request, so we get
+	 * garbage back from the following read.  We have to filter out the
+	 * garbage so that we don't spontaneously reset the card under high
+	 * load.  PCI isn't supposed to act like this.  No doubt this is a bug
+	 * in the PCI bridge chipset (or cbb brige) that's being used in
+	 * certain amd64 laptops today.  Work around the issue by assuming
+	 * that any bits we don't know about being set means that we got
+	 * garbage.
 	 */
 	sockevent = cbb_get(sc, CBB_SOCKET_EVENT);
 	if (sockevent != 0 && (sockevent & ~CBB_SOCKET_EVENT_VALID_MASK) == 0) {
 		/*
-		 * If anything has happened to the socket, we assume that
-		 * the card is no longer OK, and we shouldn't call its
-		 * ISR.  We set cardok as soon as we've attached the
-		 * card.  This helps in a noisy eject, which happens
-		 * all too often when users are ejecting their PC Cards.
+		 * If anything has happened to the socket, we assume that the
+		 * card is no longer OK, and we shouldn't call its ISR.  We
+		 * set cardok as soon as we've attached the card.  This helps
+		 * in a noisy eject, which happens all too often when users
+		 * are ejecting their PC Cards.
 		 *
-		 * We use this method in preference to checking to see if
-		 * the card is still there because the check suffers from
-		 * a race condition in the bouncing case.  Prior versions
-		 * of the pccard software used a similar trick and achieved
-		 * excellent results.
+		 * We use this method in preference to checking to see if the
+		 * card is still there because the check suffers from a race
+		 * condition in the bouncing case.
 		 */
+#define DELTA (CBB_SOCKET_MASK_CD)
 		if (sockevent & DELTA) {
 			cbb_clrb(sc, CBB_SOCKET_MASK, DELTA);
 			cbb_set(sc, CBB_SOCKET_EVENT, DELTA);
@@ -723,9 +750,11 @@ cbb_pci_filt(void *arg)
 			cbb_disable_func_intr(sc);
 			wakeup(&sc->intrhand);
 		}
+#undef DELTA
+
 		/*
-		 * If we get a power interrupt, wakeup anybody that might
-		 * be waiting for one.
+		 * Wakeup anybody waiting for a power interrupt.  We have to
+		 * use atomic_add_int for wakups on other cores.
 		 */
 		if (sockevent & CBB_SOCKET_EVENT_POWER) {
 			cbb_clrb(sc, CBB_SOCKET_MASK, CBB_SOCKET_EVENT_POWER);
@@ -733,21 +762,15 @@ cbb_pci_filt(void *arg)
 			atomic_add_int(&sc->powerintr, 1);
 			wakeup((void *)&sc->powerintr);
 		}
+
+		/*
+		 * Status change interrupts aren't presently used in the
+		 * rest of the driver.  For now, just ACK them.
+		 */
+		if (sockevent & CBB_SOCKET_EVENT_CSTS)
+			cbb_set(sc, CBB_SOCKET_EVENT, CBB_SOCKET_EVENT_CSTS);
 		retval = FILTER_HANDLED;
 	}
-	/*
-	 * Some chips also require us to read the old ExCA registe for
-	 * card status change when we route CSC vis PCI.  This isn't supposed
-	 * to be required, but it clears the interrupt state on some chipsets.
-	 * Maybe there's a setting that would obviate its need.  Maybe we
-	 * should test the status bits and deal with them, but so far we've
-	 * not found any machines that don't also give us the socket status
-	 * indication above.
-	 *
-	 * We have to call this unconditionally because some bridges deliver
-	 * the event independent of the CBB_SOCKET_EVENT_CD above.
-	 */
-	exca_getb(&sc->exca[0], EXCA_CSC);
 	return retval;
 }
 

Modified: projects/arpv2_merge_1/sys/dev/re/if_re.c
==============================================================================
--- projects/arpv2_merge_1/sys/dev/re/if_re.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/dev/re/if_re.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -419,10 +419,10 @@ re_gmii_readreg(device_t dev, int phy, i
 	CSR_WRITE_4(sc, RL_PHYAR, reg << 16);
 
 	for (i = 0; i < RL_TIMEOUT; i++) {
-		DELAY(30);
 		rval = CSR_READ_4(sc, RL_PHYAR);
 		if (rval & RL_PHYAR_BUSY)
 			break;
+		DELAY(100);
 	}
 
 	if (i == RL_TIMEOUT) {
@@ -446,10 +446,10 @@ re_gmii_writereg(device_t dev, int phy, 
 	    (data & RL_PHYAR_PHYDATA) | RL_PHYAR_BUSY);
 
 	for (i = 0; i < RL_TIMEOUT; i++) {
-		DELAY(30);
 		rval = CSR_READ_4(sc, RL_PHYAR);
 		if (!(rval & RL_PHYAR_BUSY))
 			break;
+		DELAY(100);
 	}
 
 	if (i == RL_TIMEOUT) {
@@ -700,7 +700,12 @@ re_reset(struct rl_softc *sc)
 	if (i == RL_TIMEOUT)
 		device_printf(sc->rl_dev, "reset never completed!\n");
 
-	CSR_WRITE_1(sc, 0x82, 1);
+	if ((sc->rl_flags & RL_FLAG_PHY8169) != 0)
+		CSR_WRITE_1(sc, 0x82, 1);
+	if ((sc->rl_flags & RL_FLAG_PHY8110S) != 0) {
+		CSR_WRITE_1(sc, 0x82, 1);
+		re_gmii_writereg(sc->rl_dev, 1, 0x0B, 0);
+	}
 }
 
 #ifdef RE_DIAG
@@ -756,7 +761,6 @@ re_diag(struct rl_softc *sc)
 
 	ifp->if_flags |= IFF_PROMISC;
 	sc->rl_testmode = 1;
-	re_reset(sc);
 	re_init_locked(sc);
 	sc->rl_flags |= RL_FLAG_LINK;
 	if (sc->rl_type == RL_8169)
@@ -1236,6 +1240,9 @@ re_attach(device_t dev)
 	case RL_HWREV_8139CPLUS:
 		sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_FASTETHER;
 		break;
+	case RL_HWREV_8110S:
+		sc->rl_flags |= RL_FLAG_PHY8110S;
+		break;
 	case RL_HWREV_8100E:
 	case RL_HWREV_8101E:
 		sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_INVMAR |
@@ -1245,10 +1252,12 @@ re_attach(device_t dev)
 	case RL_HWREV_8102EL:
 		sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_INVMAR |
 		    RL_FLAG_PHYWAKE | RL_FLAG_PAR | RL_FLAG_DESCV2 |
-		    RL_FLAG_MACSTAT | RL_FLAG_FASTETHER;
+		    RL_FLAG_MACSTAT | RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP;
 		break;
 	case RL_HWREV_8168_SPIN1:
 	case RL_HWREV_8168_SPIN2:
+		sc->rl_flags |= RL_FLAG_WOLRXENB;
+		/* FALLTHROUGH */
 	case RL_HWREV_8168_SPIN3:
 		sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
 		    RL_FLAG_MACSTAT;
@@ -1258,7 +1267,8 @@ re_attach(device_t dev)
 	case RL_HWREV_8168CP:
 	case RL_HWREV_8168D:
 		sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
-		    RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT;
+		    RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
+		    RL_FLAG_CMDSTOP;
 		/*
 		 * These controllers support jumbo frame but it seems
 		 * that enabling it requires touching additional magic
@@ -1271,10 +1281,14 @@ re_attach(device_t dev)
 		 */
 		sc->rl_flags |= RL_FLAG_NOJUMBO;
 		break;
+	case RL_HWREV_8169:
+	case RL_HWREV_8169S:
+		sc->rl_flags |= RL_FLAG_PHY8169;
+		break;
 	case RL_HWREV_8169_8110SB:
 	case RL_HWREV_8169_8110SC:
 	case RL_HWREV_8169_8110SBL:
-		sc->rl_flags |= RL_FLAG_PHYWAKE;
+		sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHY8169;
 		break;
 	default:
 		break;
@@ -2091,10 +2105,8 @@ re_poll_locked(struct ifnet *ifp, enum p
 		 * XXX check behaviour on receiver stalls.
 		 */
 
-		if (status & RL_ISR_SYSTEM_ERR) {
-			re_reset(sc);
+		if (status & RL_ISR_SYSTEM_ERR)
 			re_init_locked(sc);
-		}
 	}
 }
 #endif /* DEVICE_POLLING */
@@ -2158,10 +2170,8 @@ re_int_task(void *arg, int npending)
 	    RL_ISR_TX_ERR|RL_ISR_TX_DESC_UNAVAIL))
 		re_txeof(sc);
 
-	if (status & RL_ISR_SYSTEM_ERR) {
-		re_reset(sc);
+	if (status & RL_ISR_SYSTEM_ERR)
 		re_init_locked(sc);
-	}
 
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
 		taskqueue_enqueue_fast(taskqueue_fast, &sc->rl_txtask);
@@ -2482,6 +2492,9 @@ re_init_locked(struct rl_softc *sc)
 	 */
 	re_stop(sc);
 
+	/* Put controller into known state. */
+	re_reset(sc);
+
 	/*
 	 * Enable C+ RX and TX mode, as well as VLAN stripping and
 	 * RX checksum offload. We must configure the C+ register
@@ -2870,7 +2883,12 @@ re_stop(struct rl_softc *sc)
 	callout_stop(&sc->rl_stat_callout);
 	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
 
-	CSR_WRITE_1(sc, RL_COMMAND, 0x00);
+	if ((sc->rl_flags & RL_FLAG_CMDSTOP) != 0)
+		CSR_WRITE_1(sc, RL_COMMAND, RL_CMD_STOPREQ | RL_CMD_TX_ENB |
+		    RL_CMD_RX_ENB);
+	else
+		CSR_WRITE_1(sc, RL_COMMAND, 0x00);
+	DELAY(1000);
 	CSR_WRITE_2(sc, RL_IMR, 0x0000);
 	CSR_WRITE_2(sc, RL_ISR, 0xFFFF);
 
@@ -3000,6 +3018,9 @@ re_setwol(struct rl_softc *sc)
 		return;
 
 	ifp = sc->rl_ifp;
+	if ((ifp->if_capenable & IFCAP_WOL) != 0 &&
+	    (sc->rl_flags & RL_FLAG_WOLRXENB) != 0)
+		CSR_WRITE_1(sc, RL_COMMAND, RL_CMD_RX_ENB);
 	/* Enable config register write. */
 	CSR_WRITE_1(sc, RL_EECMD, RL_EE_MODE);
 

Modified: projects/arpv2_merge_1/sys/fs/procfs/procfs_map.c
==============================================================================
--- projects/arpv2_merge_1/sys/fs/procfs/procfs_map.c	Thu Dec 11 07:51:09 2008	(r185920)
+++ projects/arpv2_merge_1/sys/fs/procfs/procfs_map.c	Thu Dec 11 08:08:28 2008	(r185921)
@@ -219,12 +219,11 @@ procfs_doprocmap(PFS_FILL_ARGS)
 
 		if (freepath != NULL)
 			free(freepath, M_TEMP);
-
+		vm_map_lock_read(map);
 		if (error == -1) {
 			error = 0;
 			break;
 		}
-		vm_map_lock_read(map);
 		if (last_timestamp + 1 != map->timestamp) {
 			/*
 			 * Look again for the entry because the map was

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


More information about the svn-src-projects mailing list