Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Nov 2012 17:34:17 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r243653 - in projects/counters: . cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/ztest contrib/libc++/include contrib/sendmail/src etc ...
Message-ID:  <201211281734.qASHYHwY097942@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Wed Nov 28 17:34:17 2012
New Revision: 243653
URL: http://svnweb.freebsd.org/changeset/base/243653

Log:
  Merge r243428 through r243651 from head.

Added:
  projects/counters/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
     - copied unchanged from r243651, head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
  projects/counters/sys/arm/conf/Makefile
     - copied unchanged from r243651, head/sys/arm/conf/Makefile
  projects/counters/sys/arm/conf/NOTES
     - copied unchanged from r243651, head/sys/arm/conf/NOTES
  projects/counters/tools/tools/ath/athalq/ar5416_ds_tdma.c
     - copied unchanged from r243651, head/tools/tools/ath/athalq/ar5416_ds_tdma.c
Modified:
  projects/counters/UPDATING
  projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8
  projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool.8
  projects/counters/cddl/contrib/opensolaris/cmd/ztest/ztest.c
  projects/counters/contrib/libc++/include/__config
  projects/counters/contrib/libc++/include/cstdlib
  projects/counters/contrib/libc++/include/cwchar
  projects/counters/contrib/sendmail/src/sasl.c
  projects/counters/etc/newsyslog.conf
  projects/counters/lib/libc/sys/getpeername.2
  projects/counters/lib/libc/sys/getsockname.2
  projects/counters/share/man/man4/ktr.4
  projects/counters/share/man/man4/usb_quirk.4
  projects/counters/share/misc/committers-ports.dot
  projects/counters/sys/arm/arm/cpufunc.c
  projects/counters/sys/arm/arm/locore.S
  projects/counters/sys/arm/arm/machdep.c
  projects/counters/sys/arm/arm/mpcore_timer.c
  projects/counters/sys/arm/at91/files.at91
  projects/counters/sys/arm/broadcom/bcm2835/bcm2835_systimer.c
  projects/counters/sys/arm/broadcom/bcm2835/files.bcm2835
  projects/counters/sys/arm/conf/RPI-B
  projects/counters/sys/arm/include/cpufunc.h
  projects/counters/sys/arm/mv/mvreg.h
  projects/counters/sys/arm/ti/am335x/am335x_dmtimer.c
  projects/counters/sys/arm/ti/ti_machdep.c
  projects/counters/sys/boot/uboot/lib/elf_freebsd.c
  projects/counters/sys/cam/ata/ata_xpt.c
  projects/counters/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c
  projects/counters/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/counters/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/counters/sys/conf/Makefile.arm
  projects/counters/sys/conf/NOTES
  projects/counters/sys/conf/options.mips
  projects/counters/sys/contrib/octeon-sdk/cvmx-dma-engine.c
  projects/counters/sys/contrib/octeon-sdk/cvmx-pow.h
  projects/counters/sys/contrib/octeon-sdk/cvmx-spi.c
  projects/counters/sys/contrib/octeon-sdk/cvmx-utils.h
  projects/counters/sys/contrib/octeon-sdk/cvmx-warn.c
  projects/counters/sys/contrib/octeon-sdk/cvmx.h
  projects/counters/sys/contrib/octeon-sdk/octeon-model.c
  projects/counters/sys/contrib/octeon-sdk/octeon-model.h
  projects/counters/sys/dev/ath/ath_hal/ah.h
  projects/counters/sys/dev/ath/ath_hal/ar5212/ar5212_beacon.c
  projects/counters/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
  projects/counters/sys/dev/ath/if_ath.c
  projects/counters/sys/dev/ath/if_ath_alq.h
  projects/counters/sys/dev/ath/if_ath_tdma.c
  projects/counters/sys/dev/ath/if_ath_tx.c
  projects/counters/sys/dev/bce/if_bce.c
  projects/counters/sys/dev/bxe/if_bxe.c
  projects/counters/sys/dev/e1000/if_igb.c
  projects/counters/sys/dev/gpio/gpiobus.c
  projects/counters/sys/dev/iwn/if_iwn.c
  projects/counters/sys/dev/sound/pci/hda/hdaa.c
  projects/counters/sys/dev/sound/pcm/buffer.c
  projects/counters/sys/dev/sound/pcm/sound.c
  projects/counters/sys/dev/usb/quirk/usb_quirk.c
  projects/counters/sys/dev/usb/quirk/usb_quirk.h
  projects/counters/sys/fs/ext2fs/ext2_alloc.c
  projects/counters/sys/fs/smbfs/smbfs_node.c
  projects/counters/sys/fs/smbfs/smbfs_vnops.c
  projects/counters/sys/kern/capabilities.conf
  projects/counters/sys/kern/init_sysent.c
  projects/counters/sys/kern/kern_mbuf.c
  projects/counters/sys/kern/kern_proc.c
  projects/counters/sys/kern/kern_shutdown.c
  projects/counters/sys/kern/kern_sig.c
  projects/counters/sys/kern/subr_param.c
  projects/counters/sys/kern/uipc_socket.c
  projects/counters/sys/kern/vfs_lookup.c
  projects/counters/sys/kern/vfs_subr.c
  projects/counters/sys/kern/vfs_vnops.c
  projects/counters/sys/mips/cavium/octeon_machdep.c
  projects/counters/sys/mips/conf/OCTEON1
  projects/counters/sys/net/if_ethersubr.c
  projects/counters/sys/net/if_tap.c
  projects/counters/sys/net/if_vlan.c
  projects/counters/sys/net80211/ieee80211_freebsd.h
  projects/counters/sys/netinet/ip_output.c
  projects/counters/sys/netinet/sctp_pcb.c
  projects/counters/sys/netinet/sctp_peeloff.c
  projects/counters/sys/netinet/sctp_peeloff.h
  projects/counters/sys/netinet/sctp_usrreq.c
  projects/counters/sys/netinet/tcp_subr.c
  projects/counters/sys/netinet/tcp_timer.c
  projects/counters/sys/netinet/tcp_timer.h
  projects/counters/sys/sys/eventhandler.h
  projects/counters/sys/sys/mbuf.h
  projects/counters/sys/sys/namei.h
  projects/counters/sys/sys/param.h
  projects/counters/sys/sys/vnode.h
  projects/counters/sys/vm/vm_map.c
  projects/counters/usr.bin/cut/cut.c
  projects/counters/usr.bin/passwd/Makefile
  projects/counters/usr.sbin/bsdconfig/networking/include/messages.subr
  projects/counters/usr.sbin/bsdconfig/networking/share/ipaddr.subr
  projects/counters/usr.sbin/bsdconfig/share/dialog.subr
  projects/counters/usr.sbin/bsdconfig/share/mustberoot.subr
  projects/counters/usr.sbin/bsdconfig/startup/share/rcedit.subr
  projects/counters/usr.sbin/bsdconfig/timezone/share/zones.subr
  projects/counters/usr.sbin/ifmcstat/ifmcstat.c
  projects/counters/usr.sbin/nfsd/nfsd.c
  projects/counters/usr.sbin/pkg_install/add/main.c
  projects/counters/usr.sbin/pkg_install/add/pkg_add.1
  projects/counters/usr.sbin/pkg_install/create/pkg_create.1
  projects/counters/usr.sbin/pkg_install/delete/pkg_delete.1
  projects/counters/usr.sbin/pkg_install/info/pkg_info.1
  projects/counters/usr.sbin/pkg_install/lib/lib.h
  projects/counters/usr.sbin/pkg_install/lib/pkgng.c
  projects/counters/usr.sbin/pkg_install/updating/pkg_updating.1
  projects/counters/usr.sbin/pkg_install/version/pkg_version.1
Directory Properties:
  projects/counters/   (props changed)
  projects/counters/cddl/contrib/opensolaris/   (props changed)
  projects/counters/cddl/contrib/opensolaris/cmd/zfs/   (props changed)
  projects/counters/contrib/libc++/   (props changed)
  projects/counters/contrib/sendmail/   (props changed)
  projects/counters/lib/libc/   (props changed)
  projects/counters/share/man/man4/   (props changed)
  projects/counters/sys/   (props changed)
  projects/counters/sys/boot/   (props changed)
  projects/counters/sys/cddl/contrib/opensolaris/   (props changed)
  projects/counters/sys/conf/   (props changed)
  projects/counters/sys/contrib/octeon-sdk/   (props changed)

Modified: projects/counters/UPDATING
==============================================================================
--- projects/counters/UPDATING	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/UPDATING	Wed Nov 28 17:34:17 2012	(r243653)
@@ -24,6 +24,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20121117:
+	The sin6_scope_id member variable in struct sockaddr_in6 is now
+	filled by the kernel before passing the structure to the userland via
+	sysctl or routing socket.  This means the KAME-specific embedded scope
+	id in sin6_addr.s6_addr[2] is always cleared in userland application.
+	This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
+	__FreeBSD_version is bumped to 1000025.
+
 20121105:
 	On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
 	This means that the world and kernel will be compiled with clang

Modified: projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Wed Nov 28 17:34:17 2012	(r243653)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 5, 2012
+.Dd November 26, 2012
 .Dt ZFS 8
 .Os
 .Sh NAME
@@ -760,7 +760,7 @@ If no inheritable
 .Tn ACE Ns s
 exist that affect the mode, then the mode is set in accordance to the requested
 mode from the application.
-.It Sy aclmode Ns = Ns Cm discard | groupmask | passthrough
+.It Sy aclmode Ns = Ns Cm discard | groupmask | passthrough | restricted
 Controls how an
 .Tn ACL
 is modified during
@@ -790,6 +790,32 @@ indicates that no changes are made to th
 other than creating or updating the necessary
 .Tn ACL
 entries to represent the new mode of the file or directory.
+An
+.Sy aclmode
+property of
+.Cm restricted
+will cause the
+.Xr chmod 2
+operation to return an error when used on any file or directory which has
+a non-trivial
+.Tn ACL
+whose entries can not be represented by a mode.
+.Xr chmod 2
+is required to change the set user ID, set group ID, or sticky bits on a file
+or directory, as they do not have equivalent
+.Tn ACL
+entries.
+In order to use
+.Xr chmod 2
+on a file or directory with a non-trivial
+.Tn ACL
+when
+.Sy aclmode
+is set to
+.Cm restricted ,
+you must first remove all
+.Tn ACL
+entries which do not represent the current mode.
 .It Sy atime Ns = Ns Cm on | off
 Controls whether the access time for files is updated when they are read.
 Turning this property off avoids producing write traffic when reading files and
@@ -830,7 +856,7 @@ command or unmounted by the
 command.
 .Pp
 This property is not inherited.
-.It Sy checksum Ns = Ns Cm on | off | fletcher2 | fletcher4
+.It Sy checksum Ns = Ns Cm on | off | fletcher2 | fletcher4 | sha256
 Controls the checksum used to verify data integrity. The default value is
 .Cm on ,
 which automatically selects an appropriate algorithm (currently,

Modified: projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool.8
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool.8	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/cddl/contrib/opensolaris/cmd/zpool/zpool.8	Wed Nov 28 17:34:17 2012	(r243653)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 28, 2011
+.Dd November 15, 2012
 .Dt ZPOOL 8
 .Os
 .Sh NAME

Modified: projects/counters/cddl/contrib/opensolaris/cmd/ztest/ztest.c
==============================================================================
--- projects/counters/cddl/contrib/opensolaris/cmd/ztest/ztest.c	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/cddl/contrib/opensolaris/cmd/ztest/ztest.c	Wed Nov 28 17:34:17 2012	(r243653)
@@ -204,6 +204,7 @@ enum ztest_io_type {
 	ZTEST_IO_WRITE_ZEROES,
 	ZTEST_IO_TRUNCATE,
 	ZTEST_IO_SETATTR,
+	ZTEST_IO_REWRITE,
 	ZTEST_IO_TYPES
 };
 
@@ -330,6 +331,7 @@ ztest_func_t ztest_vdev_add_remove;
 ztest_func_t ztest_vdev_aux_add_remove;
 ztest_func_t ztest_split_pool;
 ztest_func_t ztest_reguid;
+ztest_func_t ztest_spa_upgrade;
 
 uint64_t zopt_always = 0ULL * NANOSEC;		/* all the time */
 uint64_t zopt_incessant = 1ULL * NANOSEC / 10;	/* every 1/10 second */
@@ -363,6 +365,7 @@ ztest_info_t ztest_info[] = {
 	{ ztest_reguid,				1,	&zopt_sometimes },
 	{ ztest_spa_rename,			1,	&zopt_rarely	},
 	{ ztest_scrub,				1,	&zopt_rarely	},
+	{ ztest_spa_upgrade,			1,	&zopt_rarely	},
 	{ ztest_dsl_dataset_promote_busy,	1,	&zopt_rarely	},
 	{ ztest_vdev_attach_detach,		1,	&zopt_rarely	},
 	{ ztest_vdev_LUN_growth,		1,	&zopt_rarely	},
@@ -797,7 +800,7 @@ ztest_get_ashift(void)
 }
 
 static nvlist_t *
-make_vdev_file(char *path, char *aux, size_t size, uint64_t ashift)
+make_vdev_file(char *path, char *aux, char *pool, size_t size, uint64_t ashift)
 {
 	char pathbuf[MAXPATHLEN];
 	uint64_t vdev;
@@ -813,12 +816,13 @@ make_vdev_file(char *path, char *aux, si
 			vdev = ztest_shared->zs_vdev_aux;
 			(void) snprintf(path, sizeof (pathbuf),
 			    ztest_aux_template, ztest_opts.zo_dir,
-			    ztest_opts.zo_pool, aux, vdev);
+			    pool == NULL ? ztest_opts.zo_pool : pool,
+			    aux, vdev);
 		} else {
 			vdev = ztest_shared->zs_vdev_next_leaf++;
 			(void) snprintf(path, sizeof (pathbuf),
 			    ztest_dev_template, ztest_opts.zo_dir,
-			    ztest_opts.zo_pool, vdev);
+			    pool == NULL ? ztest_opts.zo_pool : pool, vdev);
 		}
 	}
 
@@ -840,17 +844,18 @@ make_vdev_file(char *path, char *aux, si
 }
 
 static nvlist_t *
-make_vdev_raidz(char *path, char *aux, size_t size, uint64_t ashift, int r)
+make_vdev_raidz(char *path, char *aux, char *pool, size_t size,
+    uint64_t ashift, int r)
 {
 	nvlist_t *raidz, **child;
 	int c;
 
 	if (r < 2)
-		return (make_vdev_file(path, aux, size, ashift));
+		return (make_vdev_file(path, aux, pool, size, ashift));
 	child = umem_alloc(r * sizeof (nvlist_t *), UMEM_NOFAIL);
 
 	for (c = 0; c < r; c++)
-		child[c] = make_vdev_file(path, aux, size, ashift);
+		child[c] = make_vdev_file(path, aux, pool, size, ashift);
 
 	VERIFY(nvlist_alloc(&raidz, NV_UNIQUE_NAME, 0) == 0);
 	VERIFY(nvlist_add_string(raidz, ZPOOL_CONFIG_TYPE,
@@ -869,19 +874,19 @@ make_vdev_raidz(char *path, char *aux, s
 }
 
 static nvlist_t *
-make_vdev_mirror(char *path, char *aux, size_t size, uint64_t ashift,
-	int r, int m)
+make_vdev_mirror(char *path, char *aux, char *pool, size_t size,
+    uint64_t ashift, int r, int m)
 {
 	nvlist_t *mirror, **child;
 	int c;
 
 	if (m < 1)
-		return (make_vdev_raidz(path, aux, size, ashift, r));
+		return (make_vdev_raidz(path, aux, pool, size, ashift, r));
 
 	child = umem_alloc(m * sizeof (nvlist_t *), UMEM_NOFAIL);
 
 	for (c = 0; c < m; c++)
-		child[c] = make_vdev_raidz(path, aux, size, ashift, r);
+		child[c] = make_vdev_raidz(path, aux, pool, size, ashift, r);
 
 	VERIFY(nvlist_alloc(&mirror, NV_UNIQUE_NAME, 0) == 0);
 	VERIFY(nvlist_add_string(mirror, ZPOOL_CONFIG_TYPE,
@@ -898,8 +903,8 @@ make_vdev_mirror(char *path, char *aux, 
 }
 
 static nvlist_t *
-make_vdev_root(char *path, char *aux, size_t size, uint64_t ashift,
-	int log, int r, int m, int t)
+make_vdev_root(char *path, char *aux, char *pool, size_t size, uint64_t ashift,
+    int log, int r, int m, int t)
 {
 	nvlist_t *root, **child;
 	int c;
@@ -909,7 +914,8 @@ make_vdev_root(char *path, char *aux, si
 	child = umem_alloc(t * sizeof (nvlist_t *), UMEM_NOFAIL);
 
 	for (c = 0; c < t; c++) {
-		child[c] = make_vdev_mirror(path, aux, size, ashift, r, m);
+		child[c] = make_vdev_mirror(path, aux, pool, size, ashift,
+		    r, m);
 		VERIFY(nvlist_add_uint64(child[c], ZPOOL_CONFIG_IS_LOG,
 		    log) == 0);
 	}
@@ -927,6 +933,27 @@ make_vdev_root(char *path, char *aux, si
 	return (root);
 }
 
+/*
+ * Find a random spa version. Returns back a random spa version in the
+ * range [initial_version, SPA_VERSION_FEATURES].
+ */
+static uint64_t
+ztest_random_spa_version(uint64_t initial_version)
+{
+	uint64_t version = initial_version;
+
+	if (version <= SPA_VERSION_BEFORE_FEATURES) {
+		version = version +
+		    ztest_random(SPA_VERSION_BEFORE_FEATURES - version + 1);
+	}
+
+	if (version > SPA_VERSION_BEFORE_FEATURES)
+		version = SPA_VERSION_FEATURES;
+
+	ASSERT(SPA_VERSION_IS_SUPPORTED(version));
+	return (version);
+}
+
 static int
 ztest_random_blocksize(void)
 {
@@ -1841,6 +1868,12 @@ ztest_get_data(void *arg, lr_write_t *lr
 		    DMU_READ_NO_PREFETCH);
 
 		if (error == 0) {
+			blkptr_t *obp = dmu_buf_get_blkptr(db);
+			if (obp) {
+				ASSERT(BP_IS_HOLE(bp));
+				*bp = *obp;
+			}
+
 			zgd->zgd_db = db;
 			zgd->zgd_bp = bp;
 
@@ -1986,6 +2019,9 @@ ztest_remove(ztest_ds_t *zd, ztest_od_t 
 			continue;
 		}
 
+		/*
+		 * No object was found.
+		 */
 		if (od->od_object == 0)
 			continue;
 
@@ -2101,6 +2137,7 @@ ztest_prealloc(ztest_ds_t *zd, uint64_t 
 static void
 ztest_io(ztest_ds_t *zd, uint64_t object, uint64_t offset)
 {
+	int err;
 	ztest_block_tag_t wbt;
 	dmu_object_info_t doi;
 	enum ztest_io_type io_type;
@@ -2153,6 +2190,25 @@ ztest_io(ztest_ds_t *zd, uint64_t object
 	case ZTEST_IO_SETATTR:
 		(void) ztest_setattr(zd, object);
 		break;
+
+	case ZTEST_IO_REWRITE:
+		(void) rw_rdlock(&ztest_name_lock);
+		err = ztest_dsl_prop_set_uint64(zd->zd_name,
+		    ZFS_PROP_CHECKSUM, spa_dedup_checksum(ztest_spa),
+		    B_FALSE);
+		VERIFY(err == 0 || err == ENOSPC);
+		err = ztest_dsl_prop_set_uint64(zd->zd_name,
+		    ZFS_PROP_COMPRESSION,
+		    ztest_random_dsl_prop(ZFS_PROP_COMPRESSION),
+		    B_FALSE);
+		VERIFY(err == 0 || err == ENOSPC);
+		(void) rw_unlock(&ztest_name_lock);
+
+		VERIFY0(dmu_read(zd->zd_os, object, offset, blocksize, data,
+		    DMU_READ_NO_PREFETCH));
+
+		(void) ztest_write(zd, object, offset, blocksize, data);
+		break;
 	}
 
 	(void) rw_unlock(&zd->zd_zilog_lock);
@@ -2240,7 +2296,12 @@ ztest_zil_remount(ztest_ds_t *zd, uint64
 {
 	objset_t *os = zd->zd_os;
 
-	VERIFY(mutex_lock(&zd->zd_dirobj_lock) == 0);
+	/*
+	 * We grab the zd_dirobj_lock to ensure that no other thread is
+	 * updating the zil (i.e. adding in-memory log records) and the
+	 * zd_zilog_lock to block any I/O.
+	 */
+	VERIFY0(mutex_lock(&zd->zd_dirobj_lock));
 	(void) rw_wrlock(&zd->zd_zilog_lock);
 
 	/* zfsvfs_teardown() */
@@ -2269,7 +2330,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd,
 	/*
 	 * Attempt to create using a bad file.
 	 */
-	nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 0, 1);
+	nvroot = make_vdev_root("/dev/bogus", NULL, NULL, 0, 0, 0, 0, 0, 1);
 	VERIFY3U(ENOENT, ==,
 	    spa_create("ztest_bad_file", nvroot, NULL, NULL, NULL));
 	nvlist_free(nvroot);
@@ -2277,7 +2338,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd,
 	/*
 	 * Attempt to create using a bad mirror.
 	 */
-	nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 2, 1);
+	nvroot = make_vdev_root("/dev/bogus", NULL, NULL, 0, 0, 0, 0, 2, 1);
 	VERIFY3U(ENOENT, ==,
 	    spa_create("ztest_bad_mirror", nvroot, NULL, NULL, NULL));
 	nvlist_free(nvroot);
@@ -2287,7 +2348,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd,
 	 * what's in the nvroot; we should fail with EEXIST.
 	 */
 	(void) rw_rdlock(&ztest_name_lock);
-	nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 0, 1);
+	nvroot = make_vdev_root("/dev/bogus", NULL, NULL, 0, 0, 0, 0, 0, 1);
 	VERIFY3U(EEXIST, ==, spa_create(zo->zo_pool, nvroot, NULL, NULL, NULL));
 	nvlist_free(nvroot);
 	VERIFY3U(0, ==, spa_open(zo->zo_pool, &spa, FTAG));
@@ -2297,6 +2358,78 @@ ztest_spa_create_destroy(ztest_ds_t *zd,
 	(void) rw_unlock(&ztest_name_lock);
 }
 
+/* ARGSUSED */
+void
+ztest_spa_upgrade(ztest_ds_t *zd, uint64_t id)
+{
+	spa_t *spa;
+	uint64_t initial_version = SPA_VERSION_INITIAL;
+	uint64_t version, newversion;
+	nvlist_t *nvroot, *props;
+	char *name;
+
+	VERIFY0(mutex_lock(&ztest_vdev_lock));
+	name = kmem_asprintf("%s_upgrade", ztest_opts.zo_pool);
+
+	/*
+	 * Clean up from previous runs.
+	 */
+	(void) spa_destroy(name);
+
+	nvroot = make_vdev_root(NULL, NULL, name, ztest_opts.zo_vdev_size, 0,
+	    0, ztest_opts.zo_raidz, ztest_opts.zo_mirrors, 1);
+
+	/*
+	 * If we're configuring a RAIDZ device then make sure that the
+	 * the initial version is capable of supporting that feature.
+	 */
+	switch (ztest_opts.zo_raidz_parity) {
+	case 0:
+	case 1:
+		initial_version = SPA_VERSION_INITIAL;
+		break;
+	case 2:
+		initial_version = SPA_VERSION_RAIDZ2;
+		break;
+	case 3:
+		initial_version = SPA_VERSION_RAIDZ3;
+		break;
+	}
+
+	/*
+	 * Create a pool with a spa version that can be upgraded. Pick
+	 * a value between initial_version and SPA_VERSION_BEFORE_FEATURES.
+	 */
+	do {
+		version = ztest_random_spa_version(initial_version);
+	} while (version > SPA_VERSION_BEFORE_FEATURES);
+
+	props = fnvlist_alloc();
+	fnvlist_add_uint64(props,
+	    zpool_prop_to_name(ZPOOL_PROP_VERSION), version);
+	VERIFY0(spa_create(name, nvroot, props, NULL, NULL));
+	fnvlist_free(nvroot);
+	fnvlist_free(props);
+
+	VERIFY0(spa_open(name, &spa, FTAG));
+	VERIFY3U(spa_version(spa), ==, version);
+	newversion = ztest_random_spa_version(version + 1);
+
+	if (ztest_opts.zo_verbose >= 4) {
+		(void) printf("upgrading spa version from %llu to %llu\n",
+		    (u_longlong_t)version, (u_longlong_t)newversion);
+	}
+
+	spa_upgrade(spa, newversion);
+	VERIFY3U(spa_version(spa), >, version);
+	VERIFY3U(spa_version(spa), ==, fnvlist_lookup_uint64(spa->spa_config,
+	    zpool_prop_to_name(ZPOOL_PROP_VERSION)));
+	spa_close(spa, FTAG);
+
+	strfree(name);
+	VERIFY0(mutex_unlock(&ztest_vdev_lock));
+}
+
 static vdev_t *
 vdev_lookup_by_path(vdev_t *vd, const char *path)
 {
@@ -2386,7 +2519,7 @@ ztest_vdev_add_remove(ztest_ds_t *zd, ui
 		/*
 		 * Make 1/4 of the devices be log devices.
 		 */
-		nvroot = make_vdev_root(NULL, NULL,
+		nvroot = make_vdev_root(NULL, NULL, NULL,
 		    ztest_opts.zo_vdev_size, 0,
 		    ztest_random(4) == 0, ztest_opts.zo_raidz,
 		    zs->zs_mirrors, 1);
@@ -2463,7 +2596,7 @@ ztest_vdev_aux_add_remove(ztest_ds_t *zd
 		/*
 		 * Add a new device.
 		 */
-		nvlist_t *nvroot = make_vdev_root(NULL, aux,
+		nvlist_t *nvroot = make_vdev_root(NULL, aux, NULL,
 		    (ztest_opts.zo_vdev_size * 5) / 4, 0, 0, 0, 0, 1);
 		error = spa_vdev_add(spa, nvroot);
 		if (error != 0)
@@ -2732,7 +2865,7 @@ ztest_vdev_attach_detach(ztest_ds_t *zd,
 	/*
 	 * Build the nvlist describing newpath.
 	 */
-	root = make_vdev_root(newpath, NULL, newvd == NULL ? newsize : 0,
+	root = make_vdev_root(newpath, NULL, NULL, newvd == NULL ? newsize : 0,
 	    ashift, 0, 0, 0, 1);
 
 	error = spa_vdev_attach(spa, oldguid, root, replacing);
@@ -4827,8 +4960,8 @@ ztest_ddt_repair(ztest_ds_t *zd, uint64_
 	 */
 	for (int i = 0; i < copies; i++) {
 		uint64_t offset = i * blocksize;
-		VERIFY(dmu_buf_hold(os, object, offset, FTAG, &db,
-		    DMU_READ_NO_PREFETCH) == 0);
+		VERIFY0(dmu_buf_hold(os, object, offset, FTAG, &db,
+		    DMU_READ_NO_PREFETCH));
 		ASSERT(db->db_offset == offset);
 		ASSERT(db->db_size == blocksize);
 		ASSERT(ztest_pattern_match(db->db_data, db->db_size, pattern) ||
@@ -4844,8 +4977,8 @@ ztest_ddt_repair(ztest_ds_t *zd, uint64_
 	/*
 	 * Find out what block we got.
 	 */
-	VERIFY(dmu_buf_hold(os, object, 0, FTAG, &db,
-	    DMU_READ_NO_PREFETCH) == 0);
+	VERIFY0(dmu_buf_hold(os, object, 0, FTAG, &db,
+	    DMU_READ_NO_PREFETCH));
 	blk = *((dmu_buf_impl_t *)db)->db_blkptr;
 	dmu_buf_rele(db, FTAG);
 
@@ -4900,7 +5033,7 @@ ztest_reguid(ztest_ds_t *zd, uint64_t id
 	if (error != 0)
 		return;
 
-	if (ztest_opts.zo_verbose >= 3) {
+	if (ztest_opts.zo_verbose >= 4) {
 		(void) printf("Changed guid old %llu -> %llu\n",
 		    (u_longlong_t)orig, (u_longlong_t)spa_guid(spa));
 	}
@@ -5523,6 +5656,8 @@ ztest_freeze(void)
 	kernel_init(FREAD | FWRITE);
 	VERIFY3U(0, ==, spa_open(ztest_opts.zo_pool, &spa, FTAG));
 	VERIFY3U(0, ==, ztest_dataset_open(0));
+	spa->spa_debug = B_TRUE;
+	ztest_spa = spa;
 
 	/*
 	 * Force the first log block to be transactionally allocated.
@@ -5647,7 +5782,7 @@ ztest_init(ztest_shared_t *zs)
 	ztest_shared->zs_vdev_next_leaf = 0;
 	zs->zs_splits = 0;
 	zs->zs_mirrors = ztest_opts.zo_mirrors;
-	nvroot = make_vdev_root(NULL, NULL, ztest_opts.zo_vdev_size, 0,
+	nvroot = make_vdev_root(NULL, NULL, NULL, ztest_opts.zo_vdev_size, 0,
 	    0, ztest_opts.zo_raidz, zs->zs_mirrors, 1);
 	props = make_random_props();
 	for (int i = 0; i < SPA_FEATURES; i++) {

Modified: projects/counters/contrib/libc++/include/__config
==============================================================================
--- projects/counters/contrib/libc++/include/__config	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/contrib/libc++/include/__config	Wed Nov 28 17:34:17 2012	(r243653)
@@ -51,6 +51,9 @@
 #   define _LIBCPP_LITTLE_ENDIAN 0
 #   define _LIBCPP_BIG_ENDIAN    1
 # endif  // _BYTE_ORDER == _LITTLE_ENDIAN
+# ifndef __LONG_LONG_SUPPORTED
+#  define _LIBCPP_HAS_NO_LONG_LONG
+# endif  // __LONG_LONG_SUPPORTED
 #endif  // __FreeBSD__
 
 #ifdef _WIN32

Modified: projects/counters/contrib/libc++/include/cstdlib
==============================================================================
--- projects/counters/contrib/libc++/include/cstdlib	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/contrib/libc++/include/cstdlib	Wed Nov 28 17:34:17 2012	(r243653)
@@ -97,18 +97,26 @@ _LIBCPP_BEGIN_NAMESPACE_STD
 using ::size_t;
 using ::div_t;
 using ::ldiv_t;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::lldiv_t;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::atof;
 using ::atoi;
 using ::atol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::atoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::strtod;
 using ::strtof;
 using ::strtold;
 using ::strtol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoul;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::strtoull;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::rand;
 using ::srand;
 using ::calloc;
@@ -125,10 +133,14 @@ using ::bsearch;
 using ::qsort;
 using ::abs;
 using ::labs;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::llabs;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::div;
 using ::ldiv;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::lldiv;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::mblen;
 using ::mbtowc;
 using ::wctomb;
@@ -145,10 +157,14 @@ using ::aligned_alloc;
 // MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus
 #if !defined(_MSC_VER) && !defined(__sun__)
 inline _LIBCPP_INLINE_VISIBILITY long      abs(     long __x) _NOEXCEPT {return  labs(__x);}
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);}
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 
 inline _LIBCPP_INLINE_VISIBILITY  ldiv_t div(     long __x,      long __y) _NOEXCEPT {return  ldiv(__x, __y);}
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);}
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 #endif // _MSC_VER
 
 _LIBCPP_END_NAMESPACE_STD

Modified: projects/counters/contrib/libc++/include/cwchar
==============================================================================
--- projects/counters/contrib/libc++/include/cwchar	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/contrib/libc++/include/cwchar	Wed Nov 28 17:34:17 2012	(r243653)
@@ -151,9 +151,13 @@ using ::wcstof;
 using ::wcstold;
 #endif // _MSC_VER
 using ::wcstol;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoll;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoul;
+#ifndef _LIBCPP_HAS_NO_LONG_LONG
 using ::wcstoull;
+#endif // _LIBCPP_HAS_NO_LONG_LONG
 using ::wcscpy;
 using ::wcsncpy;
 using ::wcscat;

Modified: projects/counters/contrib/sendmail/src/sasl.c
==============================================================================
--- projects/counters/contrib/sendmail/src/sasl.c	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/contrib/sendmail/src/sasl.c	Wed Nov 28 17:34:17 2012	(r243653)
@@ -24,9 +24,15 @@ SM_RCSID("@(#)$Id: sasl.c,v 8.22 2006/08
 **  using unsigned long: for portability, it should be size_t.
 */
 
-void *sm_sasl_malloc __P((unsigned long));
-static void *sm_sasl_calloc __P((unsigned long, unsigned long));
-static void *sm_sasl_realloc __P((void *, unsigned long));
+#if defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a
+#define SM_SASL_SIZE_T	size_t
+#else /* defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a */
+#define SM_SASL_SIZE_T	unsigned long
+#endif /* defined(SASL_VERSION_FULL) && SASL_VERSION_FULL >= 0x02011a */
+
+void *sm_sasl_malloc __P((SM_SASL_SIZE_T));
+static void *sm_sasl_calloc __P((SM_SASL_SIZE_T, SM_SASL_SIZE_T));
+static void *sm_sasl_realloc __P((void *, SM_SASL_SIZE_T));
 void sm_sasl_free __P((void *));
 
 /*
@@ -50,7 +56,7 @@ void sm_sasl_free __P((void *));
 
 void *
 sm_sasl_malloc(size)
-	unsigned long size;
+	SM_SASL_SIZE_T size;
 {
 	return sm_malloc((size_t) size);
 }
@@ -71,8 +77,8 @@ sm_sasl_malloc(size)
 
 static void *
 sm_sasl_calloc(nelem, elemsize)
-	unsigned long nelem;
-	unsigned long elemsize;
+	SM_SASL_SIZE_T nelem;
+	SM_SASL_SIZE_T elemsize;
 {
 	size_t size;
 	void *p;
@@ -99,7 +105,7 @@ sm_sasl_calloc(nelem, elemsize)
 static void *
 sm_sasl_realloc(o, size)
 	void *o;
-	unsigned long size;
+	SM_SASL_SIZE_T size;
 {
 	return sm_realloc(o, (size_t) size);
 }

Modified: projects/counters/etc/newsyslog.conf
==============================================================================
--- projects/counters/etc/newsyslog.conf	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/etc/newsyslog.conf	Wed Nov 28 17:34:17 2012	(r243653)
@@ -35,5 +35,5 @@
 /var/log/security			600  10	   100	*     JC
 /var/log/sendmail.st			640  10	   *	168   B
 /var/log/utx.log			644  3	   *	@01T05 B
-/var/log/weekly.log			640  5	   1	$W6D0 JN
+/var/log/weekly.log			640  5	   *	$W6D0 JN
 /var/log/xferlog			600  7	   100	*     JC

Modified: projects/counters/lib/libc/sys/getpeername.2
==============================================================================
--- projects/counters/lib/libc/sys/getpeername.2	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/lib/libc/sys/getpeername.2	Wed Nov 28 17:34:17 2012	(r243653)
@@ -67,6 +67,10 @@ The argument
 is not a valid descriptor.
 .It Bq Er ECONNRESET
 The connection has been reset by the peer.
+.It Bq Er EINVAL
+The value of the
+.Fa namelen
+argument is not valid.
 .It Bq Er ENOTSOCK
 The argument
 .Fa s

Modified: projects/counters/lib/libc/sys/getsockname.2
==============================================================================
--- projects/counters/lib/libc/sys/getsockname.2	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/lib/libc/sys/getsockname.2	Wed Nov 28 17:34:17 2012	(r243653)
@@ -66,6 +66,10 @@ The argument
 is not a valid descriptor.
 .It Bq Er ECONNRESET
 The connection has been reset by the peer.
+.It Bq Er EINVAL
+The value of the
+.Fa namelen
+argument is not valid.
 .It Bq Er ENOTSOCK
 The argument
 .Fa s

Modified: projects/counters/share/man/man4/ktr.4
==============================================================================
--- projects/counters/share/man/man4/ktr.4	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/share/man/man4/ktr.4	Wed Nov 28 17:34:17 2012	(r243653)
@@ -53,7 +53,7 @@ The
 .Dv KTR_ENTRIES
 option sets the size of the buffer of events.
 The size of the buffer in the currently running kernel can be found via the
-read-only sysctl
+sysctl
 .Va debug.ktr.entries .
 By default the buffer contains 1024 entries.
 .Ss Event Masking

Modified: projects/counters/share/man/man4/usb_quirk.4
==============================================================================
--- projects/counters/share/man/man4/usb_quirk.4	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/share/man/man4/usb_quirk.4	Wed Nov 28 17:34:17 2012	(r243653)
@@ -76,8 +76,6 @@ mouse sends an unknown leading byte
 mouse has Z-axis reversed
 .It UQ_NO_STRINGS
 string descriptors are broken
-.It UQ_OPEN_CLEARSTALL
-device needs clear endpoint stall
 .It UQ_POWER_CLAIM
 hub lies about power status
 .It UQ_SPUR_BUT_UP

Modified: projects/counters/share/misc/committers-ports.dot
==============================================================================
--- projects/counters/share/misc/committers-ports.dot	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/share/misc/committers-ports.dot	Wed Nov 28 17:34:17 2012	(r243653)
@@ -58,6 +58,7 @@ avilla [label="Alberto Villa\navilla@Fre
 avl [label="Alexander Logvinov\navl@FreeBSD.org\n2009/05/27"]
 az [label="Andrej Zverev\naz@FreeBSD.org\n2005/10/03"]
 bapt [label="Baptiste Daroussin\nbapt@FreeBSD.org\n2010/07/27"]
+bar [label="Barbara Guida\nbar@FreeBSD.org\n2012/11/25"]
 bdrewery [label="Bryan Drewery\nbdrewery@FreeBSD.org\n2012/07/31"]
 beat [label="Beat Gaetzi\nbeat@FreeBSD.org\n2009/01/28"]
 beech [label="Beech Rintoul\nbeech@FreeBSD.org\n2007/05/30"]
@@ -297,6 +298,7 @@ fjoe -> flo
 fjoe -> krion
 fjoe -> osa
 
+flo -> bar
 flo -> jase
 
 flz -> garga
@@ -437,6 +439,7 @@ philip -> koitsu
 
 rafan -> chinsan
 
+rene -> bar
 rene -> crees
 rene -> jgh
 rene -> olivierd

Modified: projects/counters/sys/arm/arm/cpufunc.c
==============================================================================
--- projects/counters/sys/arm/arm/cpufunc.c	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/sys/arm/arm/cpufunc.c	Wed Nov 28 17:34:17 2012	(r243653)
@@ -74,7 +74,13 @@ __FBSDID("$FreeBSD$");
 #include <arm/xscale/i80321/i80321var.h>
 #endif
 
-#if defined(CPU_XSCALE_81342)
+/*
+ * Some definitions in i81342reg.h clash with i80321reg.h.
+ * This only happens for the LINT kernel. As it happens,
+ * we don't need anything from i81342reg.h that we already
+ * got from somewhere else during a LINT compile.
+ */
+#if defined(CPU_XSCALE_81342) && !defined(COMPILING_LINT)
 #include <arm/xscale/i8134x/i81342reg.h>
 #endif
 

Modified: projects/counters/sys/arm/arm/locore.S
==============================================================================
--- projects/counters/sys/arm/arm/locore.S	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/sys/arm/arm/locore.S	Wed Nov 28 17:34:17 2012	(r243653)
@@ -181,7 +181,7 @@ Lunmapped:
 #if defined(CPU_ARM11) || defined(CPU_CORTEXA) || defined(CPU_MV_PJ4B)
 	orr	r0, r0, #CPU_CONTROL_V6_EXTPAGE
 #endif
-	orr	r0, r0, #(CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_DC_ENABLE)
+	orr	r0, r0, #(CPU_CONTROL_MMU_ENABLE)
 	mcr	p15, 0, r0, c1, c0, 0
 	nop
 	nop

Modified: projects/counters/sys/arm/arm/machdep.c
==============================================================================
--- projects/counters/sys/arm/arm/machdep.c	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/sys/arm/arm/machdep.c	Wed Nov 28 17:34:17 2012	(r243653)
@@ -1038,18 +1038,6 @@ print_kenv(void)
 }
 
 static void
-print_kernel_section_addr(void)
-{
-
-	debugf("kernel image addresses:\n");
-	debugf(" kernbase       = 0x%08x\n", (uint32_t)kernbase);
-	debugf(" _etext (sdata) = 0x%08x\n", (uint32_t)_etext);
-	debugf(" _edata         = 0x%08x\n", (uint32_t)_edata);
-	debugf(" __bss_start    = 0x%08x\n", (uint32_t)__bss_start);
-	debugf(" _end           = 0x%08x\n", (uint32_t)_end);
-}
-
-static void
 physmap_init(struct mem_region *availmem_regions, int availmem_regions_sz)
 {
 	int i, j, cnt;
@@ -1344,7 +1332,6 @@ initarm(struct arm_boot_params *abp)
 	debugf(" arg1 kmdp = 0x%08x\n", (uint32_t)kmdp);
 	debugf(" boothowto = 0x%08x\n", boothowto);
 	debugf(" dtbp = 0x%08x\n", (uint32_t)dtbp);
-	print_kernel_section_addr();
 	print_kenv();
 
 	env = getenv("kernelname");

Modified: projects/counters/sys/arm/arm/mpcore_timer.c
==============================================================================
--- projects/counters/sys/arm/arm/mpcore_timer.c	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/sys/arm/arm/mpcore_timer.c	Wed Nov 28 17:34:17 2012	(r243653)
@@ -128,7 +128,7 @@ static struct arm_tmr_softc *arm_tmr_sc 
 static timecounter_get_t arm_tmr_get_timecount;
 
 static struct timecounter arm_tmr_timecount = {
-	.tc_name           = "ARM MPCore Timecouter",
+	.tc_name           = "ARM MPCore Timecounter",
 	.tc_get_timecount  = arm_tmr_get_timecount,
 	.tc_poll_pps       = NULL,
 	.tc_counter_mask   = ~0u,

Modified: projects/counters/sys/arm/at91/files.at91
==============================================================================
--- projects/counters/sys/arm/at91/files.at91	Wed Nov 28 15:48:32 2012	(r243652)
+++ projects/counters/sys/arm/at91/files.at91	Wed Nov 28 17:34:17 2012	(r243653)
@@ -55,4 +55,3 @@ arm/at91/board_tsc4370.c	optional	at91_b
 dev/usb/controller/at91dci.c		optional	at91_dci
 dev/usb/controller/at91dci_atmelarm.c	optional	at91_dci
 dev/usb/controller/ohci_atmelarm.c	optional	ohci
-dev/usb/controller/ehci_atmelarm.c	optional	ehci

Copied: projects/counters/sys/arm/broadcom/bcm2835/bcm2835_gpio.c (from r243651, head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/counters/sys/arm/broadcom/bcm2835/bcm2835_gpio.c	Wed Nov 28 17:34:17 2012	(r243653, copy of r243651, head/sys/arm/broadcom/bcm2835/bcm2835_gpio.c)
@@ -0,0 +1,656 @@
+/*-
+ * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
+ * Copyright (c) 2012 Luiz Otavio O Souza.
+ * 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/systm.h>
+#include <sys/bus.h>
+
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/rman.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/gpio.h>
+
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/cpufunc.h>
+#include <machine/resource.h>
+#include <machine/fdt.h>
+#include <machine/frame.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include "gpio_if.h"
+
+#undef	DEBUG
+
+#ifdef DEBUG
+#define dprintf(fmt, args...) do { printf("%s(): ", __func__);   \
+    printf(fmt,##args); } while (0)
+#else
+#define dprintf(fmt, args...)
+#endif
+
+#define	BCM_GPIO_PINS		54
+#define	BCM_GPIO_DEFAULT_CAPS	(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT |	\
+    GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN)
+
+struct bcm_gpio_softc {
+	device_t		sc_dev;
+	struct mtx		sc_mtx;
+	struct resource *	sc_mem_res;
+	struct resource *	sc_irq_res;
+	bus_space_tag_t		sc_bst;
+	bus_space_handle_t	sc_bsh;
+	void *			sc_intrhand;
+	int			sc_gpio_npins;
+	int			sc_ro_npins;
+	int			sc_ro_pins[BCM_GPIO_PINS];
+	struct gpio_pin		sc_gpio_pins[BCM_GPIO_PINS];
+};
+
+enum bcm_gpio_fsel {
+	BCM_GPIO_INPUT,
+	BCM_GPIO_OUTPUT,
+	BCM_GPIO_ALT5,
+	BCM_GPIO_ALT4,
+	BCM_GPIO_ALT0,
+	BCM_GPIO_ALT1,
+	BCM_GPIO_ALT2,
+	BCM_GPIO_ALT3,
+};
+
+enum bcm_gpio_pud {
+	BCM_GPIO_NONE,
+	BCM_GPIO_PULLDOWN,
+	BCM_GPIO_PULLUP,
+};
+
+#define	BCM_GPIO_LOCK(_sc)	mtx_lock(&_sc->sc_mtx)
+#define	BCM_GPIO_UNLOCK(_sc)	mtx_unlock(&_sc->sc_mtx)
+
+#define	BCM_GPIO_GPFSEL(_bank)	0x00 + _bank * 4
+#define	BCM_GPIO_GPSET(_bank)	0x1c + _bank * 4
+#define	BCM_GPIO_GPCLR(_bank)	0x28 + _bank * 4
+#define	BCM_GPIO_GPLEV(_bank)	0x34 + _bank * 4
+#define	BCM_GPIO_GPPUD(_bank)	0x94
+#define	BCM_GPIO_GPPUDCLK(_bank)	0x98 + _bank * 4
+
+#define	BCM_GPIO_WRITE(_sc, _off, _val)		\
+    bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
+#define	BCM_GPIO_READ(_sc, _off)		\
+    bus_space_read_4(_sc->sc_bst, _sc->sc_bsh, _off)
+
+static int
+bcm_gpio_pin_is_ro(struct bcm_gpio_softc *sc, int pin)
+{
+	int i;
+
+	for (i = 0; i < sc->sc_ro_npins; i++)
+		if (pin == sc->sc_ro_pins[i])
+			return (1);
+	return (0);
+}
+
+static uint32_t
+bcm_gpio_get_function(struct bcm_gpio_softc *sc, uint32_t pin)
+{
+	uint32_t bank, data, offset;
+
+	/* Five banks, 10 pins per bank, 3 bits per pin. */
+	bank = pin / 10;
+	offset = (pin - bank * 10) * 3;
+
+	BCM_GPIO_LOCK(sc);
+	data = (BCM_GPIO_READ(sc, BCM_GPIO_GPFSEL(bank)) >> offset) & 7;
+	BCM_GPIO_UNLOCK(sc);
+
+#ifdef	DEBUG
+	device_printf(sc->sc_dev, "pin %d function: ", pin);
+	switch (data) {
+	case BCM_GPIO_INPUT:
+		printf("input\n");
+		break;
+	case BCM_GPIO_OUTPUT:
+		printf("output\n");
+		break;
+	case BCM_GPIO_ALT0:
+		printf("alt0\n");
+		break;
+	case BCM_GPIO_ALT1:
+		printf("alt1\n");
+		break;
+	case BCM_GPIO_ALT2:
+		printf("alt2\n");
+		break;
+	case BCM_GPIO_ALT3:
+		printf("alt3\n");
+		break;
+	case BCM_GPIO_ALT4:
+		printf("alt4\n");
+		break;
+	case BCM_GPIO_ALT5:
+		printf("alt5\n");
+		break;
+	}
+#endif
+
+	switch (data) {
+	case BCM_GPIO_INPUT:
+		return (GPIO_PIN_INPUT);
+	case BCM_GPIO_OUTPUT:
+		return (GPIO_PIN_OUTPUT);
+	}
+
+	return (0);
+}
+
+static void
+bcm_gpio_set_function(struct bcm_gpio_softc *sc, uint32_t pin, uint32_t f)
+{
+	uint32_t bank, data, offset;
+
+	/* Five banks, 10 pins per bank, 3 bits per pin. */
+	bank = pin / 10;
+	offset = (pin - bank * 10) * 3;
+
+	BCM_GPIO_LOCK(sc);
+	data = BCM_GPIO_READ(sc, BCM_GPIO_GPFSEL(bank));
+	data &= ~(7 << offset);
+	data |= (f << offset);
+	BCM_GPIO_WRITE(sc, BCM_GPIO_GPFSEL(bank), data);
+	BCM_GPIO_UNLOCK(sc);
+}
+
+static void
+bcm_gpio_set_pud(struct bcm_gpio_softc *sc, uint32_t pin, uint32_t state)
+{
+	uint32_t bank, offset;
+
+	bank = pin / 32;
+	offset = pin - 32 * bank;
+
+	BCM_GPIO_LOCK(sc);
+	BCM_GPIO_WRITE(sc, BCM_GPIO_GPPUD(0), state);
+	DELAY(10);
+	BCM_GPIO_WRITE(sc, BCM_GPIO_GPPUDCLK(bank), (1 << offset));
+	DELAY(10);
+	BCM_GPIO_WRITE(sc, BCM_GPIO_GPPUD(0), 0);
+	BCM_GPIO_WRITE(sc, BCM_GPIO_GPPUDCLK(bank), 0);
+	BCM_GPIO_UNLOCK(sc);
+}
+

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



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