From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 11:52:34 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id AE58E12A;
 Sun, 23 Dec 2012 11:52:34 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 9175D8FC14;
 Sun, 23 Dec 2012 11:52:34 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNBqYg6085593;
 Sun, 23 Dec 2012 11:52:34 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNBqYgT085592;
 Sun, 23 Dec 2012 11:52:34 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231152.qBNBqYgT085592@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 11:52:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244609 - stable/9/sys/kern
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 11:52:34 -0000

Author: avg
Date: Sun Dec 23 11:52:33 2012
New Revision: 244609
URL: http://svnweb.freebsd.org/changeset/base/244609

Log:
  MFC r243272,243499: assert_vop_locked should treat LK_EXCLOTHER as the
  not locked case

Modified:
  stable/9/sys/kern/vfs_subr.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_subr.c
==============================================================================
--- stable/9/sys/kern/vfs_subr.c	Sun Dec 23 11:22:18 2012	(r244608)
+++ stable/9/sys/kern/vfs_subr.c	Sun Dec 23 11:52:33 2012	(r244609)
@@ -3970,9 +3970,13 @@ assert_vi_unlocked(struct vnode *vp, con
 void
 assert_vop_locked(struct vnode *vp, const char *str)
 {
+	int locked;
 
-	if (!IGNORE_LOCK(vp) && VOP_ISLOCKED(vp) == 0)
-		vfs_badlock("is not locked but should be", str, vp);
+	if (!IGNORE_LOCK(vp)) {
+		locked = VOP_ISLOCKED(vp);
+		if (locked == 0 || locked == LK_EXCLOTHER)
+			vfs_badlock("is not locked but should be", str, vp);
+	}
 }
 
 void

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 11:52:47 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 20E9F12E;
 Sun, 23 Dec 2012 11:52:47 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 071408FC12;
 Sun, 23 Dec 2012 11:52:47 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNBqk3U085652;
 Sun, 23 Dec 2012 11:52:46 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNBqkQA085651;
 Sun, 23 Dec 2012 11:52:46 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231152.qBNBqkQA085651@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 11:52:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244610 - stable/8/sys/kern
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 11:52:47 -0000

Author: avg
Date: Sun Dec 23 11:52:46 2012
New Revision: 244610
URL: http://svnweb.freebsd.org/changeset/base/244610

Log:
  MFC r243272,243499: assert_vop_locked should treat LK_EXCLOTHER as the
  not locked case

Modified:
  stable/8/sys/kern/vfs_subr.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/kern/   (props changed)

Modified: stable/8/sys/kern/vfs_subr.c
==============================================================================
--- stable/8/sys/kern/vfs_subr.c	Sun Dec 23 11:52:33 2012	(r244609)
+++ stable/8/sys/kern/vfs_subr.c	Sun Dec 23 11:52:46 2012	(r244610)
@@ -3832,9 +3832,13 @@ assert_vi_unlocked(struct vnode *vp, con
 void
 assert_vop_locked(struct vnode *vp, const char *str)
 {
+	int locked;
 
-	if (!IGNORE_LOCK(vp) && VOP_ISLOCKED(vp) == 0)
-		vfs_badlock("is not locked but should be", str, vp);
+	if (!IGNORE_LOCK(vp)) {
+		locked = VOP_ISLOCKED(vp);
+		if (locked == 0 || locked == LK_EXCLOTHER)
+			vfs_badlock("is not locked but should be", str, vp);
+	}
 }
 
 void

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 11:56:08 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id D0872418;
 Sun, 23 Dec 2012 11:56:08 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id B25738FC12;
 Sun, 23 Dec 2012 11:56:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNBu8uV086184;
 Sun, 23 Dec 2012 11:56:08 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNBu8Gw086183;
 Sun, 23 Dec 2012 11:56:08 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231156.qBNBu8Gw086183@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 11:56:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244611 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 11:56:08 -0000

Author: avg
Date: Sun Dec 23 11:56:08 2012
New Revision: 244611
URL: http://svnweb.freebsd.org/changeset/base/244611

Log:
  MFC r243497: zfs: create devices/geoms from zvols after receiveing them
  
  PR:		kern/167066

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Sun Dec 23 11:52:46 2012	(r244610)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Sun Dec 23 11:56:08 2012	(r244611)
@@ -3817,6 +3817,12 @@ zfs_ioc_recv(zfs_cmd_t *zc)
 		error = 1;
 	}
 #endif
+
+#ifdef __FreeBSD__
+	if (error == 0)
+		zvol_create_minors(tofs);
+#endif
+
 	/*
 	 * On error, restore the original props.
 	 */

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 11:56:29 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 29B8A57A;
 Sun, 23 Dec 2012 11:56:29 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 0CD858FC13;
 Sun, 23 Dec 2012 11:56:29 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNBuS17086261;
 Sun, 23 Dec 2012 11:56:28 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNBuSUx086260;
 Sun, 23 Dec 2012 11:56:28 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231156.qBNBuSUx086260@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 11:56:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244612 -
 stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 11:56:29 -0000

Author: avg
Date: Sun Dec 23 11:56:28 2012
New Revision: 244612
URL: http://svnweb.freebsd.org/changeset/base/244612

Log:
  MFC r243497: zfs: create devices/geoms from zvols after receiveing them
  
  PR:		kern/167066

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Sun Dec 23 11:56:08 2012	(r244611)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Sun Dec 23 11:56:28 2012	(r244612)
@@ -3817,6 +3817,12 @@ zfs_ioc_recv(zfs_cmd_t *zc)
 		error = 1;
 	}
 #endif
+
+#ifdef __FreeBSD__
+	if (error == 0)
+		zvol_create_minors(tofs);
+#endif
+
 	/*
 	 * On error, restore the original props.
 	 */

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 11:58:09 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 9624D6F3;
 Sun, 23 Dec 2012 11:58:09 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 79ACA8FC0C;
 Sun, 23 Dec 2012 11:58:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNBw9DK086542;
 Sun, 23 Dec 2012 11:58:09 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNBw9QP086541;
 Sun, 23 Dec 2012 11:58:09 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231158.qBNBw9QP086541@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 11:58:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244613 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 11:58:09 -0000

Author: avg
Date: Sun Dec 23 11:58:08 2012
New Revision: 244613
URL: http://svnweb.freebsd.org/changeset/base/244613

Log:
  MFC r243519: zfs_fhtovp: there is no reason to amend lock flags with
  LK_RETRY here

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 11:56:28 2012	(r244612)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 11:58:08 2012	(r244613)
@@ -2136,7 +2136,7 @@ zfs_fhtovp(vfs_t *vfsp, fid_t *fidp, int
 			VN_HOLD(*vpp);
 		}
 		ZFS_EXIT(zfsvfs);
-		err = zfs_vnode_lock(*vpp, flags | LK_RETRY);
+		err = zfs_vnode_lock(*vpp, flags);
 		if (err != 0)
 			*vpp = NULL;
 		return (err);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:06:00 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id BD5D8ED5;
 Sun, 23 Dec 2012 12:06:00 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id A128C8FC14;
 Sun, 23 Dec 2012 12:06:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC6098088308;
 Sun, 23 Dec 2012 12:06:00 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC60Eg088307;
 Sun, 23 Dec 2012 12:06:00 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231206.qBNC60Eg088307@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:06:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244614 - stable/9/sys/dev/acpica
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:06:00 -0000

Author: avg
Date: Sun Dec 23 12:06:00 2012
New Revision: 244614
URL: http://svnweb.freebsd.org/changeset/base/244614

Log:
  MFC r243760: acpi_cpu: change cpu_disable_idle to be a per-cpu flag

Modified:
  stable/9/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 11:58:08 2012	(r244613)
+++ stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:06:00 2012	(r244614)
@@ -90,6 +90,7 @@ struct acpi_cpu_softc {
     struct sysctl_oid	*cpu_sysctl_tree;
     int			 cpu_cx_lowest;
     int			 cpu_cx_lowest_lim;
+    int			 cpu_disable_idle; /* Disable entry to idle function */
     char 		 cpu_cx_supported[64];
     int			 cpu_rid;
 };
@@ -137,9 +138,6 @@ static uint32_t		 cpu_smi_cmd;	/* Value 
 static uint8_t		 cpu_cst_cnt;	/* Indicate we are _CST aware. */
 static int		 cpu_quirks;	/* Indicate any hardware bugs. */
 
-/* Runtime state. */
-static int		 cpu_disable_idle; /* Disable entry to idle function */
-
 /* Values for sysctl. */
 static struct sysctl_ctx_list cpu_sysctl_ctx;
 static struct sysctl_oid *cpu_sysctl_tree;
@@ -418,6 +416,39 @@ acpi_cpu_postattach(void *unused __unuse
 SYSINIT(acpi_cpu, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE,
     acpi_cpu_postattach, NULL);
 
+static void
+disable_idle(struct acpi_cpu_softc *sc)
+{
+    cpuset_t cpuset;
+
+    CPU_SETOF(sc->cpu_pcpu->pc_cpuid, &cpuset);
+    sc->cpu_disable_idle = TRUE;
+
+    /*
+     * Ensure that the CPU is not in idle state or in acpi_cpu_idle().
+     * Note that this code depends on the fact that the rendezvous IPI
+     * can not penetrate context where interrupts are disabled and acpi_cpu_idle
+     * is called and executed in such a context with interrupts being re-enabled
+     * right before return.
+     */
+    smp_rendezvous_cpus(cpuset, smp_no_rendevous_barrier, NULL,
+	smp_no_rendevous_barrier, NULL);
+}
+
+static void
+enable_idle(struct acpi_cpu_softc *sc)
+{
+
+    sc->cpu_disable_idle = FALSE;
+}
+
+static int
+is_idle_disabled(struct acpi_cpu_softc *sc)
+{
+
+    return (sc->cpu_disable_idle);
+}
+
 /*
  * Disable any entry to the idle function during suspend and re-enable it
  * during resume.
@@ -430,7 +461,7 @@ acpi_cpu_suspend(device_t dev)
     error = bus_generic_suspend(dev);
     if (error)
 	return (error);
-    cpu_disable_idle = TRUE;
+    disable_idle(device_get_softc(dev));
     return (0);
 }
 
@@ -438,7 +469,7 @@ static int
 acpi_cpu_resume(device_t dev)
 {
 
-    cpu_disable_idle = FALSE;
+    enable_idle(device_get_softc(dev));
     return (bus_generic_resume(dev));
 }
 
@@ -572,12 +603,14 @@ acpi_cpu_shutdown(device_t dev)
     bus_generic_shutdown(dev);
 
     /*
-     * Disable any entry to the idle function.  There is a small race where
-     * an idle thread have passed this check but not gone to sleep.  This
-     * is ok since device_shutdown() does not free the softc, otherwise
-     * we'd have to be sure all threads were evicted before returning.
+     * Disable any entry to the idle function.
+     */
+    disable_idle(device_get_softc(dev));
+
+    /*
+     * CPU devices are not truely detached and remain referenced,
+     * so their resources are not freed.
      */
-    cpu_disable_idle = TRUE;
 
     return_VALUE (0);
 }
@@ -860,7 +893,10 @@ acpi_cpu_startup(void *arg)
 
     /* Take over idling from cpu_idle_default(). */
     cpu_cx_lowest_lim = 0;
-    cpu_disable_idle = FALSE;
+    for (i = 0; i < cpu_ndevices; i++) {
+	sc = device_get_softc(cpu_devices[i]);
+	enable_idle(sc);
+    }
     cpu_idle_hook = acpi_cpu_idle;
 }
 
@@ -926,12 +962,6 @@ acpi_cpu_idle()
     uint32_t	start_time, end_time;
     int		bm_active, cx_next_idx, i;
 
-    /* If disabled, return immediately. */
-    if (cpu_disable_idle) {
-	ACPI_ENABLE_IRQS();
-	return;
-    }
-
     /*
      * Look up our CPU id to get our softc.  If it's NULL, we'll use C1
      * since there is no ACPI processor object for this CPU.  This occurs
@@ -943,6 +973,12 @@ acpi_cpu_idle()
 	return;
     }
 
+    /* If disabled, return immediately. */
+    if (is_idle_disabled(sc)) {
+	ACPI_ENABLE_IRQS();
+	return;
+    }
+
     /* Find the lowest state that has small enough latency. */
     cx_next_idx = 0;
     if (cpu_disable_deep_sleep)

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:06:12 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id E1353B8;
 Sun, 23 Dec 2012 12:06:12 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id C701D8FC0C;
 Sun, 23 Dec 2012 12:06:12 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC6Chf088391;
 Sun, 23 Dec 2012 12:06:12 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC6CBI088390;
 Sun, 23 Dec 2012 12:06:12 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231206.qBNC6CBI088390@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:06:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244615 - stable/8/sys/dev/acpica
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:06:13 -0000

Author: avg
Date: Sun Dec 23 12:06:12 2012
New Revision: 244615
URL: http://svnweb.freebsd.org/changeset/base/244615

Log:
  MFC r243760: acpi_cpu: change cpu_disable_idle to be a per-cpu flag

Modified:
  stable/8/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/acpica/   (props changed)

Modified: stable/8/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:06:00 2012	(r244614)
+++ stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:06:12 2012	(r244615)
@@ -87,6 +87,7 @@ struct acpi_cpu_softc {
     struct sysctl_oid	*cpu_sysctl_tree;
     int			 cpu_cx_lowest;
     int			 cpu_cx_lowest_lim;
+    int			 cpu_disable_idle; /* Disable entry to idle function */
     char 		 cpu_cx_supported[64];
     int			 cpu_rid;
 };
@@ -134,9 +135,6 @@ static uint32_t		 cpu_smi_cmd;	/* Value 
 static uint8_t		 cpu_cst_cnt;	/* Indicate we are _CST aware. */
 static int		 cpu_quirks;	/* Indicate any hardware bugs. */
 
-/* Runtime state. */
-static int		 cpu_disable_idle; /* Disable entry to idle function */
-
 /* Values for sysctl. */
 static struct sysctl_ctx_list cpu_sysctl_ctx;
 static struct sysctl_oid *cpu_sysctl_tree;
@@ -415,6 +413,39 @@ acpi_cpu_postattach(void *unused __unuse
 SYSINIT(acpi_cpu, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE,
     acpi_cpu_postattach, NULL);
 
+static void
+disable_idle(struct acpi_cpu_softc *sc)
+{
+    cpuset_t cpuset;
+
+    CPU_SETOF(sc->cpu_pcpu->pc_cpuid, &cpuset);
+    sc->cpu_disable_idle = TRUE;
+
+    /*
+     * Ensure that the CPU is not in idle state or in acpi_cpu_idle().
+     * Note that this code depends on the fact that the rendezvous IPI
+     * can not penetrate context where interrupts are disabled and acpi_cpu_idle
+     * is called and executed in such a context with interrupts being re-enabled
+     * right before return.
+     */
+    smp_rendezvous_cpus(cpuset, smp_no_rendevous_barrier, NULL,
+	smp_no_rendevous_barrier, NULL);
+}
+
+static void
+enable_idle(struct acpi_cpu_softc *sc)
+{
+
+    sc->cpu_disable_idle = FALSE;
+}
+
+static int
+is_idle_disabled(struct acpi_cpu_softc *sc)
+{
+
+    return (sc->cpu_disable_idle);
+}
+
 /*
  * Disable any entry to the idle function during suspend and re-enable it
  * during resume.
@@ -427,7 +458,7 @@ acpi_cpu_suspend(device_t dev)
     error = bus_generic_suspend(dev);
     if (error)
 	return (error);
-    cpu_disable_idle = TRUE;
+    disable_idle(device_get_softc(dev));
     return (0);
 }
 
@@ -435,7 +466,7 @@ static int
 acpi_cpu_resume(device_t dev)
 {
 
-    cpu_disable_idle = FALSE;
+    enable_idle(device_get_softc(dev));
     return (bus_generic_resume(dev));
 }
 
@@ -561,12 +592,14 @@ acpi_cpu_shutdown(device_t dev)
     bus_generic_shutdown(dev);
 
     /*
-     * Disable any entry to the idle function.  There is a small race where
-     * an idle thread have passed this check but not gone to sleep.  This
-     * is ok since device_shutdown() does not free the softc, otherwise
-     * we'd have to be sure all threads were evicted before returning.
+     * Disable any entry to the idle function.
+     */
+    disable_idle(device_get_softc(dev));
+
+    /*
+     * CPU devices are not truely detached and remain referenced,
+     * so their resources are not freed.
      */
-    cpu_disable_idle = TRUE;
 
     return_VALUE (0);
 }
@@ -847,7 +880,10 @@ acpi_cpu_startup(void *arg)
 
     /* Take over idling from cpu_idle_default(). */
     cpu_cx_lowest_lim = 0;
-    cpu_disable_idle = FALSE;
+    for (i = 0; i < cpu_ndevices; i++) {
+	sc = device_get_softc(cpu_devices[i]);
+	enable_idle(sc);
+    }
     cpu_idle_hook = acpi_cpu_idle;
 }
 
@@ -917,12 +953,6 @@ acpi_cpu_idle()
     uint32_t	start_time, end_time;
     int		bm_active, cx_next_idx, i;
 
-    /* If disabled, return immediately. */
-    if (cpu_disable_idle) {
-	ACPI_ENABLE_IRQS();
-	return;
-    }
-
     /*
      * Look up our CPU id to get our softc.  If it's NULL, we'll use C1
      * since there is no ACPI processor object for this CPU.  This occurs
@@ -934,6 +964,12 @@ acpi_cpu_idle()
 	return;
     }
 
+    /* If disabled, return immediately. */
+    if (is_idle_disabled(sc)) {
+	ACPI_ENABLE_IRQS();
+	return;
+    }
+
     /* Find the lowest state that has small enough latency. */
     cx_next_idx = 0;
     for (i = sc->cpu_cx_lowest; i >= 0; i--) {

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:07:43 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 1782D310;
 Sun, 23 Dec 2012 12:07:43 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D6B5A8FC0A;
 Sun, 23 Dec 2012 12:07:42 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC7gRO088772;
 Sun, 23 Dec 2012 12:07:42 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC7gAB088771;
 Sun, 23 Dec 2012 12:07:42 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231207.qBNC7gAB088771@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:07:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244616 - stable/9/sys/dev/acpica
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:07:43 -0000

Author: avg
Date: Sun Dec 23 12:07:42 2012
New Revision: 244616
URL: http://svnweb.freebsd.org/changeset/base/244616

Log:
  MFC r243761: acpi_cpu_notify: disable acpi_cpu_idle while updating
  C-state data

Modified:
  stable/9/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:06:12 2012	(r244615)
+++ stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:07:42 2012	(r244616)
@@ -973,9 +973,9 @@ acpi_cpu_idle()
 	return;
     }
 
-    /* If disabled, return immediately. */
+    /* If disabled, take the safe path. */
     if (is_idle_disabled(sc)) {
-	ACPI_ENABLE_IRQS();
+	acpi_cpu_c1();
 	return;
     }
 
@@ -1081,23 +1081,31 @@ acpi_cpu_idle()
 
 /*
  * Re-evaluate the _CST object when we are notified that it changed.
- *
- * XXX Re-evaluation disabled until locking is done.
  */
 static void
 acpi_cpu_notify(ACPI_HANDLE h, UINT32 notify, void *context)
 {
     struct acpi_cpu_softc *sc = (struct acpi_cpu_softc *)context;
-    
+
     if (notify != ACPI_NOTIFY_CX_STATES)
 	return;
 
+    /*
+     * C-state data for target CPU is going to be in flux while we execute
+     * acpi_cpu_cx_cst, so disable entering acpi_cpu_idle.
+     * Also, it may happen that multiple ACPI taskqueues may concurrently
+     * execute notifications for the same CPU.  ACPI_SERIAL is used to
+     * protect against that.
+     */
+    ACPI_SERIAL_BEGIN(cpu);
+    disable_idle(sc);
+
     /* Update the list of Cx states. */
     acpi_cpu_cx_cst(sc);
     acpi_cpu_cx_list(sc);
-
-    ACPI_SERIAL_BEGIN(cpu);
     acpi_cpu_set_cx_lowest(sc);
+
+    enable_idle(sc);
     ACPI_SERIAL_END(cpu);
 
     acpi_UserNotify("PROCESSOR", sc->cpu_handle, notify);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:07:53 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id AF24845E;
 Sun, 23 Dec 2012 12:07:53 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 7987E8FC12;
 Sun, 23 Dec 2012 12:07:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC7rW5088837;
 Sun, 23 Dec 2012 12:07:53 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC7rPm088836;
 Sun, 23 Dec 2012 12:07:53 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231207.qBNC7rPm088836@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:07:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244617 - stable/8/sys/dev/acpica
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:07:53 -0000

Author: avg
Date: Sun Dec 23 12:07:52 2012
New Revision: 244617
URL: http://svnweb.freebsd.org/changeset/base/244617

Log:
  MFC r243761: acpi_cpu_notify: disable acpi_cpu_idle while updating
  C-state data

Modified:
  stable/8/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/acpica/   (props changed)

Modified: stable/8/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:07:42 2012	(r244616)
+++ stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:07:52 2012	(r244617)
@@ -964,9 +964,9 @@ acpi_cpu_idle()
 	return;
     }
 
-    /* If disabled, return immediately. */
+    /* If disabled, take the safe path. */
     if (is_idle_disabled(sc)) {
-	ACPI_ENABLE_IRQS();
+	acpi_cpu_c1();
 	return;
     }
 
@@ -1067,23 +1067,31 @@ acpi_cpu_idle()
 
 /*
  * Re-evaluate the _CST object when we are notified that it changed.
- *
- * XXX Re-evaluation disabled until locking is done.
  */
 static void
 acpi_cpu_notify(ACPI_HANDLE h, UINT32 notify, void *context)
 {
     struct acpi_cpu_softc *sc = (struct acpi_cpu_softc *)context;
-    
+
     if (notify != ACPI_NOTIFY_CX_STATES)
 	return;
 
+    /*
+     * C-state data for target CPU is going to be in flux while we execute
+     * acpi_cpu_cx_cst, so disable entering acpi_cpu_idle.
+     * Also, it may happen that multiple ACPI taskqueues may concurrently
+     * execute notifications for the same CPU.  ACPI_SERIAL is used to
+     * protect against that.
+     */
+    ACPI_SERIAL_BEGIN(cpu);
+    disable_idle(sc);
+
     /* Update the list of Cx states. */
     acpi_cpu_cx_cst(sc);
     acpi_cpu_cx_list(sc);
-
-    ACPI_SERIAL_BEGIN(cpu);
     acpi_cpu_set_cx_lowest(sc);
+
+    enable_idle(sc);
     ACPI_SERIAL_END(cpu);
 
     acpi_UserNotify("PROCESSOR", sc->cpu_handle, notify);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:09:42 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 51354608;
 Sun, 23 Dec 2012 12:09:42 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 365A98FC14;
 Sun, 23 Dec 2012 12:09:42 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC9g2D089219;
 Sun, 23 Dec 2012 12:09:42 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC9gkK089218;
 Sun, 23 Dec 2012 12:09:42 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231209.qBNC9gkK089218@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:09:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244618 - stable/9/sys/dev/acpica
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:09:42 -0000

Author: avg
Date: Sun Dec 23 12:09:41 2012
New Revision: 244618
URL: http://svnweb.freebsd.org/changeset/base/244618

Log:
  MFC r243404: acpi_cpu: use fixed resource ids for cx state i/o resources

Modified:
  stable/9/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:07:52 2012	(r244617)
+++ stable/9/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:09:41 2012	(r244618)
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/pcpu.h>
 #include <sys/power.h>
 #include <sys/proc.h>
+#include <sys/sched.h>
 #include <sys/sbuf.h>
 #include <sys/smp.h>
 
@@ -68,6 +69,7 @@ struct acpi_cx {
     uint32_t		 trans_lat;	/* Transition latency (usec). */
     uint32_t		 power;		/* Power consumed (mW). */
     int			 res_type;	/* Resource type for p_lvlx. */
+    int			 res_rid;	/* Resource ID for p_lvlx. */
 };
 #define MAX_CX_STATES	 8
 
@@ -92,7 +94,6 @@ struct acpi_cpu_softc {
     int			 cpu_cx_lowest_lim;
     int			 cpu_disable_idle; /* Disable entry to idle function */
     char 		 cpu_cx_supported[64];
-    int			 cpu_rid;
 };
 
 struct acpi_cpu_device {
@@ -681,10 +682,10 @@ acpi_cpu_generic_cx_probe(struct acpi_cp
     gas.BitWidth = 8;
     if (AcpiGbl_FADT.C2Latency <= 100) {
 	gas.Address = sc->cpu_p_blk + 4;
-	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid,
+	cx_ptr->res_rid = 0;
+	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid,
 	    &gas, &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx != NULL) {
-	    sc->cpu_rid++;
 	    cx_ptr->type = ACPI_STATE_C2;
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C2Latency;
 	    cx_ptr++;
@@ -698,10 +699,10 @@ acpi_cpu_generic_cx_probe(struct acpi_cp
     /* Validate and allocate resources for C3 (P_LVL3). */
     if (AcpiGbl_FADT.C3Latency <= 1000 && !(cpu_quirks & CPU_QUIRK_NO_C3)) {
 	gas.Address = sc->cpu_p_blk + 5;
-	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid, &gas,
-	    &cx_ptr->p_lvlx, RF_SHAREABLE);
+	cx_ptr->res_rid = 1;
+	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid,
+	    &gas, &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx != NULL) {
-	    sc->cpu_rid++;
 	    cx_ptr->type = ACPI_STATE_C3;
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C3Latency;
 	    cx_ptr++;
@@ -803,19 +804,18 @@ acpi_cpu_cx_cst(struct acpi_cpu_softc *s
 	    break;
 	}
 
-#ifdef notyet
 	/* Free up any previous register. */
 	if (cx_ptr->p_lvlx != NULL) {
-	    bus_release_resource(sc->cpu_dev, 0, 0, cx_ptr->p_lvlx);
+	    bus_release_resource(sc->cpu_dev, cx_ptr->res_type, cx_ptr->res_rid,
+	        cx_ptr->p_lvlx);
 	    cx_ptr->p_lvlx = NULL;
 	}
-#endif
 
 	/* Allocate the control register for C2 or C3. */
-	acpi_PkgGas(sc->cpu_dev, pkg, 0, &cx_ptr->res_type, &sc->cpu_rid,
+	cx_ptr->res_rid = sc->cpu_cx_count;
+	acpi_PkgGas(sc->cpu_dev, pkg, 0, &cx_ptr->res_type, &cx_ptr->res_rid,
 	    &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx) {
-	    sc->cpu_rid++;
 	    ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 			     "acpi_cpu%d: Got C%d - %d latency\n",
 			     device_get_unit(sc->cpu_dev), cx_ptr->type,

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:09:53 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 6AF30713;
 Sun, 23 Dec 2012 12:09:53 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4F2B08FC0A;
 Sun, 23 Dec 2012 12:09:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNC9rbL089291;
 Sun, 23 Dec 2012 12:09:53 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNC9r97089290;
 Sun, 23 Dec 2012 12:09:53 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231209.qBNC9r97089290@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:09:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244619 - stable/8/sys/dev/acpica
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:09:53 -0000

Author: avg
Date: Sun Dec 23 12:09:52 2012
New Revision: 244619
URL: http://svnweb.freebsd.org/changeset/base/244619

Log:
  MFC r243404: acpi_cpu: use fixed resource ids for cx state i/o resources

Modified:
  stable/8/sys/dev/acpica/acpi_cpu.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/acpica/   (props changed)

Modified: stable/8/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:09:41 2012	(r244618)
+++ stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 12:09:52 2012	(r244619)
@@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/pcpu.h>
 #include <sys/power.h>
 #include <sys/proc.h>
+#include <sys/sched.h>
 #include <sys/sbuf.h>
 #include <sys/smp.h>
 
@@ -65,6 +66,7 @@ struct acpi_cx {
     uint32_t		 trans_lat;	/* Transition latency (usec). */
     uint32_t		 power;		/* Power consumed (mW). */
     int			 res_type;	/* Resource type for p_lvlx. */
+    int			 res_rid;	/* Resource ID for p_lvlx. */
 };
 #define MAX_CX_STATES	 8
 
@@ -89,7 +91,6 @@ struct acpi_cpu_softc {
     int			 cpu_cx_lowest_lim;
     int			 cpu_disable_idle; /* Disable entry to idle function */
     char 		 cpu_cx_supported[64];
-    int			 cpu_rid;
 };
 
 struct acpi_cpu_device {
@@ -670,10 +671,10 @@ acpi_cpu_generic_cx_probe(struct acpi_cp
     gas.BitWidth = 8;
     if (AcpiGbl_FADT.C2Latency <= 100) {
 	gas.Address = sc->cpu_p_blk + 4;
-	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid,
+	cx_ptr->res_rid = 0;
+	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid,
 	    &gas, &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx != NULL) {
-	    sc->cpu_rid++;
 	    cx_ptr->type = ACPI_STATE_C2;
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C2Latency;
 	    cx_ptr++;
@@ -687,10 +688,10 @@ acpi_cpu_generic_cx_probe(struct acpi_cp
     /* Validate and allocate resources for C3 (P_LVL3). */
     if (AcpiGbl_FADT.C3Latency <= 1000 && !(cpu_quirks & CPU_QUIRK_NO_C3)) {
 	gas.Address = sc->cpu_p_blk + 5;
-	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &sc->cpu_rid, &gas,
-	    &cx_ptr->p_lvlx, RF_SHAREABLE);
+	cx_ptr->res_rid = 1;
+	acpi_bus_alloc_gas(sc->cpu_dev, &cx_ptr->res_type, &cx_ptr->res_rid,
+	    &gas, &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx != NULL) {
-	    sc->cpu_rid++;
 	    cx_ptr->type = ACPI_STATE_C3;
 	    cx_ptr->trans_lat = AcpiGbl_FADT.C3Latency;
 	    cx_ptr++;
@@ -790,19 +791,18 @@ acpi_cpu_cx_cst(struct acpi_cpu_softc *s
 	    break;
 	}
 
-#ifdef notyet
 	/* Free up any previous register. */
 	if (cx_ptr->p_lvlx != NULL) {
-	    bus_release_resource(sc->cpu_dev, 0, 0, cx_ptr->p_lvlx);
+	    bus_release_resource(sc->cpu_dev, cx_ptr->res_type, cx_ptr->res_rid,
+	        cx_ptr->p_lvlx);
 	    cx_ptr->p_lvlx = NULL;
 	}
-#endif
 
 	/* Allocate the control register for C2 or C3. */
-	acpi_PkgGas(sc->cpu_dev, pkg, 0, &cx_ptr->res_type, &sc->cpu_rid,
+	cx_ptr->res_rid = sc->cpu_cx_count;
+	acpi_PkgGas(sc->cpu_dev, pkg, 0, &cx_ptr->res_type, &cx_ptr->res_rid,
 	    &cx_ptr->p_lvlx, RF_SHAREABLE);
 	if (cx_ptr->p_lvlx) {
-	    sc->cpu_rid++;
 	    ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 			     "acpi_cpu%d: Got C%d - %d latency\n",
 			     device_get_unit(sc->cpu_dev), cx_ptr->type,

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:12:48 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 991168EE;
 Sun, 23 Dec 2012 12:12:48 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 7BC498FC0A;
 Sun, 23 Dec 2012 12:12:48 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCCmfa089908;
 Sun, 23 Dec 2012 12:12:48 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCCmke089907;
 Sun, 23 Dec 2012 12:12:48 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231212.qBNCCmke089907@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:12:48 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244620 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:12:48 -0000

Author: avg
Date: Sun Dec 23 12:12:47 2012
New Revision: 244620
URL: http://svnweb.freebsd.org/changeset/base/244620

Log:
  MFC r243762: gfs_file_inactive: replace bad code with ugly code

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c	Sun Dec 23 12:09:52 2012	(r244619)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c	Sun Dec 23 12:12:47 2012	(r244620)
@@ -665,8 +665,10 @@ gfs_file_inactive(vnode_t *vp)
 	ge = NULL;
 
 found:
+#ifdef TODO
 	if (vp->v_flag & V_XATTRDIR)
 		VI_LOCK(fp->gfs_parent);
+#endif
 	VI_LOCK(vp);
 	/*
 	 * Really remove this vnode
@@ -687,16 +689,17 @@ found:
 	if (fp->gfs_parent) {
 		if (dp)
 			gfs_dir_unlock(dp);
-		VI_LOCK(fp->gfs_parent);
-		fp->gfs_parent->v_usecount--;
-		VI_UNLOCK(fp->gfs_parent);
+		VOP_UNLOCK(vp, 0);
+		VN_RELE(fp->gfs_parent);
+		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	} else {
 		ASSERT(vp->v_vfsp != NULL);
 		VFS_RELE(vp->v_vfsp);
 	}
+#ifdef TODO
 	if (vp->v_flag & V_XATTRDIR)
 		VI_UNLOCK(fp->gfs_parent);
-
+#endif
 	return (data);
 }
 

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:13:08 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 14581A4C;
 Sun, 23 Dec 2012 12:13:08 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id EBC978FC0A;
 Sun, 23 Dec 2012 12:13:07 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCD7BP090007;
 Sun, 23 Dec 2012 12:13:07 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCD7vd090006;
 Sun, 23 Dec 2012 12:13:07 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231213.qBNCD7vd090006@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:13:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244621 -
 stable/8/sys/cddl/contrib/opensolaris/uts/common/fs
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:13:08 -0000

Author: avg
Date: Sun Dec 23 12:13:07 2012
New Revision: 244621
URL: http://svnweb.freebsd.org/changeset/base/244621

Log:
  MFC r243762: gfs_file_inactive: replace bad code with ugly code
  
  PR:		kern/151111

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c	Sun Dec 23 12:12:47 2012	(r244620)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c	Sun Dec 23 12:13:07 2012	(r244621)
@@ -665,8 +665,10 @@ gfs_file_inactive(vnode_t *vp)
 	ge = NULL;
 
 found:
+#ifdef TODO
 	if (vp->v_flag & V_XATTRDIR)
 		VI_LOCK(fp->gfs_parent);
+#endif
 	VI_LOCK(vp);
 	/*
 	 * Really remove this vnode
@@ -687,16 +689,17 @@ found:
 	if (fp->gfs_parent) {
 		if (dp)
 			gfs_dir_unlock(dp);
-		VI_LOCK(fp->gfs_parent);
-		fp->gfs_parent->v_usecount--;
-		VI_UNLOCK(fp->gfs_parent);
+		VOP_UNLOCK(vp, 0);
+		VN_RELE(fp->gfs_parent);
+		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	} else {
 		ASSERT(vp->v_vfsp != NULL);
 		VFS_RELE(vp->v_vfsp);
 	}
+#ifdef TODO
 	if (vp->v_flag & V_XATTRDIR)
 		VI_UNLOCK(fp->gfs_parent);
-
+#endif
 	return (data);
 }
 

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:16:14 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 2BB21BC1;
 Sun, 23 Dec 2012 12:16:14 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 0FA628FC12;
 Sun, 23 Dec 2012 12:16:14 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCGDks090527;
 Sun, 23 Dec 2012 12:16:13 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCGDoA090525;
 Sun, 23 Dec 2012 12:16:13 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231216.qBNCGDoA090525@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:16:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244622 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:16:14 -0000

Author: avg
Date: Sun Dec 23 12:16:13 2012
New Revision: 244622
URL: http://svnweb.freebsd.org/changeset/base/244622

Log:
  MFC r243502: zfs roopool: add support for multi-vdev configurations

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 12:13:07 2012	(r244621)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 12:16:13 2012	(r244622)
@@ -3739,54 +3739,120 @@ out:
 
 #else
 
-extern int
-vdev_geom_read_pool_label(const char *name, nvlist_t **config);
+extern int vdev_geom_read_pool_label(const char *name, nvlist_t ***configs,
+    uint64_t *count);
 
 static nvlist_t *
 spa_generate_rootconf(const char *name)
 {
+	nvlist_t **configs, **tops;
 	nvlist_t *config;
-	nvlist_t *nvtop, *nvroot;
+	nvlist_t *best_cfg, *nvtop, *nvroot;
+	uint64_t *holes;
+	uint64_t best_txg;
 	uint64_t nchildren;
 	uint64_t pgid;
+	uint64_t count;
+	uint64_t i;
+	uint_t   nholes;
 
-	if (vdev_geom_read_pool_label(name, &config) != 0)
+	if (vdev_geom_read_pool_label(name, &configs, &count) != 0)
 		return (NULL);
 
+	ASSERT3U(count, !=, 0);
+	best_txg = 0;
+	for (i = 0; i < count; i++) {
+		uint64_t txg;
+
+		VERIFY(nvlist_lookup_uint64(configs[i], ZPOOL_CONFIG_POOL_TXG,
+		    &txg) == 0);
+		if (txg > best_txg) {
+			best_txg = txg;
+			best_cfg = configs[i];
+		}
+	}
+
 	/*
 	 * Multi-vdev root pool configuration discovery is not supported yet.
 	 */
 	nchildren = 0;
-	nvlist_lookup_uint64(config, ZPOOL_CONFIG_VDEV_CHILDREN, &nchildren);
-	if (nchildren != 1) {
-		nvlist_free(config);
-		return (NULL);
+	VERIFY(nvlist_lookup_uint64(best_cfg, ZPOOL_CONFIG_VDEV_CHILDREN,
+	    &nchildren) == 0);
+	holes = NULL;
+	nvlist_lookup_uint64_array(best_cfg, ZPOOL_CONFIG_HOLE_ARRAY,
+	    &holes, &nholes);
+
+	tops = kmem_alloc(nchildren * sizeof(void *), KM_SLEEP | KM_ZERO);
+	for (i = 0; i < nchildren; i++) {
+		if (i >= count)
+			break;
+		if (configs[i] == NULL)
+			continue;
+		VERIFY(nvlist_lookup_nvlist(configs[i], ZPOOL_CONFIG_VDEV_TREE,
+		    &nvtop) == 0);
+		nvlist_dup(nvtop, &tops[i], KM_SLEEP);
+	}
+	for (i = 0; holes != NULL && i < nholes; i++) {
+		if (i >= nchildren)
+			continue;
+		if (tops[holes[i]] != NULL)
+			continue;
+		nvlist_alloc(&tops[holes[i]], NV_UNIQUE_NAME, KM_SLEEP);
+		VERIFY(nvlist_add_string(tops[holes[i]], ZPOOL_CONFIG_TYPE,
+		    VDEV_TYPE_HOLE) == 0);
+		VERIFY(nvlist_add_uint64(tops[holes[i]], ZPOOL_CONFIG_ID,
+		    holes[i]) == 0);
+		VERIFY(nvlist_add_uint64(tops[holes[i]], ZPOOL_CONFIG_GUID,
+		    0) == 0);
+	}
+	for (i = 0; i < nchildren; i++) {
+		if (tops[i] != NULL)
+			continue;
+		nvlist_alloc(&tops[i], NV_UNIQUE_NAME, KM_SLEEP);
+		VERIFY(nvlist_add_string(tops[i], ZPOOL_CONFIG_TYPE,
+		    VDEV_TYPE_MISSING) == 0);
+		VERIFY(nvlist_add_uint64(tops[i], ZPOOL_CONFIG_ID,
+		    i) == 0);
+		VERIFY(nvlist_add_uint64(tops[i], ZPOOL_CONFIG_GUID,
+		    0) == 0);
 	}
 
 	/*
-	 * Add this top-level vdev to the child array.
+	 * Create pool config based on the best vdev config.
 	 */
-	VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE,
-	    &nvtop) == 0);
-	VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID,
-	    &pgid) == 0);
+	nvlist_dup(best_cfg, &config, KM_SLEEP);
 
 	/*
 	 * Put this pool's top-level vdevs into a root vdev.
 	 */
+	VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID,
+	    &pgid) == 0);
 	VERIFY(nvlist_alloc(&nvroot, NV_UNIQUE_NAME, KM_SLEEP) == 0);
 	VERIFY(nvlist_add_string(nvroot, ZPOOL_CONFIG_TYPE,
 	    VDEV_TYPE_ROOT) == 0);
 	VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_ID, 0ULL) == 0);
 	VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_GUID, pgid) == 0);
 	VERIFY(nvlist_add_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN,
-	    &nvtop, 1) == 0);
+	    tops, nchildren) == 0);
 
 	/*
 	 * Replace the existing vdev_tree with the new root vdev in
 	 * this pool's configuration (remove the old, add the new).
 	 */
 	VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, nvroot) == 0);
+
+	/*
+	 * Drop vdev config elements that should not be present at pool level.
+	 */
+	nvlist_remove(config, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64);
+	nvlist_remove(config, ZPOOL_CONFIG_TOP_GUID, DATA_TYPE_UINT64);
+
+	for (i = 0; i < count; i++)
+		nvlist_free(configs[i]);
+	kmem_free(configs, count * sizeof(void *));
+	for (i = 0; i < nchildren; i++)
+		nvlist_free(tops[i]);
+	kmem_free(tops, nchildren * sizeof(void *));
 	nvlist_free(nvroot);
 	return (config);
 }

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 12:13:07 2012	(r244621)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 12:16:13 2012	(r244622)
@@ -289,27 +289,74 @@ vdev_geom_read_config(struct g_consumer 
 	return (*config == NULL ? ENOENT : 0);
 }
 
-static int
-vdev_geom_check_config(nvlist_t *config, const char *name, uint64_t *best_txg)
+static void
+resize_configs(nvlist_t ***configs, uint64_t *count, uint64_t id)
 {
-	uint64_t vdev_guid;
-	uint64_t txg;
+	nvlist_t **new_configs;
+	uint64_t i;
+
+	if (id < *count)
+		return;
+	new_configs = kmem_alloc((id + 1) * sizeof(nvlist_t *),
+	    KM_SLEEP | KM_ZERO);
+	for (i = 0; i < *count; i++)
+		new_configs[i] = (*configs)[i];
+	if (*configs != NULL)
+		kmem_free(*configs, *count * sizeof(void *));
+	*configs = new_configs;
+	*count = id + 1;
+}
+
+static void
+process_vdev_config(nvlist_t ***configs, uint64_t *count, nvlist_t *cfg,
+    const char *name, uint64_t* known_pool_guid)
+{
+	nvlist_t *vdev_tree;
+	uint64_t pool_guid;
+	uint64_t vdev_guid, known_guid;
+	uint64_t id, txg, known_txg;
 	char *pname;
+	int i;
 
-	if (nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &pname) != 0 ||
+	if (nvlist_lookup_string(cfg, ZPOOL_CONFIG_POOL_NAME, &pname) != 0 ||
 	    strcmp(pname, name) != 0)
-		return (ENOENT);
+		goto ignore;
 
-	ZFS_LOG(1, "found pool: %s", pname);
+	if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_GUID, &pool_guid) != 0)
+		goto ignore;
 
-	txg = 0;
-	nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG, &txg);
-	if (txg <= *best_txg)
-		return (ENOENT);
-	*best_txg = txg;
-	ZFS_LOG(1, "txg: %ju", (uintmax_t)*best_txg);
+	if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_TOP_GUID, &vdev_guid) != 0)
+		goto ignore;
 
-	return (0);
+	if (nvlist_lookup_nvlist(cfg, ZPOOL_CONFIG_VDEV_TREE, &vdev_tree) != 0)
+		goto ignore;
+
+	if (nvlist_lookup_uint64(vdev_tree, ZPOOL_CONFIG_ID, &id) != 0)
+		goto ignore;
+
+	VERIFY(nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_TXG, &txg) == 0);
+
+	if (*known_pool_guid != 0) {
+		if (pool_guid != *known_pool_guid)
+			goto ignore;
+	} else
+		*known_pool_guid = pool_guid;
+
+	resize_configs(configs, count, id);
+
+	if ((*configs)[id] != NULL) {
+		VERIFY(nvlist_lookup_uint64((*configs)[id],
+		    ZPOOL_CONFIG_POOL_TXG, &known_txg) == 0);
+		if (txg <= known_txg)
+			goto ignore;
+		nvlist_free((*configs)[id]);
+	}
+
+	(*configs)[id] = cfg;
+	return;
+
+ignore:
+	nvlist_free(cfg);
 }
 
 static int
@@ -336,14 +383,15 @@ vdev_geom_detach_taster(struct g_consume
 }
 
 int
-vdev_geom_read_pool_label(const char *name, nvlist_t **config)
+vdev_geom_read_pool_label(const char *name,
+    nvlist_t ***configs, uint64_t *count)
 {
 	struct g_class *mp;
 	struct g_geom *gp, *zgp;
 	struct g_provider *pp;
 	struct g_consumer *zcp;
 	nvlist_t *vdev_cfg;
-	uint64_t best_txg;
+	uint64_t pool_guid;
 	int error;
 
 	DROP_GIANT();
@@ -354,8 +402,9 @@ vdev_geom_read_pool_label(const char *na
 	zgp->orphan = vdev_geom_taste_orphan;
 	zcp = g_new_consumer(zgp);
 
-	best_txg = 0;
-	*config = NULL;
+	*configs = NULL;
+	*count = 0;
+	pool_guid = 0;
 	LIST_FOREACH(mp, &g_classes, class) {
 		if (mp == &zfs_vdev_class)
 			continue;
@@ -375,14 +424,8 @@ vdev_geom_read_pool_label(const char *na
 					continue;
 				ZFS_LOG(1, "successfully read vdev config");
 
-				error = vdev_geom_check_config(vdev_cfg, name,
-				    &best_txg);
-				if (error != 0) {
-					nvlist_free(vdev_cfg);
-					continue;
-				}
-				nvlist_free(*config);
-				*config = vdev_cfg;
+				process_vdev_config(configs, count,
+				    vdev_cfg, name, &pool_guid);
 			}
 		}
 	}
@@ -391,7 +434,8 @@ vdev_geom_read_pool_label(const char *na
 	g_destroy_geom(zgp);
 	g_topology_unlock();
 	PICKUP_GIANT();
-	return (*config == NULL ? ENOENT : 0);
+
+	return (*count > 0 ? 0 : ENOENT);
 }
 
 static uint64_t

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:16:25 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 45C4BBC2;
 Sun, 23 Dec 2012 12:16:25 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 294108FC13;
 Sun, 23 Dec 2012 12:16:25 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCGPc4090584;
 Sun, 23 Dec 2012 12:16:25 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCGO9J090582;
 Sun, 23 Dec 2012 12:16:24 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231216.qBNCGO9J090582@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:16:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244623 -
 stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:16:25 -0000

Author: avg
Date: Sun Dec 23 12:16:24 2012
New Revision: 244623
URL: http://svnweb.freebsd.org/changeset/base/244623

Log:
  MFC r243502: zfs roopool: add support for multi-vdev configurations

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 12:16:13 2012	(r244622)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 12:16:24 2012	(r244623)
@@ -3739,54 +3739,120 @@ out:
 
 #else
 
-extern int
-vdev_geom_read_pool_label(const char *name, nvlist_t **config);
+extern int vdev_geom_read_pool_label(const char *name, nvlist_t ***configs,
+    uint64_t *count);
 
 static nvlist_t *
 spa_generate_rootconf(const char *name)
 {
+	nvlist_t **configs, **tops;
 	nvlist_t *config;
-	nvlist_t *nvtop, *nvroot;
+	nvlist_t *best_cfg, *nvtop, *nvroot;
+	uint64_t *holes;
+	uint64_t best_txg;
 	uint64_t nchildren;
 	uint64_t pgid;
+	uint64_t count;
+	uint64_t i;
+	uint_t   nholes;
 
-	if (vdev_geom_read_pool_label(name, &config) != 0)
+	if (vdev_geom_read_pool_label(name, &configs, &count) != 0)
 		return (NULL);
 
+	ASSERT3U(count, !=, 0);
+	best_txg = 0;
+	for (i = 0; i < count; i++) {
+		uint64_t txg;
+
+		VERIFY(nvlist_lookup_uint64(configs[i], ZPOOL_CONFIG_POOL_TXG,
+		    &txg) == 0);
+		if (txg > best_txg) {
+			best_txg = txg;
+			best_cfg = configs[i];
+		}
+	}
+
 	/*
 	 * Multi-vdev root pool configuration discovery is not supported yet.
 	 */
 	nchildren = 0;
-	nvlist_lookup_uint64(config, ZPOOL_CONFIG_VDEV_CHILDREN, &nchildren);
-	if (nchildren != 1) {
-		nvlist_free(config);
-		return (NULL);
+	VERIFY(nvlist_lookup_uint64(best_cfg, ZPOOL_CONFIG_VDEV_CHILDREN,
+	    &nchildren) == 0);
+	holes = NULL;
+	nvlist_lookup_uint64_array(best_cfg, ZPOOL_CONFIG_HOLE_ARRAY,
+	    &holes, &nholes);
+
+	tops = kmem_alloc(nchildren * sizeof(void *), KM_SLEEP | KM_ZERO);
+	for (i = 0; i < nchildren; i++) {
+		if (i >= count)
+			break;
+		if (configs[i] == NULL)
+			continue;
+		VERIFY(nvlist_lookup_nvlist(configs[i], ZPOOL_CONFIG_VDEV_TREE,
+		    &nvtop) == 0);
+		nvlist_dup(nvtop, &tops[i], KM_SLEEP);
+	}
+	for (i = 0; holes != NULL && i < nholes; i++) {
+		if (i >= nchildren)
+			continue;
+		if (tops[holes[i]] != NULL)
+			continue;
+		nvlist_alloc(&tops[holes[i]], NV_UNIQUE_NAME, KM_SLEEP);
+		VERIFY(nvlist_add_string(tops[holes[i]], ZPOOL_CONFIG_TYPE,
+		    VDEV_TYPE_HOLE) == 0);
+		VERIFY(nvlist_add_uint64(tops[holes[i]], ZPOOL_CONFIG_ID,
+		    holes[i]) == 0);
+		VERIFY(nvlist_add_uint64(tops[holes[i]], ZPOOL_CONFIG_GUID,
+		    0) == 0);
+	}
+	for (i = 0; i < nchildren; i++) {
+		if (tops[i] != NULL)
+			continue;
+		nvlist_alloc(&tops[i], NV_UNIQUE_NAME, KM_SLEEP);
+		VERIFY(nvlist_add_string(tops[i], ZPOOL_CONFIG_TYPE,
+		    VDEV_TYPE_MISSING) == 0);
+		VERIFY(nvlist_add_uint64(tops[i], ZPOOL_CONFIG_ID,
+		    i) == 0);
+		VERIFY(nvlist_add_uint64(tops[i], ZPOOL_CONFIG_GUID,
+		    0) == 0);
 	}
 
 	/*
-	 * Add this top-level vdev to the child array.
+	 * Create pool config based on the best vdev config.
 	 */
-	VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE,
-	    &nvtop) == 0);
-	VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID,
-	    &pgid) == 0);
+	nvlist_dup(best_cfg, &config, KM_SLEEP);
 
 	/*
 	 * Put this pool's top-level vdevs into a root vdev.
 	 */
+	VERIFY(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID,
+	    &pgid) == 0);
 	VERIFY(nvlist_alloc(&nvroot, NV_UNIQUE_NAME, KM_SLEEP) == 0);
 	VERIFY(nvlist_add_string(nvroot, ZPOOL_CONFIG_TYPE,
 	    VDEV_TYPE_ROOT) == 0);
 	VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_ID, 0ULL) == 0);
 	VERIFY(nvlist_add_uint64(nvroot, ZPOOL_CONFIG_GUID, pgid) == 0);
 	VERIFY(nvlist_add_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN,
-	    &nvtop, 1) == 0);
+	    tops, nchildren) == 0);
 
 	/*
 	 * Replace the existing vdev_tree with the new root vdev in
 	 * this pool's configuration (remove the old, add the new).
 	 */
 	VERIFY(nvlist_add_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, nvroot) == 0);
+
+	/*
+	 * Drop vdev config elements that should not be present at pool level.
+	 */
+	nvlist_remove(config, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64);
+	nvlist_remove(config, ZPOOL_CONFIG_TOP_GUID, DATA_TYPE_UINT64);
+
+	for (i = 0; i < count; i++)
+		nvlist_free(configs[i]);
+	kmem_free(configs, count * sizeof(void *));
+	for (i = 0; i < nchildren; i++)
+		nvlist_free(tops[i]);
+	kmem_free(tops, nchildren * sizeof(void *));
 	nvlist_free(nvroot);
 	return (config);
 }

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 12:16:13 2012	(r244622)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 12:16:24 2012	(r244623)
@@ -289,27 +289,74 @@ vdev_geom_read_config(struct g_consumer 
 	return (*config == NULL ? ENOENT : 0);
 }
 
-static int
-vdev_geom_check_config(nvlist_t *config, const char *name, uint64_t *best_txg)
+static void
+resize_configs(nvlist_t ***configs, uint64_t *count, uint64_t id)
 {
-	uint64_t vdev_guid;
-	uint64_t txg;
+	nvlist_t **new_configs;
+	uint64_t i;
+
+	if (id < *count)
+		return;
+	new_configs = kmem_alloc((id + 1) * sizeof(nvlist_t *),
+	    KM_SLEEP | KM_ZERO);
+	for (i = 0; i < *count; i++)
+		new_configs[i] = (*configs)[i];
+	if (*configs != NULL)
+		kmem_free(*configs, *count * sizeof(void *));
+	*configs = new_configs;
+	*count = id + 1;
+}
+
+static void
+process_vdev_config(nvlist_t ***configs, uint64_t *count, nvlist_t *cfg,
+    const char *name, uint64_t* known_pool_guid)
+{
+	nvlist_t *vdev_tree;
+	uint64_t pool_guid;
+	uint64_t vdev_guid, known_guid;
+	uint64_t id, txg, known_txg;
 	char *pname;
+	int i;
 
-	if (nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &pname) != 0 ||
+	if (nvlist_lookup_string(cfg, ZPOOL_CONFIG_POOL_NAME, &pname) != 0 ||
 	    strcmp(pname, name) != 0)
-		return (ENOENT);
+		goto ignore;
 
-	ZFS_LOG(1, "found pool: %s", pname);
+	if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_GUID, &pool_guid) != 0)
+		goto ignore;
 
-	txg = 0;
-	nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG, &txg);
-	if (txg <= *best_txg)
-		return (ENOENT);
-	*best_txg = txg;
-	ZFS_LOG(1, "txg: %ju", (uintmax_t)*best_txg);
+	if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_TOP_GUID, &vdev_guid) != 0)
+		goto ignore;
 
-	return (0);
+	if (nvlist_lookup_nvlist(cfg, ZPOOL_CONFIG_VDEV_TREE, &vdev_tree) != 0)
+		goto ignore;
+
+	if (nvlist_lookup_uint64(vdev_tree, ZPOOL_CONFIG_ID, &id) != 0)
+		goto ignore;
+
+	VERIFY(nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_TXG, &txg) == 0);
+
+	if (*known_pool_guid != 0) {
+		if (pool_guid != *known_pool_guid)
+			goto ignore;
+	} else
+		*known_pool_guid = pool_guid;
+
+	resize_configs(configs, count, id);
+
+	if ((*configs)[id] != NULL) {
+		VERIFY(nvlist_lookup_uint64((*configs)[id],
+		    ZPOOL_CONFIG_POOL_TXG, &known_txg) == 0);
+		if (txg <= known_txg)
+			goto ignore;
+		nvlist_free((*configs)[id]);
+	}
+
+	(*configs)[id] = cfg;
+	return;
+
+ignore:
+	nvlist_free(cfg);
 }
 
 static int
@@ -336,14 +383,15 @@ vdev_geom_dettach_taster(struct g_consum
 }
 
 int
-vdev_geom_read_pool_label(const char *name, nvlist_t **config)
+vdev_geom_read_pool_label(const char *name,
+    nvlist_t ***configs, uint64_t *count)
 {
 	struct g_class *mp;
 	struct g_geom *gp, *zgp;
 	struct g_provider *pp;
 	struct g_consumer *zcp;
 	nvlist_t *vdev_cfg;
-	uint64_t best_txg;
+	uint64_t pool_guid;
 	int error;
 
 	DROP_GIANT();
@@ -354,8 +402,9 @@ vdev_geom_read_pool_label(const char *na
 	zgp->orphan = vdev_geom_taste_orphan;
 	zcp = g_new_consumer(zgp);
 
-	best_txg = 0;
-	*config = NULL;
+	*configs = NULL;
+	*count = 0;
+	pool_guid = 0;
 	LIST_FOREACH(mp, &g_classes, class) {
 		if (mp == &zfs_vdev_class)
 			continue;
@@ -375,14 +424,8 @@ vdev_geom_read_pool_label(const char *na
 					continue;
 				ZFS_LOG(1, "successfully read vdev config");
 
-				error = vdev_geom_check_config(vdev_cfg, name,
-				    &best_txg);
-				if (error != 0) {
-					nvlist_free(vdev_cfg);
-					continue;
-				}
-				nvlist_free(*config);
-				*config = vdev_cfg;
+				process_vdev_config(configs, count,
+				    vdev_cfg, name, &pool_guid);
 			}
 		}
 	}
@@ -391,7 +434,8 @@ vdev_geom_read_pool_label(const char *na
 	g_destroy_geom(zgp);
 	g_topology_unlock();
 	PICKUP_GIANT();
-	return (*config == NULL ? ENOENT : 0);
+
+	return (*count > 0 ? 0 : ENOENT);
 }
 
 static uint64_t

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:19:08 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 0B909F2F;
 Sun, 23 Dec 2012 12:19:08 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E2D348FC0A;
 Sun, 23 Dec 2012 12:19:07 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCJ7a0091004;
 Sun, 23 Dec 2012 12:19:07 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCJ78H091003;
 Sun, 23 Dec 2012 12:19:07 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231219.qBNCJ78H091003@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:19:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244624 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:19:08 -0000

Author: avg
Date: Sun Dec 23 12:19:07 2012
New Revision: 244624
URL: http://svnweb.freebsd.org/changeset/base/244624

Log:
  MFC r242567: zfs_mount: drop vfs.zfs.rootpool.prefer_cached_config tunable

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:16:24 2012	(r244623)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:19:07 2012	(r244624)
@@ -1656,24 +1656,12 @@ zfs_mount(vfs_t *vfsp)
 	if ((vfsp->vfs_flag & MNT_ROOTFS) != 0 &&
 	    (vfsp->vfs_flag & MNT_UPDATE) == 0) {
 		char pname[MAXNAMELEN];
-		spa_t *spa;
-		int prefer_cache;
 
 		error = getpoolname(osname, pname);
+		if (error == 0)
+			error = spa_import_rootpool(pname);
 		if (error)
 			goto out;
-
-		prefer_cache = 1;
-		TUNABLE_INT_FETCH("vfs.zfs.rootpool.prefer_cached_config",
-		    &prefer_cache);
-		mutex_enter(&spa_namespace_lock);
-		spa = spa_lookup(pname);
-		mutex_exit(&spa_namespace_lock);
-		if (!prefer_cache || spa == NULL) {
-			error = spa_import_rootpool(pname);
-			if (error)
-				goto out;
-		}
 	}
 	DROP_GIANT();
 	error = zfs_domount(vfsp, osname);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:19:23 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id EEB56113;
 Sun, 23 Dec 2012 12:19:22 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D1C838FC0C;
 Sun, 23 Dec 2012 12:19:22 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCJMcD091068;
 Sun, 23 Dec 2012 12:19:22 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCJMfs091067;
 Sun, 23 Dec 2012 12:19:22 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231219.qBNCJMfs091067@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:19:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244625 -
 stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:19:23 -0000

Author: avg
Date: Sun Dec 23 12:19:22 2012
New Revision: 244625
URL: http://svnweb.freebsd.org/changeset/base/244625

Log:
  MFC r242567: zfs_mount: drop vfs.zfs.rootpool.prefer_cached_config tunable

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:19:07 2012	(r244624)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:19:22 2012	(r244625)
@@ -1652,24 +1652,12 @@ zfs_mount(vfs_t *vfsp)
 	if ((vfsp->vfs_flag & MNT_ROOTFS) != 0 &&
 	    (vfsp->vfs_flag & MNT_UPDATE) == 0) {
 		char pname[MAXNAMELEN];
-		spa_t *spa;
-		int prefer_cache;
 
 		error = getpoolname(osname, pname);
+		if (error == 0)
+			error = spa_import_rootpool(pname);
 		if (error)
 			goto out;
-
-		prefer_cache = 1;
-		TUNABLE_INT_FETCH("vfs.zfs.rootpool.prefer_cached_config",
-		    &prefer_cache);
-		mutex_enter(&spa_namespace_lock);
-		spa = spa_lookup(pname);
-		mutex_exit(&spa_namespace_lock);
-		if (!prefer_cache || spa == NULL) {
-			error = spa_import_rootpool(pname);
-			if (error)
-				goto out;
-		}
 	}
 	DROP_GIANT();
 	error = zfs_domount(vfsp, osname);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 12:46:29 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 6E3EA9A3;
 Sun, 23 Dec 2012 12:46:29 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4FA258FC0A;
 Sun, 23 Dec 2012 12:46:29 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNCkTKA094710;
 Sun, 23 Dec 2012 12:46:29 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNCkSqO094706;
 Sun, 23 Dec 2012 12:46:28 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231246.qBNCkSqO094706@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 12:46:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244626 - in
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 12:46:29 -0000

Author: avg
Date: Sun Dec 23 12:46:28 2012
New Revision: 244626
URL: http://svnweb.freebsd.org/changeset/base/244626

Log:
  MFC r243520,243521: zfs: overhaul zfs-vfs glue for vnode life-cycle management

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h	Sun Dec 23 12:19:22 2012	(r244625)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h	Sun Dec 23 12:46:28 2012	(r244626)
@@ -207,8 +207,6 @@ typedef struct znode {
 	list_node_t	z_link_node;	/* all znodes in fs link */
 	sa_handle_t	*z_sa_hdl;	/* handle to sa data */
 	boolean_t	z_is_sa;	/* are we native sa? */
-	/* FreeBSD-specific field. */
-	struct task	z_task;
 } znode_t;
 
 

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:19:22 2012	(r244625)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Sun Dec 23 12:46:28 2012	(r244626)
@@ -1848,18 +1848,6 @@ zfsvfs_teardown(zfsvfs_t *zfsvfs, boolea
 		zfsvfs->z_unmounted = B_TRUE;
 		rrw_exit(&zfsvfs->z_teardown_lock, FTAG);
 		rw_exit(&zfsvfs->z_teardown_inactive_lock);
-
-#ifdef __FreeBSD__
-		/*
-		 * Some znodes might not be fully reclaimed, wait for them.
-		 */
-		mutex_enter(&zfsvfs->z_znodes_lock);
-		while (list_head(&zfsvfs->z_all_znodes) != NULL) {
-			msleep(zfsvfs, &zfsvfs->z_znodes_lock, 0,
-			    "zteardown", 0);
-		}
-		mutex_exit(&zfsvfs->z_znodes_lock);
-#endif
 	}
 
 	/*

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Sun Dec 23 12:19:22 2012	(r244625)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Sun Dec 23 12:46:28 2012	(r244626)
@@ -4578,14 +4578,22 @@ zfs_inactive(vnode_t *vp, cred_t *cr, ca
 		 * The fs has been unmounted, or we did a
 		 * suspend/resume and this file no longer exists.
 		 */
-		VI_LOCK(vp);
-		ASSERT(vp->v_count <= 1);
-		vp->v_count = 0;
-		VI_UNLOCK(vp);
+		rw_exit(&zfsvfs->z_teardown_inactive_lock);
 		vrecycle(vp, curthread);
+		return;
+	}
+
+	mutex_enter(&zp->z_lock);
+	if (zp->z_unlinked) {
+		/*
+		 * Fast path to recycle a vnode of a removed file.
+		 */
+		mutex_exit(&zp->z_lock);
 		rw_exit(&zfsvfs->z_teardown_inactive_lock);
+		vrecycle(vp, curthread);
 		return;
 	}
+	mutex_exit(&zp->z_lock);
 
 	if (zp->z_atime_dirty && zp->z_unlinked == 0) {
 		dmu_tx_t *tx = dmu_tx_create(zfsvfs->z_os);
@@ -4604,8 +4612,6 @@ zfs_inactive(vnode_t *vp, cred_t *cr, ca
 			dmu_tx_commit(tx);
 		}
 	}
-
-	zfs_zinactive(zp);
 	rw_exit(&zfsvfs->z_teardown_inactive_lock);
 }
 
@@ -6121,28 +6127,6 @@ zfs_freebsd_inactive(ap)
 	return (0);
 }
 
-static void
-zfs_reclaim_complete(void *arg, int pending)
-{
-	znode_t	*zp = arg;
-	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
-
-	rw_enter(&zfsvfs->z_teardown_inactive_lock, RW_READER);
-	if (zp->z_sa_hdl != NULL) {
-		ZFS_OBJ_HOLD_ENTER(zfsvfs, zp->z_id);
-		zfs_znode_dmu_fini(zp);
-		ZFS_OBJ_HOLD_EXIT(zfsvfs, zp->z_id);
-	}
-	zfs_znode_free(zp);
-	rw_exit(&zfsvfs->z_teardown_inactive_lock);
-	/*
-	 * If the file system is being unmounted, there is a process waiting
-	 * for us, wake it up.
-	 */
-	if (zfsvfs->z_unmounted)
-		wakeup_one(zfsvfs);
-}
-
 static int
 zfs_freebsd_reclaim(ap)
 	struct vop_reclaim_args /* {
@@ -6153,53 +6137,25 @@ zfs_freebsd_reclaim(ap)
 	vnode_t	*vp = ap->a_vp;
 	znode_t	*zp = VTOZ(vp);
 	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
-	boolean_t rlocked;
-
-	rlocked = rw_tryenter(&zfsvfs->z_teardown_inactive_lock, RW_READER);
 
 	ASSERT(zp != NULL);
 
-	/*
-	 * Destroy the vm object and flush associated pages.
-	 */
+	/* Destroy the vm object and flush associated pages. */
 	vnode_destroy_vobject(vp);
 
-	mutex_enter(&zp->z_lock);
-	zp->z_vnode = NULL;
-	mutex_exit(&zp->z_lock);
-
-	if (zp->z_unlinked) {
-		;	/* Do nothing. */
-	} else if (!rlocked) {
-		TASK_INIT(&zp->z_task, 0, zfs_reclaim_complete, zp);
-		taskqueue_enqueue(taskqueue_thread, &zp->z_task);
-	} else if (zp->z_sa_hdl == NULL) {
+	/*
+	 * z_teardown_inactive_lock protects from a race with
+	 * zfs_znode_dmu_fini in zfsvfs_teardown during
+	 * force unmount.
+	 */
+	rw_enter(&zfsvfs->z_teardown_inactive_lock, RW_READER);
+	if (zp->z_sa_hdl == NULL)
 		zfs_znode_free(zp);
-	} else /* if (!zp->z_unlinked && zp->z_dbuf != NULL) */ {
-		int locked;
+	else
+		zfs_zinactive(zp);
+	rw_exit(&zfsvfs->z_teardown_inactive_lock);
 
-		locked = MUTEX_HELD(ZFS_OBJ_MUTEX(zfsvfs, zp->z_id)) ? 2 :
-		    ZFS_OBJ_HOLD_TRYENTER(zfsvfs, zp->z_id);
-		if (locked == 0) {
-			/*
-			 * Lock can't be obtained due to deadlock possibility,
-			 * so defer znode destruction.
-			 */
-			TASK_INIT(&zp->z_task, 0, zfs_reclaim_complete, zp);
-			taskqueue_enqueue(taskqueue_thread, &zp->z_task);
-		} else {
-			zfs_znode_dmu_fini(zp);
-			if (locked == 1)
-				ZFS_OBJ_HOLD_EXIT(zfsvfs, zp->z_id);
-			zfs_znode_free(zp);
-		}
-	}
-	VI_LOCK(vp);
 	vp->v_data = NULL;
-	ASSERT(vp->v_holdcnt >= 1);
-	VI_UNLOCK(vp);
-	if (rlocked)
-		rw_exit(&zfsvfs->z_teardown_inactive_lock);
 	return (0);
 }
 

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Sun Dec 23 12:19:22 2012	(r244625)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Sun Dec 23 12:46:28 2012	(r244626)
@@ -1147,14 +1147,16 @@ zfs_zget(zfsvfs_t *zfsvfs, uint64_t obj_
 	dmu_object_info_t doi;
 	dmu_buf_t	*db;
 	znode_t		*zp;
-	int err;
+	vnode_t		*vp;
 	sa_handle_t	*hdl;
-	int first = 1;
-
-	*zpp = NULL;
+	struct thread	*td;
+	int locked;
+	int err;
 
+	td = curthread;
 	getnewvnode_reserve(1);
 again:
+	*zpp = NULL;
 	ZFS_OBJ_HOLD_ENTER(zfsvfs, obj_num);
 
 	err = sa_buf_hold(zfsvfs->z_os, obj_num, NULL, &db);
@@ -1193,48 +1195,38 @@ again:
 		if (zp->z_unlinked) {
 			err = ENOENT;
 		} else {
-			vnode_t *vp;
-			int dying = 0;
-
 			vp = ZTOV(zp);
-			if (vp == NULL)
-				dying = 1;
-			else {
-				VN_HOLD(vp);
-				if ((vp->v_iflag & VI_DOOMED) != 0) {
-					dying = 1;
-					/*
-					 * Don't VN_RELE() vnode here, because
-					 * it can call vn_lock() which creates
-					 * LOR between vnode lock and znode
-					 * lock. We will VN_RELE() the vnode
-					 * after droping znode lock.
-					 */
-				}
-			}
-			if (dying) {
-				if (first) {
-					ZFS_LOG(1, "dying znode detected (zp=%p)", zp);
-					first = 0;
-				}
-				/*
-				 * znode is dying so we can't reuse it, we must
-				 * wait until destruction is completed.
-				 */
-				sa_buf_rele(db, NULL);
-				mutex_exit(&zp->z_lock);
-				ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num);
-				if (vp != NULL)
-					VN_RELE(vp);
-				tsleep(zp, 0, "zcollide", 1);
-				goto again;
-			}
 			*zpp = zp;
 			err = 0;
 		}
 		sa_buf_rele(db, NULL);
+
+		/* Don't let the vnode disappear after ZFS_OBJ_HOLD_EXIT. */
+		if (err == 0)
+			VN_HOLD(vp);
+
 		mutex_exit(&zp->z_lock);
 		ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num);
+
+		if (err == 0) {
+			locked = VOP_ISLOCKED(vp);
+			VI_LOCK(vp);
+			if ((vp->v_iflag & VI_DOOMED) != 0 &&
+			    locked != LK_EXCLUSIVE) {
+				/*
+				 * The vnode is doomed and this thread doesn't
+				 * hold the exclusive lock on it, so the vnode
+				 * must be being reclaimed by another thread.
+				 * Otherwise the doomed vnode is being reclaimed
+				 * by this thread and zfs_zget is called from
+				 * ZIL internals.
+				 */
+				VI_UNLOCK(vp);
+				VN_RELE(vp);
+				goto again;
+			}
+			VI_UNLOCK(vp);
+		}
 		getnewvnode_drop_reserve();
 		return (err);
 	}
@@ -1400,10 +1392,8 @@ zfs_znode_delete(znode_t *zp, dmu_tx_t *
 void
 zfs_zinactive(znode_t *zp)
 {
-	vnode_t	*vp = ZTOV(zp);
 	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
 	uint64_t z_id = zp->z_id;
-	int vfslocked;
 
 	ASSERT(zp->z_sa_hdl);
 
@@ -1413,19 +1403,6 @@ zfs_zinactive(znode_t *zp)
 	ZFS_OBJ_HOLD_ENTER(zfsvfs, z_id);
 
 	mutex_enter(&zp->z_lock);
-	VI_LOCK(vp);
-	if (vp->v_count > 0) {
-		/*
-		 * If the hold count is greater than zero, somebody has
-		 * obtained a new reference on this znode while we were
-		 * processing it here, so we are done.
-		 */
-		VI_UNLOCK(vp);
-		mutex_exit(&zp->z_lock);
-		ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id);
-		return;
-	}
-	VI_UNLOCK(vp);
 
 	/*
 	 * If this was the last reference to a file with no links,
@@ -1434,16 +1411,14 @@ zfs_zinactive(znode_t *zp)
 	if (zp->z_unlinked) {
 		mutex_exit(&zp->z_lock);
 		ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id);
-		ASSERT(vp->v_count == 0);
-		vrecycle(vp, curthread);
-		vfslocked = VFS_LOCK_GIANT(zfsvfs->z_vfs);
 		zfs_rmnode(zp);
-		VFS_UNLOCK_GIANT(vfslocked);
 		return;
 	}
 
 	mutex_exit(&zp->z_lock);
+	zfs_znode_dmu_fini(zp);
 	ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id);
+	zfs_znode_free(zp);
 }
 
 void
@@ -1451,8 +1426,8 @@ zfs_znode_free(znode_t *zp)
 {
 	zfsvfs_t *zfsvfs = zp->z_zfsvfs;
 
-	ASSERT(ZTOV(zp) == NULL);
 	ASSERT(zp->z_sa_hdl == NULL);
+	zp->z_vnode = NULL;
 	mutex_enter(&zfsvfs->z_znodes_lock);
 	POINTER_INVALIDATE(&zp->z_zfsvfs);
 	list_remove(&zfsvfs->z_all_znodes, zp);

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 16:11:44 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 3EC4394E;
 Sun, 23 Dec 2012 16:11:44 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 2213D8FC0A;
 Sun, 23 Dec 2012 16:11:44 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNGBh0X024447;
 Sun, 23 Dec 2012 16:11:43 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNGBhJ7024446;
 Sun, 23 Dec 2012 16:11:43 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212231611.qBNGBhJ7024446@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 16:11:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244632 - stable/8/sys/dev/acpica
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 16:11:44 -0000

Author: avg
Date: Sun Dec 23 16:11:43 2012
New Revision: 244632
URL: http://svnweb.freebsd.org/changeset/base/244632

Log:
  fix r243760 by accounting for cpuset vs cpumask differences
  
  This is a direct commit.
  
  Pointyhat to:	avg

Modified:
  stable/8/sys/dev/acpica/acpi_cpu.c

Modified: stable/8/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 15:50:37 2012	(r244631)
+++ stable/8/sys/dev/acpica/acpi_cpu.c	Sun Dec 23 16:11:43 2012	(r244632)
@@ -417,9 +417,9 @@ SYSINIT(acpi_cpu, SI_SUB_CONFIGURE, SI_O
 static void
 disable_idle(struct acpi_cpu_softc *sc)
 {
-    cpuset_t cpuset;
+    cpumask_t cpuset;
 
-    CPU_SETOF(sc->cpu_pcpu->pc_cpuid, &cpuset);
+    cpuset = sc->cpu_pcpu->pc_cpumask;
     sc->cpu_disable_idle = TRUE;
 
     /*

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 20:03:11 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 8E684B20;
 Sun, 23 Dec 2012 20:03:11 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 57CEA8FC0A;
 Sun, 23 Dec 2012 20:03:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNK3BtD058390;
 Sun, 23 Dec 2012 20:03:11 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNK3BKY058388;
 Sun, 23 Dec 2012 20:03:11 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212232003.qBNK3BKY058388@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 20:03:10 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244636 -
 stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 20:03:11 -0000

Author: avg
Date: Sun Dec 23 20:03:10 2012
New Revision: 244636
URL: http://svnweb.freebsd.org/changeset/base/244636

Log:
  MFC r244635: zfs: solaris doesn't have KM_ZERO, kmem_zalloc should be used instead

Modified:
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 19:58:41 2012	(r244635)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 20:03:10 2012	(r244636)
@@ -3782,7 +3782,7 @@ spa_generate_rootconf(const char *name)
 	nvlist_lookup_uint64_array(best_cfg, ZPOOL_CONFIG_HOLE_ARRAY,
 	    &holes, &nholes);
 
-	tops = kmem_alloc(nchildren * sizeof(void *), KM_SLEEP | KM_ZERO);
+	tops = kmem_zalloc(nchildren * sizeof(void *), KM_SLEEP);
 	for (i = 0; i < nchildren; i++) {
 		if (i >= count)
 			break;

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 19:58:41 2012	(r244635)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 20:03:10 2012	(r244636)
@@ -297,8 +297,8 @@ resize_configs(nvlist_t ***configs, uint
 
 	if (id < *count)
 		return;
-	new_configs = kmem_alloc((id + 1) * sizeof(nvlist_t *),
-	    KM_SLEEP | KM_ZERO);
+	new_configs = kmem_zalloc((id + 1) * sizeof(nvlist_t *),
+	    KM_SLEEP);
 	for (i = 0; i < *count; i++)
 		new_configs[i] = (*configs)[i];
 	if (*configs != NULL)

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 20:03:54 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id B1E6CC83;
 Sun, 23 Dec 2012 20:03:54 +0000 (UTC) (envelope-from avg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 7B5BF8FC0A;
 Sun, 23 Dec 2012 20:03:54 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNK3s0j058534;
 Sun, 23 Dec 2012 20:03:54 GMT (envelope-from avg@svn.freebsd.org)
Received: (from avg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNK3sH4058531;
 Sun, 23 Dec 2012 20:03:54 GMT (envelope-from avg@svn.freebsd.org)
Message-Id: <201212232003.qBNK3sH4058531@svn.freebsd.org>
From: Andriy Gapon <avg@FreeBSD.org>
Date: Sun, 23 Dec 2012 20:03:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244637 -
 stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 20:03:54 -0000

Author: avg
Date: Sun Dec 23 20:03:53 2012
New Revision: 244637
URL: http://svnweb.freebsd.org/changeset/base/244637

Log:
  MFC r244635: zfs: solaris doesn't have KM_ZERO, kmem_zalloc should be used instead
  
  This should fix build failure caused by r244623.

Modified:
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/cddl/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 20:03:10 2012	(r244636)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c	Sun Dec 23 20:03:53 2012	(r244637)
@@ -3782,7 +3782,7 @@ spa_generate_rootconf(const char *name)
 	nvlist_lookup_uint64_array(best_cfg, ZPOOL_CONFIG_HOLE_ARRAY,
 	    &holes, &nholes);
 
-	tops = kmem_alloc(nchildren * sizeof(void *), KM_SLEEP | KM_ZERO);
+	tops = kmem_zalloc(nchildren * sizeof(void *), KM_SLEEP);
 	for (i = 0; i < nchildren; i++) {
 		if (i >= count)
 			break;

Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 20:03:10 2012	(r244636)
+++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sun Dec 23 20:03:53 2012	(r244637)
@@ -297,8 +297,8 @@ resize_configs(nvlist_t ***configs, uint
 
 	if (id < *count)
 		return;
-	new_configs = kmem_alloc((id + 1) * sizeof(nvlist_t *),
-	    KM_SLEEP | KM_ZERO);
+	new_configs = kmem_zalloc((id + 1) * sizeof(nvlist_t *),
+	    KM_SLEEP);
 	for (i = 0; i < *count; i++)
 		new_configs[i] = (*configs)[i];
 	if (*configs != NULL)

From owner-svn-src-stable@FreeBSD.ORG  Sun Dec 23 22:13:54 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 50CF7C29;
 Sun, 23 Dec 2012 22:13:54 +0000 (UTC) (envelope-from hrs@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 3293C8FC0A;
 Sun, 23 Dec 2012 22:13:54 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBNMDsIH077569;
 Sun, 23 Dec 2012 22:13:54 GMT (envelope-from hrs@svn.freebsd.org)
Received: (from hrs@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBNMDseh077568;
 Sun, 23 Dec 2012 22:13:54 GMT (envelope-from hrs@svn.freebsd.org)
Message-Id: <201212232213.qBNMDseh077568@svn.freebsd.org>
From: Hiroki Sato <hrs@FreeBSD.org>
Date: Sun, 23 Dec 2012 22:13:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244641 - stable/9/release/doc/en_US.ISO8859-1/relnotes
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 23 Dec 2012 22:13:54 -0000

Author: hrs
Date: Sun Dec 23 22:13:53 2012
New Revision: 244641
URL: http://svnweb.freebsd.org/changeset/base/244641

Log:
  Add items for 9.1R relnotes:
  	jail devfs/nullfs/zfs support and new params,
  	kern.eventtimer.activetick,
  	posix_fadvise(2) added,
  	filemon(4) added,
  	kern.stop_scheduler_on_panic=1 by default,
  	linux_fadvice64() added,
  	hw.memtest.tests=0 by default on VM,
  	kern.msgbuf_show_timestamp added,
  	null(4) and zero(4) non-blocking mode,
  	ULE CPU selection for SMT improved,
  	PREEMPTION on sparc64,
  	security.bsd.unprivileged_idprio added,
  	splash(4) TheDraw support,
  	boot0cfg PXE support,
  	/boot/config support,
  	backup GPT handling change in gptboot,
  	zfsboot/zfsloader device name/root storage pool format change,
  	zfsboot on sparc64,
  	abtn(4) on powerpc,
  	AMD 10h/12h family errata,
  	atibl(4) on powerpc,
  	acpi_wmi(4) multiple instances,
  	adm1030(4) on powerpc,
  	cesa(4) on arm,
  	PMC support for PowerPC G4, Sandy Bridge, software events,
  	pcf8563(4) RTC,
  	PWM fan control on PowerMac SMU,
  	Atmel SAM9XE support on arm,
  	kern.proc.* added,
  	USB suspend/resume improved,
  	xhci(4) USB 3.0 hub bugfix,
  	viawd(4) watch dog timer driver,
  	wbwd(4) watch dog timer driver,
  	drm2(4) new Intel GPU driver,
  	snd_hda(4) improved,
  	snd_hdspe(4) added,
  	snd_emu10kx(4), snd_maestro3(4), and snd_csa(4) GPL-free,
  	ae(4) bugfix,
  	axe(4) checksum offloading support,
  	bce(4) improved,
  	bge(4) improved,
  	cxgb(4) and cxgbe(4) updated,
  	dc(4) M5261/M5263 support added,
  	et(4) bugfixes,
  	igb(4) updated to 2.3.4,
  	iwn(4) new device support,
  	miibus(4) improved,
  	msk(4) 64-bit DMA support,
  	mxge(4) updated to 1.4.55,
  	nsphyter(4) National DP83849 support,
  	oce(4) for Emulex OneConnect 10Gbit Ethernet added,
  	ral(4) Ralink RT2800 and RT3000 support,
  	re(4) RTL8411 support,
  	runfw(4) updated to 0.236,
  	sfxge(4) for Solarflare SFC9000 added,
  	smcphy(4) Seeq Technology 80220 PHY support,
  	ti(4) ALTQ and PAE support,
  	vge(4) link-state detection support,
  	vr(4) flow control support,
  	xnb(4) netback improved,
  	if_bridge(4) link-state detection support,
  	ipfw(4) table extended,
  	ip6(4) performance improvement, multiple FIB, default route handling,
  	IPV6_MULTICASE_HOPS fixed,
  	NET_RT_IFLISTL added,
  	netmap(4) added,
  	sctp(4) improved,
  	SO_PROTOCOL added,
  	TCP_KEEP* options added,
  	arcmsr(4) updated to 1.20.00.25,
  	ahci(4) hw.ahci.force tunable added,
  	hw.ata.ata_dma backward compatibility improved,
  	cam(4) SEMB device support,
  	cam(4) kern.cam.pmp.hide_special added,
  	ctl(4) CAM Target Layer added,
  	cd(4) now uses READ CD for Audio CD,
  	da(4) BIO_DELETE support,
  	GEOM_MIRROR BIO_DELETE support,
  	GEOM_MULTIPATH improved,
  	GEOM_PART_MBR supports Linux swap partition,
  	GEOM_PART_LDM added,
  	GEOM_RAID added to GENERIC, DDF format support,
  	GEOM_UNCOMPRESS added,
  	hpt27xx(4) for HighPoint RocketRAID 27xx added,
  	isci(4) for Intel C600 (Patsburg) chipset added,
  	isp(4) target mode bugfix,
  	ixgbe(4) Intel X540 support,
  	mfi(4) bugfix, MSI support, Drake Skinny and Thunderbolt support,
  	mps(4) updated to 14.00.00.01-fbsd,
  	mpt(4) bugfix,
  	usb(4) storage device power saving mode support,
  	NFS bugfix, positive name cache, vfs.nfsd.disable_checkutf8,
  	tmpfs(5) vfs.tmpfs.memory_reserved,
  	ZFS improvements,
  	auth.conf(5) removed,
  	camcontorl(8) fwdownload,
  	dhclient(8) domain-search option support,
  	dump(8) devicename length in /etc/dumpdates changed,
  	fetch(1) %-encoding in user and password part,
  	fdlopen(3) added,
  	fopen(3) "x" mode,
  	gcc(1) -ffast-math bugfix,
  	hastd(8) pidfile,
  	ifconfig(8) vlanhwcsum,
  	ifconfig(8) IPv6 fix in an IPv4-only jail,
  	ifconfig(8) carp state parameter,
  	jail(8) configuration file support,
  	kdump(1) -p pid,
  	kenv(1) -v and -N,
  	kldload(8) -n,
  	libedit updated to 2009/12/28 snapshot,
  	libmap.conf(5) include and includedir directive,
  	libthr mutex performance improved,
  	libcxxrt and libc++ import,
  	limits(1) -P pid,
  	pciconf(8) -le,
  	procstat(1) superpage flag, -e, -x, -l,
  	remquo(3) bugfix,
  	rtld(1) GCC RELRO, GNU hash section,
  	setbuf(1) and libstdbuf,
  	top(1) per-thread I/O stat,
  	unzip(1) -Z,
  	xlocale(3) API import,
  	periodic: daily_status_zfs_zpool_list_enable in 404.status-zfs,
  	periodic: daily_scrub_zfs_default_threshold is now 35 days,
  	rc.d/nfsd: vfs.nfsd.server_max_nfsvers handling change,
  	backward compatibility: ipv6_enable=YES && ipv6_gateway_enable=YES,
  	ISC BIND 9.8.3-P4,
  	compiler-rt 147467,
  	file 5.11,
  	GNU gperf 3.0.3,
  	libarchive 2.8.5,
  	libpcap 1.2.1,
  	libstdc++ 135556 on gcc-4_2-branch,
  	LLVM 3.1,
  	netcat 5.1,
  	OpenSSL 0.9.8x,
  	tcpdump 4.2.1,
  	tcsh 6.18.01,
  	tzdata2012a,
  	zlib 1.2.7, and
  	x11/kde4 4.8.4.

Modified:
  stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml

Modified: stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml
==============================================================================
--- stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Sun Dec 23 21:41:39 2012	(r244640)
+++ stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Sun Dec 23 22:13:53 2012	(r244641)
@@ -8,104 +8,1232 @@
 ]>
 
 <article>
-<articleinfo>
-  <title>&os; &release.current; Release Notes</title>
+  <articleinfo>
+    <title>&os; &release.current; Release Notes</title>
 
-  <corpauthor>The &os; Project</corpauthor>
+    <corpauthor>The &os; Project</corpauthor>
 
-  <pubdate>$FreeBSD$</pubdate>
+    <pubdate>$FreeBSD$</pubdate>
 
-  <copyright>
-    <year>2012</year>
-    <holder role="mailto:doc@FreeBSD.org">The &os; Documentation Project</holder>
-  </copyright>
-
-  <legalnotice id="trademarks" role="trademarks">
-    &tm-attrib.freebsd;
-    &tm-attrib.ibm;
-    &tm-attrib.ieee;
-    &tm-attrib.intel;
-    &tm-attrib.sparc;
-    &tm-attrib.general;
-  </legalnotice>
-
-  <abstract>
-    <para>The release notes for &os; &release.current; contain a summary
-      of the changes made to the &os; base system on the
-      &release.branch; development line.
-      This document lists applicable security advisories that were issued since
-      the last release, as well as significant changes to the &os;
-      kernel and userland.
-      Some brief remarks on upgrading are also presented.</para>
-  </abstract>
-</articleinfo>
-
-<sect1 id="intro">
-  <title>Introduction</title>
-
-  <para>This document contains the release notes for &os;
-    &release.current;.  It
-    describes recently added, changed, or deleted features of &os;.
-    It also provides some notes on upgrading
-    from previous versions of &os;.</para>
-
-  <para>This distribution of &os; &release.current; is a
-    &release.type; distribution.  It can be found at <ulink
-    url="&release.url;"></ulink> or any of its mirrors.  More
-    information on obtaining this (or other) &release.type;
-    distributions of &os; can be found in the <ulink
-    url="&url.books.handbook;/mirrors.html"><quote>Obtaining
-    &os;</quote> appendix</ulink> to the <ulink
-    url="&url.books.handbook;/">&os;
-    Handbook</ulink>.</para>
-
-  <para>All users are encouraged to consult the release errata before
-    installing &os;.  The errata document is updated with
-    <quote>late-breaking</quote> information discovered late in the
-    release cycle or after the release.  Typically, it contains
-    information on known bugs, security advisories, and corrections to
-    documentation.  An up-to-date copy of the errata for &os;
-    &release.current; can be found on the &os; Web site.</para>
-
-</sect1>
+    <copyright>
+      <year>2012</year>
+      <holder role="mailto:doc@FreeBSD.org">The &os; Documentation Project</holder>
+    </copyright>
+
+    <legalnotice id="trademarks" role="trademarks">
+      &tm-attrib.freebsd;
+      &tm-attrib.ibm;
+      &tm-attrib.ieee;
+      &tm-attrib.intel;
+      &tm-attrib.sparc;
+      &tm-attrib.general;
+    </legalnotice>
+
+    <abstract>
+      <para>The release notes for &os; &release.current; contain a summary
+	of the changes made to the &os; base system on the
+	&release.branch; development line.
+	This document lists applicable security advisories that were issued since
+	the last release, as well as significant changes to the &os;
+	kernel and userland.
+	Some brief remarks on upgrading are also presented.</para>
+    </abstract>
+  </articleinfo>
+
+  <sect1 id="intro">
+    <title>Introduction</title>
+
+    <para>This document contains the release notes for &os;
+      &release.current;.  It describes recently added, changed, or
+      deleted features of &os;.  It also provides some notes on
+      upgrading from previous versions of &os;.</para>
+
+    <para>This distribution of &os; &release.current; is a
+      &release.type; distribution.  It can be found at <ulink
+      url="&release.url;"></ulink> or any of its mirrors.  More
+      information on obtaining this (or other) &release.type;
+      distributions of &os; can be found in the <ulink
+      url="&url.books.handbook;/mirrors.html"><quote>Obtaining
+      &os;</quote> appendix</ulink> to the <ulink
+      url="&url.books.handbook;/">&os; Handbook</ulink>.</para>
+
+    <para>All users are encouraged to consult the release errata before
+      installing &os;.  The errata document is updated with
+      <quote>late-breaking</quote> information discovered late in the
+      release cycle or after the release.  Typically, it contains
+      information on known bugs, security advisories, and corrections to
+      documentation.  An up-to-date copy of the errata for &os;
+      &release.current; can be found on the &os; Web site.</para>
+  </sect1>
 
-<sect1 id="new">
+  <sect1 id="new">
     <title>What's New</title>
 
-    <para>The changes since the previous release can be found at
-      <ulink url="http://www.FreeBSD.org/releases/9.1R/relnotes.html"></ulink>.</para>
-</sect1>
+    <para>This section describes the most user-visible new or changed
+      features in &os; since &release.prev;.</para>
+
+    <para>Typical release note items document recent security
+      advisories issued after &release.prev;, new drivers or hardware
+      support, new commands or options, major bug fixes, or
+      contributed software upgrades.  They may also list changes to
+      major ports/packages or release engineering practices.  Clearly
+      the release notes cannot list every single change made to &os;
+      between releases; this document focuses primarily on security
+      advisories, user-visible changes, and major architectural
+      improvements.</para>
+
+    <sect2 id="security">
+      <title>Security Advisories</title>
+
+      <para>Problems described in the following security advisories have
+	been fixed.  For more information, consult the individual
+	advisories available from
+	<ulink url="http://security.FreeBSD.org/"></ulink>.</para>
+
+      <informaltable frame="none" pgwide="1">
+	<tgroup cols="3">
+	  <colspec colwidth="1*" />
+	  <colspec colwidth="1*" />
+	  <colspec colwidth="3*" />
+	  <thead>
+	    <row>
+	      <entry>Advisory</entry>
+	      <entry>Date</entry>
+	      <entry>Topic</entry>
+	    </row>
+	  </thead>
+
+	  <tbody>
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:01.openssl.asc"
+		  >SA-12:01.openssl</ulink></entry>
+	      <entry>3&nbsp;May&nbsp;2012</entry>
+	      <entry><para>OpenSSL multiple vulnerabilities</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:02.crypt.asc"
+		  >SA-12:02.crypt</ulink></entry>
+	      <entry>30&nbsp;May&nbsp;2012</entry>
+	      <entry><para>Incorrect <function>crypt()</function> hashing</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:03.bind.asc"
+		  >SA-12:03.bind</ulink></entry>
+	      <entry>12&nbsp;June&nbsp;2012</entry>
+	      <entry><para>Incorrect handling of zero-length RDATA fields in &man.named.8;</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:04.sysret.asc"
+		  >SA-12:04.sysret</ulink></entry>
+	      <entry>12&nbsp;June&nbsp;2012</entry>
+	      <entry><para>Privilege escalation when returning from kernel</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:05.bind.asc"
+		  >SA-12:05.bind</ulink></entry>
+	      <entry>6&nbsp;August&nbsp;2012</entry>
+	      <entry><para>&man.named.8; DNSSEC validation Denial of Service</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:06.bind.asc"
+		  >SA-12:06.bind</ulink></entry>
+	      <entry>22&nbsp;November&nbsp;2012</entry>
+	      <entry><para>Multiple Denial of Service vulnerabilities with &man.named.8;</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:07.hostapd.asc"
+		  >SA-12:07.hostapd</ulink></entry>
+	      <entry>22&nbsp;November&nbsp;2012</entry>
+	      <entry><para>Insufficient message length validation for EAP-TLS messages</para></entry>
+	    </row>
+
+	    <row>
+	      <entry><ulink url="http://security.freebsd.org/advisories/FreeBSD-SA-12:08.linux.asc"
+		  >SA-12:08.linux</ulink></entry>
+	      <entry>22&nbsp;November&nbsp;2012</entry>
+	      <entry><para>Linux compatibility layer input validation error</para></entry>
+	    </row>
+	  </tbody>
+	</tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="kernel">
+      <title>Kernel Changes</title>
+
+      <para revision="232728">&os; Jail subsystem now supports
+	mounting &man.devfs.5;, &man.nullfs.5;, and ZFS filesystem
+	inside a jail.  New &man.jail.8; parameters
+	<varname>allow.mount.devfs</varname>,
+	<varname>allow.mount.nullfs</varname>, and
+	<varname>allow.mount.zfs</varname> to control the per-jail
+	capabilities have been added.  All of them are disabled by
+	default.</para>
+
+      <para revision="234167">A new &man.loader.8; tunable
+	<varname>kern.eventtimer.activetick</varname> has been added.
+	This tunable is to specify whether each hardclock tick should
+	be run on every active CPU or only one.  Setting it to
+	<literal>0</literal>, the number of interrupts can be reduced
+	on SMP machines.  The default value is
+	<literal>1</literal>.</para>
+
+      <para revision="229723">The &man.posix.fadvise.2; system call
+	has been implemented.  This is a function similar to
+	&man.madvise.2; except that it operates on a file descriptor
+	instead of a memory region.</para>
+
+      <para revision="237795">The &man.filemon.4; pseudo device has
+	been added.  This allows a process to collect file operations
+	data of its children.</para>
+
+      <para revision="235413">The &man.sysctl.8; variable
+	<varname>kern.stop_scheduler_on_panic</varname> is now set to
+	<literal>1</literal> by default.</para>
+
+      <para revision="231907" arch="powerpc">&os;/powerpc64 now
+	supports kernel profiling by using &man.kgmon.8;.</para>
+
+      <para revision="231145">The &os; Linux ABI compatiblity layer
+	now supports <function>linux_fadvice64()</function> and
+	<function>linux_fadvice64_64()</function> system call.</para>
+
+      <para revision="230266">The default value of the &man.loader.8;
+	tunable <varname>hw.memtest.tests</varname> is now
+	automatically set to <literal>0</literal> when &os; is running
+	on a virtual machine.</para>
+
+      <para revision="234075">A new &man.loader.8; tunable
+	<varname>kern.msgbuf_show_timestamp</varname> has been added.
+	When this is enabled, timestamp is added to each line of the
+	system message buffer.  The default value is
+	<literal>0</literal> (disabled).</para>
+
+      <para revision="230320">The &man.null.4; and &man.zero.4; pseudo
+	device driver now supports non-blocking mode via &man.fcntl.2;
+	system call.</para>
+
+      <para revision="233599">The &os; &man.sched.ule.4; scheduler has
+	been improved on CPU load balancing of SMT (Simultaneous
+	MultiThreading) CPUs.  It gives 10-15% performance improvement
+	when the number of threads is lesser than the number of
+	logical CPUs.</para>
+
+      <para revision="235992"
+	arch="sparc64"><literal>PREEMPTION</literal> kernel option is
+	now enabled in <filename>GENERIC</filename> kernel.</para>
+
+      <para revision="230039">A new &man.sysctl.8; variable
+	<varname>security.bsd.unprivileged_idprio</varname> has been
+	added.  This variable controls whether non-root users can set
+	an idle priority or not.  This is disabled by default.</para>
+
+      <para revision="228445">The &man.splash.4; screen interface now
+	supports ASCII art in <application>TheDraw</application>
+	format.</para>
+
+      <sect3 id="boot">
+	<title>Boot Loader Changes</title>
+
+	<para revision="230065">The &man.boot0cfg.8; utility now
+	  supports configuration of PXE boot via
+	  <filename>boot0</filename> boot block temporarily on the
+	  next boot.  The slice number <literal>6</literal> or a
+	  keyword <literal>PXE</literal> can be specified to enable
+	  PXE boot in the <option>-s</option> option.</para>
+
+	<para revision="231287">The &os; &man.boot.8; block now
+	  supports <filename>/boot/config</filename> in addition to
+	  <filename>/boot.config</filename> as the boot block
+	  parameter file.  When both of them exist, the former will be
+	  used.</para>
+
+	<para revision="234693">The <filename>gptboot</filename> boot
+	  block now reads the backup GPT header from the last LBA only
+	  when the primary GPT header and tables are invalid.  This
+	  mitigates interoperability issues with some &man.geom.4;
+	  providers like <literal>MIRROR</literal> which use the last
+	  LBA for the metadata.</para>
+
+	<para revision="237766">The <filename>zfsboot</filename> boot
+	  block and <filename>zfsloader</filename> supports
+	  filesystems within a ZFS storage pool.  In
+	  <filename>zfsloader</filename>, ZFS device name format now
+	  is
+	  <literal>zfs:<replaceable>pool</replaceable>/<replaceable>fs</replaceable></literal>
+	  and fully qualified file path is
+	  <literal>zfs:<replaceable>pool</replaceable>/<replaceable>fs</replaceable>:/<replaceable>path/to/file</replaceable></literal>.
+	  The <filename>zfsboot</filename> accepts kernel/loader name
+	  in a format
+	  <literal><replaceable>pool</replaceable>:<replaceable>fs</replaceable>:<replaceable>path/to/file</replaceable></literal>
+	  or, as before,
+	  <literal><replaceable>pool</replaceable>:<replaceable>path/to/file</replaceable></literal>.
+	  In the latter case a default filesystem is used (the pool
+	  root or <literal>bootfs</literal> property).  The
+	  <filename>zfsboot</filename> passes GUIDs of the selected
+	  storage pool and dataset to <filename>zfsloader</filename>
+	  to be used as its defaults.</para>
+
+	<para revision="236076" arch="sparc64">The &os;/sparc64 now
+	  supports booting from ZFS via zfsboot boot block and
+	  zfsloader.  For example, the following commands create a
+	  mirrored storage pool <literal>rpool</literal> consisting of
+	  <literal>da0a</literal> and <literal>da0b</literal> and
+	  configure the storage pool as the root filesystem:</para>
+
+	<screen>&prompt.root; gpart create -s vtoc8 da0
+&prompt.root; gpart add -t freebsd-zfs -s 10g da0
+&prompt.root; gpart add -t freebsd-swap -s 10g da0
+&prompt.root; gpart add -t freebsd-zfs -s 10g da0
+&prompt.root; zpool create rpool mirror da0a da0b
+&prompt.root; zpool set bootfs=rpool rpool
+&prompt.root; zpool export rpool
+&prompt.root; gpart bootcode -p /boot/zfsboot da0
+&prompt.root; sysctl kern.geom.debugflags=0x10
+&prompt.root; dd if=/boot/zfsloader of=/dev/da0a bs=512 oseek=1024 conv=notrunc
+&prompt.root; dd if=/boot/zfsloader of=/dev/da0b bs=512 oseek=1024 conv=notrunc
+&prompt.root; zpool import rpool
+&prompt.root; cp -p /boot/zfs/zpool.cache /rpool/boot/zfs/zpool.cache
+&prompt.root; zfs set mountpoint=/ rpool</screen>
+      </sect3>
+
+      <sect3 id="proc">
+	<title>Hardware Support</title>
+
+	<para revision="230751" arch="powerpc">The &man.abtn.4;
+	  driver, which supports ADB keyboards found on Apple laptops,
+	  has been added.</para>
+
+	<para revision="233798" arch="amd64">A workaround for Erratum
+	  721 for AMD Processor Family 10h and 12h has been
+	  implemented.  Under a highly specific and detailed set of
+	  internal timing conditions, the processor may incorrectly
+	  update the stack pointer after a long series of push and/or
+	  near-call instructions, or a long series of pop and/or
+	  near-return instructions.</para>
+
+	<para revision="232677" arch="powerpc">The atibl(4) driver,
+	  which supports backlight control of ATI graphics chips on
+	  PowerBooks and iBooks, has been added.</para>
+
+	<para revision="229858">The &man.acpi.wmi.4; driver now
+	  supports attaching multiple instances.</para>
+
+	<para revision="230290" arch="powerpc">The adm1030(4) driver
+	  for G4 MDD fan now shows its PWM parameter in the device
+	  &man.sysctl.8; variable.</para>
+
+	<para revision="234559" arch="arm">The cesa(4) driver for
+	  Marvell crypto engine and security accelerator has been
+	  added.</para>
+
+	<para revision="230305" arch="powerpc">The &man.hwpmc.4;
+	  driver now supports PowerPC G4+ (MPC745x/MPC744x).</para>
+
+	<para revision="234046" arch="amd64,i386">The &man.hwpmc.4;
+	  driver now supports Intel Sandy Bridge
+	  microarchitecture.</para>
+
+	<para revision="236238">The &man.hwpmc.4; driver now supports
+	  software events.  Simultaneous usage of software PMC and
+	  hardware PMC is allowed.</para>
+
+	<para revision="236078">The pcf8563(4) driver for NXP
+	  (Philips) PCF8563 RTC has been added.</para>
+
+	<para revision="233471" arch="powerpc">&os;/powerpc now
+	  supports PWM-controlled fans found on PowerMac SMU (System
+	  Management Unit).</para>
+
+	<para revision="236081" arch="arm">&os;/arm now supports Atmel
+	  SAM9XE family of microcontrollers.</para>
+
+	<para revision="230754,233950">The following &man.sysctl.8;
+	  variables have been added: <varname>kern.proc.env</varname>
+	  for environment strings, <varname>kern.proc.auxv</varname>
+	  for ELF auxiliary vectors from a process stack,
+	  <varname>kern.proc.groups</varname> for process groups,
+	  <varname>kern.proc.rlimit</varname> for process resource
+	  limits, and <varname>kern.proc.ps_strings</varname> for
+	  ps_strings location, <varname>kern.proc.osrel</varname> for
+	  osreldate for process binary.</para>
+
+	<para revision="229100,229369">The &man.usb.4; driver now
+	  handles suspend and resume correctly with no need of reloading
+	  the kernel module.</para>
+
+	<para revision="230302">A bug in the &man.xhci.4; (USB 3.0)
+	  driver has been fixed.  It did not work with USB 3.0
+	  hubs.</para>
+
+	<para revision="229927">The &man.viawd.4; driver, which
+	  supports watchdog timer found in VIA south bridge (VT8251,
+	  CX700, VX800, VX855, VX900), has been added.</para>
+
+	<para revision="235926">The &man.wbwd.4; driver, which
+	  supports watchdog timer found in Winbond Super I/O chips,
+	  has been added.</para>
+
+	<sect4 id="mm">
+	  <title>Multimedia Support</title>
+
+	  <para revision="236926,236927,239965">The drm2(4) Intel GPU driver,
+	    which supports GEM, KMS, and works with new generations of
+	    GPUs such as IronLake, SandyBridge, and IvyBridge, has been
+	    added.  The &man.agp.4; dirver now supports SandyBridge
+	    and IvyBridge CPU northbridges.</para>
+
+	  <para revision="232798">The &man.snd.hda.4; driver has been
+	    updated.  It now supports HDMI, new volume control,
+	    automatic recording source selection, runtime
+	    reconfigureation, more then 4 PCM devices on a controller,
+	    multichannel recording, additional playback/record
+	    streams, higher bandwidth, and more informative device
+	    names.</para>
+
+	  <para revision="233165">The &man.snd.hdspe.4; driver has
+	    been added.  This supports RME HDSPe AIO and RayDAT sound
+	    cards.</para>
+
+	  <para revision="230964,230985,231047,235769">GPL-licensed
+	    headers in the &man.snd.emu10kx.4;, &man.snd.maestro3.4;,
+	    and &man.snd.csa.4; drivers have been replaced with
+	    BSD-licensed one.  These drivers are now fully
+	    BSD-licensed and included in <filename>GENERIC</filename>
+	    kernel on &os;/amd64 and &os;/i386.</para>
+	</sect4>
+
+	<sect4 id="net-if">
+	  <title>Network Interface Support</title>
+
+	  <para revision="229520">A bug in &man.ae.4; driver which could
+	    prevent from working under certain conditions has been
+	    fixed.</para>
+
+	  <para revision="229106">The &man.axe.4; driver now supports
+	    TX/RX checksum offloading support for ASIX AX88772B
+	    controller.</para>
+
+	  <para>The &man.bce.4; driver has been improved:</para>
+
+	  <itemizedlist>
+	    <listitem>
+	      <para revision="229864">Unnecessary link up/down has
+		been eliminated.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para revision="236216">A bug has been fixed.  It could
+		prevent IPMI from working when the interface was
+		marked as down.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para revision="235818">It now supports remote PHYs,
+		which allow the controller to perform MDIO type accesses
+		to a remote transceiver by using message pages defined
+		through MRBE (MultiRate Backplane Ethernet).  This is
+		found on machines such as Dell PowerEdge M610
+		Blade.</para>
+	    </listitem>
+	  </itemizedlist>
+
+	  <para>The &man.bge.4; and brgphy(4) driver have been
+	    improved:</para>
+
+	  <itemizedlist>
+	    <listitem>
+	      <para revision="229350">A bug which could prevent the
+		DMA functionality from working correctly, has been
+		fixed.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para revision="233495">It now works with PCI-X BCM 5704
+		controller that connected to AMD-8131 PCI-X bridge.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para revision="229357,229867,232134">It now supports
+		BCM 5720 and BCM 5720C PHY, and BCM 57780 1000BASE-T
+		media interface.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para revision="231734">It now supports a &man.loader.8;
+		tunable
+		<varname>dev.bge.<replaceable>N</replaceable>.msi</varname>
+		to control the use of MSI.  The default value is
+		<literal>1</literal> (enabled).</para>
+	    </listitem>
+	  </itemizedlist>
+
+	  <para revision="231093,237925">The &man.cxgbe.4; and
+	    &man.cxgb.4; driver has been updated to firmware version
+	    1.5.2.0.  This now supports device configuration via a
+	    plain text configration file, IPv6 hardware checksumming,
+	    IPv6 TSO and LRO, <literal>loadfw</literal> command in the
+	    cxgbetool(8) utility which allows to install a firmware to
+	    the card, &man.sysctl.8; variables under
+	    <varname>dev.t4nex.<replaceable>N</replaceable>.misc</varname>
+	    for various information.</para>
+
+	  <para revision="229334">The &man.dc.4; driver now supports
+	    NVIDIA (ULi) M5261/M5263 PCI FastEthernet controllers, which
+	    are found on ULi M1563 South Bridge and M1689 Bridge.</para>
+
+	  <para revision="229711,229717,229720">The &man.et.4; driver
+	    now works on all platfomrs.  A bug which could prevent
+	    &man.altq.4; support from working has been fixed.  A new
+	    &man.sysctl.8; variables under
+	    <varname>dev.et.<replaceable>N</replaceable>.stats</varname>
+	    have been added for hardware MAC statistics.</para>
+
+	  <para revision="238262">The &man.igb.4; driver has been
+	    updated to version 2.3.4.  It now supports newer i210/i211
+	    devices.</para>
+
+	  <para revision="233838,235843">The &man.iwn.4; driver now
+	    supports Intel Centrino Wireless-N + WiMAX 6150 and
+	    Wireless-N 100/130 series.</para>
+
+	  <para revision="230709">The &man.miibus.4; bus driver now
+	    supports device hints
+	    <varname>hint.miibus.<replaceable>N</replaceable>.phymask</varname>
+	    for PHY addresses being probed.  This is useful to manually
+	    probe PHYs which do not implement basic register set of
+	    IEEE 802.3.  Also, the &man.miibus.4; driver has been
+	    changed to a hinted bus, allowing to add child devices via
+	    hints and to set their attach arguments in addition to
+	    automatically-probed PHYs.</para>
+
+	  <para revision="229524">The &man.msk.4; driver now uses 64-bit
+	    DMA addressing on 64-bit platforms.</para>
+
+	  <para revision="236413">The &man.mxge.4; driver has been
+	    updated to firmware version 1.4.55 from Myricom.</para>
+
+	  <para revision="232137">The nsphyter(4) driver now supports
+	    National DP83849.</para>
+
+	  <para revision="231663">The &man.oce.4; driver, which
+	    supports Emulex OneConnect 10Gbit Ethernet card, has been
+	    added.</para>
+
+	  <para revision="236004">The &man.ral.4; driver now supports
+	    Ralink RT2800 and RT3000 chipsets.</para>
+
+	  <para revision="229529,231731">The &man.re.4; driver now
+	    supports RTL8411 PCIe Gigabit Ethernet controller.  A bug
+	    which could prevent WoL (Wake-on-LAN) from working on
+	    RTL8168E has been fixed.</para>
+
+	  <para revision="234028">The &man.runfw.4; firmware has been
+	    updated to version 0.236.</para>
+
+	  <para revision="228100">The &man.sfxge.4; driver, which
+	    supports 10Gb Ethernet adapters based on Solarflare SFC9000
+	    family controllers, has been added.</para>
+
+	  <para revision="233485">The smcphy(4); driver now supports
+	    Seeq Technology 80220 PHY.  This is found on Adaptec
+	    AIC-6915 Starfire ethernet controller supported by the
+	    &man.sf.4; driver.</para>
+
+	  <para revision="229417,229438">The &man.ti.4; driver now
+	    supports &man.altq.4; framework, reporting link-state
+	    change, and &man.sysctl.8; variables under
+	    <varname>dev.ti.<replaceable>N</replaceable></varname> for
+	    the interrupt moderation parameters.</para>
+
+	  <para revision="229441">A bug in &man.ti.4; driver which could
+	    prevent it from working correctly with <literal>PAE</literal>
+	    kernel option, has been fixed.</para>
+
+	  <para revision="229540">The &man.vge.4; driver has been
+	    updated to improve its link establishment and link-state
+	    detection.</para>
+
+	  <para revision="229641">The &man.vr.4; driver now enables
+	    flow control capability in the PHY drivers.</para>
+
+	  <para revision="231697">The &man.xnb.4; Xen Paravirtualized
+	    Backend Ethernet Driver (netback) has been updated.  This is
+	    attached via newbus framework and works properly in both
+	    HVM and PVM mode.</para>
+	</sect4>
+      </sect3>
+
+      <sect3 id="net-proto">
+	<title>Network Protocols</title>
+
+	<para revision="236051">The &man.if.bridge.4; pseudo interface
+	  now supports reporting link-state change depending on status
+	  of the member interfaces.</para>
+
+	<para revision="234597">The <literal>table</literal> argument
+	  in the &man.ipfw.4; packet filter rule syntax now supports
+	  IP address, interface name, port number, and jail ID.  The
+	  following syntax is valid:</para>
+
+	<programlisting>skipto tablearg ip from any to any via table(42) in</programlisting>
+
+	<para>&os; &man.ip6.4; protocol stack now has been improved in terms
+	  of its performance.  Benchmarking can be found at <ulink
+	  url="http://people.freebsd.org/~bz/bench/"></ulink>.</para>
+
+	<para revision="232292">&os; &man.ip6.4; protocol stack now
+	  supports multiple FIB.</para>
+
+	<para revision="230604">An IPv6 default route configured via
+	  Router Advertisement messages is now reinstalled correctly
+	  when the default route is manually removed and then another
+	  same RA message is received.</para>
+
+	<para revision="227885">A bug which could return an incorrect
+	  value of <literal>IPV6_MULTICASE_HOPS</literal> socket option
+	  has been fixed.</para>
+
+	<para revision="231768">A new &man.sysctl.8;
+	  <literal>NET_RT_IFLISTL</literal> has been added.  This
+	  queries the address list and works on extended and
+	  extensible structures <varname>if_msghdrl</varname> and
+	  <varname>ifa_msghdrl</varname> without breaking the
+	  ABI.</para>
+
+	<para revision="231650,235527">The &man.netmap.4; fast packet
+	  I/O framework has been added.  The &man.em.4;, lem(4),
+	  &man.igb.4;. and &man.re.4; drivers now support this
+	  framework.  The technical details can be found at <ulink
+	  url="http://info.iet.unipi.it/~luigi/netmap/"></ulink>.</para>
+
+	<para revision="231045">&os; &man.sctp.4; protocol stack now
+	  supports a new &man.sysctl.8; variable
+	  <varname>net.inet.sctp.blackhole</varname>.  If this is set
+	  to <literal>1</literal>, no <literal>ABORT</literal> is sent
+	  back in response to an incoming <literal>INIT</literal>. If
+	  this is set to <literal>2</literal>, no
+	  <literal>ABORT</literal> is sent back in response to an out
+	  of the blue packet.  If set to <literal>0</literal>
+	  (the default), <literal>ABORT</literal>s are sent.</para>
+
+	<para revision="231049">A bug which could cause a system panic
+	  when <literal>SCTP_RECVINFO</literal> or
+	  <literal>SCTP_NXTINFO</literal> is specified to
+	  &man.getsockopt.2; system call, has been fixed.</para>
+
+	<para revision="231070,231140">&os; &man.sctp.4; protocol stack now
+	  supports <literal>SCTP_REMOTE_UDP_ENCAPS_PORT</literal>
+	  socket option.</para>
+
+	<para revision="232805"><literal>SO_PROTOCOL</literal> and
+	  <literal>SO_PROTOTYPE</literal> socket options have been
+	  added.  These returns the socket protocol number.</para>
+
+	<para revision="232945"><literal>TCP_KEEPINIT</literal>,
+	  <literal>TCP_KEEPIDLE</literal>,
+	  <literal>TCP_KEEPINTVL</literal>, and
+	  <literal>TCP_KEEPCNT</literal> socket options have been
+	  added.  These allow to control initial timeout, idle time,
+	  idle resend interval, and idle send count in a per-socket
+	  basis.</para>
+      </sect3>
+
+      <sect3 id="disks">
+	<title>Disks and Storage</title>
+
+	<para revision="240758">The &man.arcmsr.4; driver has been
+	  updated to version 1.20.00.25.</para>
+
+	<para revision="229291">The &man.ahci.4; driver now supports a
+	  new &man.loader.8; tunable <varname>hw.ahci.force</varname>.
+	  This controls whether it attempts to attach an AHCI-capable
+	  device even if it is configured to use legacy emulation.
+	  This is enabled by default.</para>
+
+	<para revision="231251">The new &man.cam.4;-based &man.ata.4;
+	  driver now supports old &man.loader.8; tunables,
+	  <varname>hw.ata.ata_dma</varname> and
+	  <varname>hw.ata.atapi_dma</varname>, for backward
+	  compatibility.</para>
+
+	<para revision="236778">The &man.cam.4; driver now supports
+	  SEMB (SATA Enclosure Management Bridge) devices, which are
+	  equivalent to the SCSI SES/SAF-TE devices.</para>
+
+	<para revision="236765">A new &man.sysctl.8; variable
+	  <varname>kern.cam.pmp.hide_special</varname> has been added.
+	  This controls whether special PMP ports such as PMP (Port
+	  MultiPlier) configuration or SEMB (SATA Enclosure Management
+	  Bridge) will be exposed or hidden.  The default value is
+	  <literal>1</literal> (hidden).</para>
+
+	<para revision="231772">The ctl(4) driver, which supports
+	  &man.cam.4; Target Layer and &man.ctladm.8;, a userland
+	  control utility, have been added.  ctl(4) is a disk and
+	  processor device emulation subsystem supporting tagged
+	  queueing, SCSI task attribute, SCSI implicit command
+	  ordering, full task management, multiple ports, multiple
+	  simultaneous initiators, multiple simultaneous backing
+	  stores, mode sense/select, and error injection
+	  support.</para>
+
+	<para revision="230014">The &man.cd.4; driver now supports
+	  Audio CDs in the same way as &man.acd.4; did.  It will
+	  report 2352-byte sector to &man.geom.4; subsystem and use
+	  <literal>READ CD</literal> command for reading the data.
+	  This fixes an interoperability issue with <filename
+	  role="package">multimedia/vlc</filename>.</para>
+
+	<para revision="236677">The &man.da.4; driver now supports
+	  <literal>BIO_DELETE</literal>.  To select the method, a new
+	  &man.sysctl.8; variable
+	  <varname>kern.cam.da.<replaceable>N</replaceable>.delete_method</varname>
+	  has been added for each device instance.  The following
+	  values are supported:</para>
+
+	<informaltable frame="none" pgwide="1">
+	  <tgroup cols="2">
+	    <thead>
+	      <row>
+		<entry>Value</entry>
+		<entry>Method</entry>
+	      </row>
+	    </thead>
+
+	    <tbody>
+	      <row>
+		<entry>NONE</entry>
+		<entry>no provisioning support reported by the device</entry>
+	      </row>
+
+	      <row>
+		<entry>DISABLE</entry>
+		<entry>provisioning support was disabled because of errors</entry>
+	      </row>
+
+ 	      <row>
+		<entry>ZERO</entry>
+		<entry>WRITE SAME (10) command to write zeroes</entry>
+	      </row>
+
+ 	      <row>
+		<entry>WS10</entry>
+		<entry>WRITE SAME (10) command with UNMAP bit set</entry>
+	      </row>
+
+ 	      <row>
+		<entry>WS16</entry>
+		<entry>use WRITE SAME (16) command with UNMAP bit set</entry>
+	      </row>
+
+ 	      <row>
+		<entry>UNMAP</entry>
+		<entry>use UNMAP command (equivalent of the ATA DSM TRIM command)</entry>
+	      </row>
+	    </tbody>
+	  </tgroup>
+	</informaltable>
+
+	<para>When it was <literal>NONE</literal>, the device did not
+	  report the logical block provisioning support via respective
+	  VPD pages.  One can set a specific method for testing and it
+	  will be disabled automatically when not supported on the
+	  device.</para>
+
+	<para revision="238500">The <application>MIRROR</application>
+	  &man.geom.4; class now supports
+	  <literal>BIO_DELETE</literal>.  This means
+	  <literal>TRIM</literal> command will be issued on the
+	  supported devices when deleting data.</para>
+
+	<para revision="229303,234916">The
+	  <application>MULTIPATH</application> &man.geom.4; class has
+	  been updated.  It now supports Active/Active mode,
+	  Active/Read mode as hybrid of Active/Active and
+	  Active/Passive, keeping a failed path without removing the
+	  geom provider, manual configuration without on-disk
+	  metadata, and <command>add</command>,
+	  <command>remove</command>, <command>fail</command>,
+	  <command>restore</command>, <command>configure</command>
+	  subcommands in &man.gmultipath.8; utility to manage the
+	  configured paths.</para>
+
+	<para revision="234406">The
+	  <application>PART_LDM</application> &man.geom.4; class has
+	  been added.  This partition scheme supports for Logical Disk
+	  Manager, which is also known as dynamic volumes in Microsoft
+	  Windows NT.  Note that JBOD, RAID0, and RAID5 volumes are
+	  not supported yet.</para>
+
+	<para revision="230763"><application>PART_MBR</application>
+	  &man.geom.4; class now allows a primary or extended Linux
+	  swap partition to be used as the system dump device.</para>
+
+	<para revision="235877" arch="amd64,i386">The
+	  <application>RAID</application> &man.geom.4; class is now
+	  included in <filename>GENERIC</filename> kernel.</para>
+
+	<para revision="230244">The <application>RAID</application>
+	  &man.geom.4; class now supports disks with over 2TB capacity
+	  for Intel metadata format.</para>
+
+	<para revision="235874">The <application>RAID</application>
+	  &man.geom.4; class now supports DDF metadata format, which
+	  is defined in the SNIA Common RAID Disk Data Format
+	  Specification v2.0.</para>
+
+	<para revision="235483">The
+	  <application>UNCOMPRESS</application> &man.geom.4; class and
+	  the &man.mkulzma.8; utility have been added.  This class
+	  supports lzma compressed images like
+	  <application>UZIP</application> &man.geom.4; class and the
+	  &man.mkuzip.8; utility.</para>
+
+	<para revision="229975" arch="amd64,i386">The &man.hpt27xx.4;
+	  dirver has been added.  This supports HighPoint RocketRAID
+	  27xx-based SAS 6Gb/s HBA.</para>
+
+	<para revision="231689" arch="amd64,i386">The &man.isci.4;
+	  driver, which supports the integrated SAS controller in the
+	  Intel C600 (Patsburg) chipset, has been added.</para>
+
+	<para revision="230019">Bugs in &man.isp.4; target mode have
+	  been fixed.</para>
+
+	<para revision="230775">The &man.ixgbe.4; driver now supports
+	  Intel X540 adapter.</para>
+
+	<para revision="227533">A bug in &man.mfi.4; driver has been
+	  fixed.  It could cause some inconsistency due to missing of
+	  interrupt acknowledge and output the following log
+	  message:</para>
+
+	<screen>mfi0: COMMAND 0xffffffXXXXXXXXXX TIMEOUT AFTER XX SECONDS</screen>
+
+	<para revision="229611,234429">The &man.mfi.4; driver now
+	  supports single-message MSI, and Drake Skinny and
+	  ThunderBolt cards.  The &man.loader.8; tunable
+	  <varname>hw.mfi.msi</varname> has been added and it is
+	  enabled by default.</para>
+
+	<para revision="230920,231679,237876">The &man.mps.4; driver
+	  has been updated to version 14.00.00.01-fbsd.  This now
+	  supports Integrated RAID, WarpDrive controllers, WRITE12 and
+	  READ12 for direct I/O, SCSI protection information (EEDP),
+	  Transport Level Retries (TLR) for tape drives, and LSI's
+	  userland utility.</para>
+
+	<para revision="232562">A bug in the &man.mpt.4; driver has
+	  been fixed.  It could attempt to attach MegaRAID cards which
+	  should be handled by the &man.mfi.4; driver.</para>
+
+	<para revision="229107">The &man.usb.4; storage device driver
+	  now enables power save mode by default.</para>
+      </sect3>
+
+      <sect3 id="fs">
+	<title>File Systems</title>
+
+	<para>The &os; NFS filesystem has been improved:</para>
+
+	<itemizedlist>
+	  <listitem>
+	    <para revision="233326">It now supports a timeout on
+	      positive name cache entries on the client side.  A new
+	      mount option <varname>nametimeo</varname> has been added
+	      and set to <literal>60</literal> (in second) by
+	      default.</para>
+	  </listitem>
+
+	  <listitem>
+	    <para revision="234740">A memory leak when a ZFS volume is
+	      exported via the &os; NFS server has been fixed.</para>
+	  </listitem>
+
+	  <listitem>
+	    <para revision="233730">A bug has been fixed.  When a
+	      process writes to an mmap-backed file on an NFS
+	      filesystem, flushing changes to the data could fail
+	      under some circumstances such as errors due to
+	      permission mismatch and this failure could not detected
+	      as an error.  A new &man.sysctl.8; variable
+	      <varname>vfs.nfs.nfs_keep_dirty_on_error</varname> has
+	      been added to control the behavior on the client side
+	      related to this issue.  When this is set to
+	      <literal>1</literal>, the pages where a write operation
+	      failed are kept dirty.  The default value is set to
+	      <literal>0</literal>.</para>
+	  </listitem>
+
+	  <listitem>
+	    <para revision="229799">The &man.nfsv4.4; filesystem now
+	      supports a new &man.sysctl.8; variable
+	      <varname>vfs.nfsd.disable_checkutf8</varname>.  This
+	      disables the check for a UTF-8 compliance in the
+	      filenames.  This is disabled by default.  Note that
+	      enabling this may help some interoperability issue but
+	      results in an NFSv4 server that is non-RFC 3530
+	      compliant.</para>
+	  </listitem>
+	</itemizedlist>
+
+	<para revision="234511">The &man.tmpfs.5; filesystem is not an
+	  experimental implementation anymore.</para>
+
+	<para revision="234849">The &man.tmpfs.5; filesystem now
+	  supports a new &man.sysctl.8; variable
+	  <varname>vfs.tmpfs.memory_reserved</varname> to set amount
+	  of required free pages when &man.tmpfs.5; attempts to
+	  allocate a new node.</para>
+
+	<para revision="229578,232328">&os; ZFS filesystem has been
+	  updated by merging improvements in illumos project.  The
+	  following changes are made:</para>
+
+	<itemizedlist>
+	  <listitem><para>New properties, <literal>clones</literal> and
+	      <literal>written</literal>, have been added.</para></listitem>
+
+	  <listitem><para>&man.zfs.8; <command>send</command> command
+	      now reports estimated size of the stream.</para></listitem>
+
+	  <listitem><para>&man.zfs.8; <command>destroy</command> command
+	      now reports estimatated space which would be reclaimed when
+	      <option>-n</option> flag is specified.</para></listitem>
+
+	  <listitem><para>&man.zfs.8; <command>get</command> command now
+	      supports <option>-t <replaceable>type</replaceable></option>
+	      flag to specify the data type.</para></listitem>
+	</itemizedlist>
+
+	<para revision="227705">A simple script
+	  <filename>zfsboottest.sh</filename> has been added to the
+	  source tree.  This checks if the system is configured
+	  correctly when using ZFS as the root filesystem.  The script
+	  is located at
+	  <filename>/usr/src/tools/tools/zfsboottest.sh</filename> and
+	  it uses <filename>zfsboottest</filename> binary program in the
+	  same directory.</para>
+
+	<para>The binary program can be built and installed by the
+	  following command:</para>
+
+	<screen>&prompt.root; cd /usr/src/tools/tools/zfsboottest
+&prompt.root; make
+&prompt.root; make install</screen>
+
+	<para>After that, the following cmmand can be used to check the
+	  system.  <replaceable>poolname</replaceable> is the ZFS
+	  storage pool name to boot:</para>
+
+	<screen>&prompt.root; sh /usr/src/tools/tools/zfsboottest/zfsboottest.sh <replaceable>poolname</replaceable></screen>
+
+	<para>The &man.sysctl.8; variable
+	  <varname>vfs.zfs.txg.timeout</varname> has been changed from
+	  read-only to writable one.</para>
+      </sect3>
+    </sect2>
+

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

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 00:08:59 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 17CC2DB2;
 Mon, 24 Dec 2012 00:08:59 +0000 (UTC) (envelope-from hrs@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E7C4C8FC14;
 Mon, 24 Dec 2012 00:08:58 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBO08wDe094306;
 Mon, 24 Dec 2012 00:08:58 GMT (envelope-from hrs@svn.freebsd.org)
Received: (from hrs@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBO08wnD094305;
 Mon, 24 Dec 2012 00:08:58 GMT (envelope-from hrs@svn.freebsd.org)
Message-Id: <201212240008.qBO08wnD094305@svn.freebsd.org>
From: Hiroki Sato <hrs@FreeBSD.org>
Date: Mon, 24 Dec 2012 00:08:58 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244645 - stable/9/release/doc/en_US.ISO8859-1/relnotes
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 00:08:59 -0000

Author: hrs
Date: Mon Dec 24 00:08:58 2012
New Revision: 244645
URL: http://svnweb.freebsd.org/changeset/base/244645

Log:
  Fix typos.

Modified:
  stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml

Modified: stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml
==============================================================================
--- stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Sun Dec 23 23:03:45 2012	(r244644)
+++ stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Mon Dec 24 00:08:58 2012	(r244645)
@@ -200,7 +200,7 @@
       <para revision="231907" arch="powerpc">&os;/powerpc64 now
 	supports kernel profiling by using &man.kgmon.8;.</para>
 
-      <para revision="231145">The &os; Linux ABI compatiblity layer
+      <para revision="231145">The &os; Linux ABI compatibility layer
 	now supports <function>linux_fadvice64()</function> and
 	<function>linux_fadvice64_64()</function> system call.</para>
 
@@ -386,13 +386,13 @@
 	  <para revision="236926,236927,239965">The drm2(4) Intel GPU driver,
 	    which supports GEM, KMS, and works with new generations of
 	    GPUs such as IronLake, SandyBridge, and IvyBridge, has been
-	    added.  The &man.agp.4; dirver now supports SandyBridge
+	    added.  The &man.agp.4; driver now supports SandyBridge
 	    and IvyBridge CPU northbridges.</para>
 
 	  <para revision="232798">The &man.snd.hda.4; driver has been
 	    updated.  It now supports HDMI, new volume control,
 	    automatic recording source selection, runtime
-	    reconfigureation, more then 4 PCM devices on a controller,
+	    reconfiguration, more then 4 PCM devices on a controller,
 	    multichannel recording, additional playback/record
 	    streams, higher bandwidth, and more informative device
 	    names.</para>
@@ -477,7 +477,7 @@
 	  <para revision="231093,237925">The &man.cxgbe.4; and
 	    &man.cxgb.4; driver has been updated to firmware version
 	    1.5.2.0.  This now supports device configuration via a
-	    plain text configration file, IPv6 hardware checksumming,
+	    plain text configuration file, IPv6 hardware checksumming,
 	    IPv6 TSO and LRO, <literal>loadfw</literal> command in the
 	    cxgbetool(8) utility which allows to install a firmware to
 	    the card, &man.sysctl.8; variables under
@@ -489,7 +489,7 @@
 	    are found on ULi M1563 South Bridge and M1689 Bridge.</para>
 
 	  <para revision="229711,229717,229720">The &man.et.4; driver
-	    now works on all platfomrs.  A bug which could prevent
+	    now works on all platforms.  A bug which could prevent
 	    &man.altq.4; support from working has been fixed.  A new
 	    &man.sysctl.8; variables under
 	    <varname>dev.et.<replaceable>N</replaceable>.stats</varname>
@@ -543,7 +543,7 @@
 
 	  <para revision="233485">The smcphy(4); driver now supports
 	    Seeq Technology 80220 PHY.  This is found on Adaptec
-	    AIC-6915 Starfire ethernet controller supported by the
+	    AIC-6915 Starfire Ethernet controller supported by the
 	    &man.sf.4; driver.</para>
 
 	  <para revision="229417,229438">The &man.ti.4; driver now
@@ -678,7 +678,7 @@
 	  &man.cam.4; Target Layer and &man.ctladm.8;, a userland
 	  control utility, have been added.  ctl(4) is a disk and
 	  processor device emulation subsystem supporting tagged
-	  queueing, SCSI task attribute, SCSI implicit command
+	  queuing, SCSI task attribute, SCSI implicit command
 	  ordering, full task management, multiple ports, multiple
 	  simultaneous initiators, multiple simultaneous backing
 	  stores, mode sense/select, and error injection
@@ -797,7 +797,7 @@
 	  &man.mkuzip.8; utility.</para>
 
 	<para revision="229975" arch="amd64,i386">The &man.hpt27xx.4;
-	  dirver has been added.  This supports HighPoint RocketRAID
+	  driver has been added.  This supports HighPoint RocketRAID
 	  27xx-based SAS 6Gb/s HBA.</para>
 
 	<para revision="231689" arch="amd64,i386">The &man.isci.4;
@@ -819,7 +819,7 @@
 
 	<para revision="229611,234429">The &man.mfi.4; driver now
 	  supports single-message MSI, and Drake Skinny and
-	  ThunderBolt cards.  The &man.loader.8; tunable
+	  Thunderbolt cards.  The &man.loader.8; tunable
 	  <varname>hw.mfi.msi</varname> has been added and it is
 	  enabled by default.</para>
 
@@ -905,7 +905,7 @@
 	      now reports estimated size of the stream.</para></listitem>
 
 	  <listitem><para>&man.zfs.8; <command>destroy</command> command
-	      now reports estimatated space which would be reclaimed when
+	      now reports estimated space which would be reclaimed when
 	      <option>-n</option> flag is specified.</para></listitem>
 
 	  <listitem><para>&man.zfs.8; <command>get</command> command now
@@ -929,7 +929,7 @@
 &prompt.root; make
 &prompt.root; make install</screen>
 
-	<para>After that, the following cmmand can be used to check the
+	<para>After that, the following command can be used to check the
 	  system.  <replaceable>poolname</replaceable> is the ZFS
 	  storage pool name to boot:</para>
 
@@ -1239,7 +1239,7 @@
     <sect2>
       <title id="upgrade-pitfalls">User-visible incompatibilities</title>
 
-      <para>FreeBSD 9.0 and later have several incompatiblities in
+      <para>FreeBSD 9.0 and later have several incompatibilities in
 	system configuration which you might want to know before
 	upgrading your system.  <emphasis>Please read this section and
 	the <ulink

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 00:40:22 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 764AA2EC;
 Mon, 24 Dec 2012 00:40:22 +0000 (UTC) (envelope-from hrs@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 517508FC0C;
 Mon, 24 Dec 2012 00:40:22 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBO0eMC0098897;
 Mon, 24 Dec 2012 00:40:22 GMT (envelope-from hrs@svn.freebsd.org)
Received: (from hrs@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBO0eM2h098896;
 Mon, 24 Dec 2012 00:40:22 GMT (envelope-from hrs@svn.freebsd.org)
Message-Id: <201212240040.qBO0eM2h098896@svn.freebsd.org>
From: Hiroki Sato <hrs@FreeBSD.org>
Date: Mon, 24 Dec 2012 00:40:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244646 - stable/9/release
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 00:40:22 -0000

Author: hrs
Date: Mon Dec 24 00:40:21 2012
New Revision: 244646
URL: http://svnweb.freebsd.org/changeset/base/244646

Log:
  MFC: r232679:
  
  - Clean up extra ${.OBJDIR}.
  - Add ${IMAGE} for the supported image files.  This fixes the install target
    on FreeBSD/pc98.
  - Use "mkdir -p" instead of "-mkdir" consistently.

Modified:
  stable/9/release/Makefile
Directory Properties:
  stable/9/release/   (props changed)

Modified: stable/9/release/Makefile
==============================================================================
--- stable/9/release/Makefile	Mon Dec 24 00:08:58 2012	(r244645)
+++ stable/9/release/Makefile	Mon Dec 24 00:40:21 2012	(r244646)
@@ -32,7 +32,7 @@ TARGET_ARCH?=	${MACHINE_ARCH}
 TARGET_ARCH?=	${TARGET}
 .endif
 IMAKE=		${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}
-DISTDIR=	${.OBJDIR}/dist
+DISTDIR=	dist
 
 .if !exists(${DOCDIR})
 NODOC= true
@@ -53,38 +53,41 @@ EXTRA_PACKAGES+= reldoc
 .endif
 
 RELEASE_TARGETS= ftp
+IMAGES=
 .if exists(${.CURDIR}/${TARGET}/mkisoimages.sh)
 RELEASE_TARGETS+= cdrom
+IMAGES+=	release.iso bootonly.iso
 .endif
 .if exists(${.CURDIR}/${TARGET}/make-memstick.sh)
 RELEASE_TARGETS+= memstick
+IMAGES+=	memstick
 .endif
 
 .include <bsd.obj.mk>
 
 base.txz:
-	-mkdir ${DISTDIR}
-	cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${DISTDIR}
+	mkdir -p ${DISTDIR}
+	cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR}
 # Set up mergemaster root database
 	sh ${.CURDIR}/scripts/mm-mtree.sh -m ${WORLDDIR} -F \
-	    "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${DISTDIR}/base"
+	    "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${.OBJDIR}/${DISTDIR}/base"
 # Package all components
-	cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${DISTDIR}
-	mv ${DISTDIR}/*.txz ${.OBJDIR}
+	cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${.OBJDIR}/${DISTDIR}
+	mv ${DISTDIR}/*.txz .
 
 kernel.txz:
-	-mkdir ${DISTDIR}
-	cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${DISTDIR}
-	mv ${DISTDIR}/kernel*.txz ${.OBJDIR}
+	mkdir -p ${DISTDIR}
+	cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${.OBJDIR}/${DISTDIR}
+	mv ${DISTDIR}/kernel*.txz .
 
 src.txz:
-	-mkdir -p ${DISTDIR}/usr
+	mkdir -p ${DISTDIR}/usr
 	ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
 	cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn --exclude .zfs \
 	    --exclude CVS --exclude @ --exclude usr/src/release/dist usr/src
 
 ports.txz:
-	-mkdir -p ${DISTDIR}/usr
+	mkdir -p ${DISTDIR}/usr
 	ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
 	cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz \
 	    --exclude CVS --exclude .svn \
@@ -94,38 +97,35 @@ ports.txz:
 reldoc:
 	cd ${.CURDIR}/doc && ${MAKE} all install clean 'FORMATS=html txt' \
 	    INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc
-	-mkdir ${.OBJDIR}/reldoc
+	mkdir -p reldoc
 .for i in hardware readme relnotes errata
-	ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.txt \
-	    ${.OBJDIR}/reldoc/${i:U}.TXT
-	ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.html \
-	    ${.OBJDIR}/reldoc/${i:U}.HTM
+	ln -f rdoc/${RELNOTES_LANG}/${i}/article.txt reldoc/${i:U}.TXT
+	ln -f rdoc/${RELNOTES_LANG}/${i}/article.html reldoc/${i:U}.HTM
 .endfor
-	cp ${.OBJDIR}/rdoc/${RELNOTES_LANG}/readme/docbook.css ${.OBJDIR}/reldoc
+	cp rdoc/${RELNOTES_LANG}/readme/docbook.css reldoc
 
 system: packagesystem
 # Install system
-	-mkdir ${.OBJDIR}/release
+	mkdir -p release
 	cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
 	    DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1
 # Copy distfiles
-	mkdir ${.OBJDIR}/release/usr/freebsd-dist
-	cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST \
-	    ${.OBJDIR}/release/usr/freebsd-dist
+	mkdir -p release/usr/freebsd-dist
+	cp *.txz MANIFEST release/usr/freebsd-dist
 # Copy documentation, if generated
 .if !defined(NODOC)
-	cp ${.OBJDIR}/reldoc/* ${.OBJDIR}/release
+	cp reldoc/* release
 .endif
 # Set up installation environment
-	ln -s /tmp/bsdinstall_etc/resolv.conf ${.OBJDIR}/release/etc/resolv.conf
-	echo sendmail_enable=\"NONE\" > ${.OBJDIR}/release/etc/rc.conf
-	echo hostid_enable=\"NO\" >> ${.OBJDIR}/release/etc/rc.conf
-	cp ${.CURDIR}/rc.local ${.OBJDIR}/release/etc
-	touch ${.OBJDIR}/${.TARGET}
+	ln -s /tmp/bsdinstall_etc/resolv.conf release/etc/resolv.conf
+	echo sendmail_enable=\"NONE\" > release/etc/rc.conf
+	echo hostid_enable=\"NO\" >> release/etc/rc.conf
+	cp ${.CURDIR}/rc.local release/etc
+	touch ${.TARGET}
 
 bootonly: packagesystem
 # Install system
-	mkdir ${.OBJDIR}/bootonly
+	mkdir -p bootonly
 	cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
 	    DESTDIR=${.OBJDIR}/bootonly WITHOUT_AMD=1 WITHOUT_AT=1 \
 	    WITHOUT_BIND_DNSSEC=1 WITHOUT_BIND_ETC=1 WITHOUT_BIND_MTREE=1 \
@@ -135,35 +135,35 @@ bootonly: packagesystem
 	    WITHOUT_INSTALLIB=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 \
 	    WITHOUT_KERNEL_SYMBOLS=1
 # Copy manifest only (no distfiles) to get checksums
-	mkdir ${.OBJDIR}/bootonly/usr/freebsd-dist
-	cp ${.OBJDIR}/MANIFEST ${.OBJDIR}/bootonly/usr/freebsd-dist
+	mkdir -p bootonly/usr/freebsd-dist
+	cp MANIFEST bootonly/usr/freebsd-dist
 # Copy documentation, if generated
 .if !defined(NODOC)
-	cp ${.OBJDIR}/reldoc/* ${.OBJDIR}/bootonly
+	cp reldoc/* bootonly
 .endif
 # Set up installation environment
-	ln -s /tmp/bsdinstall_etc/resolv.conf ${.OBJDIR}/bootonly/etc/resolv.conf
-	echo sendmail_enable=\"NONE\" > ${.OBJDIR}/bootonly/etc/rc.conf
-	echo hostid_enable=\"NO\" >> ${.OBJDIR}/bootonly/etc/rc.conf
-	cp ${.CURDIR}/rc.local ${.OBJDIR}/bootonly/etc
+	ln -s /tmp/bsdinstall_etc/resolv.conf bootonly/etc/resolv.conf
+	echo sendmail_enable=\"NONE\" > bootonly/etc/rc.conf
+	echo hostid_enable=\"NO\" >> bootonly/etc/rc.conf
+	cp ${.CURDIR}/rc.local bootonly/etc
 
 release.iso: system
-	sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/release.iso ${.OBJDIR}/release
+	sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} release
 
 bootonly.iso: bootonly
-	sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/bootonly.iso ${.OBJDIR}/bootonly
+	sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} bootonly
 
 memstick: system
-	sh ${.CURDIR}/${TARGET}/make-memstick.sh ${.OBJDIR}/release ${.OBJDIR}/memstick
+	sh ${.CURDIR}/${TARGET}/make-memstick.sh release ${.TARGET}
 
 packagesystem: base.txz kernel.txz ${EXTRA_PACKAGES}
-	sh ${.CURDIR}/scripts/make-manifest.sh ${.OBJDIR}/*.txz > ${.OBJDIR}/MANIFEST
+	sh ${.CURDIR}/scripts/make-manifest.sh *.txz > MANIFEST
 	touch ${.TARGET}
 
 cdrom: release.iso bootonly.iso
 ftp: packagesystem
 	rm -rf ftp
-	mkdir ftp
+	mkdir -p ftp
 	cp *.txz MANIFEST ftp
 
 release:
@@ -171,7 +171,7 @@ release:
 	${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
 
 clean:
-	chflags -R noschg ${.OBJDIR}
+	chflags -R noschg .
 	rm -rf dist ftp
 	rm -f packagesystem
 	rm -f *.txz MANIFEST
@@ -180,6 +180,7 @@ clean:
 	rm -f release.iso bootonly.iso memstick
 
 install:
-	-mkdir ${DESTDIR}
-	cp -a *.iso memstick ftp ${DESTDIR}/
-
+.if defined(DESTDIR) && !empty(DESTDIR)
+	mkdir -p ${DESTDIR}
+.endif
+	cp -a ${IMAGES} ftp ${DESTDIR}/

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 00:45:55 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 565D8480;
 Mon, 24 Dec 2012 00:45:55 +0000 (UTC)
 (envelope-from delphij@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 21EAD8FC16;
 Mon, 24 Dec 2012 00:45:55 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBO0jtip099676;
 Mon, 24 Dec 2012 00:45:55 GMT (envelope-from delphij@svn.freebsd.org)
Received: (from delphij@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBO0jsB0099675;
 Mon, 24 Dec 2012 00:45:54 GMT (envelope-from delphij@svn.freebsd.org)
Message-Id: <201212240045.qBO0jsB0099675@svn.freebsd.org>
From: Xin LI <delphij@FreeBSD.org>
Date: Mon, 24 Dec 2012 00:45:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244647 - stable/9/etc
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 00:45:55 -0000

Author: delphij
Date: Mon Dec 24 00:45:54 2012
New Revision: 244647
URL: http://svnweb.freebsd.org/changeset/base/244647

Log:
  MFC r244096:
  
  Sync pf.os with OpenBSD.

Modified:
  stable/9/etc/pf.os
Directory Properties:
  stable/9/etc/   (props changed)

Modified: stable/9/etc/pf.os
==============================================================================
--- stable/9/etc/pf.os	Mon Dec 24 00:40:21 2012	(r244646)
+++ stable/9/etc/pf.os	Mon Dec 24 00:45:54 2012	(r244647)
@@ -1,5 +1,5 @@
 # $FreeBSD$
-# $OpenBSD: pf.os,v 1.25 2010/10/18 15:55:27 deraadt Exp $
+# $OpenBSD: pf.os,v 1.26 2012/08/03 12:25:16 jsg Exp $
 # passive OS fingerprinting
 # -------------------------
 #
@@ -226,7 +226,13 @@ S2:64:1:60:M*,S,T,N,W0:		Linux:2.4::Linu
 S3:64:1:60:M*,S,T,N,W0:		Linux:2.4:.18-21:Linux 2.4.18 and newer
 S4:64:1:60:M*,S,T,N,W0:		Linux:2.4::Linux 2.4/2.6 <= 2.6.7
 S4:64:1:60:M*,S,T,N,W0:		Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7
-S4:64:1:60:M*,S,T,N,W7:		Linux:2.6:8:Linux 2.6.8 and newer (?)
+
+S4:64:1:60:M*,S,T,N,W5:		Linux:2.6::Linux 2.6 (newer, 1)
+S4:64:1:60:M*,S,T,N,W6:		Linux:2.6::Linux 2.6 (newer, 2)
+S4:64:1:60:M*,S,T,N,W7:		Linux:2.6::Linux 2.6 (newer, 3)
+T4:64:1:60:M*,S,T,N,W7:		Linux:2.6::Linux 2.6 (newer, 4)
+
+S10:64:1:60:M*,S,T,N,W4:	Linux:3.0::Linux 3.0
 
 S3:64:1:60:M*,S,T,N,W1:		Linux:2.5::Linux 2.5 (sometimes 2.4)
 S4:64:1:60:M*,S,T,N,W1:		Linux:2.5-2.6::Linux 2.5/2.6
@@ -429,6 +435,8 @@ S44:128:1:48:M*,N,N,S:			Windows:XP:SP1:
 32767:128:1:48:M*,N,N,S:		Windows:2000:SP4:Windows SP1, 2000 SP4
 32767:128:1:48:M*,N,N,S:		Windows:XP:SP1:Windows SP1, 2000 SP4
 
+8192:128:1:52:M*,N,W2,N,N,S:		Windows:Vista::Windows Vista/7
+
 # Odds, ends, mods:
 
 S52:128:1:48:M1260,N,N,S:		Windows:2000:cisco:Windows XP/2000 via Cisco

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 00:46:35 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 58CE25E1;
 Mon, 24 Dec 2012 00:46:35 +0000 (UTC)
 (envelope-from delphij@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 22E688FC12;
 Mon, 24 Dec 2012 00:46:35 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBO0kZa5099815;
 Mon, 24 Dec 2012 00:46:35 GMT (envelope-from delphij@svn.freebsd.org)
Received: (from delphij@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBO0kYtL099814;
 Mon, 24 Dec 2012 00:46:34 GMT (envelope-from delphij@svn.freebsd.org)
Message-Id: <201212240046.qBO0kYtL099814@svn.freebsd.org>
From: Xin LI <delphij@FreeBSD.org>
Date: Mon, 24 Dec 2012 00:46:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244648 - stable/8/etc
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 00:46:35 -0000

Author: delphij
Date: Mon Dec 24 00:46:34 2012
New Revision: 244648
URL: http://svnweb.freebsd.org/changeset/base/244648

Log:
  MFC r244096:
  
  Sync pf.os with OpenBSD.

Modified:
  stable/8/etc/pf.os
Directory Properties:
  stable/8/etc/   (props changed)

Modified: stable/8/etc/pf.os
==============================================================================
--- stable/8/etc/pf.os	Mon Dec 24 00:45:54 2012	(r244647)
+++ stable/8/etc/pf.os	Mon Dec 24 00:46:34 2012	(r244648)
@@ -1,5 +1,5 @@
 # $FreeBSD$
-# $OpenBSD: pf.os,v 1.25 2010/10/18 15:55:27 deraadt Exp $
+# $OpenBSD: pf.os,v 1.26 2012/08/03 12:25:16 jsg Exp $
 # passive OS fingerprinting
 # -------------------------
 #
@@ -226,7 +226,13 @@ S2:64:1:60:M*,S,T,N,W0:		Linux:2.4::Linu
 S3:64:1:60:M*,S,T,N,W0:		Linux:2.4:.18-21:Linux 2.4.18 and newer
 S4:64:1:60:M*,S,T,N,W0:		Linux:2.4::Linux 2.4/2.6 <= 2.6.7
 S4:64:1:60:M*,S,T,N,W0:		Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7
-S4:64:1:60:M*,S,T,N,W7:		Linux:2.6:8:Linux 2.6.8 and newer (?)
+
+S4:64:1:60:M*,S,T,N,W5:		Linux:2.6::Linux 2.6 (newer, 1)
+S4:64:1:60:M*,S,T,N,W6:		Linux:2.6::Linux 2.6 (newer, 2)
+S4:64:1:60:M*,S,T,N,W7:		Linux:2.6::Linux 2.6 (newer, 3)
+T4:64:1:60:M*,S,T,N,W7:		Linux:2.6::Linux 2.6 (newer, 4)
+
+S10:64:1:60:M*,S,T,N,W4:	Linux:3.0::Linux 3.0
 
 S3:64:1:60:M*,S,T,N,W1:		Linux:2.5::Linux 2.5 (sometimes 2.4)
 S4:64:1:60:M*,S,T,N,W1:		Linux:2.5-2.6::Linux 2.5/2.6
@@ -429,6 +435,8 @@ S44:128:1:48:M*,N,N,S:			Windows:XP:SP1:
 32767:128:1:48:M*,N,N,S:		Windows:2000:SP4:Windows SP1, 2000 SP4
 32767:128:1:48:M*,N,N,S:		Windows:XP:SP1:Windows SP1, 2000 SP4
 
+8192:128:1:52:M*,N,W2,N,N,S:		Windows:Vista::Windows Vista/7
+
 # Odds, ends, mods:
 
 S52:128:1:48:M1260,N,N,S:		Windows:2000:cisco:Windows XP/2000 via Cisco

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 12:54:13 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id DE070D16;
 Mon, 24 Dec 2012 12:54:12 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id C21F98FC0A;
 Mon, 24 Dec 2012 12:54:12 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBOCsCQr007826;
 Mon, 24 Dec 2012 12:54:12 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBOCsCdE007824;
 Mon, 24 Dec 2012 12:54:12 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241254.qBOCsCdE007824@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 12:54:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244651 - in stable/9/sys: kern sys
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 12:54:13 -0000

Author: kib
Date: Mon Dec 24 12:54:12 2012
New Revision: 244651
URL: http://svnweb.freebsd.org/changeset/base/244651

Log:
  MFC r240283:
  Add MNTK_LOOKUP_EXCL_DOTDOT struct mount flag, which specifies to the
  lookup code that dotdot lookups shall override any shared lock
  requests with the exclusive one. The flag is useful for filesystems
  which sometimes need to upgrade shared lock to exclusive inside the
  VOP_LOOKUP or later, which cannot be done safely for dotdot, due to
  dvp also locked and causing LOR.

Modified:
  stable/9/sys/kern/vfs_lookup.c
  stable/9/sys/sys/mount.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_lookup.c
==============================================================================
--- stable/9/sys/kern/vfs_lookup.c	Mon Dec 24 10:10:18 2012	(r244650)
+++ stable/9/sys/kern/vfs_lookup.c	Mon Dec 24 12:54:12 2012	(r244651)
@@ -393,11 +393,13 @@ namei(struct nameidata *ndp)
 }
 
 static int
-compute_cn_lkflags(struct mount *mp, int lkflags)
+compute_cn_lkflags(struct mount *mp, int lkflags, int cnflags)
 {
 
-	if (mp == NULL || 
-	    ((lkflags & LK_SHARED) && !(mp->mnt_kern_flag & MNTK_LOOKUP_SHARED))) {
+	if (mp == NULL || ((lkflags & LK_SHARED) &&
+	    (!(mp->mnt_kern_flag & MNTK_LOOKUP_SHARED) ||
+	    ((cnflags & ISDOTDOT) &&
+	    (mp->mnt_kern_flag & MNTK_LOOKUP_EXCL_DOTDOT))))) {
 		lkflags &= ~LK_SHARED;
 		lkflags |= LK_EXCLUSIVE;
 	}
@@ -526,7 +528,8 @@ lookup(struct nameidata *ndp)
 	dp = ndp->ni_startdir;
 	ndp->ni_startdir = NULLVP;
 	vn_lock(dp,
-	    compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags | LK_RETRY));
+	    compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags | LK_RETRY,
+	    cnp->cn_flags));
 
 dirloop:
 	/*
@@ -683,7 +686,7 @@ dirloop:
 			VFS_UNLOCK_GIANT(tvfslocked);
 			vn_lock(dp,
 			    compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags |
-			    LK_RETRY));
+			    LK_RETRY, ISDOTDOT));
 		}
 	}
 
@@ -721,7 +724,8 @@ unionlookup:
 	vprint("lookup in", dp);
 #endif
 	lkflags_save = cnp->cn_lkflags;
-	cnp->cn_lkflags = compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags);
+	cnp->cn_lkflags = compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags,
+	    cnp->cn_flags);
 	if ((error = VOP_LOOKUP(dp, &ndp->ni_vp, cnp)) != 0) {
 		cnp->cn_lkflags = lkflags_save;
 		KASSERT(ndp->ni_vp == NULL, ("leaf should be empty"));
@@ -740,7 +744,7 @@ unionlookup:
 			VFS_UNLOCK_GIANT(tvfslocked);
 			vn_lock(dp,
 			    compute_cn_lkflags(dp->v_mount, cnp->cn_lkflags |
-			    LK_RETRY));
+			    LK_RETRY, cnp->cn_flags));
 			goto unionlookup;
 		}
 
@@ -812,8 +816,8 @@ unionlookup:
 		dvfslocked = 0;
 		vref(vp_crossmp);
 		ndp->ni_dvp = vp_crossmp;
-		error = VFS_ROOT(mp, compute_cn_lkflags(mp, cnp->cn_lkflags),
-		    &tdp);
+		error = VFS_ROOT(mp, compute_cn_lkflags(mp, cnp->cn_lkflags,
+		    cnp->cn_flags), &tdp);
 		vfs_unbusy(mp);
 		if (vn_lock(vp_crossmp, LK_SHARED | LK_NOWAIT))
 			panic("vp_crossmp exclusively locked or reclaimed");

Modified: stable/9/sys/sys/mount.h
==============================================================================
--- stable/9/sys/sys/mount.h	Mon Dec 24 10:10:18 2012	(r244650)
+++ stable/9/sys/sys/mount.h	Mon Dec 24 12:54:12 2012	(r244651)
@@ -369,6 +369,7 @@ void          __mnt_vnode_markerfree(str
 #define	MNTK_NO_IOPF	0x00000100	/* Disallow page faults during reads
 					   and writes. Filesystem shall properly
 					   handle i/o state on EFAULT. */
+#define	MNTK_LOOKUP_EXCL_DOTDOT	0x00000800
 #define MNTK_NOASYNC	0x00800000	/* disable async */
 #define MNTK_UNMOUNT	0x01000000	/* unmount in progress */
 #define	MNTK_MWAIT	0x02000000	/* waiting for unmount to finish */

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:01:08 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id D979AEC4;
 Mon, 24 Dec 2012 13:01:08 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id B5B8D8FC0A;
 Mon, 24 Dec 2012 13:01:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBOD18Ma008929;
 Mon, 24 Dec 2012 13:01:08 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBOD18Xh008926;
 Mon, 24 Dec 2012 13:01:08 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241301.qBOD18Xh008926@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:01:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244652 - in stable/9/sys: kern sys
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:01:08 -0000

Author: kib
Date: Mon Dec 24 13:01:07 2012
New Revision: 244652
URL: http://svnweb.freebsd.org/changeset/base/244652

Log:
  MFC r240284:
  Add a facility for vgone() to inform the set of subscribed mounts
  about vnode reclamation. Typical use is for the bypass mounts like
  nullfs to get a notification about lower vnode going away.
  
  MFC r241225 (by avg):
  mount.h: MNTK_VGONE_UPPER and MNTK_VGONE_WAITER were supposed to be different

Modified:
  stable/9/sys/kern/vfs_mount.c
  stable/9/sys/kern/vfs_subr.c
  stable/9/sys/sys/mount.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_mount.c
==============================================================================
--- stable/9/sys/kern/vfs_mount.c	Mon Dec 24 12:54:12 2012	(r244651)
+++ stable/9/sys/kern/vfs_mount.c	Mon Dec 24 13:01:07 2012	(r244652)
@@ -479,6 +479,7 @@ vfs_mount_alloc(struct vnode *vp, struct
 	mac_mount_create(cred, mp);
 #endif
 	arc4rand(&mp->mnt_hashseed, sizeof mp->mnt_hashseed, 0);
+	TAILQ_INIT(&mp->mnt_uppers);
 	return (mp);
 }
 
@@ -512,6 +513,7 @@ vfs_mount_destroy(struct mount *mp)
 			vprint("", vp);
 		panic("unmount: dangling vnode");
 	}
+	KASSERT(TAILQ_EMPTY(&mp->mnt_uppers), ("mnt_uppers"));
 	if (mp->mnt_nvnodelistsize != 0)
 		panic("vfs_mount_destroy: nonzero nvnodelistsize");
 	if (mp->mnt_activevnodelistsize != 0)
@@ -1259,7 +1261,8 @@ dounmount(mp, flags, td)
 	}
 
 	MNT_ILOCK(mp);
-	if (mp->mnt_kern_flag & MNTK_UNMOUNT) {
+	if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0 ||
+	    !TAILQ_EMPTY(&mp->mnt_uppers)) {
 		MNT_IUNLOCK(mp);
 		if (coveredvp)
 			VOP_UNLOCK(coveredvp, 0);

Modified: stable/9/sys/kern/vfs_subr.c
==============================================================================
--- stable/9/sys/kern/vfs_subr.c	Mon Dec 24 12:54:12 2012	(r244651)
+++ stable/9/sys/kern/vfs_subr.c	Mon Dec 24 13:01:07 2012	(r244652)
@@ -2741,6 +2741,58 @@ vgone(struct vnode *vp)
 	VI_UNLOCK(vp);
 }
 
+static void
+vgonel_reclaim_lowervp_vfs(struct mount *mp __unused,
+    struct vnode *lowervp __unused)
+{
+}
+
+/*
+ * Notify upper mounts about reclaimed vnode.
+ */
+static void
+vgonel_reclaim_lowervp(struct vnode *vp)
+{
+	static struct vfsops vgonel_vfsops = {
+		.vfs_reclaim_lowervp = vgonel_reclaim_lowervp_vfs
+	};
+	struct mount *mp, *ump, *mmp;
+
+	mp = vp->v_mount;
+	if (mp == NULL)
+		return;
+
+	MNT_ILOCK(mp);
+	if (TAILQ_EMPTY(&mp->mnt_uppers))
+		goto unlock;
+	MNT_IUNLOCK(mp);
+	mmp = malloc(sizeof(struct mount), M_TEMP, M_WAITOK | M_ZERO);
+	mmp->mnt_op = &vgonel_vfsops;
+	mmp->mnt_kern_flag |= MNTK_MARKER;
+	MNT_ILOCK(mp);
+	mp->mnt_kern_flag |= MNTK_VGONE_UPPER;
+	for (ump = TAILQ_FIRST(&mp->mnt_uppers); ump != NULL;) {
+		if ((ump->mnt_kern_flag & MNTK_MARKER) != 0) {
+			ump = TAILQ_NEXT(ump, mnt_upper_link);
+			continue;
+		}
+		TAILQ_INSERT_AFTER(&mp->mnt_uppers, ump, mmp, mnt_upper_link);
+		MNT_IUNLOCK(mp);
+		VFS_RECLAIM_LOWERVP(ump, vp);
+		MNT_ILOCK(mp);
+		ump = TAILQ_NEXT(mmp, mnt_upper_link);
+		TAILQ_REMOVE(&mp->mnt_uppers, mmp, mnt_upper_link);
+	}
+	free(mmp, M_TEMP);
+	mp->mnt_kern_flag &= ~MNTK_VGONE_UPPER;
+	if ((mp->mnt_kern_flag & MNTK_VGONE_WAITER) != 0) {
+		mp->mnt_kern_flag &= ~MNTK_VGONE_WAITER;
+		wakeup(&mp->mnt_uppers);
+	}
+unlock:
+	MNT_IUNLOCK(mp);
+}
+
 /*
  * vgone, with the vp interlock held.
  */
@@ -2765,6 +2817,7 @@ vgonel(struct vnode *vp)
 	if (vp->v_iflag & VI_DOOMED)
 		return;
 	vp->v_iflag |= VI_DOOMED;
+
 	/*
 	 * Check to see if the vnode is in use.  If so, we have to call
 	 * VOP_CLOSE() and VOP_INACTIVE().
@@ -2772,6 +2825,8 @@ vgonel(struct vnode *vp)
 	active = vp->v_usecount;
 	oweinact = (vp->v_iflag & VI_OWEINACT);
 	VI_UNLOCK(vp);
+	vgonel_reclaim_lowervp(vp);
+
 	/*
 	 * Clean out any buffers associated with the vnode.
 	 * If the flush fails, just toss the buffers.

Modified: stable/9/sys/sys/mount.h
==============================================================================
--- stable/9/sys/sys/mount.h	Mon Dec 24 12:54:12 2012	(r244651)
+++ stable/9/sys/sys/mount.h	Mon Dec 24 13:01:07 2012	(r244652)
@@ -189,6 +189,8 @@ struct mount {
 #define	mnt_endzero	mnt_gjprovider
 	char		*mnt_gjprovider;	/* gjournal provider name */
 	struct lock	mnt_explock;		/* vfs_export walkers lock */
+	TAILQ_ENTRY(mount) mnt_upper_link;	/* (m) we in the all uppers */
+	TAILQ_HEAD(, mount) mnt_uppers;		/* (m) upper mounts over us*/
 };
 
 /*
@@ -369,7 +371,10 @@ void          __mnt_vnode_markerfree(str
 #define	MNTK_NO_IOPF	0x00000100	/* Disallow page faults during reads
 					   and writes. Filesystem shall properly
 					   handle i/o state on EFAULT. */
+#define	MNTK_VGONE_UPPER	0x00000200
+#define	MNTK_VGONE_WAITER	0x00000400
 #define	MNTK_LOOKUP_EXCL_DOTDOT	0x00000800
+#define	MNTK_MARKER		0x00001000
 #define MNTK_NOASYNC	0x00800000	/* disable async */
 #define MNTK_UNMOUNT	0x01000000	/* unmount in progress */
 #define	MNTK_MWAIT	0x02000000	/* waiting for unmount to finish */
@@ -625,6 +630,7 @@ typedef	int vfs_mount_t(struct mount *mp
 typedef int vfs_sysctl_t(struct mount *mp, fsctlop_t op,
 		    struct sysctl_req *req);
 typedef void vfs_susp_clean_t(struct mount *mp);
+typedef void vfs_reclaim_lowervp_t(struct mount *mp, struct vnode *lowervp);
 
 struct vfsops {
 	vfs_mount_t		*vfs_mount;
@@ -642,6 +648,7 @@ struct vfsops {
 	vfs_extattrctl_t	*vfs_extattrctl;
 	vfs_sysctl_t		*vfs_sysctl;
 	vfs_susp_clean_t	*vfs_susp_clean;
+	vfs_reclaim_lowervp_t	*vfs_reclaim_lowervp;
 };
 
 vfs_statfs_t	__vfs_statfs;
@@ -667,6 +674,9 @@ vfs_statfs_t	__vfs_statfs;
 #define	VFS_SUSP_CLEAN(MP) \
 	({if (*(MP)->mnt_op->vfs_susp_clean != NULL)		\
 	       (*(MP)->mnt_op->vfs_susp_clean)(MP); })
+#define	VFS_RECLAIM_LOWERVP(MP, VP)				\
+	({if (*(MP)->mnt_op->vfs_reclaim_lowervp != NULL)	\
+		(*(MP)->mnt_op->vfs_reclaim_lowervp)((MP), (VP)); })
 
 #define	VFS_NEEDSGIANT_(MP)						\
     ((MP) != NULL && ((MP)->mnt_kern_flag & MNTK_MPSAFE) == 0)

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:05:28 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 20C0F216;
 Mon, 24 Dec 2012 13:05:28 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 0618E8FC12;
 Mon, 24 Dec 2012 13:05:28 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBOD5RAE009805;
 Mon, 24 Dec 2012 13:05:27 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBOD5Rjg009804;
 Mon, 24 Dec 2012 13:05:27 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241305.qBOD5Rjg009804@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:05:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244653 - stable/9/sys/kern
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:05:28 -0000

Author: kib
Date: Mon Dec 24 13:05:27 2012
New Revision: 244653
URL: http://svnweb.freebsd.org/changeset/base/244653

Log:
  MFC r242560:
  Add decoding of the missed MNTK_ flags to ddb "show mount" command.

Modified:
  stable/9/sys/kern/vfs_subr.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_subr.c
==============================================================================
--- stable/9/sys/kern/vfs_subr.c	Mon Dec 24 13:01:07 2012	(r244652)
+++ stable/9/sys/kern/vfs_subr.c	Mon Dec 24 13:05:27 2012	(r244653)
@@ -3140,6 +3140,11 @@ DB_SHOW_COMMAND(mount, db_show_mount)
 	MNT_KERN_FLAG(MNTK_REFEXPIRE);
 	MNT_KERN_FLAG(MNTK_EXTENDED_SHARED);
 	MNT_KERN_FLAG(MNTK_SHARED_WRITES);
+	MNT_KERN_FLAG(MNTK_NO_IOPF);
+	MNT_KERN_FLAG(MNTK_VGONE_UPPER);
+	MNT_KERN_FLAG(MNTK_VGONE_WAITER);
+	MNT_KERN_FLAG(MNTK_LOOKUP_EXCL_DOTDOT);
+	MNT_KERN_FLAG(MNTK_MARKER);
 	MNT_KERN_FLAG(MNTK_NOASYNC);
 	MNT_KERN_FLAG(MNTK_UNMOUNT);
 	MNT_KERN_FLAG(MNTK_MWAIT);

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:14:40 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 21B80502;
 Mon, 24 Dec 2012 13:14:40 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id F0D978FC0A;
 Mon, 24 Dec 2012 13:14:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBODEdxZ011393;
 Mon, 24 Dec 2012 13:14:39 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBODEdqL011389;
 Mon, 24 Dec 2012 13:14:39 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241314.qBODEdqL011389@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:14:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244654 - stable/9/sys/fs/nullfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:14:40 -0000

Author: kib
Date: Mon Dec 24 13:14:38 2012
New Revision: 244654
URL: http://svnweb.freebsd.org/changeset/base/244654

Log:
  MFC r240285:
  Allow shared lookups for nullfs mounts, if lower filesystem supports
  it.
  
  MFC r241548:
  Replace the XXX comment with the proper description.
  
  MFC r241554:
  Grammar fixes.

Modified:
  stable/9/sys/fs/nullfs/null.h
  stable/9/sys/fs/nullfs/null_subr.c
  stable/9/sys/fs/nullfs/null_vfsops.c
  stable/9/sys/fs/nullfs/null_vnops.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/fs/nullfs/null.h
==============================================================================
--- stable/9/sys/fs/nullfs/null.h	Mon Dec 24 13:05:27 2012	(r244653)
+++ stable/9/sys/fs/nullfs/null.h	Mon Dec 24 13:14:38 2012	(r244654)
@@ -56,6 +56,7 @@ struct null_node {
 int nullfs_init(struct vfsconf *vfsp);
 int nullfs_uninit(struct vfsconf *vfsp);
 int null_nodeget(struct mount *mp, struct vnode *target, struct vnode **vpp);
+struct vnode *null_hashget(struct mount *mp, struct vnode *lowervp);
 void null_hashrem(struct null_node *xp);
 int null_bypass(struct vop_generic_args *ap);
 

Modified: stable/9/sys/fs/nullfs/null_subr.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_subr.c	Mon Dec 24 13:05:27 2012	(r244653)
+++ stable/9/sys/fs/nullfs/null_subr.c	Mon Dec 24 13:14:38 2012	(r244654)
@@ -67,7 +67,6 @@ struct mtx null_hashmtx;
 static MALLOC_DEFINE(M_NULLFSHASH, "nullfs_hash", "NULLFS hash table");
 MALLOC_DEFINE(M_NULLFSNODE, "nullfs_node", "NULLFS vnode private part");
 
-static struct vnode * null_hashget(struct mount *, struct vnode *);
 static struct vnode * null_hashins(struct mount *, struct null_node *);
 
 /*
@@ -98,7 +97,7 @@ nullfs_uninit(vfsp)
  * Return a VREF'ed alias for lower vnode if already exists, else 0.
  * Lower vnode should be locked on entry and will be left locked on exit.
  */
-static struct vnode *
+struct vnode *
 null_hashget(mp, lowervp)
 	struct mount *mp;
 	struct vnode *lowervp;
@@ -209,14 +208,10 @@ null_nodeget(mp, lowervp, vpp)
 	struct vnode *vp;
 	int error;
 
-	/*
-	 * The insmntque1() call below requires the exclusive lock on
-	 * the nullfs vnode.
-	 */
-	ASSERT_VOP_ELOCKED(lowervp, "lowervp");
-	KASSERT(lowervp->v_usecount >= 1, ("Unreferenced vnode %p\n", lowervp));
+	ASSERT_VOP_LOCKED(lowervp, "lowervp");
+	KASSERT(lowervp->v_usecount >= 1, ("Unreferenced vnode %p", lowervp));
 
-	/* Lookup the hash firstly */
+	/* Lookup the hash firstly. */
 	*vpp = null_hashget(mp, lowervp);
 	if (*vpp != NULL) {
 		vrele(lowervp);
@@ -224,6 +219,19 @@ null_nodeget(mp, lowervp, vpp)
 	}
 
 	/*
+	 * The insmntque1() call below requires the exclusive lock on
+	 * the nullfs vnode.  Upgrade the lock now if hash failed to
+	 * provide ready to use vnode.
+	 */
+	if (VOP_ISLOCKED(lowervp) != LK_EXCLUSIVE) {
+		vn_lock(lowervp, LK_UPGRADE | LK_RETRY);
+		if ((lowervp->v_iflag & VI_DOOMED) != 0) {
+			vput(lowervp);
+			return (ENOENT);
+		}
+	}
+
+	/*
 	 * We do not serialize vnode creation, instead we will check for
 	 * duplicates later, when adding new vnode to hash.
 	 * Note that duplicate can only appear in hash if the lowervp is
@@ -233,8 +241,7 @@ null_nodeget(mp, lowervp, vpp)
 	 * might cause a bogus v_data pointer to get dereferenced
 	 * elsewhere if MALLOC should block.
 	 */
-	xp = malloc(sizeof(struct null_node),
-	    M_NULLFSNODE, M_WAITOK);
+	xp = malloc(sizeof(struct null_node), M_NULLFSNODE, M_WAITOK);
 
 	error = getnewvnode("null", mp, &null_vnodeops, &vp);
 	if (error) {

Modified: stable/9/sys/fs/nullfs/null_vfsops.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_vfsops.c	Mon Dec 24 13:05:27 2012	(r244653)
+++ stable/9/sys/fs/nullfs/null_vfsops.c	Mon Dec 24 13:14:38 2012	(r244654)
@@ -65,6 +65,7 @@ static vfs_statfs_t	nullfs_statfs;
 static vfs_unmount_t	nullfs_unmount;
 static vfs_vget_t	nullfs_vget;
 static vfs_extattrctl_t	nullfs_extattrctl;
+static vfs_reclaim_lowervp_t nullfs_reclaim_lowervp;
 
 /*
  * Mount null layer
@@ -121,8 +122,10 @@ nullfs_mount(struct mount *mp)
 	 */
 	NDINIT(ndp, LOOKUP, FOLLOW|LOCKLEAF, UIO_SYSSPACE, target, curthread);
 	error = namei(ndp);
+
 	/*
 	 * Re-lock vnode.
+	 * XXXKIB This is deadlock-prone as well.
 	 */
 	if (isvnunlocked)
 		vn_lock(mp->mnt_vnodecovered, LK_EXCLUSIVE | LK_RETRY);
@@ -146,7 +149,7 @@ nullfs_mount(struct mount *mp)
 	}
 
 	xmp = (struct null_mount *) malloc(sizeof(struct null_mount),
-				M_NULLFSMNT, M_WAITOK);	/* XXX */
+	    M_NULLFSMNT, M_WAITOK);
 
 	/*
 	 * Save reference to underlying FS
@@ -186,10 +189,15 @@ nullfs_mount(struct mount *mp)
 	}
 	MNT_ILOCK(mp);
 	mp->mnt_kern_flag |= lowerrootvp->v_mount->mnt_kern_flag &
-	    (MNTK_MPSAFE | MNTK_SHARED_WRITES);
+	    (MNTK_MPSAFE | MNTK_SHARED_WRITES | MNTK_LOOKUP_SHARED |
+	    MNTK_EXTENDED_SHARED);
+	mp->mnt_kern_flag |= MNTK_LOOKUP_EXCL_DOTDOT;
 	MNT_IUNLOCK(mp);
 	mp->mnt_data =  xmp;
 	vfs_getnewfsid(mp);
+	MNT_ILOCK(xmp->nullm_vfs);
+	TAILQ_INSERT_TAIL(&xmp->nullm_vfs->mnt_uppers, mp, mnt_upper_link);
+	MNT_IUNLOCK(xmp->nullm_vfs);
 
 	vfs_mountedfrom(mp, target);
 
@@ -206,14 +214,16 @@ nullfs_unmount(mp, mntflags)
 	struct mount *mp;
 	int mntflags;
 {
-	void *mntdata;
-	int error;
-	int flags = 0;
+	struct null_mount *mntdata;
+	struct mount *ump;
+	int error, flags;
 
 	NULLFSDEBUG("nullfs_unmount: mp = %p\n", (void *)mp);
 
 	if (mntflags & MNT_FORCE)
-		flags |= FORCECLOSE;
+		flags = FORCECLOSE;
+	else
+		flags = 0;
 
 	/* There is 1 extra root vnode reference (nullm_rootvp). */
 	error = vflush(mp, 1, flags, curthread);
@@ -224,9 +234,17 @@ nullfs_unmount(mp, mntflags)
 	 * Finally, throw away the null_mount structure
 	 */
 	mntdata = mp->mnt_data;
-	mp->mnt_data = 0;
+	ump = mntdata->nullm_vfs;
+	MNT_ILOCK(ump);
+	while ((ump->mnt_kern_flag & MNTK_VGONE_UPPER) != 0) {
+		ump->mnt_kern_flag |= MNTK_VGONE_WAITER;
+		msleep(&ump->mnt_uppers, &ump->mnt_mtx, 0, "vgnupw", 0);
+	}
+	TAILQ_REMOVE(&ump->mnt_uppers, mp, mnt_upper_link);
+	MNT_IUNLOCK(ump);
+	mp->mnt_data = NULL;
 	free(mntdata, M_NULLFSMNT);
-	return 0;
+	return (0);
 }
 
 static int
@@ -316,13 +334,10 @@ nullfs_vget(mp, ino, flags, vpp)
 
 	KASSERT((flags & LK_TYPE_MASK) != 0,
 	    ("nullfs_vget: no lock requested"));
-	flags &= ~LK_TYPE_MASK;
-	flags |= LK_EXCLUSIVE;
 
 	error = VFS_VGET(MOUNTTONULLMOUNT(mp)->nullm_vfs, ino, flags, vpp);
-	if (error)
+	if (error != 0)
 		return (error);
-
 	return (null_nodeget(mp, *vpp, vpp));
 }
 
@@ -334,11 +349,11 @@ nullfs_fhtovp(mp, fidp, flags, vpp)
 	struct vnode **vpp;
 {
 	int error;
-	error = VFS_FHTOVP(MOUNTTONULLMOUNT(mp)->nullm_vfs, fidp, LK_EXCLUSIVE,
+
+	error = VFS_FHTOVP(MOUNTTONULLMOUNT(mp)->nullm_vfs, fidp, flags,
 	    vpp);
-	if (error)
+	if (error != 0)
 		return (error);
-
 	return (null_nodeget(mp, *vpp, vpp));
 }
 
@@ -350,10 +365,22 @@ nullfs_extattrctl(mp, cmd, filename_vp, 
 	int namespace;
 	const char *attrname;
 {
-	return VFS_EXTATTRCTL(MOUNTTONULLMOUNT(mp)->nullm_vfs, cmd, filename_vp,
-	    namespace, attrname);
+
+	return (VFS_EXTATTRCTL(MOUNTTONULLMOUNT(mp)->nullm_vfs, cmd,
+	    filename_vp, namespace, attrname));
 }
 
+static void
+nullfs_reclaim_lowervp(struct mount *mp, struct vnode *lowervp)
+{
+	struct vnode *vp;
+
+	vp = null_hashget(mp, lowervp);
+	if (vp == NULL)
+		return;
+	vgone(vp);
+	vn_lock(lowervp, LK_EXCLUSIVE | LK_RETRY);
+}
 
 static struct vfsops null_vfsops = {
 	.vfs_extattrctl =	nullfs_extattrctl,
@@ -367,6 +394,7 @@ static struct vfsops null_vfsops = {
 	.vfs_uninit =		nullfs_uninit,
 	.vfs_unmount =		nullfs_unmount,
 	.vfs_vget =		nullfs_vget,
+	.vfs_reclaim_lowervp =	nullfs_reclaim_lowervp,
 };
 
 VFS_SET(null_vfsops, nullfs, VFCF_LOOPBACK | VFCF_JAIL);

Modified: stable/9/sys/fs/nullfs/null_vnops.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_vnops.c	Mon Dec 24 13:05:27 2012	(r244653)
+++ stable/9/sys/fs/nullfs/null_vnops.c	Mon Dec 24 13:14:38 2012	(r244654)
@@ -665,34 +665,20 @@ null_unlock(struct vop_unlock_args *ap)
 }
 
 /*
- * There is no way to tell that someone issued remove/rmdir operation
- * on the underlying filesystem. For now we just have to release lowervp
- * as soon as possible.
- *
- * Note, we can't release any resources nor remove vnode from hash before 
- * appropriate VXLOCK stuff is done because other process can find this
- * vnode in hash during inactivation and may be sitting in vget() and waiting
- * for null_inactive to unlock vnode. Thus we will do all those in VOP_RECLAIM.
+ * Do not allow the VOP_INACTIVE to be passed to the lower layer,
+ * since the reference count on the lower vnode is not related to
+ * ours.
  */
 static int
-null_inactive(struct vop_inactive_args *ap)
+null_inactive(struct vop_inactive_args *ap __unused)
 {
-	struct vnode *vp = ap->a_vp;
-	struct thread *td = ap->a_td;
-
-	vp->v_object = NULL;
-
-	/*
-	 * If this is the last reference, then free up the vnode
-	 * so as not to tie up the lower vnodes.
-	 */
-	vrecycle(vp, td);
 
 	return (0);
 }
 
 /*
- * Now, the VXLOCK is in force and we're free to destroy the null vnode.
+ * Now, the nullfs vnode and, due to the sharing lock, the lower
+ * vnode, are exclusively locked, and we shall destroy the null vnode.
  */
 static int
 null_reclaim(struct vop_reclaim_args *ap)

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:17:23 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 0999C666;
 Mon, 24 Dec 2012 13:17:23 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id DEB318FC0C;
 Mon, 24 Dec 2012 13:17:22 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBODHMlF011802;
 Mon, 24 Dec 2012 13:17:22 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBODHM1M011801;
 Mon, 24 Dec 2012 13:17:22 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241317.qBODHM1M011801@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:17:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244655 - stable/9/sys/fs/nullfs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:17:23 -0000

Author: kib
Date: Mon Dec 24 13:17:22 2012
New Revision: 244655
URL: http://svnweb.freebsd.org/changeset/base/244655

Log:
  MFC r243340:
  Remove the check and panic for an impossible condition.

Modified:
  stable/9/sys/fs/nullfs/null_subr.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/fs/nullfs/null_subr.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_subr.c	Mon Dec 24 13:14:38 2012	(r244654)
+++ stable/9/sys/fs/nullfs/null_subr.c	Mon Dec 24 13:17:22 2012	(r244655)
@@ -255,8 +255,6 @@ null_nodeget(mp, lowervp, vpp)
 	vp->v_type = lowervp->v_type;
 	vp->v_data = xp;
 	vp->v_vnlock = lowervp->v_vnlock;
-	if (vp->v_vnlock == NULL)
-		panic("null_nodeget: Passed a NULL vnlock.\n");
 	error = insmntque1(vp, mp, null_insmntque_dtr, xp);
 	if (error != 0)
 		return (error);

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:22:34 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id BE895A1C;
 Mon, 24 Dec 2012 13:22:34 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id A3ACA8FC12;
 Mon, 24 Dec 2012 13:22:34 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBODMYu0012647;
 Mon, 24 Dec 2012 13:22:34 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBODMWtQ012631;
 Mon, 24 Dec 2012 13:22:32 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241322.qBODMWtQ012631@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:22:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244658 - in stable/9/sys: compat/linux fs/coda
 fs/nfsserver kern nfsserver vm
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:22:34 -0000

Author: kib
Date: Mon Dec 24 13:22:32 2012
New Revision: 244658
URL: http://svnweb.freebsd.org/changeset/base/244658

Log:
  MFC r241025:
  Fix the mis-handling of the VV_TEXT on the nullfs vnodes.
  Add a set of VOPs for the VV_TEXT query, set and clear operations,
  which are correctly bypassed to lower vnode.

Modified:
  stable/9/sys/compat/linux/linux_misc.c
  stable/9/sys/fs/coda/coda_subr.c
  stable/9/sys/fs/nfsserver/nfs_nfsdport.c
  stable/9/sys/kern/imgact_elf.c
  stable/9/sys/kern/kern_exec.c
  stable/9/sys/kern/vfs_default.c
  stable/9/sys/kern/vfs_vnops.c
  stable/9/sys/kern/vnode_if.src
  stable/9/sys/nfsserver/nfs_serv.c
  stable/9/sys/vm/vm_object.c
  stable/9/sys/vm/vnode_pager.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/compat/linux/linux_misc.c
==============================================================================
--- stable/9/sys/compat/linux/linux_misc.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/compat/linux/linux_misc.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -372,7 +372,7 @@ linux_uselib(struct thread *td, struct l
 	 * XXX: Note that if any of the VM operations fail below we don't
 	 * clear this flag.
 	 */
-	vp->v_vflag |= VV_TEXT;
+	VOP_SET_TEXT(vp);
 
 	/*
 	 * Lock no longer needed

Modified: stable/9/sys/fs/coda/coda_subr.c
==============================================================================
--- stable/9/sys/fs/coda/coda_subr.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/fs/coda/coda_subr.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -486,7 +486,7 @@ handleDownCall(struct coda_mntinfo *mnt,
 			cache_purge(CTOV(cp));
 			cp->c_flags &= ~(C_VATTR | C_ACCCACHE);
 			ASSERT_VOP_LOCKED(CTOV(cp), "coda HandleDownCall");
-			if (CTOV(cp)->v_vflag & VV_TEXT)
+			if (VOP_IS_TEXT(CTOV(cp)))
 				error = coda_vmflush(cp);
 			CODADEBUG(CODA_ZAPFILE,
 			myprintf(("zapfile: fid = %s, refcnt = %d, error = "
@@ -532,7 +532,7 @@ handleDownCall(struct coda_mntinfo *mnt,
 			cp->c_flags &= ~(C_VATTR | C_ACCCACHE);
 			ASSERT_VOP_LOCKED(CTOV(cp), "coda HandleDownCall");
 			if (!(IS_DIR(out->coda_purgefid.Fid))
-			    && (CTOV(cp)->v_vflag & VV_TEXT))
+			    && VOP_IS_TEXT(CTOV(cp)))
 				error = coda_vmflush(cp);
 			CODADEBUG(CODA_PURGEFID, myprintf(("purgefid: fid "
 			    "= %s, refcnt = %d, error = %d\n",

Modified: stable/9/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- stable/9/sys/fs/nfsserver/nfs_nfsdport.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/fs/nfsserver/nfs_nfsdport.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -253,7 +253,7 @@ nfsvno_accchk(struct vnode *vp, accmode_
 		 * the inode, try to free it up once.  If
 		 * we fail, we can't allow writing.
 		 */
-		if ((vp->v_vflag & VV_TEXT) != 0 && error == 0)
+		if (VOP_IS_TEXT(vp) && error == 0)
 			error = ETXTBSY;
 	}
 	if (error != 0) {

Modified: stable/9/sys/kern/imgact_elf.c
==============================================================================
--- stable/9/sys/kern/imgact_elf.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/kern/imgact_elf.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -646,7 +646,7 @@ __elfN(load_file)(struct proc *p, const 
 	 * Also make certain that the interpreter stays the same, so set
 	 * its VV_TEXT flag, too.
 	 */
-	nd->ni_vp->v_vflag |= VV_TEXT;
+	VOP_SET_TEXT(nd->ni_vp);
 
 	imgp->object = nd->ni_vp->v_object;
 

Modified: stable/9/sys/kern/kern_exec.c
==============================================================================
--- stable/9/sys/kern/kern_exec.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/kern/kern_exec.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -473,9 +473,8 @@ interpret:
 	 * Remember if this was set before and unset it in case this is not
 	 * actually an executable image.
 	 */
-	textset = imgp->vp->v_vflag & VV_TEXT;
-	ASSERT_VOP_ELOCKED(imgp->vp, "vv_text");
-	imgp->vp->v_vflag |= VV_TEXT;
+	textset = VOP_IS_TEXT(imgp->vp);
+	VOP_SET_TEXT(imgp->vp);
 
 	error = exec_map_first_page(imgp);
 	if (error)
@@ -506,10 +505,8 @@ interpret:
 
 	if (error) {
 		if (error == -1) {
-			if (textset == 0) {
-				ASSERT_VOP_ELOCKED(imgp->vp, "vv_text");
-				imgp->vp->v_vflag &= ~VV_TEXT;
-			}
+			if (textset == 0)
+				VOP_UNSET_TEXT(imgp->vp);
 			error = ENOEXEC;
 		}
 		goto exec_fail_dealloc;
@@ -527,7 +524,7 @@ interpret:
 		 * VV_TEXT will be set. The vnode lock is held over this
 		 * entire period so nothing should illegitimately be blocked.
 		 */
-		imgp->vp->v_vflag &= ~VV_TEXT;
+		VOP_UNSET_TEXT(imgp->vp);
 		/* free name buffer and old vnode */
 		if (args->fname != NULL)
 			NDFREE(&nd, NDF_ONLY_PNBUF);

Modified: stable/9/sys/kern/vfs_default.c
==============================================================================
--- stable/9/sys/kern/vfs_default.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/kern/vfs_default.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -78,6 +78,10 @@ static int	dirent_exists(struct vnode *v
 
 #define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4)
 
+static int vop_stdis_text(struct vop_is_text_args *ap);
+static int vop_stdset_text(struct vop_set_text_args *ap);
+static int vop_stdunset_text(struct vop_unset_text_args *ap);
+
 /*
  * This vnode table stores what we want to do if the filesystem doesn't
  * implement a particular VOP.
@@ -126,6 +130,9 @@ struct vop_vector default_vnodeops = {
 	.vop_unp_bind =		vop_stdunp_bind,
 	.vop_unp_connect =	vop_stdunp_connect,
 	.vop_unp_detach =	vop_stdunp_detach,
+	.vop_is_text =		vop_stdis_text,
+	.vop_set_text =		vop_stdset_text,
+	.vop_unset_text =	vop_stdunset_text,
 };
 
 /*
@@ -1073,6 +1080,29 @@ vop_stdunp_detach(struct vop_unp_detach_
 	return (0);
 }
 
+static int
+vop_stdis_text(struct vop_is_text_args *ap)
+{
+
+	return ((ap->a_vp->v_vflag & VV_TEXT) != 0);
+}
+
+static int
+vop_stdset_text(struct vop_set_text_args *ap)
+{
+
+	ap->a_vp->v_vflag |= VV_TEXT;
+	return (0);
+}
+
+static int
+vop_stdunset_text(struct vop_unset_text_args *ap)
+{
+
+	ap->a_vp->v_vflag &= ~VV_TEXT;
+	return (0);
+}
+
 /*
  * vfs default ops
  * used to fill the vfs function table to get reasonable default return values.

Modified: stable/9/sys/kern/vfs_vnops.c
==============================================================================
--- stable/9/sys/kern/vfs_vnops.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/kern/vfs_vnops.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -282,7 +282,7 @@ vn_writechk(vp)
 	 * the vnode, try to free it up once.  If
 	 * we fail, we can't allow writing.
 	 */
-	if (vp->v_vflag & VV_TEXT)
+	if (VOP_IS_TEXT(vp))
 		return (ETXTBSY);
 
 	return (0);

Modified: stable/9/sys/kern/vnode_if.src
==============================================================================
--- stable/9/sys/kern/vnode_if.src	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/kern/vnode_if.src	Mon Dec 24 13:22:32 2012	(r244658)
@@ -658,6 +658,24 @@ vop_unp_detach {
 	IN struct vnode *vp;
 };
 
+%% is_text	vp	L L L
+
+vop_is_text {
+	IN struct vnode *vp;
+};
+
+%% set_text	vp	E E E
+
+vop_set_text {
+	IN struct vnode *vp;
+};
+
+%% vop_unset_text	vp	E E E
+
+vop_unset_text {
+	IN struct vnode *vp;
+};
+
 # The VOPs below are spares at the end of the table to allow new VOPs to be
 # added in stable branches without breaking the KBI.  New VOPs in HEAD should
 # be added above these spares.  When merging a new VOP to a stable branch,

Modified: stable/9/sys/nfsserver/nfs_serv.c
==============================================================================
--- stable/9/sys/nfsserver/nfs_serv.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/nfsserver/nfs_serv.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -3891,7 +3891,7 @@ nfsrv_access(struct vnode *vp, accmode_t
 		 * If there's shared text associated with
 		 * the inode, we can't allow writing.
 		 */
-		if (vp->v_vflag & VV_TEXT)
+		if (VOP_IS_TEXT(vp))
 			return (ETXTBSY);
 	}
 

Modified: stable/9/sys/vm/vm_object.c
==============================================================================
--- stable/9/sys/vm/vm_object.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/vm/vm_object.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -455,7 +455,7 @@ vm_object_vndeallocate(vm_object_t objec
 			VOP_UNLOCK(vp, 0);
 		} else {
 			if (object->ref_count == 0)
-				vp->v_vflag &= ~VV_TEXT;
+				VOP_UNSET_TEXT(vp);
 			VM_OBJECT_UNLOCK(object);
 			vput(vp);
 		}

Modified: stable/9/sys/vm/vnode_pager.c
==============================================================================
--- stable/9/sys/vm/vnode_pager.c	Mon Dec 24 13:22:22 2012	(r244657)
+++ stable/9/sys/vm/vnode_pager.c	Mon Dec 24 13:22:32 2012	(r244658)
@@ -275,7 +275,7 @@ vnode_pager_dealloc(object)
 		vp->v_writecount--;
 	}
 	vp->v_object = NULL;
-	vp->v_vflag &= ~VV_TEXT;
+	VOP_UNSET_TEXT(vp);
 	VM_OBJECT_UNLOCK(object);
 	while (refs-- > 0)
 		vunref(vp);

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 13:29:24 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 926AFF6C;
 Mon, 24 Dec 2012 13:29:24 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 732138FC0A;
 Mon, 24 Dec 2012 13:29:24 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBODTOPD013714;
 Mon, 24 Dec 2012 13:29:24 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBODTMq7013701;
 Mon, 24 Dec 2012 13:29:22 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241329.qBODTMq7013701@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 13:29:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244660 - in stable/9/sys: compat/linux fs/nullfs
 fs/unionfs i386/ibcs2 kern ufs/ufs vm
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 13:29:24 -0000

Author: kib
Date: Mon Dec 24 13:29:22 2012
New Revision: 244660
URL: http://svnweb.freebsd.org/changeset/base/244660

Log:
  MFC r242476:
  The r241025 fixed the case when a binary, executed from nullfs mount,
  was still possible to open for write from the lower filesystem.  There
  is a symmetric situation where the binary could already has file
  descriptors opened for write, but it can be executed from the nullfs
  overlay.
  
  Handle the issue by passing one v_writecount reference to the lower
  vnode if nullfs vnode has non-zero v_writecount.

Modified:
  stable/9/sys/compat/linux/linux_misc.c
  stable/9/sys/fs/nullfs/null_vnops.c
  stable/9/sys/fs/unionfs/union_subr.c
  stable/9/sys/i386/ibcs2/imgact_coff.c
  stable/9/sys/kern/kern_exec.c
  stable/9/sys/kern/vfs_default.c
  stable/9/sys/kern/vfs_vnops.c
  stable/9/sys/kern/vnode_if.src
  stable/9/sys/ufs/ufs/ufs_extattr.c
  stable/9/sys/vm/vnode_pager.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/compat/linux/linux_misc.c
==============================================================================
--- stable/9/sys/compat/linux/linux_misc.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/compat/linux/linux_misc.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -232,8 +232,7 @@ linux_uselib(struct thread *td, struct l
 	unsigned long bss_size;
 	char *library;
 	ssize_t aresid;
-	int error;
-	int locked, vfslocked;
+	int error, locked, vfslocked, writecount;
 
 	LCONVPATHEXIST(td, args->library, &library);
 
@@ -265,7 +264,10 @@ linux_uselib(struct thread *td, struct l
 	locked = 1;
 
 	/* Writable? */
-	if (vp->v_writecount) {
+	error = VOP_GET_WRITECOUNT(vp, &writecount);
+	if (error != 0)
+		goto cleanup;
+	if (writecount != 0) {
 		error = ETXTBSY;
 		goto cleanup;
 	}

Modified: stable/9/sys/fs/nullfs/null_vnops.c
==============================================================================
--- stable/9/sys/fs/nullfs/null_vnops.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/fs/nullfs/null_vnops.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -329,6 +329,26 @@ null_bypass(struct vop_generic_args *ap)
 	return (error);
 }
 
+static int
+null_add_writecount(struct vop_add_writecount_args *ap)
+{
+	struct vnode *lvp, *vp;
+	int error;
+
+	vp = ap->a_vp;
+	lvp = NULLVPTOLOWERVP(vp);
+	KASSERT(vp->v_writecount + ap->a_inc >= 0, ("wrong writecount inc"));
+	if (vp->v_writecount > 0 && vp->v_writecount + ap->a_inc == 0)
+		error = VOP_ADD_WRITECOUNT(lvp, -1);
+	else if (vp->v_writecount == 0 && vp->v_writecount + ap->a_inc > 0)
+		error = VOP_ADD_WRITECOUNT(lvp, 1);
+	else
+		error = 0;
+	if (error == 0)
+		vp->v_writecount += ap->a_inc;
+	return (error);
+}
+
 /*
  * We have to carry on the locking protocol on the null layer vnodes
  * as we progress through the tree. We also have to enforce read-only
@@ -826,4 +846,5 @@ struct vop_vector null_vnodeops = {
 	.vop_unlock =		null_unlock,
 	.vop_vptocnp =		null_vptocnp,
 	.vop_vptofh =		null_vptofh,
+	.vop_add_writecount =	null_add_writecount,
 };

Modified: stable/9/sys/fs/unionfs/union_subr.c
==============================================================================
--- stable/9/sys/fs/unionfs/union_subr.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/fs/unionfs/union_subr.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -954,7 +954,7 @@ unionfs_vn_create_on_upper(struct vnode 
 		vput(vp);
 		goto unionfs_vn_create_on_upper_free_out1;
 	}
-	vp->v_writecount++;
+	VOP_ADD_WRITECOUNT(vp, 1);
 	*vpp = vp;
 
 unionfs_vn_create_on_upper_free_out1:
@@ -1089,7 +1089,7 @@ unionfs_copyfile(struct unionfs_node *un
 		}
 	}
 	VOP_CLOSE(uvp, FWRITE, cred, td);
-	uvp->v_writecount--;
+	VOP_ADD_WRITECOUNT(uvp, -1);
 
 	vn_finished_write(mp);
 

Modified: stable/9/sys/i386/ibcs2/imgact_coff.c
==============================================================================
--- stable/9/sys/i386/ibcs2/imgact_coff.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/i386/ibcs2/imgact_coff.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -168,7 +168,7 @@ coff_load_file(struct thread *td, char *
   	unsigned long text_offset = 0, text_address = 0, text_size = 0;
   	unsigned long data_offset = 0, data_address = 0, data_size = 0;
   	unsigned long bss_size = 0;
-  	int i;
+	int i, writecount;
 
 	NDINIT(&nd, LOOKUP, ISOPEN | LOCKLEAF | FOLLOW | SAVENAME,
 	    UIO_SYSSPACE, name, td);
@@ -181,7 +181,10 @@ coff_load_file(struct thread *td, char *
   	if (vp == NULL)
     		return ENOEXEC;
 
-  	if (vp->v_writecount) {
+	error = VOP_GET_WRITECOUNT(vp, &writecount);
+	if (error != 0)
+		goto fail;
+	if (writecount != 0) {
     		error = ETXTBSY;
     		goto fail;
   	}

Modified: stable/9/sys/kern/kern_exec.c
==============================================================================
--- stable/9/sys/kern/kern_exec.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/kern/kern_exec.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -1393,7 +1393,7 @@ exec_check_permissions(imgp)
 	struct vnode *vp = imgp->vp;
 	struct vattr *attr = imgp->attr;
 	struct thread *td;
-	int error;
+	int error, writecount;
 
 	td = curthread;
 
@@ -1438,7 +1438,10 @@ exec_check_permissions(imgp)
 	 * Check number of open-for-writes on the file and deny execution
 	 * if there are any.
 	 */
-	if (vp->v_writecount)
+	error = VOP_GET_WRITECOUNT(vp, &writecount);
+	if (error != 0)
+		return (error);
+	if (writecount != 0)
 		return (ETXTBSY);
 
 	/*

Modified: stable/9/sys/kern/vfs_default.c
==============================================================================
--- stable/9/sys/kern/vfs_default.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/kern/vfs_default.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -81,6 +81,8 @@ static int	dirent_exists(struct vnode *v
 static int vop_stdis_text(struct vop_is_text_args *ap);
 static int vop_stdset_text(struct vop_set_text_args *ap);
 static int vop_stdunset_text(struct vop_unset_text_args *ap);
+static int vop_stdget_writecount(struct vop_get_writecount_args *ap);
+static int vop_stdadd_writecount(struct vop_add_writecount_args *ap);
 
 /*
  * This vnode table stores what we want to do if the filesystem doesn't
@@ -133,6 +135,8 @@ struct vop_vector default_vnodeops = {
 	.vop_is_text =		vop_stdis_text,
 	.vop_set_text =		vop_stdset_text,
 	.vop_unset_text =	vop_stdunset_text,
+	.vop_get_writecount =	vop_stdget_writecount,
+	.vop_add_writecount =	vop_stdadd_writecount,
 };
 
 /*
@@ -1103,6 +1107,22 @@ vop_stdunset_text(struct vop_unset_text_
 	return (0);
 }
 
+static int
+vop_stdget_writecount(struct vop_get_writecount_args *ap)
+{
+
+	*ap->a_writecount = ap->a_vp->v_writecount;
+	return (0);
+}
+
+static int
+vop_stdadd_writecount(struct vop_add_writecount_args *ap)
+{
+
+	ap->a_vp->v_writecount += ap->a_inc;
+	return (0);
+}
+
 /*
  * vfs default ops
  * used to fill the vfs function table to get reasonable default return values.

Modified: stable/9/sys/kern/vfs_vnops.c
==============================================================================
--- stable/9/sys/kern/vfs_vnops.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/kern/vfs_vnops.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -252,7 +252,7 @@ restart:
 		goto bad;
 
 	if (fmode & FWRITE)
-		vp->v_writecount++;
+		VOP_ADD_WRITECOUNT(vp, 1);
 	*flagp = fmode;
 	ASSERT_VOP_LOCKED(vp, "vn_open_cred");
 	if (!mpsafe)
@@ -314,7 +314,7 @@ vn_close(vp, flags, file_cred, td)
 	if (flags & FWRITE) {
 		VNASSERT(vp->v_writecount > 0, vp, 
 		    ("vn_close: negative writecount"));
-		vp->v_writecount--;
+		VOP_ADD_WRITECOUNT(vp, -1);
 	}
 	error = VOP_CLOSE(vp, flags, file_cred, td);
 	vput(vp);

Modified: stable/9/sys/kern/vnode_if.src
==============================================================================
--- stable/9/sys/kern/vnode_if.src	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/kern/vnode_if.src	Mon Dec 24 13:29:22 2012	(r244660)
@@ -676,6 +676,20 @@ vop_unset_text {
 	IN struct vnode *vp;
 };
 
+%% get_writecount	vp	L L L
+
+vop_get_writecount {
+	IN struct vnode *vp;
+	OUT int *writecount;
+};
+
+%% add_writecount	vp	E E E
+
+vop_add_writecount {
+	IN struct vnode *vp;
+	IN int inc;
+};
+
 # The VOPs below are spares at the end of the table to allow new VOPs to be
 # added in stable branches without breaking the KBI.  New VOPs in HEAD should
 # be added above these spares.  When merging a new VOP to a stable branch,

Modified: stable/9/sys/ufs/ufs/ufs_extattr.c
==============================================================================
--- stable/9/sys/ufs/ufs/ufs_extattr.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/ufs/ufs/ufs_extattr.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -334,7 +334,7 @@ ufs_extattr_enable_with_open(struct ufsm
 		return (error);
 	}
 
-	vp->v_writecount++;
+	VOP_ADD_WRITECOUNT(vp, 1);
 
 	vref(vp);
 

Modified: stable/9/sys/vm/vnode_pager.c
==============================================================================
--- stable/9/sys/vm/vnode_pager.c	Mon Dec 24 13:24:55 2012	(r244659)
+++ stable/9/sys/vm/vnode_pager.c	Mon Dec 24 13:29:22 2012	(r244660)
@@ -272,7 +272,7 @@ vnode_pager_dealloc(object)
 	ASSERT_VOP_ELOCKED(vp, "vnode_pager_dealloc");
 	if (object->un_pager.vnp.writemappings > 0) {
 		object->un_pager.vnp.writemappings = 0;
-		vp->v_writecount--;
+		VOP_ADD_WRITECOUNT(vp, -1);
 	}
 	vp->v_object = NULL;
 	VOP_UNSET_TEXT(vp);
@@ -1216,10 +1216,10 @@ vnode_pager_update_writecount(vm_object_
 	vp = object->handle;
 	if (old_wm == 0 && object->un_pager.vnp.writemappings != 0) {
 		ASSERT_VOP_ELOCKED(vp, "v_writecount inc");
-		vp->v_writecount++;
+		VOP_ADD_WRITECOUNT(vp, 1);
 	} else if (old_wm != 0 && object->un_pager.vnp.writemappings == 0) {
 		ASSERT_VOP_ELOCKED(vp, "v_writecount dec");
-		vp->v_writecount--;
+		VOP_ADD_WRITECOUNT(vp, -1);
 	}
 	VM_OBJECT_UNLOCK(object);
 }

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 14:22:53 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 673C5C97;
 Mon, 24 Dec 2012 14:22:53 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 49ED28FC0C;
 Mon, 24 Dec 2012 14:22:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBOEMreU021633;
 Mon, 24 Dec 2012 14:22:53 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBOEMrcF021632;
 Mon, 24 Dec 2012 14:22:53 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212241422.qBOEMrcF021632@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Mon, 24 Dec 2012 14:22:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244663 - stable/9
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 14:22:53 -0000

Author: kib
Date: Mon Dec 24 14:22:52 2012
New Revision: 244663
URL: http://svnweb.freebsd.org/changeset/base/244663

Log:
  Note that filesystem modules must be recompiled.

Modified:
  stable/9/UPDATING

Modified: stable/9/UPDATING
==============================================================================
--- stable/9/UPDATING	Mon Dec 24 14:12:43 2012	(r244662)
+++ stable/9/UPDATING	Mon Dec 24 14:22:52 2012	(r244663)
@@ -11,6 +11,11 @@ handbook:
 Items affecting the ports and packages system can be found in
 /usr/ports/UPDATING.  Please read that file before running portupgrade.
 
+20121224:
+	The VFS KBI was changed with the merge of several nullfs
+	optimizations and fixes.  All filesystem modules must be
+	recompiled.
+
 20121218:
 	With the addition of auditdistd(8), a new auditdistd user is now
 	depended on during installworld.  "mergemaster -p" can be used to add

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 19:25:00 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 026AF640;
 Mon, 24 Dec 2012 19:25:00 +0000 (UTC)
 (envelope-from adrian.chadd@gmail.com)
Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43])
 by mx1.freebsd.org (Postfix) with ESMTP id CB1E68FC12;
 Mon, 24 Dec 2012 19:24:58 +0000 (UTC)
Received: by mail-wg0-f43.google.com with SMTP id e12so3364336wge.10
 for <multiple recipients>; Mon, 24 Dec 2012 11:24:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:cc:content-type;
 bh=ZEamTsNZcMc5Y1RH72je9WU8mQFbYcaT70hpp9sy1W8=;
 b=jXt6DhAHr/K44NlvIbbTA52y1sO841Yyfa2CpvmqfN9ndGnl1oLIa6zUA5i0Ysj1R5
 rYh8NRXlX+ZOWMlOuwCAr8nYX16yPTT141kRf184C6ZySvtpUGnzQ+dN3rTYmQIU2SDP
 Vhb1hDvMBeH6mb9OGxyyqSirMjWzdcAG3xrismlGJYY2kjHdqZWzacamDEzzWJctJcUN
 YMSt6X6UOym1NQQHVQPQ2lEB+sWLkFaopflnL+I94z/BdXzbTPngihgoI3S1305mptus
 2EXCasqJWtV3kQFSG/hny7OgdFqlGD/2eY4LheXu3PnSrVw8+oPDOKK00cMPab37DOUA
 BASQ==
MIME-Version: 1.0
Received: by 10.194.93.40 with SMTP id cr8mr37237283wjb.16.1356377092086; Mon,
 24 Dec 2012 11:24:52 -0800 (PST)
Sender: adrian.chadd@gmail.com
Received: by 10.217.57.9 with HTTP; Mon, 24 Dec 2012 11:24:51 -0800 (PST)
In-Reply-To: <201212241422.qBOEMrcF021632@svn.freebsd.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
Date: Mon, 24 Dec 2012 11:24:51 -0800
X-Google-Sender-Auth: f97EKupXbHwyg23-0Lyr58IvvyQ
Message-ID: <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
Subject: Re: svn commit: r244663 - stable/9
From: Adrian Chadd <adrian@freebsd.org>
To: Konstantin Belousov <kib@freebsd.org>
Content-Type: text/plain; charset=ISO-8859-1
Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org,
 src-committers@freebsd.org, svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 19:25:00 -0000

... why'd we break the KBI in a stable branch?



Adrian


On 24 December 2012 06:22, Konstantin Belousov <kib@freebsd.org> wrote:
> Author: kib
> Date: Mon Dec 24 14:22:52 2012
> New Revision: 244663
> URL: http://svnweb.freebsd.org/changeset/base/244663
>
> Log:
>   Note that filesystem modules must be recompiled.
>
> Modified:
>   stable/9/UPDATING
>
> Modified: stable/9/UPDATING
> ==============================================================================
> --- stable/9/UPDATING   Mon Dec 24 14:12:43 2012        (r244662)
> +++ stable/9/UPDATING   Mon Dec 24 14:22:52 2012        (r244663)
> @@ -11,6 +11,11 @@ handbook:
>  Items affecting the ports and packages system can be found in
>  /usr/ports/UPDATING.  Please read that file before running portupgrade.
>
> +20121224:
> +       The VFS KBI was changed with the merge of several nullfs
> +       optimizations and fixes.  All filesystem modules must be
> +       recompiled.
> +
>  20121218:
>         With the addition of auditdistd(8), a new auditdistd user is now
>         depended on during installworld.  "mergemaster -p" can be used to add

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 20:03:57 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 472F6BA1;
 Mon, 24 Dec 2012 20:03:57 +0000 (UTC) (envelope-from bright@mu.org)
Received: from elvis.mu.org (elvis.mu.org [192.203.228.196])
 by mx1.freebsd.org (Postfix) with ESMTP id 1DF778FC0A;
 Mon, 24 Dec 2012 20:03:56 +0000 (UTC)
Received: from Alfreds-MacBook-Pro-9.local
 (c-67-180-208-218.hsd1.ca.comcast.net [67.180.208.218])
 by elvis.mu.org (Postfix) with ESMTPSA id 5D56A1A3C2B;
 Mon, 24 Dec 2012 12:03:56 -0800 (PST)
Message-ID: <50D8B533.8080507@mu.org>
Date: Mon, 24 Dec 2012 12:04:03 -0800
From: Alfred Perlstein <bright@mu.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7;
 rv:17.0) Gecko/17.0 Thunderbird/17.0
MIME-Version: 1.0
To: Adrian Chadd <adrian@freebsd.org>
Subject: Re: svn commit: r244663 - stable/9
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
In-Reply-To: <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
Content-Type: multipart/mixed; boundary="------------060807030005000102040907"
Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org,
 src-committers@freebsd.org, Konstantin Belousov <kib@freebsd.org>,
 svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 20:03:57 -0000

This is a multi-part message in MIME format.
--------------060807030005000102040907
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

On 12/24/12 11:24 AM, Adrian Chadd wrote:
> ... why'd we break the KBI in a stable branch?
>
I am not sure either.

I think a single VOP for nullfs (while ugly) would have sufficed.

I have a partial patch here that shows the direction I was going.

What's left is to:
  shim #defines for -stable to route the "new" vops from -current 
(VOP_ISTEXT, VOP_WRITECOUNT..) into just plain #defines inside of 
vnode.h to call into VOP_NULLFS_CALLTHROUGH with the proper 
VOP_NULLFS_IS_TEXT/VOP_NULLFS_SET_TEXT and remap stuff around into 
struct vop_nullfs_callthrough_args.
  best way to do this would be to just copy the code from the -current 
vnode_if.h into sys/vnode.h and hack it up for that it maps properly.

Partial patch attached.

-Alfred

>
> Adrian
>
>
> On 24 December 2012 06:22, Konstantin Belousov <kib@freebsd.org> wrote:
>> Author: kib
>> Date: Mon Dec 24 14:22:52 2012
>> New Revision: 244663
>> URL: http://svnweb.freebsd.org/changeset/base/244663
>>
>> Log:
>>    Note that filesystem modules must be recompiled.
>>
>> Modified:
>>    stable/9/UPDATING
>>
>> Modified: stable/9/UPDATING
>> ==============================================================================
>> --- stable/9/UPDATING   Mon Dec 24 14:12:43 2012        (r244662)
>> +++ stable/9/UPDATING   Mon Dec 24 14:22:52 2012        (r244663)
>> @@ -11,6 +11,11 @@ handbook:
>>   Items affecting the ports and packages system can be found in
>>   /usr/ports/UPDATING.  Please read that file before running portupgrade.
>>
>> +20121224:
>> +       The VFS KBI was changed with the merge of several nullfs
>> +       optimizations and fixes.  All filesystem modules must be
>> +       recompiled.
>> +
>>   20121218:
>>          With the addition of auditdistd(8), a new auditdistd user is now
>>          depended on during installworld.  "mergemaster -p" can be used to add


--------------060807030005000102040907
Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0";
 name="fskpi_fix1.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="fskpi_fix1.diff"

diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c
index fd2437b..f109bc8 100644
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -78,6 +78,8 @@ static int	dirent_exists(struct vnode *vp, const char *dirname,
 
 #define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4)
 
+static int vop_nullfs_callthrough(struct vop_nullfs_callthrough_args *ap);
+
 static int vop_stdis_text(struct vop_is_text_args *ap);
 static int vop_stdset_text(struct vop_set_text_args *ap);
 static int vop_stdunset_text(struct vop_unset_text_args *ap);
@@ -132,11 +134,7 @@ struct vop_vector default_vnodeops = {
 	.vop_unp_bind =		vop_stdunp_bind,
 	.vop_unp_connect =	vop_stdunp_connect,
 	.vop_unp_detach =	vop_stdunp_detach,
-	.vop_is_text =		vop_stdis_text,
-	.vop_set_text =		vop_stdset_text,
-	.vop_unset_text =	vop_stdunset_text,
-	.vop_get_writecount =	vop_stdget_writecount,
-	.vop_add_writecount =	vop_stdadd_writecount,
+	.vop_nullfs_callthrough =   vop_stdnullfs_callthrough,
 };
 
 /*
@@ -1085,6 +1083,54 @@ vop_stdunp_detach(struct vop_unp_detach_args *ap)
 }
 
 static int
+vop_stdnullfs_callthrough(struct vop_nullfs_callthrough_args *ap)
+{
+
+	switch (ap->a_op) {
+	case VOP_NULLFS_IS_TEXT:
+		{
+			struct vop_is_text_args ap2;
+			ap2.a_vp = ap->a_vp;
+			return vop_stdis_text(&ap2);
+		}
+	case VOP_NULLFS_SET_TEXT:
+		{
+			struct vop_set_text_args ap2;
+			ap2.a_vp = ap->a_vp;
+			return vop_stdset_text(&ap2);
+		}
+	case VOP_NULLFS_UNSET_TEXT:
+		{
+			struct vop_unset_text_args ap2;
+			ap2.a_vp = ap->a_vp;
+			return vop_stdunset_text(&ap2);
+		}
+	case VOP_NULLFS_GET_WRITECOUNT:
+		{
+			struct vop_get_writecount_args ap2;
+			int error;
+			int writecount;
+
+			ap2.a_vp = ap->a_vp;
+			ap2.a_writecount = &writecount;
+			error = vop_stdget_writecount(&ap2);
+			*((int *)ap->a_out0) = writecount;
+			return (error);
+		}
+	case VOP_NULLFS_ADD_WRITECOUNT:
+		{
+			struct vop_add_writecount_args ap2;
+
+			ap2.a_vp = ap->a_vp;
+			ap2.a_inc = ap->a_in0;
+			return vop_stdadd_writecount(&ap2);
+		}
+	default:
+		return (EOPNOTSUPP);
+	}
+}
+
+static int
 vop_stdis_text(struct vop_is_text_args *ap)
 {
 
diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src
index 194e9f8..2bcc80a 100644
--- a/sys/kern/vnode_if.src
+++ b/sys/kern/vnode_if.src
@@ -658,36 +658,12 @@ vop_unp_detach {
 	IN struct vnode *vp;
 };
 
-%% is_text	vp	L L L
+%% nullfs_callthrough	vp  = = =
 
-vop_is_text {
+vop_nullfs_callthrough {
 	IN struct vnode *vp;
-};
-
-%% set_text	vp	E E E
-
-vop_set_text {
-	IN struct vnode *vp;
-};
-
-%% vop_unset_text	vp	E E E
-
-vop_unset_text {
-	IN struct vnode *vp;
-};
-
-%% get_writecount	vp	L L L
-
-vop_get_writecount {
-	IN struct vnode *vp;
-	OUT int *writecount;
-};
-
-%% add_writecount	vp	E E E
-
-vop_add_writecount {
-	IN struct vnode *vp;
-	IN int inc;
+	IN  uintptr_t in0;
+	OUT uintptr_t *out0;
 };
 
 # The VOPs below are spares at the end of the table to allow new VOPs to be
@@ -695,10 +671,6 @@ vop_add_writecount {
 # be added above these spares.  When merging a new VOP to a stable branch,
 # the new VOP should replace one of the spares.
 
-vop_spare4 {
-	IN struct vnode *vp;
-};
-
 vop_spare5 {
 	IN struct vnode *vp;
 };

--------------060807030005000102040907--

From owner-svn-src-stable@FreeBSD.ORG  Mon Dec 24 20:33:38 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 50605E7A;
 Mon, 24 Dec 2012 20:33:38 +0000 (UTC) (envelope-from hrs@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 32D7A8FC0A;
 Mon, 24 Dec 2012 20:33:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBOKXcFn075909;
 Mon, 24 Dec 2012 20:33:38 GMT (envelope-from hrs@svn.freebsd.org)
Received: (from hrs@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBOKXcms075908;
 Mon, 24 Dec 2012 20:33:38 GMT (envelope-from hrs@svn.freebsd.org)
Message-Id: <201212242033.qBOKXcms075908@svn.freebsd.org>
From: Hiroki Sato <hrs@FreeBSD.org>
Date: Mon, 24 Dec 2012 20:33:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244664 - stable/9/release/doc/en_US.ISO8859-1/relnotes
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Dec 2012 20:33:38 -0000

Author: hrs
Date: Mon Dec 24 20:33:37 2012
New Revision: 244664
URL: http://svnweb.freebsd.org/changeset/base/244664

Log:
  Fix various grammatical errors.
  
  Submitted by:	bjk

Modified:
  stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml

Modified: stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml
==============================================================================
--- stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Mon Dec 24 14:22:52 2012	(r244663)
+++ stable/9/release/doc/en_US.ISO8859-1/relnotes/article.xml	Mon Dec 24 20:33:37 2012	(r244664)
@@ -167,7 +167,7 @@
     <sect2 id="kernel">
       <title>Kernel Changes</title>
 
-      <para revision="232728">&os; Jail subsystem now supports
+      <para revision="232728">The &os; Jail subsystem now supports
 	mounting &man.devfs.5;, &man.nullfs.5;, and ZFS filesystem
 	inside a jail.  New &man.jail.8; parameters
 	<varname>allow.mount.devfs</varname>,
@@ -178,9 +178,9 @@
 
       <para revision="234167">A new &man.loader.8; tunable
 	<varname>kern.eventtimer.activetick</varname> has been added.
-	This tunable is to specify whether each hardclock tick should
-	be run on every active CPU or only one.  Setting it to
-	<literal>0</literal>, the number of interrupts can be reduced
+	This tunable specifies whether each hardclock tick should
+	be run on every active CPU or only one.  By setting it to
+	<literal>0</literal>, the total number of interrupts can be reduced
 	on SMP machines.  The default value is
 	<literal>1</literal>.</para>
 
@@ -189,7 +189,7 @@
 	&man.madvise.2; except that it operates on a file descriptor
 	instead of a memory region.</para>
 
-      <para revision="237795">The &man.filemon.4; pseudo device has
+      <para revision="237795">The &man.filemon.4; pseudo-device has
 	been added.  This allows a process to collect file operations
 	data of its children.</para>
 
@@ -201,8 +201,8 @@
 	supports kernel profiling by using &man.kgmon.8;.</para>
 
       <para revision="231145">The &os; Linux ABI compatibility layer
-	now supports <function>linux_fadvice64()</function> and
-	<function>linux_fadvice64_64()</function> system call.</para>
+	now supports the <function>linux_fadvise64()</function> and
+	<function>linux_fadvise64_64()</function> system calls.</para>
 
       <para revision="230266">The default value of the &man.loader.8;
 	tunable <varname>hw.memtest.tests</varname> is now
@@ -211,23 +211,23 @@
 
       <para revision="234075">A new &man.loader.8; tunable
 	<varname>kern.msgbuf_show_timestamp</varname> has been added.
-	When this is enabled, timestamp is added to each line of the
+	When it is enabled, a timestamp is added to each line of the
 	system message buffer.  The default value is
 	<literal>0</literal> (disabled).</para>
 
       <para revision="230320">The &man.null.4; and &man.zero.4; pseudo
-	device driver now supports non-blocking mode via &man.fcntl.2;
+	device driver now supports non-blocking mode via the &man.fcntl.2;
 	system call.</para>
 
       <para revision="233599">The &os; &man.sched.ule.4; scheduler has
-	been improved on CPU load balancing of SMT (Simultaneous
-	MultiThreading) CPUs.  It gives 10-15% performance improvement
+	been improved for CPU load balancing on SMT (Simultaneous
+	MultiThreading) CPUs.  It gives a 10-15% performance improvement
 	when the number of threads is lesser than the number of
 	logical CPUs.</para>
 
       <para revision="235992"
-	arch="sparc64"><literal>PREEMPTION</literal> kernel option is
-	now enabled in <filename>GENERIC</filename> kernel.</para>
+	arch="sparc64">The <literal>PREEMPTION</literal> kernel option is
+	now enabled in the <filename>GENERIC</filename> kernel.</para>
 
       <para revision="230039">A new &man.sysctl.8; variable
 	<varname>security.bsd.unprivileged_idprio</varname> has been
@@ -242,11 +242,11 @@
 	<title>Boot Loader Changes</title>
 
 	<para revision="230065">The &man.boot0cfg.8; utility now
-	  supports configuration of PXE boot via
+	  supports configuration of PXE boot via the
 	  <filename>boot0</filename> boot block temporarily on the
 	  next boot.  The slice number <literal>6</literal> or a
 	  keyword <literal>PXE</literal> can be specified to enable
-	  PXE boot in the <option>-s</option> option.</para>
+	  PXE boot using the <option>-s</option> option.</para>
 
 	<para revision="231287">The &os; &man.boot.8; block now
 	  supports <filename>/boot/config</filename> in addition to
@@ -262,27 +262,27 @@
 	  LBA for the metadata.</para>
 
 	<para revision="237766">The <filename>zfsboot</filename> boot
-	  block and <filename>zfsloader</filename> supports
+	  block and <filename>zfsloader</filename> support
 	  filesystems within a ZFS storage pool.  In
-	  <filename>zfsloader</filename>, ZFS device name format now
-	  is
+	  <filename>zfsloader</filename>, the ZFS device name format is now
 	  <literal>zfs:<replaceable>pool</replaceable>/<replaceable>fs</replaceable></literal>
-	  and fully qualified file path is
+	  and the fully qualified file path format is
 	  <literal>zfs:<replaceable>pool</replaceable>/<replaceable>fs</replaceable>:/<replaceable>path/to/file</replaceable></literal>.
-	  The <filename>zfsboot</filename> accepts kernel/loader name
-	  in a format
+	  The <filename>zfsboot</filename> boot block accepts the
+	  kernel/loader name in the format
 	  <literal><replaceable>pool</replaceable>:<replaceable>fs</replaceable>:<replaceable>path/to/file</replaceable></literal>
 	  or, as before,
 	  <literal><replaceable>pool</replaceable>:<replaceable>path/to/file</replaceable></literal>.
 	  In the latter case a default filesystem is used (the pool
-	  root or <literal>bootfs</literal> property).  The
-	  <filename>zfsboot</filename> passes GUIDs of the selected
+	  root or a filesystem with the <literal>bootfs</literal> property).  The
+	  <filename>zfsboot</filename> boot block passes
+	  the GUIDs of the selected
 	  storage pool and dataset to <filename>zfsloader</filename>
 	  to be used as its defaults.</para>
 
-	<para revision="236076" arch="sparc64">The &os;/sparc64 now
-	  supports booting from ZFS via zfsboot boot block and
-	  zfsloader.  For example, the following commands create a
+	<para revision="236076" arch="sparc64">&os;/sparc64 now
+	  supports booting from ZFS via the <filename>zfsboot</filename> boot block and
+	  <filename>zfsloader</filename>.  For example, the following commands create a
 	  mirrored storage pool <literal>rpool</literal> consisting of
 	  <literal>da0a</literal> and <literal>da0b</literal> and
 	  configure the storage pool as the root filesystem:</para>
@@ -326,10 +326,10 @@
 	  supports attaching multiple instances.</para>
 
 	<para revision="230290" arch="powerpc">The adm1030(4) driver
-	  for G4 MDD fan now shows its PWM parameter in the device
+	  for G4 MDD fans now shows its PWM parameter in the device's
 	  &man.sysctl.8; variable.</para>
 
-	<para revision="234559" arch="arm">The cesa(4) driver for
+	<para revision="234559" arch="arm">The cesa(4) driver for the
 	  Marvell crypto engine and security accelerator has been
 	  added.</para>
 
@@ -337,35 +337,35 @@
 	  driver now supports PowerPC G4+ (MPC745x/MPC744x).</para>
 
 	<para revision="234046" arch="amd64,i386">The &man.hwpmc.4;
-	  driver now supports Intel Sandy Bridge
+	  driver now supports the Intel Sandy Bridge
 	  microarchitecture.</para>
 
 	<para revision="236238">The &man.hwpmc.4; driver now supports
 	  software events.  Simultaneous usage of software PMC and
 	  hardware PMC is allowed.</para>
 
-	<para revision="236078">The pcf8563(4) driver for NXP
+	<para revision="236078">The pcf8563(4) driver for the NXP
 	  (Philips) PCF8563 RTC has been added.</para>
 
 	<para revision="233471" arch="powerpc">&os;/powerpc now
-	  supports PWM-controlled fans found on PowerMac SMU (System
+	  supports the PWM-controlled fans found on the PowerMac SMU (System
 	  Management Unit).</para>
 
-	<para revision="236081" arch="arm">&os;/arm now supports Atmel
+	<para revision="236081" arch="arm">&os;/arm now supports the Atmel
 	  SAM9XE family of microcontrollers.</para>
 
 	<para revision="230754,233950">The following &man.sysctl.8;
 	  variables have been added: <varname>kern.proc.env</varname>
 	  for environment strings, <varname>kern.proc.auxv</varname>
-	  for ELF auxiliary vectors from a process stack,
+	  for ELF auxiliary vectors from a process's stack,
 	  <varname>kern.proc.groups</varname> for process groups,
 	  <varname>kern.proc.rlimit</varname> for process resource
-	  limits, and <varname>kern.proc.ps_strings</varname> for
-	  ps_strings location, <varname>kern.proc.osrel</varname> for
-	  osreldate for process binary.</para>
+	  limits, <varname>kern.proc.ps_strings</varname> for the
+	  ps_strings location, and <varname>kern.proc.osrel</varname> for
+	  the osreldate of the process's binary.</para>
 
 	<para revision="229100,229369">The &man.usb.4; driver now
-	  handles suspend and resume correctly with no need of reloading
+	  handles suspend and resume correctly with no need to reload
 	  the kernel module.</para>
 
 	<para revision="230302">A bug in the &man.xhci.4; (USB 3.0)
@@ -373,24 +373,24 @@
 	  hubs.</para>
 
 	<para revision="229927">The &man.viawd.4; driver, which
-	  supports watchdog timer found in VIA south bridge (VT8251,
+	  supports the watchdog timer found in VIA south bridges (VT8251,
 	  CX700, VX800, VX855, VX900), has been added.</para>
 
 	<para revision="235926">The &man.wbwd.4; driver, which
-	  supports watchdog timer found in Winbond Super I/O chips,
+	  supports the watchdog timer found in Winbond Super I/O chips,
 	  has been added.</para>
 
 	<sect4 id="mm">
 	  <title>Multimedia Support</title>
 
 	  <para revision="236926,236927,239965">The drm2(4) Intel GPU driver,
-	    which supports GEM, KMS, and works with new generations of
+	    which supports GEM and KMS and works with new generations of
 	    GPUs such as IronLake, SandyBridge, and IvyBridge, has been
 	    added.  The &man.agp.4; driver now supports SandyBridge
 	    and IvyBridge CPU northbridges.</para>
 
 	  <para revision="232798">The &man.snd.hda.4; driver has been
-	    updated.  It now supports HDMI, new volume control,
+	    updated.  It now supports and provides HDMI, new volume control,
 	    automatic recording source selection, runtime
 	    reconfiguration, more then 4 PCM devices on a controller,
 	    multichannel recording, additional playback/record
@@ -405,19 +405,19 @@
 	    headers in the &man.snd.emu10kx.4;, &man.snd.maestro3.4;,
 	    and &man.snd.csa.4; drivers have been replaced with
 	    BSD-licensed one.  These drivers are now fully
-	    BSD-licensed and included in <filename>GENERIC</filename>
+	    BSD-licensed and included in the <filename>GENERIC</filename>
 	    kernel on &os;/amd64 and &os;/i386.</para>
 	</sect4>
 
 	<sect4 id="net-if">
 	  <title>Network Interface Support</title>
 
-	  <para revision="229520">A bug in &man.ae.4; driver which could
-	    prevent from working under certain conditions has been
+	  <para revision="229520">A bug in the &man.ae.4; driver which could
+	    prevent it from working under certain conditions has been
 	    fixed.</para>
 
 	  <para revision="229106">The &man.axe.4; driver now supports
-	    TX/RX checksum offloading support for ASIX AX88772B
+	    TX/RX checksum offloading support for the ASIX AX88772B
 	    controller.</para>
 
 	  <para>The &man.bce.4; driver has been improved:</para>
@@ -429,7 +429,7 @@
 	    </listitem>
 
 	    <listitem>
-	      <para revision="236216">A bug has been fixed.  It could
+	      <para revision="236216">A bug has been fixed which could
 		prevent IPMI from working when the interface was
 		marked as down.</para>
 	    </listitem>
@@ -439,29 +439,29 @@
 		which allow the controller to perform MDIO type accesses
 		to a remote transceiver by using message pages defined
 		through MRBE (MultiRate Backplane Ethernet).  This is
-		found on machines such as Dell PowerEdge M610
+		found on machines such as the Dell PowerEdge M610
 		Blade.</para>
 	    </listitem>
 	  </itemizedlist>
 
-	  <para>The &man.bge.4; and brgphy(4) driver have been
+	  <para>The &man.bge.4; and brgphy(4) drivers have been
 	    improved:</para>
 
 	  <itemizedlist>
 	    <listitem>
-	      <para revision="229350">A bug which could prevent the
-		DMA functionality from working correctly, has been
+	      <para revision="229350">A bug which could prevent
+		DMA functionality from working correctly has been
 		fixed.</para>
 	    </listitem>
 
 	    <listitem>
-	      <para revision="233495">It now works with PCI-X BCM 5704
-		controller that connected to AMD-8131 PCI-X bridge.</para>
+	      <para revision="233495">It now works with a PCI-X BCM 5704
+		controller that is connected to AMD-8131 PCI-X bridge.</para>
 	    </listitem>
 
 	    <listitem>
 	      <para revision="229357,229867,232134">It now supports
-		BCM 5720 and BCM 5720C PHY, and BCM 57780 1000BASE-T
+		the BCM 5720 and BCM 5720C PHY, and the BCM 57780 1000BASE-T
 		media interface.</para>
 	    </listitem>
 
@@ -475,25 +475,25 @@
 	  </itemizedlist>
 
 	  <para revision="231093,237925">The &man.cxgbe.4; and
-	    &man.cxgb.4; driver has been updated to firmware version
-	    1.5.2.0.  This now supports device configuration via a
+	    &man.cxgb.4; drivers have been updated to firmware version
+	    1.5.2.0.  They now support device configuration via a
 	    plain text configuration file, IPv6 hardware checksumming,
-	    IPv6 TSO and LRO, <literal>loadfw</literal> command in the
-	    cxgbetool(8) utility which allows to install a firmware to
-	    the card, &man.sysctl.8; variables under
+	    IPv6 TSO and LRO, a <literal>loadfw</literal> command in the
+	    cxgbetool(8) utility which allows installing a firmware to
+	    the card, and &man.sysctl.8; variables under
 	    <varname>dev.t4nex.<replaceable>N</replaceable>.misc</varname>
 	    for various information.</para>
 
 	  <para revision="229334">The &man.dc.4; driver now supports
 	    NVIDIA (ULi) M5261/M5263 PCI FastEthernet controllers, which
-	    are found on ULi M1563 South Bridge and M1689 Bridge.</para>
+	    are found on the ULi M1563 South Bridge and M1689 Bridge.</para>
 
 	  <para revision="229711,229717,229720">The &man.et.4; driver
 	    now works on all platforms.  A bug which could prevent
 	    &man.altq.4; support from working has been fixed.  A new
-	    &man.sysctl.8; variables under
+	    &man.sysctl.8; variable under
 	    <varname>dev.et.<replaceable>N</replaceable>.stats</varname>
-	    have been added for hardware MAC statistics.</para>
+	    has been added for hardware MAC statistics.</para>
 
 	  <para revision="238262">The &man.igb.4; driver has been
 	    updated to version 2.3.4.  It now supports newer i210/i211
@@ -507,7 +507,7 @@
 	    supports device hints
 	    <varname>hint.miibus.<replaceable>N</replaceable>.phymask</varname>
 	    for PHY addresses being probed.  This is useful to manually
-	    probe PHYs which do not implement basic register set of
+	    probe PHYs which do not implement basic the register set of
 	    IEEE 802.3.  Also, the &man.miibus.4; driver has been
 	    changed to a hinted bus, allowing to add child devices via
 	    hints and to set their attach arguments in addition to
@@ -523,14 +523,14 @@
 	    National DP83849.</para>
 
 	  <para revision="231663">The &man.oce.4; driver, which
-	    supports Emulex OneConnect 10Gbit Ethernet card, has been
+	    supports Emulex OneConnect 10Gbit Ethernet cards, has been
 	    added.</para>
 
 	  <para revision="236004">The &man.ral.4; driver now supports
 	    Ralink RT2800 and RT3000 chipsets.</para>
 
 	  <para revision="229529,231731">The &man.re.4; driver now
-	    supports RTL8411 PCIe Gigabit Ethernet controller.  A bug
+	    supports the RTL8411 PCIe Gigabit Ethernet controller.  A bug
 	    which could prevent WoL (Wake-on-LAN) from working on
 	    RTL8168E has been fixed.</para>
 
@@ -541,20 +541,20 @@
 	    supports 10Gb Ethernet adapters based on Solarflare SFC9000
 	    family controllers, has been added.</para>
 
-	  <para revision="233485">The smcphy(4); driver now supports
+	  <para revision="233485">The smcphy(4) driver now supports the
 	    Seeq Technology 80220 PHY.  This is found on Adaptec
-	    AIC-6915 Starfire Ethernet controller supported by the
+	    AIC-6915 Starfire Ethernet controllers supported by the
 	    &man.sf.4; driver.</para>
 
 	  <para revision="229417,229438">The &man.ti.4; driver now
-	    supports &man.altq.4; framework, reporting link-state
-	    change, and &man.sysctl.8; variables under
+	    supports the &man.altq.4; framework, reporting link-state
+	    changes, and &man.sysctl.8; variables under
 	    <varname>dev.ti.<replaceable>N</replaceable></varname> for
-	    the interrupt moderation parameters.</para>
+	    interrupt moderation parameters.</para>
 
-	  <para revision="229441">A bug in &man.ti.4; driver which could
-	    prevent it from working correctly with <literal>PAE</literal>
-	    kernel option, has been fixed.</para>
+	  <para revision="229441">A bug in the &man.ti.4; driver which could
+	    prevent it from working correctly with the <literal>PAE</literal>
+	    kernel option has been fixed.</para>
 
 	  <para revision="229540">The &man.vge.4; driver has been
 	    updated to improve its link establishment and link-state
@@ -565,7 +565,7 @@
 
 	  <para revision="231697">The &man.xnb.4; Xen Paravirtualized
 	    Backend Ethernet Driver (netback) has been updated.  This is
-	    attached via newbus framework and works properly in both
+	    attached via the newbus framework and works properly in both
 	    HVM and PVM mode.</para>
 	</sect4>
       </sect3>
@@ -573,8 +573,8 @@
       <sect3 id="net-proto">
 	<title>Network Protocols</title>
 
-	<para revision="236051">The &man.if.bridge.4; pseudo interface
-	  now supports reporting link-state change depending on status
+	<para revision="236051">The &man.if.bridge.4; pseudo-interface
+	  now supports reporting link-state changes depending on the status
 	  of the member interfaces.</para>
 
 	<para revision="234597">The <literal>table</literal> argument
@@ -584,23 +584,23 @@
 
 	<programlisting>skipto tablearg ip from any to any via table(42) in</programlisting>
 
-	<para>&os; &man.ip6.4; protocol stack now has been improved in terms
+	<para>The &os; &man.ip6.4; protocol stack has been improved in terms
 	  of its performance.  Benchmarking can be found at <ulink
 	  url="http://people.freebsd.org/~bz/bench/"></ulink>.</para>
 
-	<para revision="232292">&os; &man.ip6.4; protocol stack now
-	  supports multiple FIB.</para>
+	<para revision="232292">The &os; &man.ip6.4; protocol stack now
+	  supports multiple FIBs.</para>
 
 	<para revision="230604">An IPv6 default route configured via
 	  Router Advertisement messages is now reinstalled correctly
 	  when the default route is manually removed and then another
-	  same RA message is received.</para>
+	  RA message is received for the same route.</para>
 
 	<para revision="227885">A bug which could return an incorrect
-	  value of <literal>IPV6_MULTICASE_HOPS</literal> socket option
+	  value for the <literal>IPV6_MULTICASE_HOPS</literal> socket option
 	  has been fixed.</para>
 
-	<para revision="231768">A new &man.sysctl.8;
+	<para revision="231768">A new &man.sysctl.3; name
 	  <literal>NET_RT_IFLISTL</literal> has been added.  This
 	  queries the address list and works on extended and
 	  extensible structures <varname>if_msghdrl</varname> and
@@ -609,39 +609,39 @@
 
 	<para revision="231650,235527">The &man.netmap.4; fast packet
 	  I/O framework has been added.  The &man.em.4;, lem(4),
-	  &man.igb.4;. and &man.re.4; drivers now support this
+	  &man.igb.4;, and &man.re.4; drivers now support this
 	  framework.  The technical details can be found at <ulink
 	  url="http://info.iet.unipi.it/~luigi/netmap/"></ulink>.</para>
 
-	<para revision="231045">&os; &man.sctp.4; protocol stack now
+	<para revision="231045">The &os; &man.sctp.4; protocol stack now
 	  supports a new &man.sysctl.8; variable
 	  <varname>net.inet.sctp.blackhole</varname>.  If this is set
 	  to <literal>1</literal>, no <literal>ABORT</literal> is sent
 	  back in response to an incoming <literal>INIT</literal>. If
 	  this is set to <literal>2</literal>, no
-	  <literal>ABORT</literal> is sent back in response to an out
-	  of the blue packet.  If set to <literal>0</literal>
+	  <literal>ABORT</literal> is sent back in response to an
+	  out-of-the-blue packet.  If set to <literal>0</literal>
 	  (the default), <literal>ABORT</literal>s are sent.</para>
 
 	<para revision="231049">A bug which could cause a system panic
 	  when <literal>SCTP_RECVINFO</literal> or
-	  <literal>SCTP_NXTINFO</literal> is specified to
-	  &man.getsockopt.2; system call, has been fixed.</para>
+	  <literal>SCTP_NXTINFO</literal> is specified to the
+	  &man.getsockopt.2; system call has been fixed.</para>
 
-	<para revision="231070,231140">&os; &man.sctp.4; protocol stack now
-	  supports <literal>SCTP_REMOTE_UDP_ENCAPS_PORT</literal>
+	<para revision="231070,231140">The &os; &man.sctp.4; protocol stack now
+	  supports the <literal>SCTP_REMOTE_UDP_ENCAPS_PORT</literal>
 	  socket option.</para>
 
-	<para revision="232805"><literal>SO_PROTOCOL</literal> and
+	<para revision="232805">The <literal>SO_PROTOCOL</literal> and
 	  <literal>SO_PROTOTYPE</literal> socket options have been
-	  added.  These returns the socket protocol number.</para>
+	  added.  These return the socket protocol number.</para>
 
-	<para revision="232945"><literal>TCP_KEEPINIT</literal>,
+	<para revision="232945">The <literal>TCP_KEEPINIT</literal>,
 	  <literal>TCP_KEEPIDLE</literal>,
 	  <literal>TCP_KEEPINTVL</literal>, and
 	  <literal>TCP_KEEPCNT</literal> socket options have been
-	  added.  These allow to control initial timeout, idle time,
-	  idle resend interval, and idle send count in a per-socket
+	  added.  These allow controlling initial timeout, idle time,
+	  idle resend interval, and idle send count on a per-socket
 	  basis.</para>
       </sect3>
 
@@ -658,7 +658,7 @@
 	  This is enabled by default.</para>
 
 	<para revision="231251">The new &man.cam.4;-based &man.ata.4;
-	  driver now supports old &man.loader.8; tunables,
+	  driver now supports old &man.loader.8; tunables
 	  <varname>hw.ata.ata_dma</varname> and
 	  <varname>hw.ata.atapi_dma</varname>, for backward
 	  compatibility.</para>
@@ -686,8 +686,8 @@
 
 	<para revision="230014">The &man.cd.4; driver now supports
 	  Audio CDs in the same way as &man.acd.4; did.  It will
-	  report 2352-byte sector to &man.geom.4; subsystem and use
-	  <literal>READ CD</literal> command for reading the data.
+	  report a 2352-byte sector size to the &man.geom.4; subsystem and use
+	  the <literal>READ CD</literal> command for reading the data.
 	  This fixes an interoperability issue with <filename
 	  role="package">multimedia/vlc</filename>.</para>
 
@@ -742,15 +742,15 @@
 	</informaltable>
 
 	<para>When it was <literal>NONE</literal>, the device did not
-	  report the logical block provisioning support via respective
+	  report logical block provisioning support via respective
 	  VPD pages.  One can set a specific method for testing and it
 	  will be disabled automatically when not supported on the
 	  device.</para>
 
 	<para revision="238500">The <application>MIRROR</application>
 	  &man.geom.4; class now supports
-	  <literal>BIO_DELETE</literal>.  This means
-	  <literal>TRIM</literal> command will be issued on the
+	  <literal>BIO_DELETE</literal>.  This means the
+	  <literal>TRIM</literal> command will be issued on
 	  supported devices when deleting data.</para>
 
 	<para revision="229303,234916">The
@@ -762,37 +762,37 @@
 	  metadata, and <command>add</command>,
 	  <command>remove</command>, <command>fail</command>,
 	  <command>restore</command>, <command>configure</command>
-	  subcommands in &man.gmultipath.8; utility to manage the
+	  subcommands in the &man.gmultipath.8; utility to manage the
 	  configured paths.</para>
 
 	<para revision="234406">The
 	  <application>PART_LDM</application> &man.geom.4; class has
-	  been added.  This partition scheme supports for Logical Disk
+	  been added.  This partition scheme has support for Logical Disk
 	  Manager, which is also known as dynamic volumes in Microsoft
 	  Windows NT.  Note that JBOD, RAID0, and RAID5 volumes are
 	  not supported yet.</para>
 
-	<para revision="230763"><application>PART_MBR</application>
+	<para revision="230763">The <application>PART_MBR</application>
 	  &man.geom.4; class now allows a primary or extended Linux
 	  swap partition to be used as the system dump device.</para>
 
 	<para revision="235877" arch="amd64,i386">The
 	  <application>RAID</application> &man.geom.4; class is now
-	  included in <filename>GENERIC</filename> kernel.</para>
+	  included in the <filename>GENERIC</filename> kernel.</para>
 
 	<para revision="230244">The <application>RAID</application>
 	  &man.geom.4; class now supports disks with over 2TB capacity
-	  for Intel metadata format.</para>
+	  for the Intel metadata format.</para>
 
 	<para revision="235874">The <application>RAID</application>
-	  &man.geom.4; class now supports DDF metadata format, which
+	  &man.geom.4; class now supports the DDF metadata format, which
 	  is defined in the SNIA Common RAID Disk Data Format
 	  Specification v2.0.</para>
 
 	<para revision="235483">The
 	  <application>UNCOMPRESS</application> &man.geom.4; class and
 	  the &man.mkulzma.8; utility have been added.  This class
-	  supports lzma compressed images like
+	  supports lzma compressed images like the
 	  <application>UZIP</application> &man.geom.4; class and the
 	  &man.mkuzip.8; utility.</para>
 
@@ -808,11 +808,11 @@
 	  been fixed.</para>
 
 	<para revision="230775">The &man.ixgbe.4; driver now supports
-	  Intel X540 adapter.</para>
+	  the Intel X540 adapter.</para>
 
-	<para revision="227533">A bug in &man.mfi.4; driver has been
-	  fixed.  It could cause some inconsistency due to missing of
-	  interrupt acknowledge and output the following log
+	<para revision="227533">A bug in the &man.mfi.4; driver has been
+	  fixed.  It could cause some inconsistencies due to missed
+	  interrupt acknowledgements and output the following log
 	  message:</para>
 
 	<screen>mfi0: COMMAND 0xffffffXXXXXXXXXX TIMEOUT AFTER XX SECONDS</screen>
@@ -848,7 +848,7 @@
 	    <para revision="233326">It now supports a timeout on
 	      positive name cache entries on the client side.  A new
 	      mount option <varname>nametimeo</varname> has been added
-	      and set to <literal>60</literal> (in second) by
+	      and set to <literal>60</literal> (in seconds) by
 	      default.</para>
 	  </listitem>
 
@@ -862,7 +862,7 @@
 	      process writes to an mmap-backed file on an NFS
 	      filesystem, flushing changes to the data could fail
 	      under some circumstances such as errors due to
-	      permission mismatch and this failure could not detected
+	      permission mismatch, and this failure could not be detected
 	      as an error.  A new &man.sysctl.8; variable
 	      <varname>vfs.nfs.nfs_keep_dirty_on_error</varname> has
 	      been added to control the behavior on the client side
@@ -874,12 +874,12 @@
 
 	  <listitem>
 	    <para revision="229799">The &man.nfsv4.4; filesystem now
-	      supports a new &man.sysctl.8; variable
+	      supports a &man.sysctl.8; variable
 	      <varname>vfs.nfsd.disable_checkutf8</varname>.  This
-	      disables the check for a UTF-8 compliance in the
+	      disables the check for UTF-8 compliance in
 	      filenames.  This is disabled by default.  Note that
-	      enabling this may help some interoperability issue but
-	      results in an NFSv4 server that is non-RFC 3530
+	      enabling this may help wht some interoperability issues but
+	      results in an NFSv4 server that is not RFC 3530
 	      compliant.</para>
 	  </listitem>
 	</itemizedlist>
@@ -888,28 +888,28 @@
 	  experimental implementation anymore.</para>
 
 	<para revision="234849">The &man.tmpfs.5; filesystem now
-	  supports a new &man.sysctl.8; variable
-	  <varname>vfs.tmpfs.memory_reserved</varname> to set amount
+	  supports a &man.sysctl.8; variable
+	  <varname>vfs.tmpfs.memory_reserved</varname> to set the amount
 	  of required free pages when &man.tmpfs.5; attempts to
 	  allocate a new node.</para>
 
-	<para revision="229578,232328">&os; ZFS filesystem has been
-	  updated by merging improvements in illumos project.  The
+	<para revision="229578,232328">&os;'s ZFS filesystem has been
+	  updated by merging improvements from the illumos project.  The
 	  following changes are made:</para>
 
 	<itemizedlist>
 	  <listitem><para>New properties, <literal>clones</literal> and
 	      <literal>written</literal>, have been added.</para></listitem>
 
-	  <listitem><para>&man.zfs.8; <command>send</command> command
-	      now reports estimated size of the stream.</para></listitem>
+	  <listitem><para>The &man.zfs.8; <command>send</command> command
+	      now reports an estimated size of the stream.</para></listitem>
 
-	  <listitem><para>&man.zfs.8; <command>destroy</command> command
-	      now reports estimated space which would be reclaimed when
-	      <option>-n</option> flag is specified.</para></listitem>
+	  <listitem><para>The &man.zfs.8; <command>destroy</command> command
+	      now reports an estimate of the space which would be reclaimed,
+	      when <option>-n</option> is specified.</para></listitem>
 
-	  <listitem><para>&man.zfs.8; <command>get</command> command now
-	      supports <option>-t <replaceable>type</replaceable></option>
+	  <listitem><para>The &man.zfs.8; <command>get</command> command now
+	      supports the <option>-t <replaceable>type</replaceable></option>
 	      flag to specify the data type.</para></listitem>
 	</itemizedlist>
 
@@ -919,7 +919,7 @@
 	  correctly when using ZFS as the root filesystem.  The script
 	  is located at
 	  <filename>/usr/src/tools/tools/zfsboottest.sh</filename> and
-	  it uses <filename>zfsboottest</filename> binary program in the
+	  it uses the <filename>zfsboottest</filename> binary program in the
 	  same directory.</para>
 
 	<para>The binary program can be built and installed by the
@@ -937,7 +937,7 @@
 
 	<para>The &man.sysctl.8; variable
 	  <varname>vfs.zfs.txg.timeout</varname> has been changed from
-	  read-only to writable one.</para>
+	  read-only to writable.</para>
       </sect3>
     </sect2>
 
@@ -948,7 +948,7 @@
 	because it was deprecated years ago.</para>
 
       <para revision="237740">The &man.camcontrol.8; utility now
-	supports <command>fwdownload</command> subcommand for firmware
+	supports a <command>fwdownload</command> subcommand for firmware
 	update on SCSI devices from Hitachi, HP, IBM, Plextor,
 	Quantum, and Seagate.  This subcommand will reprogram the
 	firmware on devices connected over an ATA/SATA transport.</para>
@@ -963,11 +963,11 @@
 
       <para revision="230047">The &man.dump.8; utility now uses 53
 	characters for the device names in
-	<filename>/etc/dumpdates</filename>.  This was limited to 32
+	<filename>/etc/dumpdates</filename>.  This was previously limited to 32
 	characters.</para>
 
       <para revision="235253">The &man.fetch.1; utility now correctly
-	supports percent-encoded user and password part in a
+	supports a percent-encoded user and password part in a
 	URL.</para>
 
       <para revision="230410">The &man.fdlopen.3; function has been
@@ -975,50 +975,50 @@
 	shared object by file descriptor.</para>
 
       <para revision="229845">The &man.fopen.3; function now supports
-	<option>x</option> (an exclusive create-and-open mode) option
-	in ISO/IEC 9899:2011, C11 standard.</para>
+	the <option>x</option> (an exclusive create-and-open mode) option
+	in the ISO/IEC 9899:2011 and C11 standards.</para>
 
       <para revision="234023">A bug in the &man.gcc.1; compiler has
 	been fixed.  It could lead to incorrect calculations when
-	<option>-ffast-math</option> flag is specified.</para>
+	<option>-ffast-math</option> is specified.</para>
 
-      <para revision="229509">The &man.hastd.8; daemon now supports to
-        specify filename of the process ID file in
+      <para revision="229509">The &man.hastd.8; daemon now supports
+        specifying the filename of its process ID file in
         &man.hast.conf.5;.</para>
 
       <para revision="231221">The &man.ifconfig.8; utility now
-	supports <literal>vlanhwcsum</literal> parameter to set or
+	supports a <literal>vlanhwcsum</literal> parameter to set or
 	reset checksum offloading capability on VLANs.</para>
 
       <para revision="238872">A bug in the &man.ifconfig.8; utility
 	which could display an error message in a jail with no IPv6
-	support, has been fixed.</para>
+	support has been fixed.</para>
 
       <para revision="232486">The &man.ifconfig.8; utility now
-	supports <literal>carp
+	supports a <literal>carp
 	<replaceable>state</replaceable></literal> parameter to set
 	the state to <literal>backup</literal> or
 	<literal>master</literal> forcibly.</para>
 
-      <para revision="235839">The &man.jail.8; utility now supports
+      <para revision="235839">The &man.jail.8; utility now supports a
 	configuration file (&man.jail.conf.5;) for complex
 	configurations.</para>
 
-      <para revision="237789">The &man.kdump.1; utility now supports
+      <para revision="237789">The &man.kdump.1; utility now supports a
 	<option>-p <replaceable>pid</replaceable></option> option to
 	accept either a process ID or a thread ID.</para>
 
-      <para revision="236118">The &man.kenv.1; utility now supports
+      <para revision="236118">The &man.kenv.1; utility now supports a
 	<option>-v</option> flag to display an entry in
-	<literal>name=value</literal> format, and <option>-N</option>
+	<literal>name=value</literal> format, and a <option>-N</option>
 	flag to display only the name.</para>
 
-      <para revision="233560">The &man.kldload.8; utility now supports
+      <para revision="233560">The &man.kldload.8; utility now supports a
 	<option>-n</option> flag to ignore the error status when the
 	specified module is already loaded.</para>
 
       <para revision="237738"><application>libedit</application> has
-	been updated to NetBSD snapshot as of 28 December,
+	been updated to a NetBSD snapshot as of 28 December,
 	2009.</para>
 
       <para revision="236523">&man.libmap.conf.5; now supports
@@ -1046,15 +1046,15 @@
 	a <option>-P <replaceable>pid</replaceable></option> option to
 	control limits for the specified process.</para>
 
-      <para revision="237731">The &man.pciconf.8; utility now supports
-	<option>-e</option> flag to display PCI error details in the
+      <para revision="237731">The &man.pciconf.8; utility now supports a
+	<option>-e</option> flag to display PCI error details in
 	listing mode.  When this is specified, the status of any error
 	bits in the PCI status register and PCI-express device status
 	register will be displayed.  It also lists any errors
 	indicated by version 1 of PCI-express Advanced Error Reporting
 	(AER).</para>
 
-      <para revision="229710">The &man.procstat.1; utility now shows
+      <para revision="229710">The &man.procstat.1; utility now shows the
 	superpage mapping flag when displaying process virtual memory
 	mappings.</para>
 
@@ -1065,7 +1065,7 @@
 	display resource limits.</para>
 
       <para revision="234535">A bug in the &man.remquo.3; functions
-	that the quotient did not always have the correct sign when
+	where the quotient did not always have the correct sign when
 	the remainder was <literal>0</literal>, and another bug that
 	the remainder and quotient were both off by a bit in certain
 	cases involving subnormal remainders, have been fixed.  Note
@@ -1073,11 +1073,11 @@
 	i386.</para>
 
       <para revision="231579">The &man.rtld.1; run-time linker now
-	supports GCC's RELRO (RElocation Read-Only).  This prevents
+	supports GCC's RELRO (RElocation Read-Only).  This prevents the
 	GOT (Global Offset Table) from being overwritten.</para>
 
       <para revision="235396">The &man.rtld.1; run-time linker now
-	supports GNU hash section (<literal>DT_GNU_HASH</literal>),
+	supports a GNU hash section (<literal>DT_GNU_HASH</literal>),
 	which is a replacement of optional ELF hash section.</para>
 
       <para revision="235139">The &man.setbuf.1; utility and
@@ -1086,10 +1086,10 @@
 	stdio streams.</para>
 
       <para revision="227702">The &man.top.1; utility now correctly
-	supports per-thread I/O statistics of ZFS in <option>-m
+	supports per-thread I/O statistics of ZFS in the <option>-m
 	io</option> option.</para>
 
-      <para revision="234330">The &man.unzip.1; utility now supports
+      <para revision="234330">The &man.unzip.1; utility now supports a
 	<option>-Z</option> option for zipinfo.</para>
 
       <para revision="235785">The &man.xlocale.3; API has been
@@ -1105,7 +1105,7 @@
 
 	<para revision="231721">A new variable
 	  <varname>daily_status_zfs_zpool_list_enable</varname> has
-	  been added.  It controls whether listing all of the ZFS
+	  been added.  It controls whether or not to list all of the ZFS
 	  pools in <filename>periodic/daily/404.status-zfs</filename>.
 	  The default value is <literal>YES</literal>.</para>
 
@@ -1118,13 +1118,13 @@
       <sect3 id="rc-scripts">
 	<title>&man.rc.8; Scripts</title>
 
-	<para revision="227607"><filename>rc.d/nfsd</filename> script
-	  now sets <varname>vfs.nfsd.server_max_nfsvers</varname>
+	<para revision="227607">The <filename>rc.d/nfsd</filename> script
+	  now sets the <varname>vfs.nfsd.server_max_nfsvers</varname>
 	  &man.sysctl.8; variable to <literal>4</literal> when
 	  <varname>nfsv4_server_enable</varname> is set to
 	  <literal>YES</literal>.</para>
 
-	<para revision="242189">A backward compatibility issue when
+	<para revision="242189">A backwards compatibility issue when
 	  both <literal>ipv6_enable=YES</literal> and
 	  <literal>ipv6_gateway_enable=YES</literal> are defined at
 	  the same time has been fixed.</para>
@@ -1153,12 +1153,12 @@
 	&man.bsdtar.1;, and &man.cpio.1; have been updated to version
 	2.8.5.</para>
 
-      <para revision="236167"><application>libpcap</application>
-	library have been updated to 1.2.1.</para>
+      <para revision="236167">The <application>libpcap</application>
+	library has been updated to 1.2.1.</para>
 
       <para revision="229551"><application>libstdc++</application>
-	have been updated to rev 135556 of
-	<literal>gcc-4_2-branch</literal> (LGPLv2-licensed
+	has been updated to revision 135556 of the
+	<literal>gcc-4_2-branch</literal> (the last LGPLv2-licensed
 	version).</para>
 
       <para revision="236144">The <application>LLVM</application>
@@ -1171,10 +1171,10 @@
 	has been updated to version 5.1.</para>
 
       <para revision="237998"><application>OpenSSL</application> has
-	been updated to 0.9.8x.</para>
+	been updated to version 0.9.8x.</para>
 
-      <para revision="236192"><application>tcpdump</application>
-	(&man.tcpdump.1;) utility has been updated to 4.2.1.</para>
+      <para revision="236192">The <application>tcpdump</application>
+	(&man.tcpdump.1;) utility has been updated to version 4.2.1.</para>
 
       <para revision="232633">The <application>TENEX C
 	shell</application> (&man.tcsh.1;) has been updated to version
@@ -1184,8 +1184,8 @@
 	database has been updated to the
 	<application>tzdata2012a</application> release.</para>
 
-      <para revision="237691"><application>zlib</application>
-	library have been updated to 1.2.7.</para>
+      <para revision="237691">The <application>zlib</application>
+	library has been updated to version 1.2.7.</para>
     </sect2>
 
     <sect2 id="releng">
@@ -1196,9 +1196,9 @@
 	role="package">x11/kde4</filename>) has been updated to
 	4.8.4.</para>
 
-      <para revision="234055" arch="powerpc">Issues that &os;
-	installation CDROM image caused a panic, and did not
-	recognized on OpenBIOS-based environment like QEMU, have been
+      <para revision="234055" arch="powerpc">Issues where the &os;
+	installation CDROM image caused a panic, and was not
+	recognized on OpenBIOS-based environments like QEMU, have been
 	fixed.</para>
     </sect2>
   </sect1>
@@ -1207,22 +1207,22 @@
     <title>Upgrading from previous releases of &os;</title>
 
     <sect2>
-      <title>Upgrading using freebsd-update(8) or a source-based
+      <title>Upgrading using &man.freebsd-update.8; or a source-based
 	procedure</title>
 
       <para arch="amd64,i386">Beginning with &os; 6.2-RELEASE, binary
 	upgrades between RELEASE versions (and snapshots of the
 	various security branches) are supported using the
 	&man.freebsd-update.8; utility.  The binary upgrade procedure
-	will update unmodified userland utilities, as well as a
-	unmodified GENERIC kernel distributed as a part of an official
-	&os; release.  The &man.freebsd-update.8; utility requires
-	that the host being upgraded have Internet
-	connectivity.</para>
+	will update unmodified userland utilities, as well as an
+	unmodified <filename>GENERIC</filename> kernel, distributed as
+	a part of an official &os; release.  The
+	&man.freebsd-update.8; utility requires that the host being
+	upgraded have Internet connectivity.</para>
 
       <para>Source-based upgrades (those based on recompiling the &os;
 	base system from source code) from previous versions are
-	supported, according to the instructions in
+	supported using to the instructions in
 	<filename>/usr/src/UPDATING</filename>.</para>
 
       <para>For more specific information about upgrading

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 00:24:44 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 9E764CB8;
 Tue, 25 Dec 2012 00:24:44 +0000 (UTC)
 (envelope-from delphij@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 80EE48FC13;
 Tue, 25 Dec 2012 00:24:44 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBP0OiSn019474;
 Tue, 25 Dec 2012 00:24:44 GMT (envelope-from delphij@svn.freebsd.org)
Received: (from delphij@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBP0OiVj019473;
 Tue, 25 Dec 2012 00:24:44 GMT (envelope-from delphij@svn.freebsd.org)
Message-Id: <201212250024.qBP0OiVj019473@svn.freebsd.org>
From: Xin LI <delphij@FreeBSD.org>
Date: Tue, 25 Dec 2012 00:24:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244669 - stable/9/sbin/sysctl
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 00:24:44 -0000

Author: delphij
Date: Tue Dec 25 00:24:43 2012
New Revision: 244669
URL: http://svnweb.freebsd.org/changeset/base/244669

Log:
  MFC r244104:
  
  In parse():
  
   - Only operate on copy, don't operate on source.
   - Eliminate home-rolled strsep().
   - Constify the parameter.

Modified:
  stable/9/sbin/sysctl/sysctl.c
Directory Properties:
  stable/9/sbin/sysctl/   (props changed)

Modified: stable/9/sbin/sysctl/sysctl.c
==============================================================================
--- stable/9/sbin/sysctl/sysctl.c	Mon Dec 24 22:28:52 2012	(r244668)
+++ stable/9/sbin/sysctl/sysctl.c	Tue Dec 25 00:24:43 2012	(r244669)
@@ -62,7 +62,7 @@ static int	aflag, bflag, dflag, eflag, h
 static int	Nflag, nflag, oflag, qflag, xflag, warncount;
 
 static int	oidfmt(int *, int, char *, u_int *);
-static void	parse(char *);
+static void	parse(const char *);
 static int	show_var(int *, int);
 static int	sysctl_all(int *oid, int len);
 static int	name2oid(char *, int *);
@@ -161,7 +161,7 @@ main(int argc, char **argv)
  * Set a new value if requested.
  */
 static void
-parse(char *string)
+parse(const char *string)
 {
 	int len, i, j;
 	void *newval = 0;
@@ -176,12 +176,11 @@ parse(char *string)
 	char *cp, *bufp, buf[BUFSIZ], *endptr, fmt[BUFSIZ];
 	u_int kind;
 
-	bufp = buf;
+	cp = buf;
 	if (snprintf(buf, BUFSIZ, "%s", string) >= BUFSIZ)
 		errx(1, "oid too long: '%s'", string);
-	if ((cp = strchr(string, '=')) != NULL) {
-		*strchr(buf, '=') = '\0';
-		*cp++ = '\0';
+	bufp = strsep(&cp, "=");
+	if (cp != NULL) {
 		while (isspace(*cp))
 			cp++;
 		newval = cp;

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 00:25:22 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id D3FE3E23;
 Tue, 25 Dec 2012 00:25:22 +0000 (UTC)
 (envelope-from delphij@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 9FC9B8FC0A;
 Tue, 25 Dec 2012 00:25:22 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBP0PMsc019672;
 Tue, 25 Dec 2012 00:25:22 GMT (envelope-from delphij@svn.freebsd.org)
Received: (from delphij@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBP0PMYf019671;
 Tue, 25 Dec 2012 00:25:22 GMT (envelope-from delphij@svn.freebsd.org)
Message-Id: <201212250025.qBP0PMYf019671@svn.freebsd.org>
From: Xin LI <delphij@FreeBSD.org>
Date: Tue, 25 Dec 2012 00:25:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244670 - stable/8/sbin/sysctl
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 00:25:22 -0000

Author: delphij
Date: Tue Dec 25 00:25:22 2012
New Revision: 244670
URL: http://svnweb.freebsd.org/changeset/base/244670

Log:
  MFC r244104:
  
  In parse():
  
   - Only operate on copy, don't operate on source.
   - Eliminate home-rolled strsep().
   - Constify the parameter.

Modified:
  stable/8/sbin/sysctl/sysctl.c
Directory Properties:
  stable/8/sbin/sysctl/   (props changed)

Modified: stable/8/sbin/sysctl/sysctl.c
==============================================================================
--- stable/8/sbin/sysctl/sysctl.c	Tue Dec 25 00:24:43 2012	(r244669)
+++ stable/8/sbin/sysctl/sysctl.c	Tue Dec 25 00:25:22 2012	(r244670)
@@ -62,7 +62,7 @@ static int	aflag, bflag, dflag, eflag, h
 static int	Nflag, nflag, oflag, qflag, xflag, warncount;
 
 static int	oidfmt(int *, int, char *, u_int *);
-static void	parse(char *);
+static void	parse(const char *);
 static int	show_var(int *, int);
 static int	sysctl_all(int *oid, int len);
 static int	name2oid(char *, int *);
@@ -162,7 +162,7 @@ main(int argc, char **argv)
  * Set a new value if requested.
  */
 static void
-parse(char *string)
+parse(const char *string)
 {
 	int len, i, j;
 	void *newval = 0;
@@ -176,12 +176,11 @@ parse(char *string)
 	char *cp, *bufp, buf[BUFSIZ], *endptr, fmt[BUFSIZ];
 	u_int kind;
 
-	bufp = buf;
+	cp = buf;
 	if (snprintf(buf, BUFSIZ, "%s", string) >= BUFSIZ)
 		errx(1, "oid too long: '%s'", string);
-	if ((cp = strchr(string, '=')) != NULL) {
-		*strchr(buf, '=') = '\0';
-		*cp++ = '\0';
+	bufp = strsep(&cp, "=");
+	if (cp != NULL) {
 		while (isspace(*cp))
 			cp++;
 		newval = cp;

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 06:07:35 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 67C20566;
 Tue, 25 Dec 2012 06:07:35 +0000 (UTC) (envelope-from hrs@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 4743F8FC0A;
 Tue, 25 Dec 2012 06:07:35 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBP67ZIH098406;
 Tue, 25 Dec 2012 06:07:35 GMT (envelope-from hrs@svn.freebsd.org)
Received: (from hrs@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBP67ZFg098405;
 Tue, 25 Dec 2012 06:07:35 GMT (envelope-from hrs@svn.freebsd.org)
Message-Id: <201212250607.qBP67ZFg098405@svn.freebsd.org>
From: Hiroki Sato <hrs@FreeBSD.org>
Date: Tue, 25 Dec 2012 06:07:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244671 - stable/9/release/doc/en_US.ISO8859-1/errata
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 06:07:35 -0000

Author: hrs
Date: Tue Dec 25 06:07:34 2012
New Revision: 244671
URL: http://svnweb.freebsd.org/changeset/base/244671

Log:
  Add Errata items:
          - mfi(4) driver overflow issue,
          - typos in Installation Instructions.

Modified:
  stable/9/release/doc/en_US.ISO8859-1/errata/article.xml

Modified: stable/9/release/doc/en_US.ISO8859-1/errata/article.xml
==============================================================================
--- stable/9/release/doc/en_US.ISO8859-1/errata/article.xml	Tue Dec 25 00:25:22 2012	(r244670)
+++ stable/9/release/doc/en_US.ISO8859-1/errata/article.xml	Tue Dec 25 06:07:34 2012	(r244671)
@@ -205,6 +205,33 @@
   <sect1 id="late-news">
     <title>Late-Breaking News</title>
 
-    <para>No news.</para>
+    <para>[November 2, 2012] The current &man.mfi.4; driver has an
+      overflow bug when handling disks larger than 2^32 sectors in
+      SYSPD volumes, also known as JBODs, which will cause data
+      corruption.  This bug has been fixed on this &os;-CURRENT but
+      was too late for inclusion in this release.  An Errata Notice
+      for &release.current; is planned.</para>
+
+    <para>[December 25, 2012] The Installtion Instructions had the
+      following wrong information about upgrading procedure.  All of
+      them have been fixed in the online version.</para>
+
+    <itemizedlist>
+      <listitem>
+	<para>The link URL of <quote>upgrading section in the Release
+	    Notes</quote>, branch names where upcoming Security
+	  Advisories or Errata Notices will be applied, and a
+	  command line argument of &man.freebsd-update.8; were ones
+	  for 9.0-RELEASE, not for &release.current;.</para>
+      </listitem>
+
+      <listitem>
+	<para>The list of releases supported by &man.freebsd-update.8;
+	  utility were incorrect.  For 9.X, The following versions are
+	  supported: <literal>9.0-RELEASE</literal>,
+	  <literal>9.1-BETA1</literal>, and
+	  <literal>9.1-RC[123]</literal>.</para>
+      </listitem>
+    </itemizedlist>
   </sect1>
 </article>

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 10:44:31 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id D23499B5;
 Tue, 25 Dec 2012 10:44:31 +0000 (UTC)
 (envelope-from kostikbel@gmail.com)
Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1])
 by mx1.freebsd.org (Postfix) with ESMTP id 365F58FC0A;
 Tue, 25 Dec 2012 10:44:30 +0000 (UTC)
Received: from tom.home (kostik@localhost [127.0.0.1])
 by kib.kiev.ua (8.14.5/8.14.5) with ESMTP id qBPAiMUJ057147;
 Tue, 25 Dec 2012 12:44:22 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
DKIM-Filter: OpenDKIM Filter v2.7.3 kib.kiev.ua qBPAiMUJ057147
Received: (from kostik@localhost)
 by tom.home (8.14.5/8.14.5/Submit) id qBPAiM7N057146;
 Tue, 25 Dec 2012 12:44:22 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com
 using -f
Date: Tue, 25 Dec 2012 12:44:22 +0200
From: Konstantin Belousov <kostikbel@gmail.com>
To: Alfred Perlstein <bright@mu.org>
Subject: Re: svn commit: r244663 - stable/9
Message-ID: <20121225104422.GB53644@kib.kiev.ua>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature"; boundary="03sphU6jKm9HdgU1"
Content-Disposition: inline
In-Reply-To: <50D8B533.8080507@mu.org>
User-Agent: Mutt/1.5.21 (2010-09-15)
X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no
 version=3.3.2
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home
Cc: svn-src-stable@freebsd.org, Adrian Chadd <adrian@freebsd.org>,
 src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 10:44:31 -0000


--03sphU6jKm9HdgU1
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
> On 12/24/12 11:24 AM, Adrian Chadd wrote:
> > ... why'd we break the KBI in a stable branch?
> >
> I am not sure either.
>=20
> I think a single VOP for nullfs (while ugly) would have sufficed.
No, it doesn't.

Even if it would be sufficient, having a switch right after the
vtable call is silly. But, ignoring the sillyness, having a single
VOP forces a filesystem, needed to override the single bit of behaviour,
to override all behaviours hidden from under the common VOP. Besides
the incovenience, it breaks the bypass. This is why I did not went
this route in the HEAD commit.

Making HEAD and stable diverge for the VOP table is unmaintainable.

At least one other change which cannot be covered by the VOP table
hacking is the struct vfsops new method.

Traditionally (my memory goes back to 6.x branch) we did not maintained
VFS KBI stability on the branches.

--03sphU6jKm9HdgU1
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJQ2YOFAAoJEJDCuSvBvK1B/ssQAISdLaNUORMPE9M20P0KttJa
/myrd3mS4K9RcKqOY3RJ7rrDQwpPie+gS/B/35wYdiREp4oJdCIZRe6qNWm7bzpJ
N5Q3uu+WVcOasw4IM9H8CwwNWcZIQJiLh9tm1vMYaoFp8hhUfWp4vvpMelKNR8v0
rztOuF2ql6nj7/RD+cmrODkf4BgAeQq8Sl4zr1HY/Mk0F+O6ik5n3rwTUi+2Uq0f
B1j6tW3u8fx8nF1H/kowQ58H6aH+KhcKyvA7oUVYOQK3jLX8tR5KmU10zflOrGn9
yEooI/xJKWFdyZrryiSoF9zcLkjOexlE/4GxgaZuio+CHs0Wn3ZMQAhhCnOiNPCe
QE8JOKgPwdOlQAE7q6r8VXNqQylcPZlvbmuhee+rfjx9IXjBi75FAxxuj3PLWyOg
RjEHuXGj844rWxGqcsOKwMKMjC2s8KC9J8HcAN8Yz8ogN6sIVflXSra463aEloQP
YBnW3j2dkHiYTpuj9v8/DweUzi6C3Bca2Z+wqnedn9UWIRaTccnfcTAtx2EfeLDq
mm/c95RL20HzjzLewy8NnlX5rMexJXfs0Y7rKOCd6wigu+HpWDk1IkutczMnwxqg
kAFfiJnYnnWqPz+WNiWo7cv0z+t/JJ+LkvTb2D8AZIkwj8Ln0vf6bXoDAaI/RwRc
5jilHzVtYYYz/D37xD4u
=/Axn
-----END PGP SIGNATURE-----

--03sphU6jKm9HdgU1--

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 11:11:26 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id B710DFC5;
 Tue, 25 Dec 2012 11:11:26 +0000 (UTC)
 (envelope-from dteske@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 97BF58FC0A;
 Tue, 25 Dec 2012 11:11:26 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBPBBQHs043004;
 Tue, 25 Dec 2012 11:11:26 GMT (envelope-from dteske@svn.freebsd.org)
Received: (from dteske@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBPBBQ7p043002;
 Tue, 25 Dec 2012 11:11:26 GMT (envelope-from dteske@svn.freebsd.org)
Message-Id: <201212251111.qBPBBQ7p043002@svn.freebsd.org>
From: Devin Teske <dteske@FreeBSD.org>
Date: Tue, 25 Dec 2012 11:11:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244676 - stable/9/usr.sbin/sysinstall
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 11:11:26 -0000

Author: dteske
Date: Tue Dec 25 11:11:26 2012
New Revision: 244676
URL: http://svnweb.freebsd.org/changeset/base/244676

Log:
  Fix another typo while we're here.

Modified:
  stable/9/usr.sbin/sysinstall/http.c

Modified: stable/9/usr.sbin/sysinstall/http.c
==============================================================================
--- stable/9/usr.sbin/sysinstall/http.c	Tue Dec 25 10:47:45 2012	(r244675)
+++ stable/9/usr.sbin/sysinstall/http.c	Tue Dec 25 11:11:26 2012	(r244676)
@@ -253,7 +253,7 @@ mediaGetHTTP(Device *dev, char *file, Bo
 		    msgConfirm("Client error %s, you could try an other server",buf);
 		    return NULL;
 		} else if (rv >= 300) {
-		    msgConfirm("Error %s,",buf);
+		    msgConfirm("Error %s",buf);
 		    return NULL;
 		} else if (rv != 200) {
 		    msgConfirm("Error %s when sending %s, you could try an other server",buf, req);

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 11:28:24 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 7D0574D3;
 Tue, 25 Dec 2012 11:28:24 +0000 (UTC)
 (envelope-from kostikbel@gmail.com)
Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1])
 by mx1.freebsd.org (Postfix) with ESMTP id EE3558FC0C;
 Tue, 25 Dec 2012 11:28:23 +0000 (UTC)
Received: from tom.home (kostik@localhost [127.0.0.1])
 by kib.kiev.ua (8.14.5/8.14.5) with ESMTP id qBPBSKKK061478;
 Tue, 25 Dec 2012 13:28:20 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
DKIM-Filter: OpenDKIM Filter v2.7.3 kib.kiev.ua qBPBSKKK061478
Received: (from kostik@localhost)
 by tom.home (8.14.5/8.14.5/Submit) id qBPBSKek061477;
 Tue, 25 Dec 2012 13:28:20 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com
 using -f
Date: Tue, 25 Dec 2012 13:28:20 +0200
From: Konstantin Belousov <kostikbel@gmail.com>
To: Alfred Perlstein <bright@mu.org>
Subject: Re: svn commit: r244663 - stable/9
Message-ID: <20121225112820.GC53644@kib.kiev.ua>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature"; boundary="kJMkLA1uPhjFFA+D"
Content-Disposition: inline
In-Reply-To: <20121225104422.GB53644@kib.kiev.ua>
User-Agent: Mutt/1.5.21 (2010-09-15)
X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no
 version=3.3.2
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home
Cc: svn-src-stable@freebsd.org, Adrian Chadd <adrian@freebsd.org>,
 src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 11:28:24 -0000


--kJMkLA1uPhjFFA+D
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Dec 25, 2012 at 12:44:22PM +0200, Konstantin Belousov wrote:
> On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
> > On 12/24/12 11:24 AM, Adrian Chadd wrote:
> > > ... why'd we break the KBI in a stable branch?
> > >
> > I am not sure either.
> >=20
> > I think a single VOP for nullfs (while ugly) would have sufficed.
> No, it doesn't.
>=20
> Even if it would be sufficient, having a switch right after the
> vtable call is silly. But, ignoring the sillyness, having a single
> VOP forces a filesystem, needed to override the single bit of behaviour,
> to override all behaviours hidden from under the common VOP. Besides
> the incovenience, it breaks the bypass. This is why I did not went
> this route in the HEAD commit.
>=20
> Making HEAD and stable diverge for the VOP table is unmaintainable.
>=20
> At least one other change which cannot be covered by the VOP table
> hacking is the struct vfsops new method.
>=20
> Traditionally (my memory goes back to 6.x branch) we did not maintained
> VFS KBI stability on the branches.

Forgot to note, you completely ignored the VOP vnode locking protocol in
your patch.

--kJMkLA1uPhjFFA+D
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJQ2Y3TAAoJEJDCuSvBvK1BvfUP/Rp2E+p82BtuyLbvSr3cyQ2t
ICfwzPODtyhcnhbqkJPRL9zLfxBwSydeudrWdqXvcAXg1YOCHMN4ec3kOeiYkJ23
yxgITuev2qNWB1uX6YCX3SFpEYxOC7/hcnJf36dlkZ5UzgG5uU/Q80EBf3dAbYqj
hSqrgx689ueg6xFMFXXL0n3Tn8rzmsIuHK1aB6Z3aiK6wHhkiebJKns6EeK/4DSV
E5CPoFSYjx2oEKCV3P4aprzcWyA3Vkhs6nHYSqcEzAaZwstArbO1vGO2cJPQijV6
54XcEPptNG+1WuJWf3I0G4dnp/l9UvMRs5cs8Ro7G7K+VK8UVlw0OvSGmKCP6ASb
GMBKiSzKejxeGRRWhlgzM81u05co+NlZb9BsE/g/j3wKCLqNQeOsLirNxmsHGz7E
np7l19hxDWI0k/CdN8QgBPD1A6qOdnJo/SPXRgtjOIzhsd/4WyAbuKogjY1/LuHj
m5QX6jftSxRAJHJ+uUy5iNe49SoOo0Rj/Tu72vyCz2jTeobCE4XrurZ91WKhJ4YG
uxyu2X2qqgZd2jL66krhJ5iT41BctzFuwfQLp0CevzIvcrzX5jXzmpaTtIYqnWBG
ciR3v+HoobMV6zSQF3fbdT0yAZke6Zf9+1y0F/SP7i8yjJoKDQh8Ou6MweHbzvzh
EGQojKIByGl0DkcgFuoP
=0MQN
-----END PGP SIGNATURE-----

--kJMkLA1uPhjFFA+D--

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 17:39:38 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 6C649739;
 Tue, 25 Dec 2012 17:39:38 +0000 (UTC) (envelope-from pfg@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 437A18FC12;
 Tue, 25 Dec 2012 17:39:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBPHdc8I099618;
 Tue, 25 Dec 2012 17:39:38 GMT (envelope-from pfg@svn.freebsd.org)
Received: (from pfg@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBPHdbwv099614;
 Tue, 25 Dec 2012 17:39:37 GMT (envelope-from pfg@svn.freebsd.org)
Message-Id: <201212251739.qBPHdbwv099614@svn.freebsd.org>
From: "Pedro F. Giffuni" <pfg@FreeBSD.org>
Date: Tue, 25 Dec 2012 17:39:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244687 - stable/9/sys/fs/ext2fs
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 17:39:38 -0000

Author: pfg
Date: Tue Dec 25 17:39:37 2012
New Revision: 244687
URL: http://svnweb.freebsd.org/changeset/base/244687

Log:
  MFC	r244475:
  More constant renaming in preparation for newer features.
  
  We also try to make better use of the fs flags instead of
  trying adapt the code according to the fs structures. In
  the case of subsecond timestamps and birthtime we now
  check that the feature is explicitly enabled: previously
  we only checked that the reserved space was available and
  silently wrote them.
  
  This approach is much safer, especially if the filesystem
  happens to use embedded inodes or support EAs.
  
  Discussed with:    Zheng Liu, bde

Modified:
  stable/9/sys/fs/ext2fs/ext2_dinode.h
  stable/9/sys/fs/ext2fs/ext2_inode_cnv.c
  stable/9/sys/fs/ext2fs/ext2_vfsops.c
  stable/9/sys/fs/ext2fs/ext2fs.h

Modified: stable/9/sys/fs/ext2fs/ext2_dinode.h
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2_dinode.h	Tue Dec 25 17:06:05 2012	(r244686)
+++ stable/9/sys/fs/ext2fs/ext2_dinode.h	Tue Dec 25 17:39:37 2012	(r244687)
@@ -60,15 +60,16 @@
 #define EXT2_APPEND		0x00000020 /* writes to file may only append */
 #define EXT2_NODUMP		0x00000040	/* do not dump file */
 #define EXT2_NOATIME		0x00000080	/* do not update atime */
-#define EXT2_INDEX		0x00001000 	/* hash-indexed directory */
-#define EXT2_IMAGIC		0x00002000 	/* AFS directory */
-#define EXT2_JOURNAL_DATA		0x00004000 /* file data should be journaled */
-#define EXT2_NOTAIL		0x00008000 /* file tail should not be merged */
-#define EXT2_DIRSYNC		0x00010000	/* dirsync behaviour */
-#define EXT2_TOPDIR		0x00020000 /* Top of directory hierarchies*/
-#define EXT2_HUGE_FILE		0x00040000	/* Set to each huge file */
-#define EXT2_EXTENTS		0x00080000	/* Inode uses extents */
-#define EXT2_EOFBLOCKS		0x00400000 /* Blocks allocated beyond EOF */
+
+#define EXT4_INDEX		0x00001000 	/* hash-indexed directory */
+#define EXT4_IMAGIC		0x00002000 	/* AFS directory */
+#define EXT4_JOURNAL_DATA	0x00004000 /* file data should be journaled */
+#define EXT4_NOTAIL		0x00008000 /* file tail should not be merged */
+#define EXT4_DIRSYNC		0x00010000	/* dirsync behaviour */
+#define EXT4_TOPDIR		0x00020000 /* Top of directory hierarchies*/
+#define EXT4_HUGE_FILE		0x00040000	/* Set to each huge file */
+#define EXT4_EXTENTS		0x00080000	/* Inode uses extents */
+#define EXT4_EOFBLOCKS		0x00400000 /* Blocks allocated beyond EOF */
 
 /*
  * Definitions for nanosecond timestamps.
@@ -78,8 +79,7 @@
 #define EXT3_EPOCH_MASK	((1 << EXT3_EPOCH_BITS) - 1)
 #define EXT3_NSEC_MASK	(~0UL << EXT3_EPOCH_BITS)
 
-#define E2DI_HAS_XTIME(ip)	(EXT2_INODE_SIZE((ip)->i_e2fs) > \
-				    E2FS_REV0_INODE_SIZE)
+#define E2DI_HAS_XTIME(ip)	(EXT2_HAS_RO_COMPAT_FEATURE(ip->i_e2fs, EXT2F_ROCOMPAT_EXTRA_ISIZE))
 
 /*
  * Structure of an inode on the disk

Modified: stable/9/sys/fs/ext2fs/ext2_inode_cnv.c
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2_inode_cnv.c	Tue Dec 25 17:06:05 2012	(r244686)
+++ stable/9/sys/fs/ext2fs/ext2_inode_cnv.c	Tue Dec 25 17:39:37 2012	(r244687)
@@ -27,17 +27,18 @@
  */
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/endian.h>
 #include <sys/lock.h>
 #include <sys/stat.h>
 #include <sys/vnode.h>
 
 #include <fs/ext2fs/inode.h>
 #include <fs/ext2fs/ext2fs.h>
-#include <fs/ext2fs/ext2_extern.h>
 #include <fs/ext2fs/ext2_dinode.h>
+#include <fs/ext2fs/ext2_extern.h>
 
 #define XTIME_TO_NSEC(x)	((x & EXT3_NSEC_MASK) >> 2)
-#define NSEC_TO_XTIME(t)	((t << 2) & EXT3_NSEC_MASK)
+#define NSEC_TO_XTIME(t)	(le32toh(t << 2) & EXT3_NSEC_MASK)
 
 void
 ext2_print_inode( in )

Modified: stable/9/sys/fs/ext2fs/ext2_vfsops.c
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2_vfsops.c	Tue Dec 25 17:06:05 2012	(r244686)
+++ stable/9/sys/fs/ext2fs/ext2_vfsops.c	Tue Dec 25 17:39:37 2012	(r244687)
@@ -349,7 +349,7 @@ compute_sb_data(struct vnode *devvp, str
 		}
 	}
 	/* Check for extra isize in big inodes. */
-	if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT4F_ROCOMPAT_EXTRA_ISIZE) &&
+	if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_EXTRA_ISIZE) &&
 	    EXT2_INODE_SIZE(fs) < sizeof(struct ext2fs_dinode)) {
 		printf("ext2fs: no space for extra inode timestamps\n");
 		return (EINVAL);

Modified: stable/9/sys/fs/ext2fs/ext2fs.h
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2fs.h	Tue Dec 25 17:06:05 2012	(r244686)
+++ stable/9/sys/fs/ext2fs/ext2fs.h	Tue Dec 25 17:39:37 2012	(r244687)
@@ -215,18 +215,18 @@ struct m_ext2fs {
 #define EXT2F_ROCOMPAT_SPARSESUPER	0x0001
 #define EXT2F_ROCOMPAT_LARGEFILE	0x0002
 #define EXT2F_ROCOMPAT_BTREE_DIR	0x0004
-#define EXT4F_ROCOMPAT_HUGE_FILE	0x0008
-#define EXT4F_ROCOMPAT_GDT_CSUM		0x0010
-#define EXT4F_ROCOMPAT_DIR_NLINK	0x0020
-#define EXT4F_ROCOMPAT_EXTRA_ISIZE	0x0040
+#define EXT2F_ROCOMPAT_HUGE_FILE	0x0008
+#define EXT2F_ROCOMPAT_GDT_CSUM		0x0010
+#define EXT2F_ROCOMPAT_DIR_NLINK	0x0020
+#define EXT2F_ROCOMPAT_EXTRA_ISIZE	0x0040
 
 #define EXT2F_INCOMPAT_COMP		0x0001
 #define EXT2F_INCOMPAT_FTYPE		0x0002
-#define EXT4F_INCOMPAT_META_BG		0x0010
-#define EXT4F_INCOMPAT_EXTENTS		0x0040
-#define EXT4F_INCOMPAT_64BIT		0x0080
-#define EXT4F_INCOMPAT_MMP		0x0100
-#define EXT4F_INCOMPAT_FLEX_BG		0x0200
+#define EXT2F_INCOMPAT_META_BG		0x0010
+#define EXT2F_INCOMPAT_EXTENTS		0x0040
+#define EXT2F_INCOMPAT_64BIT		0x0080
+#define EXT2F_INCOMPAT_MMP		0x0100
+#define EXT2F_INCOMPAT_FLEX_BG		0x0200
 
 /*
  * Features supported in this implementation
@@ -239,7 +239,7 @@ struct m_ext2fs {
 #define EXT2F_COMPAT_SUPP		0x0000
 #define EXT2F_ROCOMPAT_SUPP		(EXT2F_ROCOMPAT_SPARSESUPER | \
 					 EXT2F_ROCOMPAT_LARGEFILE | \
-					 EXT4F_ROCOMPAT_EXTRA_ISIZE)
+					 EXT2F_ROCOMPAT_EXTRA_ISIZE)
 #define EXT2F_INCOMPAT_SUPP		EXT2F_INCOMPAT_FTYPE
 
 /* Assume that user mode programs are passing in an ext2fs superblock, not

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 19:17:23 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 20B5C283;
 Tue, 25 Dec 2012 19:17:23 +0000 (UTC)
 (envelope-from rwatson@FreeBSD.org)
Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42])
 by mx1.freebsd.org (Postfix) with ESMTP id E17098FC15;
 Tue, 25 Dec 2012 19:17:22 +0000 (UTC)
Received: from fledge.watson.org (fledge.watson.org [65.122.17.41])
 by cyrus.watson.org (Postfix) with ESMTPS id 1A02746B39;
 Tue, 25 Dec 2012 14:17:22 -0500 (EST)
Date: Tue, 25 Dec 2012 19:17:21 +0000 (GMT)
From: Robert Watson <rwatson@FreeBSD.org>
X-X-Sender: robert@fledge.watson.org
To: Konstantin Belousov <kostikbel@gmail.com>
Subject: Re: svn commit: r244663 - stable/9
In-Reply-To: <20121225104422.GB53644@kib.kiev.ua>
Message-ID: <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
User-Agent: Alpine 2.00 (BSF 1167 2008-08-23)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: Adrian Chadd <adrian@freebsd.org>, src-committers@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-all@freebsd.org,
 Alfred Perlstein <bright@mu.org>, svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 19:17:23 -0000

On Tue, 25 Dec 2012, Konstantin Belousov wrote:

> On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
>> On 12/24/12 11:24 AM, Adrian Chadd wrote:
>>> ... why'd we break the KBI in a stable branch?
>>>
>> I am not sure either.
>>
>> I think a single VOP for nullfs (while ugly) would have sufficed.
> No, it doesn't.
>
> Even if it would be sufficient, having a switch right after the vtable call 
> is silly. But, ignoring the sillyness, having a single VOP forces a 
> filesystem, needed to override the single bit of behaviour, to override all 
> behaviours hidden from under the common VOP. Besides the incovenience, it 
> breaks the bypass. This is why I did not went this route in the HEAD commit.
>
> Making HEAD and stable diverge for the VOP table is unmaintainable.
>
> At least one other change which cannot be covered by the VOP table hacking 
> is the struct vfsops new method.
>
> Traditionally (my memory goes back to 6.x branch) we did not maintained VFS 
> KBI stability on the branches.

While I would love to have a stable KBI, or even KPI, for VFS, past experience 
suggests that we are not prepared to document one, let alone enforce it, and 
that we frequently experience changes that disrupt both the binary and 
programming interfaces -- often for very good reasons (e.g., fixing critical 
bugs, improving performance, etc).  And that the notional VFS KPI is extremely 
promiscuous, being made up of not just the obvious VFS parts, but also VM 
parts, etc.  We've done a bit better with device drivers, where the consensus 
is that we should Try Fairly Hard, but even there we have only limited 
documentation of what even constitutes the KPI and KBI.

In the end, not all kernel interfaces can be "KPIs" or "KBIs" -- otherwise, we 
could change almost nothing in -STABLE, causing branches to stagnate rapidly. 
If you look at Apple's model (for example), they designate certain interfaces 
as "API" or "KPI" rather than using the terms more casually to refer to any 
interface in userspace or kernel, and we need to take the same perspective.  A 
few years ago, I took a gander through a number of core network stack data 
structures used by device drivers, while trying to help resolve how TOE would 
fit into the network device driver picture, and you can see the results here:

   http://wiki.freebsd.org/NetKPIKBI

However, I didn't attempt to enumerate symbols, just data structures -- that 
was in large part because the issue we faced at the time was changes 
disrupting monitoring interfaces used by netstat (etc).  If we do want to 
chase this goal more formally, we should investigate tools to help us do that.

Robert

From owner-svn-src-stable@FreeBSD.ORG  Tue Dec 25 20:23:54 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 9685DC59;
 Tue, 25 Dec 2012 20:23:54 +0000 (UTC)
 (envelope-from dteske@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 795B08FC0C;
 Tue, 25 Dec 2012 20:23:54 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBPKNs65024064;
 Tue, 25 Dec 2012 20:23:54 GMT (envelope-from dteske@svn.freebsd.org)
Received: (from dteske@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBPKNsJ5024063;
 Tue, 25 Dec 2012 20:23:54 GMT (envelope-from dteske@svn.freebsd.org)
Message-Id: <201212252023.qBPKNsJ5024063@svn.freebsd.org>
From: Devin Teske <dteske@FreeBSD.org>
Date: Tue, 25 Dec 2012 20:23:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244688 - stable/9/usr.sbin/sysinstall
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Dec 2012 20:23:54 -0000

Author: dteske
Date: Tue Dec 25 20:23:53 2012
New Revision: 244688
URL: http://svnweb.freebsd.org/changeset/base/244688

Log:
  Fix error message to be accurate for when ProgName is not "sysinstall" (oops?)

Modified:
  stable/9/usr.sbin/sysinstall/variable.c

Modified: stable/9/usr.sbin/sysinstall/variable.c
==============================================================================
--- stable/9/usr.sbin/sysinstall/variable.c	Tue Dec 25 17:39:37 2012	(r244687)
+++ stable/9/usr.sbin/sysinstall/variable.c	Tue Dec 25 20:23:53 2012	(r244688)
@@ -247,8 +247,8 @@ dump_variables(dialogMenuItem *unused)
 
     fp = fopen("/etc/sysinstall.vars", "w");
     if (!fp) {
-	msgConfirm("Unable to write to /etc/%s.vars: %s",
-		   ProgName, strerror(errno));
+	msgConfirm("Unable to write to /etc/sysinstall.vars: %s",
+		   strerror(errno));
 	return DITEM_FAILURE;
     }
 

From owner-svn-src-stable@FreeBSD.ORG  Wed Dec 26 18:50:04 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id A8C8BE4B;
 Wed, 26 Dec 2012 18:50:04 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 73CAB8FC12;
 Wed, 26 Dec 2012 18:50:04 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBQIo4dN020778;
 Wed, 26 Dec 2012 18:50:04 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBQIo4mw020776;
 Wed, 26 Dec 2012 18:50:04 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201212261850.qBQIo4mw020776@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Wed, 26 Dec 2012 18:50:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244712 - stable/9/sys/dev/sound/pci/hda
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 26 Dec 2012 18:50:04 -0000

Author: mav
Date: Wed Dec 26 18:50:03 2012
New Revision: 244712
URL: http://svnweb.freebsd.org/changeset/base/244712

Log:
  MFC r244145:
  Add quirks for AD1984A codec and Lenovo X300 laptop.
  
  PR:		kern/148741

Modified:
  stable/9/sys/dev/sound/pci/hda/hdaa_patches.c
  stable/9/sys/dev/sound/pci/hda/hdac.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/sound/pci/hda/hdaa_patches.c
==============================================================================
--- stable/9/sys/dev/sound/pci/hda/hdaa_patches.c	Wed Dec 26 18:28:17 2012	(r244711)
+++ stable/9/sys/dev/sound/pci/hda/hdaa_patches.c	Wed Dec 26 18:50:03 2012	(r244712)
@@ -271,7 +271,17 @@ hdac_pin_patch(struct hdaa_widget *w)
 	}
 
 	/* New patches */
-	if (id == HDA_CODEC_AD1986A &&
+	if (id == HDA_CODEC_AD1984A &&
+	    subid == LENOVO_X300_SUBVENDOR) {
+		switch (nid) {
+		case 17: /* Headphones with redirection */
+			patch = "as=1 seq=15";
+			break;
+		case 20: /* Two mics together */
+			patch = "as=2 seq=15";
+			break;
+		}
+	} else if (id == HDA_CODEC_AD1986A &&
 	    (subid == ASUS_M2NPVMX_SUBVENDOR ||
 	    subid == ASUS_A8NVMCSM_SUBVENDOR ||
 	    subid == ASUS_P5PL2_SUBVENDOR)) {
@@ -372,6 +382,13 @@ hdaa_widget_patch(struct hdaa_widget *w)
 		    HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT;
 		w->waspin = 1;
 	}
+	/*
+	 * Clear "digital" flag from digital mic input, as its signal then goes
+	 * to "analog" mixer and this separation just limits functionaity.
+	 */
+	if (hdaa_codec_id(devinfo) == HDA_CODEC_AD1984A &&
+	    w->nid == 23)
+		w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK;
 	HDA_BOOTVERBOSE(
 		if (w->param.widget_cap != orig) {
 			device_printf(w->devinfo->dev,

Modified: stable/9/sys/dev/sound/pci/hda/hdac.h
==============================================================================
--- stable/9/sys/dev/sound/pci/hda/hdac.h	Wed Dec 26 18:28:17 2012	(r244711)
+++ stable/9/sys/dev/sound/pci/hda/hdac.h	Wed Dec 26 18:50:03 2012	(r244712)
@@ -218,6 +218,7 @@
 #define LENOVO_3KN200_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x384e)
 #define LENOVO_B450_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x3a0d)
 #define LENOVO_TCA55_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x1015)
+#define LENOVO_X300_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
 #define LENOVO_ALL_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
 
 /* Samsung */

From owner-svn-src-stable@FreeBSD.ORG  Wed Dec 26 18:51:38 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 95112FC5;
 Wed, 26 Dec 2012 18:51:38 +0000 (UTC) (envelope-from mav@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 5FCC18FC08;
 Wed, 26 Dec 2012 18:51:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBQIpcC3021035;
 Wed, 26 Dec 2012 18:51:38 GMT (envelope-from mav@svn.freebsd.org)
Received: (from mav@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBQIpcCT021033;
 Wed, 26 Dec 2012 18:51:38 GMT (envelope-from mav@svn.freebsd.org)
Message-Id: <201212261851.qBQIpcCT021033@svn.freebsd.org>
From: Alexander Motin <mav@FreeBSD.org>
Date: Wed, 26 Dec 2012 18:51:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244713 - stable/8/sys/dev/sound/pci/hda
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 26 Dec 2012 18:51:38 -0000

Author: mav
Date: Wed Dec 26 18:51:37 2012
New Revision: 244713
URL: http://svnweb.freebsd.org/changeset/base/244713

Log:
  MFC r244145:
  Add quirks for AD1984A codec and Lenovo X300 laptop.
  
  PR:		kern/148741

Modified:
  stable/8/sys/dev/sound/pci/hda/hdaa_patches.c
  stable/8/sys/dev/sound/pci/hda/hdac.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/sound/   (props changed)
  stable/8/sys/dev/sound/pci/   (props changed)

Modified: stable/8/sys/dev/sound/pci/hda/hdaa_patches.c
==============================================================================
--- stable/8/sys/dev/sound/pci/hda/hdaa_patches.c	Wed Dec 26 18:50:03 2012	(r244712)
+++ stable/8/sys/dev/sound/pci/hda/hdaa_patches.c	Wed Dec 26 18:51:37 2012	(r244713)
@@ -271,7 +271,17 @@ hdac_pin_patch(struct hdaa_widget *w)
 	}
 
 	/* New patches */
-	if (id == HDA_CODEC_AD1986A &&
+	if (id == HDA_CODEC_AD1984A &&
+	    subid == LENOVO_X300_SUBVENDOR) {
+		switch (nid) {
+		case 17: /* Headphones with redirection */
+			patch = "as=1 seq=15";
+			break;
+		case 20: /* Two mics together */
+			patch = "as=2 seq=15";
+			break;
+		}
+	} else if (id == HDA_CODEC_AD1986A &&
 	    (subid == ASUS_M2NPVMX_SUBVENDOR ||
 	    subid == ASUS_A8NVMCSM_SUBVENDOR ||
 	    subid == ASUS_P5PL2_SUBVENDOR)) {
@@ -372,6 +382,13 @@ hdaa_widget_patch(struct hdaa_widget *w)
 		    HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT;
 		w->waspin = 1;
 	}
+	/*
+	 * Clear "digital" flag from digital mic input, as its signal then goes
+	 * to "analog" mixer and this separation just limits functionaity.
+	 */
+	if (hdaa_codec_id(devinfo) == HDA_CODEC_AD1984A &&
+	    w->nid == 23)
+		w->param.widget_cap &= ~HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK;
 	HDA_BOOTVERBOSE(
 		if (w->param.widget_cap != orig) {
 			device_printf(w->devinfo->dev,

Modified: stable/8/sys/dev/sound/pci/hda/hdac.h
==============================================================================
--- stable/8/sys/dev/sound/pci/hda/hdac.h	Wed Dec 26 18:50:03 2012	(r244712)
+++ stable/8/sys/dev/sound/pci/hda/hdac.h	Wed Dec 26 18:51:37 2012	(r244713)
@@ -218,6 +218,7 @@
 #define LENOVO_3KN200_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x384e)
 #define LENOVO_B450_SUBVENDOR HDA_MODEL_CONSTRUCT(LENOVO, 0x3a0d)
 #define LENOVO_TCA55_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x1015)
+#define LENOVO_X300_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
 #define LENOVO_ALL_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0xffff)
 
 /* Samsung */

From owner-svn-src-stable@FreeBSD.ORG  Thu Dec 27 21:43:22 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 5137EF3B;
 Thu, 27 Dec 2012 21:43:22 +0000 (UTC)
 (envelope-from adrian.chadd@gmail.com)
Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53])
 by mx1.freebsd.org (Postfix) with ESMTP id 38DB98FC0A;
 Thu, 27 Dec 2012 21:43:20 +0000 (UTC)
Received: by mail-wg0-f53.google.com with SMTP id ei8so4622367wgb.20
 for <multiple recipients>; Thu, 27 Dec 2012 13:43:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:cc:content-type;
 bh=yMvDWNQtodhZfjgGOyY1edTFwe1Nrm89s4lRmB8KZEs=;
 b=Kq9bHVjpEDSS2SbcQJYIVCOJY6nV1MkyCMhWjfuFPtZAk1mpwGw86f2Ru/akcXnMtY
 EmkMG3Tn016hREJxWbUZE98y2i/iWYlcctTz8P3lOw8Qf6qYy4zFk6mx+/5yHnMZf0KJ
 tkWIJJsX+4eBaXI14bVnIqZwhGQDB60EN50zwOTQmmxKuOgrkyZT0cR2wJ3JxqomxfcY
 32XcUcKEicrNeBzexdxNp3AKJrqb+i9xWXMrJaJJvZTatAH5/GOQipzPbLbPcRLwDPe9
 aLwf13HTR/z1YGv4tRUAGbHl0jJYIj9xBQXW4b/4ti0vTWNzMfiZjw3hXIf1LkXD7TkH
 E9EQ==
MIME-Version: 1.0
Received: by 10.194.93.40 with SMTP id cr8mr51131967wjb.16.1356644289074; Thu,
 27 Dec 2012 13:38:09 -0800 (PST)
Sender: adrian.chadd@gmail.com
Received: by 10.217.57.9 with HTTP; Thu, 27 Dec 2012 13:38:09 -0800 (PST)
In-Reply-To: <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
Date: Thu, 27 Dec 2012 13:38:09 -0800
X-Google-Sender-Auth: D1e-lmgVjpW2V1T8JsNJusRzey0
Message-ID: <CAJ-Vmokm6t3smLTONLOSN+dfm50LY4AdqgCXeh8S8aRZDWTjNA@mail.gmail.com>
Subject: Re: svn commit: r244663 - stable/9
From: Adrian Chadd <adrian@freebsd.org>
To: Robert Watson <rwatson@freebsd.org>
Content-Type: text/plain; charset=ISO-8859-1
Cc: src-committers@freebsd.org, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, Alfred Perlstein <bright@mu.org>,
 svn-src-stable-9@freebsd.org, Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 27 Dec 2012 21:43:22 -0000

It's an interesting discussion to have (after the new year, of course.)

I understand that we sometimes have to change ABIs because we can't
fix problems otherwise. However, I don't recall seeing much/any
discussion about this. If it appeared on a list that I didn't spot
then cool. But any kind of ABI change in a stable branch deserves a
little more discussion before its done.

The reason ath(4) 802.11n support isn't in -9 is because of the ABI
changes I'd have to do to net80211 (at least) before I could put it
in, and I want to make sure all of my changes are in place before I do
(hopefully one, maybe two) large-scale changes.



Adrian

From owner-svn-src-stable@FreeBSD.ORG  Fri Dec 28 10:58:04 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 701179B0;
 Fri, 28 Dec 2012 10:58:04 +0000 (UTC) (envelope-from ume@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 548388FC0A;
 Fri, 28 Dec 2012 10:58:04 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBSAw4NY009597;
 Fri, 28 Dec 2012 10:58:04 GMT (envelope-from ume@svn.freebsd.org)
Received: (from ume@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBSAw4PZ009596;
 Fri, 28 Dec 2012 10:58:04 GMT (envelope-from ume@svn.freebsd.org)
Message-Id: <201212281058.qBSAw4PZ009596@svn.freebsd.org>
From: Hajimu UMEMOTO <ume@FreeBSD.org>
Date: Fri, 28 Dec 2012 10:58:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244771 - stable/9/etc/mtree
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 28 Dec 2012 10:58:04 -0000

Author: ume
Date: Fri Dec 28 10:58:03 2012
New Revision: 244771
URL: http://svnweb.freebsd.org/changeset/base/244771

Log:
  MFC r244770: Fix location of /var/audit/dist and /var/audit/remote.
  Note that those who did installworld after r244398 should remove
  wrongly created /var/dist and /var/remote.
  
  Reviewed by:	pjd

Modified:
  stable/9/etc/mtree/BSD.var.dist
Directory Properties:
  stable/9/etc/   (props changed)

Modified: stable/9/etc/mtree/BSD.var.dist
==============================================================================
--- stable/9/etc/mtree/BSD.var.dist	Fri Dec 28 10:42:01 2012	(r244770)
+++ stable/9/etc/mtree/BSD.var.dist	Fri Dec 28 10:58:03 2012	(r244771)
@@ -18,11 +18,11 @@
 /set mode=0750
 /set gname=audit
     audit
-    ..
         dist            uname=auditdistd gname=audit mode=0770
         ..
         remote          uname=auditdistd gname=wheel mode=0700
         ..
+    ..
 /set gname=wheel
     backups
     ..

From owner-svn-src-stable@FreeBSD.ORG  Fri Dec 28 14:06:50 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id F26882B2;
 Fri, 28 Dec 2012 14:06:49 +0000 (UTC)
 (envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D57D58FC08;
 Fri, 28 Dec 2012 14:06:49 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBSE6nQ1038454;
 Fri, 28 Dec 2012 14:06:49 GMT
 (envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBSE6nQ0038453;
 Fri, 28 Dec 2012 14:06:49 GMT
 (envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201212281406.qBSE6nQ0038453@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Fri, 28 Dec 2012 14:06:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244772 - stable/9/sys/kern
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 28 Dec 2012 14:06:50 -0000

Author: rmacklem
Date: Fri Dec 28 14:06:49 2012
New Revision: 244772
URL: http://svnweb.freebsd.org/changeset/base/244772

Log:
  MFC: r244226
  The group list for a non-default export entry (a host/subnet one)
  was being copied from the wrong place. This patch fixes that.
  This could cause access failures for mapped users, when the group
  permissions were needed.
  
  PR:		147998
  Submitted by:	Christopher Key (cjk32@cam.ac.uk)

Modified:
  stable/9/sys/kern/vfs_export.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_export.c
==============================================================================
--- stable/9/sys/kern/vfs_export.c	Fri Dec 28 10:58:03 2012	(r244771)
+++ stable/9/sys/kern/vfs_export.c	Fri Dec 28 14:06:49 2012	(r244772)
@@ -208,7 +208,7 @@ vfs_hang_addrlist(struct mount *mp, stru
 	np->netc_anon = crget();
 	np->netc_anon->cr_uid = argp->ex_anon.cr_uid;
 	crsetgroups(np->netc_anon, argp->ex_anon.cr_ngroups,
-	    np->netc_anon->cr_groups);
+	    argp->ex_anon.cr_groups);
 	np->netc_anon->cr_prison = &prison0;
 	prison_hold(np->netc_anon->cr_prison);
 	np->netc_numsecflavors = argp->ex_numsecflavors;

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 02:13:32 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 1228ACA;
 Sat, 29 Dec 2012 02:13:32 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id EAB778FC08;
 Sat, 29 Dec 2012 02:13:31 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBT2DVob051089;
 Sat, 29 Dec 2012 02:13:31 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBT2DVQE051088;
 Sat, 29 Dec 2012 02:13:31 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212290213.qBT2DVQE051088@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 29 Dec 2012 02:13:31 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244806 - stable/9/sys/kern
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 02:13:32 -0000

Author: kib
Date: Sat Dec 29 02:13:31 2012
New Revision: 244806
URL: http://svnweb.freebsd.org/changeset/base/244806

Log:
  MFC r244237:
  Remove a special case for XEN.

Modified:
  stable/9/sys/kern/kern_fork.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/kern_fork.c
==============================================================================
--- stable/9/sys/kern/kern_fork.c	Sat Dec 29 02:10:55 2012	(r244805)
+++ stable/9/sys/kern/kern_fork.c	Sat Dec 29 02:13:31 2012	(r244806)
@@ -150,11 +150,7 @@ sys_vfork(struct thread *td, struct vfor
 	int error, flags;
 	struct proc *p2;
 
-#ifdef XEN
-	flags = RFFDG | RFPROC; /* validate that this is still an issue */
-#else
 	flags = RFFDG | RFPROC | RFPPWAIT | RFMEM;
-#endif		
 	error = fork1(td, flags, 0, &p2, NULL, 0);
 	if (error == 0) {
 		td->td_retval[0] = p2->p_pid;

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 02:36:09 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 3120B5A3;
 Sat, 29 Dec 2012 02:36:09 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 159DB8FC08;
 Sat, 29 Dec 2012 02:36:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBT2a8Kf054674;
 Sat, 29 Dec 2012 02:36:08 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBT2a8rU054673;
 Sat, 29 Dec 2012 02:36:08 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201212290236.qBT2a8rU054673@svn.freebsd.org>
From: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat, 29 Dec 2012 02:36:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244809 - stable/8/sys/kern
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 02:36:09 -0000

Author: kib
Date: Sat Dec 29 02:36:08 2012
New Revision: 244809
URL: http://svnweb.freebsd.org/changeset/base/244809

Log:
  MFC r244237:
  Remove a special case for XEN.

Modified:
  stable/8/sys/kern/kern_fork.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/kern/   (props changed)

Modified: stable/8/sys/kern/kern_fork.c
==============================================================================
--- stable/8/sys/kern/kern_fork.c	Sat Dec 29 02:32:22 2012	(r244808)
+++ stable/8/sys/kern/kern_fork.c	Sat Dec 29 02:36:08 2012	(r244809)
@@ -122,11 +122,7 @@ vfork(td, uap)
 	int error, flags;
 	struct proc *p2;
 
-#ifdef XEN
-	flags = RFFDG | RFPROC; /* validate that this is still an issue */
-#else
 	flags = RFFDG | RFPROC | RFPPWAIT | RFMEM;
-#endif		
 	error = fork1(td, flags, 0, &p2);
 	if (error == 0) {
 		td->td_retval[0] = p2->p_pid;

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 04:16:53 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 32FDBEDA
 for <svn-src-stable@freebsd.org>; Sat, 29 Dec 2012 04:16:53 +0000 (UTC)
 (envelope-from peter@wemm.org)
Received: from mail-vc0-f176.google.com (mail-vc0-f176.google.com
 [209.85.220.176])
 by mx1.freebsd.org (Postfix) with ESMTP id C40E88FC14
 for <svn-src-stable@freebsd.org>; Sat, 29 Dec 2012 04:16:52 +0000 (UTC)
Received: by mail-vc0-f176.google.com with SMTP id fo13so11192640vcb.7
 for <svn-src-stable@freebsd.org>; Fri, 28 Dec 2012 20:16:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wemm.org; s=google;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :cc:content-type;
 bh=Sh1/aevNEsSdqE2sh6DmUt0HHeSm/vfXxow94RQlLWo=;
 b=jV9wLyy8H7nG/J3Uk7hS5/eTRX9YytAnS0/Ysn8DaYPGYgrWGRfnIlJF3krHyFPiFk
 mSfnB2ZAlSAKle0zAmSxIu2hjBUYONRIAaasTWl5y2qgrBS8qz0N/Fw3Fi7Zaupmcsrw
 0xMGSO2kUy7DCTcvw5Ci6KAZvxN2HEoQrJaMY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=google.com; s=20120113;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :cc:content-type:x-gm-message-state;
 bh=Sh1/aevNEsSdqE2sh6DmUt0HHeSm/vfXxow94RQlLWo=;
 b=kY5Uo2cralRaFNY3kApyVvoYYVw3yR2S1VNXojIXYSYkwDT8eo5Qcs/Wndl5tFcnOx
 5e2/9J+Iz4VexlfWzXuKWJXpeMRlKk7vw8kDokEaGJB2S43FVYIUTbwWAhsYokyg/3hY
 LurSgKktGucebfOpOC8PRgdl0hB/B8f11NP9tWIXMV23kxKNWL+iNb8Gf3LKGHC43K/m
 7vEpfzPi4x7M0WFx4bpa4LgzvjpHTkxQLDCTC06qIYgscyI/HIfzNLA7LuEysYh7cpqL
 qEX22ULrdzOPSJYf4hFqFCC30qPxuaQyXRCyRG+bWy8WgO91VFPU36bhvgChqmY+UIVU
 QL/g==
MIME-Version: 1.0
Received: by 10.52.69.201 with SMTP id g9mr46773171vdu.98.1356754611805; Fri,
 28 Dec 2012 20:16:51 -0800 (PST)
Received: by 10.220.205.6 with HTTP; Fri, 28 Dec 2012 20:16:51 -0800 (PST)
In-Reply-To: <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
Date: Fri, 28 Dec 2012 20:16:51 -0800
Message-ID: <CAGE5yCp1oVe74_8wot8rJe5BU9uOHyfLipUN0cFtCC77CLo8hA@mail.gmail.com>
Subject: Re: svn commit: r244663 - stable/9
From: Peter Wemm <peter@wemm.org>
To: Robert Watson <rwatson@freebsd.org>
Content-Type: text/plain; charset=ISO-8859-1
X-Gm-Message-State: ALoCoQlUQdJH9bLoQe13z32H2qMckrBIEa79WCqSwND10y9FoawhY6EsmpGSypYCbrEm7poSQWrS
Cc: Adrian Chadd <adrian@freebsd.org>, src-committers@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-all@freebsd.org,
 Alfred Perlstein <bright@mu.org>, svn-src-stable-9@freebsd.org,
 Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 04:16:53 -0000

On Tue, Dec 25, 2012 at 11:17 AM, Robert Watson <rwatson@freebsd.org> wrote:
> On Tue, 25 Dec 2012, Konstantin Belousov wrote:
>
>> On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
>>>
>>> On 12/24/12 11:24 AM, Adrian Chadd wrote:
>>>>
>>>> ... why'd we break the KBI in a stable branch?
>>>>
>>> I am not sure either.
>>>
>>> I think a single VOP for nullfs (while ugly) would have sufficed.
>>
>> No, it doesn't.
>>
>> Even if it would be sufficient, having a switch right after the vtable
>> call is silly. But, ignoring the sillyness, having a single VOP forces a
>> filesystem, needed to override the single bit of behaviour, to override all
>> behaviours hidden from under the common VOP. Besides the incovenience, it
>> breaks the bypass. This is why I did not went this route in the HEAD commit.
>>
>> Making HEAD and stable diverge for the VOP table is unmaintainable.
>>
>> At least one other change which cannot be covered by the VOP table hacking
>> is the struct vfsops new method.
>>
>> Traditionally (my memory goes back to 6.x branch) we did not maintained
>> VFS KBI stability on the branches.
>
>
> While I would love to have a stable KBI, or even KPI, for VFS, past
> experience suggests that we are not prepared to document one, let alone
> enforce it, and that we frequently experience changes that disrupt both the
> binary and programming interfaces -- often for very good reasons (e.g.,
> fixing critical bugs, improving performance, etc).  And that the notional
> VFS KPI is extremely promiscuous, being made up of not just the obvious VFS
> parts, but also VM parts, etc.

For what its worth, we used to have an extensible VOP_* interface that
didn't have this sort of problem. It was removed in r140165 (back in
2005) and we gained a whole bunch of extra functionality afterwards
including type checking.

-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
bitcoin:188ZjyYLFJiEheQZw4UtU27e2FMLmuRBUE

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 04:43:27 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 1F9FA663;
 Sat, 29 Dec 2012 04:43:27 +0000 (UTC) (envelope-from bright@mu.org)
Received: from elvis.mu.org (elvis.mu.org [192.203.228.196])
 by mx1.freebsd.org (Postfix) with ESMTP id ECEDA8FC12;
 Sat, 29 Dec 2012 04:43:26 +0000 (UTC)
Received: from Alfreds-MacBook-Pro-9.local
 (c-67-180-208-218.hsd1.ca.comcast.net [67.180.208.218])
 by elvis.mu.org (Postfix) with ESMTPSA id 492C11A3C1A;
 Fri, 28 Dec 2012 20:43:26 -0800 (PST)
Message-ID: <50DE74F1.70105@mu.org>
Date: Fri, 28 Dec 2012 20:43:29 -0800
From: Alfred Perlstein <bright@mu.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7;
 rv:17.0) Gecko/17.0 Thunderbird/17.0
MIME-Version: 1.0
To: Peter Wemm <peter@wemm.org>
Subject: Re: svn commit: r244663 - stable/9
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
 <CAGE5yCp1oVe74_8wot8rJe5BU9uOHyfLipUN0cFtCC77CLo8hA@mail.gmail.com>
In-Reply-To: <CAGE5yCp1oVe74_8wot8rJe5BU9uOHyfLipUN0cFtCC77CLo8hA@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: Adrian Chadd <adrian@freebsd.org>, src-committers@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable-9@freebsd.org, Robert Watson <rwatson@freebsd.org>,
 Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 04:43:27 -0000

On 12/28/12 8:16 PM, Peter Wemm wrote:
> On Tue, Dec 25, 2012 at 11:17 AM, Robert Watson <rwatson@freebsd.org> wrote:
>> On Tue, 25 Dec 2012, Konstantin Belousov wrote:
>>
>>> On Mon, Dec 24, 2012 at 12:04:03PM -0800, Alfred Perlstein wrote:
>>>> On 12/24/12 11:24 AM, Adrian Chadd wrote:
>>>>> ... why'd we break the KBI in a stable branch?
>>>>>
>>>> I am not sure either.
>>>>
>>>> I think a single VOP for nullfs (while ugly) would have sufficed.
>>> No, it doesn't.
>>>
>>> Even if it would be sufficient, having a switch right after the vtable
>>> call is silly. But, ignoring the sillyness, having a single VOP forces a
>>> filesystem, needed to override the single bit of behaviour, to override all
>>> behaviours hidden from under the common VOP. Besides the incovenience, it
>>> breaks the bypass. This is why I did not went this route in the HEAD commit.
>>>
>>> Making HEAD and stable diverge for the VOP table is unmaintainable.
>>>
>>> At least one other change which cannot be covered by the VOP table hacking
>>> is the struct vfsops new method.
>>>
>>> Traditionally (my memory goes back to 6.x branch) we did not maintained
>>> VFS KBI stability on the branches.
>>
>> While I would love to have a stable KBI, or even KPI, for VFS, past
>> experience suggests that we are not prepared to document one, let alone
>> enforce it, and that we frequently experience changes that disrupt both the
>> binary and programming interfaces -- often for very good reasons (e.g.,
>> fixing critical bugs, improving performance, etc).  And that the notional
>> VFS KPI is extremely promiscuous, being made up of not just the obvious VFS
>> parts, but also VM parts, etc.
> For what its worth, we used to have an extensible VOP_* interface that
> didn't have this sort of problem. It was removed in r140165 (back in
> 2005) and we gained a whole bunch of extra functionality afterwards
> including type checking.
>
Yes.  Kib and I chatted offline, it seems that the SOP is really "there 
is no guarantee about KPI when talking about VFS" so the headache that 
it would be to write the shim layer and maintain it (particularly 
considering the 9.x release cycle slowness) was not worth it.

In a few days I'm going to blow up the extra entries in VFSOPS and VOPS 
by some 10 entries to hopefully keep us KPI friendly for the next 
release.  I may also introduce a VFS_KPI version number.  Let me know if 
you have any thoughts on that, my thoughts are basically to make it like 
FreeBSD_version, and eventually someone can add macros for VFS klds to 
refuse to load depending on VFS_KPI.

-Alfred

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 06:40:18 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id A244ADA1;
 Sat, 29 Dec 2012 06:40:18 +0000 (UTC)
 (envelope-from adrian.chadd@gmail.com)
Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48])
 by mx1.freebsd.org (Postfix) with ESMTP id 72B628FC14;
 Sat, 29 Dec 2012 06:40:16 +0000 (UTC)
Received: by mail-wg0-f48.google.com with SMTP id dt10so4957560wgb.15
 for <multiple recipients>; Fri, 28 Dec 2012 22:40:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:cc:content-type;
 bh=kZk/x1aY5zUbRqApY5SjG26vmxQPRYVLGTYf3RuR5Zg=;
 b=TNA7uqvmPM3v3s+qVNmq/QeL4FIFu8N+gepf0atRchWClGBnrZT35023yfId9d7VC0
 CcMj0uH4aSeHBKNpwN1k+J2WmgHVQKpO/ZcY5bjV/vvN6ZdErdVJe1pZfcIhSaunS76B
 XaOl6D3BHn83v46GH8UCuLqVIOv8kKx8uEHFpnnniyqaB5J5kfN7+KB7Qrh9jI0G+CcZ
 p5LxDna/ucTw+ZfAqCA5h42lnMprRFzJw/+l+H0UH2GvZ2xg9kcfLi6pwSSaLQIveqof
 ELSxD9wZ0vkmH5cZ1y8OmPEJg+5Xpq9uJ/OQO2sdYBsk9VrwTijzPYgLZfymNwN/ysPn
 afBA==
MIME-Version: 1.0
Received: by 10.180.88.40 with SMTP id bd8mr47040166wib.33.1356763210341; Fri,
 28 Dec 2012 22:40:10 -0800 (PST)
Sender: adrian.chadd@gmail.com
Received: by 10.217.57.9 with HTTP; Fri, 28 Dec 2012 22:40:10 -0800 (PST)
In-Reply-To: <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
Date: Fri, 28 Dec 2012 22:40:10 -0800
X-Google-Sender-Auth: 0YgNeKrEXfnDH1Ss_HenueyU3x4
Message-ID: <CAJ-Vmo=oYfzxwEDYnXotx4b8qvnQTr4ofrLRkwkKH5C9GB0sMg@mail.gmail.com>
Subject: Re: svn commit: r244663 - stable/9
From: Adrian Chadd <adrian@freebsd.org>
To: Robert Watson <rwatson@freebsd.org>
Content-Type: text/plain; charset=ISO-8859-1
Cc: src-committers@freebsd.org, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, Alfred Perlstein <bright@mu.org>,
 svn-src-stable-9@freebsd.org, Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 06:40:18 -0000

On 25 December 2012 11:17, Robert Watson <rwatson@freebsd.org> wrote:

> While I would love to have a stable KBI, or even KPI, for VFS, past
> experience suggests that we are not prepared to document one, let alone
> enforce it, and that we frequently experience changes that disrupt both the
> binary and programming interfaces -- often for very good reasons (e.g.,
> fixing critical bugs, improving performance, etc).  And that the notional
> VFS KPI is extremely promiscuous, being made up of not just the obvious VFS
> parts, but also VM parts, etc.  We've done a bit better with device drivers,
> where the consensus is that we should Try Fairly Hard, but even there we
> have only limited documentation of what even constitutes the KPI and KBI.

> In the end, not all kernel interfaces can be "KPIs" or "KBIs" -- otherwise,
> we could change almost nothing in -STABLE, causing branches to stagnate
> rapidly. If you look at Apple's model (for example), they designate certain
> interfaces as "API" or "KPI" rather than using the terms more casually to
> refer to any interface in userspace or kernel, and we need to take the same
> perspective.  A few years ago, I took a gander through a number of core
> network stack data structures used by device drivers, while trying to help
> resolve how TOE would fit into the network device driver picture, and you
> can see the results here:

There's likely a bunch of companies/users that would love things to
not change during a stable branch and there's likely a bunch of
companies/users that would hate things being immutable during a stable
branch.

There's never been a formal "kernel ABI stuff in stable shouldn't
break" or not, but as far as I was aware, the unofficial method was
"discuss on -stable or -arch to see whether it's worth the break, then
break it if needed, or not-break it and add a dirty hack for that
branch" if not.

This is why things like vimage/vnet were so dirty in the backports, if
you remember. Julian and others made a specific attempt _not_ to break
KBI when backporting the feature.

So, regardless of whether we should or shouldn't break things, a more
thorough discussion would've been nice.



Adrian

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 10:44:59 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 938E3C02;
 Sat, 29 Dec 2012 10:44:59 +0000 (UTC)
 (envelope-from rwatson@freebsd.org)
Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42])
 by mx1.freebsd.org (Postfix) with ESMTP id 5D92E8FC08;
 Sat, 29 Dec 2012 10:44:59 +0000 (UTC)
Received: from [192.168.2.119]
 (host86-129-88-139.range86-129.btcentralplus.com [86.129.88.139])
 by cyrus.watson.org (Postfix) with ESMTPSA id 42E5946B09;
 Sat, 29 Dec 2012 05:44:51 -0500 (EST)
Subject: Re: svn commit: r244663 - stable/9
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain; charset=iso-8859-1
From: "Robert N. M. Watson" <rwatson@freebsd.org>
In-Reply-To: <CAJ-Vmo=oYfzxwEDYnXotx4b8qvnQTr4ofrLRkwkKH5C9GB0sMg@mail.gmail.com>
Date: Sat, 29 Dec 2012 10:44:43 +0000
Content-Transfer-Encoding: quoted-printable
Message-Id: <00E4FFFA-8ADB-4D43-B977-3834C48133E4@freebsd.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
 <CAJ-Vmo=oYfzxwEDYnXotx4b8qvnQTr4ofrLRkwkKH5C9GB0sMg@mail.gmail.com>
To: Adrian Chadd <adrian@freebsd.org>
X-Mailer: Apple Mail (2.1283)
Cc: src-committers@freebsd.org, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, Alfred Perlstein <bright@mu.org>,
 svn-src-stable-9@freebsd.org, Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 10:44:59 -0000


On 29 Dec 2012, at 06:40, Adrian Chadd wrote:

> There's likely a bunch of companies/users that would love things to
> not change during a stable branch and there's likely a bunch of
> companies/users that would hate things being immutable during a stable
> branch.
>=20
> There's never been a formal "kernel ABI stuff in stable shouldn't
> break" or not, but as far as I was aware, the unofficial method was
> "discuss on -stable or -arch to see whether it's worth the break, then
> break it if needed, or not-break it and add a dirty hack for that
> branch" if not.
>=20
> This is why things like vimage/vnet were so dirty in the backports, if
> you remember. Julian and others made a specific attempt _not_ to break
> KBI when backporting the feature.
>=20
> So, regardless of whether we should or shouldn't break things, a more
> thorough discussion would've been nice.

Adrian:

The standing consensus is that we try not to break certain classes of =
device drivers, not that we don't ever change any kernel interfaces. The =
reason is that we don't have a formal definition of "public" and do not =
wish to use the definition "all definitions in all header files" or "all =
symbols ever linked by any module" -- that definition would prevent =
almost any change to the kernel in -STABLE branches at all. The reason =
VIMAGE/MRT/etc had to be done with great caution is that they directly =
affected network device drivers, which are a category of module which we =
have decided we do want to try to support in external binary form. The =
other major category is binary storage drivers.

When we talked to various VFS maintainers, looked at the past change =
history there, and looked at the set of third-party file systems =
(especially, those we could see in ports), the consensus there was that =
it was too difficult to define a stable VFS KPI and KBI for third-party =
modules. In particular, there appear to be at most one or two in ports =
at any given moment, and quick analyses of them suggested that their =
kernel feature dependency footprint was far more than just "vnode =
operations".

KPIs and KBIs have benefits and downsides: we need to consider them as a =
tradeoff space, and not an absolute, and use them where they have =
significant payoff. Especially as we don't have formal tools for =
reasoning about or testing them.

Robert=

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 10:50:04 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id ABB30D84;
 Sat, 29 Dec 2012 10:50:04 +0000 (UTC)
 (envelope-from rwatson@freebsd.org)
Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42])
 by mx1.freebsd.org (Postfix) with ESMTP id 748AD8FC08;
 Sat, 29 Dec 2012 10:50:04 +0000 (UTC)
Received: from [192.168.2.119]
 (host86-129-88-139.range86-129.btcentralplus.com [86.129.88.139])
 by cyrus.watson.org (Postfix) with ESMTPSA id 92B7446B1A;
 Sat, 29 Dec 2012 05:50:02 -0500 (EST)
Subject: Re: svn commit: r244663 - stable/9
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: text/plain; charset=iso-8859-1
From: "Robert N. M. Watson" <rwatson@freebsd.org>
In-Reply-To: <50DE74F1.70105@mu.org>
Date: Sat, 29 Dec 2012 10:49:59 +0000
Content-Transfer-Encoding: quoted-printable
Message-Id: <C256AEF0-E68E-4C15-9A00-3465C89DD51D@freebsd.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
 <CAGE5yCp1oVe74_8wot8rJe5BU9uOHyfLipUN0cFtCC77CLo8hA@mail.gmail.com>
 <50DE74F1.70105@mu.org>
To: Alfred Perlstein <bright@mu.org>
X-Mailer: Apple Mail (2.1283)
Cc: Adrian Chadd <adrian@freebsd.org>, src-committers@freebsd.org,
 Peter Wemm <peter@wemm.org>, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, svn-src-stable-9@freebsd.org,
 Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 10:50:04 -0000


On 29 Dec 2012, at 04:43, Alfred Perlstein wrote:

> Yes.  Kib and I chatted offline, it seems that the SOP is really =
"there is no guarantee about KPI when talking about VFS" so the headache =
that it would be to write the shim layer and maintain it (particularly =
considering the 9.x release cycle slowness) was not worth it.
>=20
> In a few days I'm going to blow up the extra entries in VFSOPS and =
VOPS by some 10 entries to hopefully keep us KPI friendly for the next =
release.  I may also introduce a VFS_KPI version number.  Let me know if =
you have any thoughts on that, my thoughts are basically to make it like =
FreeBSD_version, and eventually someone can add macros for VFS klds to =
refuse to load depending on VFS_KPI.

I don't think stub entries hurt.

But I think a VFS_KPI version number is premature.

Go about this forwards, not backwards:

First, select an existing base system VFS module that you think is a =
reasonable model for feature dependency footprint -- i.e., one that =
doesn't reach into too many ugly things, and "behaves well". Maybe =
ext2fs is a reasonable one to use. Then do a binary feature footprint =
analysis: run "nm" on the module and see what it actually depends on, =
and enumerate those on a wiki page.

That becomes the foundation for the KBI. KPI is more tricky, since it =
will likely include lots of headers it doesn't need, etc, but you can =
start to work back to the KPI from the KBI. Pay particular attention to =
key data structures -- in the network stack, this wasn't just =
network-related structures like ifnet and mbuf, but also all =
newbus-related structures, lock data structures, etc.

FWIW, on the device driver side I think we did the casual analysis based =
on if_em, which we felt would be "typical".

Finally, go to the extant external modules for VFS -- probably limited =
to FUSE (which will not matter soon as FUSE will be in the base soon), =
and OpenAFS ... perhaps one or two others. Do a similar analysis there =
and decide if there are enough external modules that play by the =
proposed KPI and KBI to justify enforcing the rules.

Along the way, do keep asking yourself "is this worth it" -- if, with =
the FUSE import, we're down to one extant open source third-party file =
system, then it probably isn't, to be honest. The tradeoff just falls =
down on the other side. On the other hand, if there are a half-dozen of =
them, and there are lots of companies that have internal modules that =
would observe the KPI /KBI, then it may be worth it.

Robert=

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:10:42 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id F29B0B8F;
 Sat, 29 Dec 2012 12:10:41 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D7A7B8FC0C;
 Sat, 29 Dec 2012 12:10:41 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCAfwr019824;
 Sat, 29 Dec 2012 12:10:41 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCAfFU019822;
 Sat, 29 Dec 2012 12:10:41 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291210.qBTCAfFU019822@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:10:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244813 - stable/9/sys/dev/usb/serial
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:10:42 -0000

Author: hselasky
Date: Sat Dec 29 12:10:41 2012
New Revision: 244813
URL: http://svnweb.freebsd.org/changeset/base/244813

Log:
  MFC r244489:
  Make sure we block recursion on TTY's inwakeup callback
  
  Suggested by: davide

Modified:
  stable/9/sys/dev/usb/serial/usb_serial.c
  stable/9/sys/dev/usb/serial/usb_serial.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/usb/serial/usb_serial.c
==============================================================================
--- stable/9/sys/dev/usb/serial/usb_serial.c	Sat Dec 29 08:26:20 2012	(r244812)
+++ stable/9/sys/dev/usb/serial/usb_serial.c	Sat Dec 29 12:10:41 2012	(r244813)
@@ -797,10 +797,14 @@ ucom_inwakeup(struct tty *tp)
 	DPRINTF("tp=%p\n", tp);
 
 	if (ttydisc_can_bypass(tp) != 0 || 
-	    (sc->sc_flag & UCOM_FLAG_HL_READY) == 0) {
+	    (sc->sc_flag & UCOM_FLAG_HL_READY) == 0 ||
+	    (sc->sc_flag & UCOM_FLAG_INWAKEUP) != 0) {
 		return;
 	}
 
+	/* prevent recursion */
+	sc->sc_flag |= UCOM_FLAG_INWAKEUP;
+
 	pos = sc->sc_jitterbuf_out;
 
 	while (sc->sc_jitterbuf_in != pos) {
@@ -821,6 +825,8 @@ ucom_inwakeup(struct tty *tp)
 	if ((sc->sc_jitterbuf_in == pos) && 
 	    (sc->sc_flag & UCOM_FLAG_RTS_IFLOW))
 		ucom_rts(sc, 0);
+
+	sc->sc_flag &= ~UCOM_FLAG_INWAKEUP;
 }
 
 static int

Modified: stable/9/sys/dev/usb/serial/usb_serial.h
==============================================================================
--- stable/9/sys/dev/usb/serial/usb_serial.h	Sat Dec 29 08:26:20 2012	(r244812)
+++ stable/9/sys/dev/usb/serial/usb_serial.h	Sat Dec 29 12:10:41 2012	(r244813)
@@ -183,6 +183,7 @@ struct ucom_softc {
 #define	UCOM_FLAG_CONSOLE	0x80	/* set if device is a console */
 #define	UCOM_FLAG_WAIT_REFS   0x0100	/* set if we must wait for refs */
 #define	UCOM_FLAG_FREE_UNIT   0x0200	/* set if we must free the unit */
+#define	UCOM_FLAG_INWAKEUP    0x0400	/* set if we are in the tsw_inwakeup callback */
 	uint8_t	sc_lsr;
 	uint8_t	sc_msr;
 	uint8_t	sc_mcr;

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:13:39 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id C4F79D06;
 Sat, 29 Dec 2012 12:13:39 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 8FEB28FC0C;
 Sat, 29 Dec 2012 12:13:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCDdi8020392;
 Sat, 29 Dec 2012 12:13:39 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCDd0v020391;
 Sat, 29 Dec 2012 12:13:39 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291213.qBTCDd0v020391@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:13:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244814 - stable/9/sys/dev/usb/storage
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:13:39 -0000

Author: hselasky
Date: Sat Dec 29 12:13:38 2012
New Revision: 244814
URL: http://svnweb.freebsd.org/changeset/base/244814

Log:
  MFC r244491:
  Add support for throttling UMASS.
  Mostly useful for debugging purposes.

Modified:
  stable/9/sys/dev/usb/storage/umass.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/usb/storage/umass.c
==============================================================================
--- stable/9/sys/dev/usb/storage/umass.c	Sat Dec 29 12:10:41 2012	(r244813)
+++ stable/9/sys/dev/usb/storage/umass.c	Sat Dec 29 12:13:38 2012	(r244814)
@@ -163,12 +163,16 @@ __FBSDID("$FreeBSD$");
 #define	UDMASS_CBI	0x00400000	/* CBI transfers */
 #define	UDMASS_WIRE	(UDMASS_BBB|UDMASS_CBI)
 #define	UDMASS_ALL	0xffff0000	/* all of the above */
-static int umass_debug = 0;
+static int umass_debug;
+static int umass_throttle;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass");
 SYSCTL_INT(_hw_usb_umass, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &umass_debug, 0, "umass debug level");
 TUNABLE_INT("hw.usb.umass.debug", &umass_debug);
+SYSCTL_INT(_hw_usb_umass, OID_AUTO, throttle, CTLFLAG_RW | CTLFLAG_TUN,
+    &umass_throttle, 0, "Forced delay between commands in milliseconds");
+TUNABLE_INT("hw.usb.umass.throttle", &umass_throttle);
 #else
 #define	DIF(...) do { } while (0)
 #define	DPRINTF(...) do { } while (0)
@@ -881,7 +885,7 @@ umass_attach(device_t dev)
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	struct umass_probe_proto temp = umass_probe_proto(dev, uaa);
 	struct usb_interface_descriptor *id;
-	int32_t err;
+	int err;
 
 	/*
 	 * NOTE: the softc struct is cleared in device_set_driver.
@@ -994,6 +998,24 @@ umass_attach(device_t dev)
 		    "transfers, %s\n", usbd_errstr(err));
 		goto detach;
 	}
+#ifdef USB_DEBUG
+	if (umass_throttle > 0) {
+		uint8_t x;
+		int iv;
+
+		iv = umass_throttle;
+
+		if (iv < 1)
+			iv = 1;
+		else if (iv > 8000)
+			iv = 8000;
+
+		for (x = 0; x != UMASS_T_MAX; x++) {
+			if (sc->sc_xfer[x] != NULL)
+				usbd_xfer_set_interval(sc->sc_xfer[x], iv);
+		}
+	}
+#endif
 	sc->sc_transform =
 	    (sc->sc_proto & UMASS_PROTO_SCSI) ? &umass_scsi_transform :
 	    (sc->sc_proto & UMASS_PROTO_UFI) ? &umass_ufi_transform :

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:16:59 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 5AA66F8F;
 Sat, 29 Dec 2012 12:16:59 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 3D86E8FC0A;
 Sat, 29 Dec 2012 12:16:59 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCGxgi020878;
 Sat, 29 Dec 2012 12:16:59 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCGxdt020877;
 Sat, 29 Dec 2012 12:16:59 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291216.qBTCGxdt020877@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:16:59 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244815 - stable/9/sys/dev/sound/usb
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:16:59 -0000

Author: hselasky
Date: Sat Dec 29 12:16:58 2012
New Revision: 244815
URL: http://svnweb.freebsd.org/changeset/base/244815

Log:
  MFC r244567:
  
  Reduce stack usage in the USB audio driver by moving some large stack
  elements to the USB audio softc structure.

Modified:
  stable/9/sys/dev/sound/usb/uaudio.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/sound/usb/uaudio.c
==============================================================================
--- stable/9/sys/dev/sound/usb/uaudio.c	Sat Dec 29 12:13:38 2012	(r244814)
+++ stable/9/sys/dev/sound/usb/uaudio.c	Sat Dec 29 12:16:58 2012	(r244815)
@@ -122,6 +122,7 @@ SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, def
 #define	MAKE_WORD(h,l) (((h) << 8) | (l))
 #define	BIT_TEST(bm,bno) (((bm)[(bno) / 8] >> (7 - ((bno) % 8))) & 1)
 #define	UAUDIO_MAX_CHAN(x) (x)
+#define	MIX(sc) ((sc)->sc_mixer_node)
 
 union uaudio_asid {
 	const struct usb_audio_streaming_interface_descriptor *v1;
@@ -283,6 +284,7 @@ struct uaudio_softc {
 	struct uaudio_chan sc_play_chan;
 	struct umidi_chan sc_midi_chan;
 	struct uaudio_search_result sc_mixer_clocks;
+	struct uaudio_mixer_node sc_mixer_node;
 
 	struct mtx *sc_mixer_lock;
 	struct usb_device *sc_udev;
@@ -2325,149 +2327,148 @@ uaudio_mixer_register_sysctl(struct uaud
 static void
 uaudio_mixer_controls_create_ftu(struct uaudio_softc *sc)
 {
-	struct uaudio_mixer_node mix;
 	int chx;
 	int chy;
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(8, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_UNSIGNED_16;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect";
-	mix.minval = 0;
-	mix.maxval = 7;
-	mix.mul = 7;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Room1,2,3,Hall1,2,Plate,Delay,Echo", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(8, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_UNSIGNED_16;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect";
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 7;
+	MIX(sc).mul = 7;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Room1,2,3,Hall1,2,Plate,Delay,Echo", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
 
 	for (chx = 0; chx != 8; chx++) {
 		for (chy = 0; chy != 8; chy++) {
 
-			mix.wValue[0] = MAKE_WORD(chx + 1, chy + 1);
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mix_rec";
-			mix.nchan = 1;
-			mix.update[0] = 1;
-			mix.val_default = 0;
-			snprintf(mix.desc, sizeof(mix.desc),
+			MIX(sc).wValue[0] = MAKE_WORD(chx + 1, chy + 1);
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mix_rec";
+			MIX(sc).nchan = 1;
+			MIX(sc).update[0] = 1;
+			MIX(sc).val_default = 0;
+			snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 			    "AIn%d - Out%d Record Volume", chy + 1, chx + 1);
 
-			uaudio_mixer_add_ctl(sc, &mix);
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 
-			mix.wValue[0] = MAKE_WORD(chx + 1, chy + 1 + 8);
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mix_play";
-			mix.nchan = 1;
-			mix.update[0] = 1;
-			mix.val_default = (chx == chy) ? 2 : 0;
-			snprintf(mix.desc, sizeof(mix.desc),
+			MIX(sc).wValue[0] = MAKE_WORD(chx + 1, chy + 1 + 8);
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mix_play";
+			MIX(sc).nchan = 1;
+			MIX(sc).update[0] = 1;
+			MIX(sc).val_default = (chx == chy) ? 2 : 0;
+			snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 			    "DIn%d - Out%d Playback Volume", chy + 1, chx + 1);
 
-			uaudio_mixer_add_ctl(sc, &mix);
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 	}
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(2, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_8;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_vol";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f;
-	mix.mul = 0x7f;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Volume", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
-
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(3, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_16;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_dur";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f00;
-	mix.mul = 0x7f00;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Duration", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
-
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(4, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_8;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_fb";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f;
-	mix.mul = 0x7f;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Feedback Volume", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(2, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_8;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_vol";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f;
+	MIX(sc).mul = 0x7f;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Volume", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
+
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(3, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_16;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_dur";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f00;
+	MIX(sc).mul = 0x7f00;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Duration", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
+
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(4, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_8;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_fb";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f;
+	MIX(sc).mul = 0x7f;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Feedback Volume", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(7, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(7, sc->sc_mixer_iface_no);
 	for (chy = 0; chy != 4; chy++) {
 
-		mix.wValue[0] = MAKE_WORD(7, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_ret";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(7, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_ret";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Return %d Volume", chy + 1);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
 
 	for (chy = 0; chy != 8; chy++) {
-		mix.wValue[0] = MAKE_WORD(9, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_send";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(9, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_send";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Send AIn%d Volume", chy + 1);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 
-		mix.wValue[0] = MAKE_WORD(9, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_send";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(9, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_send";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Send DIn%d Volume", chy + 1 + 8);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -2593,8 +2594,6 @@ static void
 uaudio_mixer_add_mixer(struct uaudio_softc *sc,
     const struct uaudio_terminal_node *iot, int id)
 {
-	struct uaudio_mixer_node mix;
-
 	const struct usb_audio_mixer_unit_0 *d0 = iot[id].u.mu_v1;
 	const struct usb_audio_mixer_unit_1 *d1;
 
@@ -2628,11 +2627,11 @@ uaudio_mixer_add_mixer(struct uaudio_sof
 
 	DPRINTFN(3, "ichs=%d ochs=%d\n", ichs, ochs);
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_SIGNED_16;
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_SIGNED_16;
 
 	if (uaudio_mixer_verify_desc(d0, ((ichs * ochs) + 7) / 8) == NULL)
 		return;
@@ -2660,11 +2659,11 @@ uaudio_mixer_add_mixer(struct uaudio_sof
 				for (o = 0; o < ochs; o++) {
 					bno = ((p + c) * ochs) + o;
 					if (BIT_TEST(d1->bmControls, bno))
-						mix.wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
+						MIX(sc).wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
 				}
 			}
-			mix.nchan = chs;
-			uaudio_mixer_add_ctl(sc, &mix);
+			MIX(sc).nchan = chs;
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 		p += chs;
 	}
@@ -2674,8 +2673,6 @@ static void
 uaudio20_mixer_add_mixer(struct uaudio_softc *sc,
     const struct uaudio_terminal_node *iot, int id)
 {
-	struct uaudio_mixer_node mix;
-
 	const struct usb_audio20_mixer_unit_0 *d0 = iot[id].u.mu_v2;
 	const struct usb_audio20_mixer_unit_1 *d1;
 
@@ -2709,11 +2706,11 @@ uaudio20_mixer_add_mixer(struct uaudio_s
 
 	DPRINTFN(3, "ichs=%d ochs=%d\n", ichs, ochs);
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	uaudio20_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_SIGNED_16;
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	uaudio20_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_SIGNED_16;
 
 	if (uaudio20_mixer_verify_desc(d0, ((ichs * ochs) + 7) / 8) == NULL)
 		return;
@@ -2741,11 +2738,11 @@ uaudio20_mixer_add_mixer(struct uaudio_s
 				for (o = 0; o < ochs; o++) {
 					bno = ((p + c) * ochs) + o;
 					if (BIT_TEST(d1->bmControls, bno))
-						mix.wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
+						MIX(sc).wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
 				}
 			}
-			mix.nchan = chs;
-			uaudio_mixer_add_ctl(sc, &mix);
+			MIX(sc).nchan = chs;
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 		p += chs;
 	}
@@ -2756,7 +2753,6 @@ uaudio_mixer_add_selector(struct uaudio_
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio_selector_unit *d = iot[id].u.su_v1;
-	struct uaudio_mixer_node mix;
 	uint16_t i;
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
@@ -2765,41 +2761,41 @@ uaudio_mixer_add_selector(struct uaudio_
 	if (d->bNrInPins == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(0, 0);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.nchan = 1;
-	mix.type = MIX_SELECTOR;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.minval = 1;
-	mix.maxval = d->bNrInPins;
-	mix.name = "selector";
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(0, 0);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).nchan = 1;
+	MIX(sc).type = MIX_SELECTOR;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).minval = 1;
+	MIX(sc).maxval = d->bNrInPins;
+	MIX(sc).name = "selector";
 
 	i = d->baSourceId[d->bNrInPins];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
-	if (mix.maxval > MAX_SELECTOR_INPUT_PIN) {
-		mix.maxval = MAX_SELECTOR_INPUT_PIN;
+	if (MIX(sc).maxval > MAX_SELECTOR_INPUT_PIN) {
+		MIX(sc).maxval = MAX_SELECTOR_INPUT_PIN;
 	}
-	mix.mul = (mix.maxval - mix.minval);
+	MIX(sc).mul = (MIX(sc).maxval - MIX(sc).minval);
 	for (i = 0; i < MAX_SELECTOR_INPUT_PIN; i++) {
-		mix.slctrtype[i] = SOUND_MIXER_NRDEVICES;
+		MIX(sc).slctrtype[i] = SOUND_MIXER_NRDEVICES;
 	}
 
-	for (i = 0; i < mix.maxval; i++) {
-		mix.slctrtype[i] = uaudio_mixer_feature_name(
-		    &iot[d->baSourceId[i]], &mix);
+	for (i = 0; i < MIX(sc).maxval; i++) {
+		MIX(sc).slctrtype[i] = uaudio_mixer_feature_name(
+		    &iot[d->baSourceId[i]], &MIX(sc));
 	}
 
-	mix.class = 0;			/* not used */
+	MIX(sc).class = 0;			/* not used */
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static void
@@ -2807,7 +2803,6 @@ uaudio20_mixer_add_selector(struct uaudi
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio20_selector_unit *d = iot[id].u.su_v2;
-	struct uaudio_mixer_node mix;
 	uint16_t i;
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
@@ -2816,40 +2811,40 @@ uaudio20_mixer_add_selector(struct uaudi
 	if (d->bNrInPins == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(0, 0);
-	uaudio20_mixer_determine_class(&iot[id], &mix);
-	mix.nchan = 1;
-	mix.type = MIX_SELECTOR;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.minval = 1;
-	mix.maxval = d->bNrInPins;
-	mix.name = "selector";
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(0, 0);
+	uaudio20_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).nchan = 1;
+	MIX(sc).type = MIX_SELECTOR;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).minval = 1;
+	MIX(sc).maxval = d->bNrInPins;
+	MIX(sc).name = "selector";
 
 	i = d->baSourceId[d->bNrInPins];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
-	if (mix.maxval > MAX_SELECTOR_INPUT_PIN)
-		mix.maxval = MAX_SELECTOR_INPUT_PIN;
+	if (MIX(sc).maxval > MAX_SELECTOR_INPUT_PIN)
+		MIX(sc).maxval = MAX_SELECTOR_INPUT_PIN;
 
-	mix.mul = (mix.maxval - mix.minval);
+	MIX(sc).mul = (MIX(sc).maxval - MIX(sc).minval);
 	for (i = 0; i < MAX_SELECTOR_INPUT_PIN; i++)
-		mix.slctrtype[i] = SOUND_MIXER_NRDEVICES;
+		MIX(sc).slctrtype[i] = SOUND_MIXER_NRDEVICES;
 
-	for (i = 0; i < mix.maxval; i++) {
-		mix.slctrtype[i] = uaudio20_mixer_feature_name(
-		    &iot[d->baSourceId[i]], &mix);
+	for (i = 0; i < MIX(sc).maxval; i++) {
+		MIX(sc).slctrtype[i] = uaudio20_mixer_feature_name(
+		    &iot[d->baSourceId[i]], &MIX(sc));
 	}
 
-	mix.class = 0;			/* not used */
+	MIX(sc).class = 0;			/* not used */
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static uint32_t
@@ -2879,7 +2874,6 @@ uaudio_mixer_add_feature(struct uaudio_s
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio_feature_unit *d = iot[id].u.fu_v1;
-	struct uaudio_mixer_node mix;
 	uint32_t fumask;
 	uint32_t mmask;
 	uint32_t cmask;
@@ -2892,7 +2886,7 @@ uaudio_mixer_add_feature(struct uaudio_s
 	if (d->bControlSize == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	nchan = (d->bLength - 7) / d->bControlSize;
 	mmask = uaudio_mixer_feature_get_bmaControls(d, 0);
@@ -2913,13 +2907,13 @@ uaudio_mixer_add_feature(struct uaudio_s
 	if (nchan > MIX_MAX_CHAN) {
 		nchan = MIX_MAX_CHAN;
 	}
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
 
 	i = d->bmaControls[d->bControlSize];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
 	for (ctl = 1; ctl <= LOUDNESS_CONTROL; ctl++) {
@@ -2930,87 +2924,87 @@ uaudio_mixer_add_feature(struct uaudio_s
 		    ctl, fumask);
 
 		if (mmask & fumask) {
-			mix.nchan = 1;
-			mix.wValue[0] = MAKE_WORD(ctl, 0);
+			MIX(sc).nchan = 1;
+			MIX(sc).wValue[0] = MAKE_WORD(ctl, 0);
 		} else if (cmask & fumask) {
-			mix.nchan = nchan - 1;
+			MIX(sc).nchan = nchan - 1;
 			for (i = 1; i < nchan; i++) {
 				if (uaudio_mixer_feature_get_bmaControls(d, i) & fumask)
-					mix.wValue[i - 1] = MAKE_WORD(ctl, i);
+					MIX(sc).wValue[i - 1] = MAKE_WORD(ctl, i);
 				else
-					mix.wValue[i - 1] = -1;
+					MIX(sc).wValue[i - 1] = -1;
 			}
 		} else {
 			continue;
 		}
 
-		mixernumber = uaudio_mixer_feature_name(&iot[id], &mix);
+		mixernumber = uaudio_mixer_feature_name(&iot[id], &MIX(sc));
 
 		switch (ctl) {
 		case MUTE_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mute";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mute";
 			break;
 
 		case VOLUME_CONTROL:
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "vol";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "vol";
 			break;
 
 		case BASS_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_BASS;
-			mix.name = "bass";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_BASS;
+			MIX(sc).name = "bass";
 			break;
 
 		case MID_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "mid";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "mid";
 			break;
 
 		case TREBLE_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_TREBLE;
-			mix.name = "treble";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_TREBLE;
+			MIX(sc).name = "treble";
 			break;
 
 		case GRAPHIC_EQUALIZER_CONTROL:
 			continue;	/* XXX don't add anything */
 
 		case AGC_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "agc";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "agc";
 			break;
 
 		case DELAY_CONTROL:
-			mix.type = MIX_UNSIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "delay";
+			MIX(sc).type = MIX_UNSIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "delay";
 			break;
 
 		case BASS_BOOST_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "boost";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "boost";
 			break;
 
 		case LOUDNESS_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
-			mix.name = "loudness";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
+			MIX(sc).name = "loudness";
 			break;
 
 		default:
-			mix.type = MIX_UNKNOWN;
+			MIX(sc).type = MIX_UNKNOWN;
 			break;
 		}
 
-		if (mix.type != MIX_UNKNOWN)
-			uaudio_mixer_add_ctl(sc, &mix);
+		if (MIX(sc).type != MIX_UNKNOWN)
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -3019,7 +3013,6 @@ uaudio20_mixer_add_feature(struct uaudio
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio20_feature_unit *d = iot[id].u.fu_v2;
-	struct uaudio_mixer_node mix;
 	uint32_t ctl;
 	uint32_t mmask;
 	uint32_t cmask;
@@ -3032,7 +3025,7 @@ uaudio20_mixer_add_feature(struct uaudio
 	if (UGETDW(d->bmaControls[0]) == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	nchan = (d->bLength - 6) / 4;
 	mmask = UGETDW(d->bmaControls[0]);
@@ -3049,84 +3042,84 @@ uaudio20_mixer_add_feature(struct uaudio
 	if (nchan > MIX_MAX_CHAN)
 		nchan = MIX_MAX_CHAN;
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
 
 	i = d->bmaControls[nchan][0];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
 	for (ctl = 3; ctl != 0; ctl <<= 2) {
 
-		mixernumber = uaudio20_mixer_feature_name(&iot[id], &mix);
+		mixernumber = uaudio20_mixer_feature_name(&iot[id], &MIX(sc));
 
 		switch (ctl) {
 		case (3 << 0):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mute";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mute";
 			what = MUTE_CONTROL;
 			break;
 		case (3 << 2): 
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "vol";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "vol";
 			what = VOLUME_CONTROL;
 			break;
 		case (3 << 4):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_BASS;
-			mix.name = "bass";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_BASS;
+			MIX(sc).name = "bass";
 			what = BASS_CONTROL;
 			break;
 		case (3 << 6):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "mid";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "mid";
 			what = MID_CONTROL;
 			break;
 		case (3 << 8):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_TREBLE;
-			mix.name = "treble";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_TREBLE;
+			MIX(sc).name = "treble";
 			what = TREBLE_CONTROL;
 			break;
 		case (3 << 12):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "agc";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "agc";
 			what = AGC_CONTROL;
 			break;
 		case (3 << 14):
-			mix.type = MIX_UNSIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "delay";
+			MIX(sc).type = MIX_UNSIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "delay";
 			what = DELAY_CONTROL;
 			break;
 		case (3 << 16):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "boost";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "boost";
 			what = BASS_BOOST_CONTROL;
 			break;
 		case (3 << 18):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
-			mix.name = "loudness";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
+			MIX(sc).name = "loudness";
 			what = LOUDNESS_CONTROL;
 			break;
 		case (3 << 20):
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "igain";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "igain";
 			what = INPUT_GAIN_CONTROL;
 			break;
 		case (3 << 22):
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "igainpad";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "igainpad";
 			what = INPUT_GAIN_PAD_CONTROL;
 			break;
 		default:
@@ -3134,22 +3127,22 @@ uaudio20_mixer_add_feature(struct uaudio
 		}
 
 		if ((mmask & ctl) == ctl) {
-			mix.nchan = 1;
-			mix.wValue[0] = MAKE_WORD(what, 0);
+			MIX(sc).nchan = 1;
+			MIX(sc).wValue[0] = MAKE_WORD(what, 0);
 		} else if ((cmask & ctl) == ctl) {
-			mix.nchan = nchan - 1;
+			MIX(sc).nchan = nchan - 1;
 			for (i = 1; i < nchan; i++) {
 				if ((UGETDW(d->bmaControls[i]) & ctl) == ctl)
-					mix.wValue[i - 1] = MAKE_WORD(what, i);
+					MIX(sc).wValue[i - 1] = MAKE_WORD(what, i);
 				else
-					mix.wValue[i - 1] = -1;
+					MIX(sc).wValue[i - 1] = -1;
 			}
 		} else {
 			continue;
 		}
 
-		if (mix.type != MIX_UNKNOWN)
-			uaudio_mixer_add_ctl(sc, &mix);
+		if (MIX(sc).type != MIX_UNKNOWN)
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -3159,10 +3152,9 @@ uaudio_mixer_add_processing_updown(struc
 {
 	const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu_v1;
 	const struct usb_audio_processing_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 	const struct usb_audio_processing_unit_updown *ud =
-	(const void *)(d1->bmControls + d1->bControlSize);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d1->bmControls + d1->bControlSize);
 	uint8_t i;
 
 	if (uaudio_mixer_verify_desc(d0, sizeof(*ud)) == NULL) {
@@ -3179,20 +3171,20 @@ uaudio_mixer_add_processing_updown(struc
 		DPRINTF("no mode select\n");
 		return;
 	}
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	mix.nchan = 1;
-	mix.wValue[0] = MAKE_WORD(UD_MODE_SELECT_CONTROL, 0);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_ON_OFF;		/* XXX */
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).nchan = 1;
+	MIX(sc).wValue[0] = MAKE_WORD(UD_MODE_SELECT_CONTROL, 0);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_ON_OFF;		/* XXX */
 
 	for (i = 0; i < ud->bNrModes; i++) {
 		DPRINTFN(3, "i=%d bm=0x%x\n", i, UGETW(ud->waModes[i]));
 		/* XXX */
 	}
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static void
@@ -3201,11 +3193,10 @@ uaudio_mixer_add_processing(struct uaudi
 {
 	const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu_v1;
 	const struct usb_audio_processing_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 	uint16_t ptype;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	ptype = UGETW(d0->wProcessType);
 
@@ -3216,12 +3207,12 @@ uaudio_mixer_add_processing(struct uaudi
 		return;
 	}
 	if (d1->bmControls[0] & UA_PROC_ENABLE_MASK) {
-		mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-		mix.nchan = 1;
-		mix.wValue[0] = MAKE_WORD(XX_ENABLE_CONTROL, 0);
-		uaudio_mixer_determine_class(&iot[id], &mix);
-		mix.type = MIX_ON_OFF;
-		uaudio_mixer_add_ctl(sc, &mix);
+		MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+		MIX(sc).nchan = 1;
+		MIX(sc).wValue[0] = MAKE_WORD(XX_ENABLE_CONTROL, 0);
+		uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+		MIX(sc).type = MIX_ON_OFF;
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 	switch (ptype) {
 	case UPDOWNMIX_PROCESS:
@@ -3246,8 +3237,7 @@ uaudio_mixer_add_extension(struct uaudio
 {
 	const struct usb_audio_extension_unit_0 *d0 = iot[id].u.eu_v1;
 	const struct usb_audio_extension_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
 	    d0->bUnitId, d0->bNrInPins);
@@ -3260,15 +3250,15 @@ uaudio_mixer_add_extension(struct uaudio
 	}
 	if (d1->bmControls[0] & UA_EXT_ENABLE_MASK) {
 
-		memset(&mix, 0, sizeof(mix));
+		memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-		mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-		mix.nchan = 1;
-		mix.wValue[0] = MAKE_WORD(UA_EXT_ENABLE, 0);
-		uaudio_mixer_determine_class(&iot[id], &mix);
-		mix.type = MIX_ON_OFF;
+		MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+		MIX(sc).nchan = 1;
+		MIX(sc).wValue[0] = MAKE_WORD(UA_EXT_ENABLE, 0);
+		uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+		MIX(sc).type = MIX_ON_OFF;
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:20:49 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id A4EA32CA;
 Sat, 29 Dec 2012 12:20:49 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 87B3F8FC12;
 Sat, 29 Dec 2012 12:20:49 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCKnce021606;
 Sat, 29 Dec 2012 12:20:49 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCKnFV021605;
 Sat, 29 Dec 2012 12:20:49 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291220.qBTCKnFV021605@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:20:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244816 - stable/8/sys/dev/sound/usb
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:20:49 -0000

Author: hselasky
Date: Sat Dec 29 12:20:49 2012
New Revision: 244816
URL: http://svnweb.freebsd.org/changeset/base/244816

Log:
  MFC r244567:
  
  Reduce stack usage in the USB audio driver by moving some large stack
  elements to the USB audio softc structure.

Modified:
  stable/8/sys/dev/sound/usb/uaudio.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/sound/   (props changed)
  stable/8/sys/dev/sound/usb/   (props changed)

Modified: stable/8/sys/dev/sound/usb/uaudio.c
==============================================================================
--- stable/8/sys/dev/sound/usb/uaudio.c	Sat Dec 29 12:16:58 2012	(r244815)
+++ stable/8/sys/dev/sound/usb/uaudio.c	Sat Dec 29 12:20:49 2012	(r244816)
@@ -122,6 +122,7 @@ SYSCTL_INT(_hw_usb_uaudio, OID_AUTO, def
 #define	MAKE_WORD(h,l) (((h) << 8) | (l))
 #define	BIT_TEST(bm,bno) (((bm)[(bno) / 8] >> (7 - ((bno) % 8))) & 1)
 #define	UAUDIO_MAX_CHAN(x) (x)
+#define	MIX(sc) ((sc)->sc_mixer_node)
 
 union uaudio_asid {
 	const struct usb_audio_streaming_interface_descriptor *v1;
@@ -283,6 +284,7 @@ struct uaudio_softc {
 	struct uaudio_chan sc_play_chan;
 	struct umidi_chan sc_midi_chan;
 	struct uaudio_search_result sc_mixer_clocks;
+	struct uaudio_mixer_node sc_mixer_node;
 
 	struct mtx *sc_mixer_lock;
 	struct usb_device *sc_udev;
@@ -2325,149 +2327,148 @@ uaudio_mixer_register_sysctl(struct uaud
 static void
 uaudio_mixer_controls_create_ftu(struct uaudio_softc *sc)
 {
-	struct uaudio_mixer_node mix;
 	int chx;
 	int chy;
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(8, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_UNSIGNED_16;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect";
-	mix.minval = 0;
-	mix.maxval = 7;
-	mix.mul = 7;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Room1,2,3,Hall1,2,Plate,Delay,Echo", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(8, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_UNSIGNED_16;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect";
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 7;
+	MIX(sc).mul = 7;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Room1,2,3,Hall1,2,Plate,Delay,Echo", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
 
 	for (chx = 0; chx != 8; chx++) {
 		for (chy = 0; chy != 8; chy++) {
 
-			mix.wValue[0] = MAKE_WORD(chx + 1, chy + 1);
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mix_rec";
-			mix.nchan = 1;
-			mix.update[0] = 1;
-			mix.val_default = 0;
-			snprintf(mix.desc, sizeof(mix.desc),
+			MIX(sc).wValue[0] = MAKE_WORD(chx + 1, chy + 1);
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mix_rec";
+			MIX(sc).nchan = 1;
+			MIX(sc).update[0] = 1;
+			MIX(sc).val_default = 0;
+			snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 			    "AIn%d - Out%d Record Volume", chy + 1, chx + 1);
 
-			uaudio_mixer_add_ctl(sc, &mix);
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 
-			mix.wValue[0] = MAKE_WORD(chx + 1, chy + 1 + 8);
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mix_play";
-			mix.nchan = 1;
-			mix.update[0] = 1;
-			mix.val_default = (chx == chy) ? 2 : 0;
-			snprintf(mix.desc, sizeof(mix.desc),
+			MIX(sc).wValue[0] = MAKE_WORD(chx + 1, chy + 1 + 8);
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mix_play";
+			MIX(sc).nchan = 1;
+			MIX(sc).update[0] = 1;
+			MIX(sc).val_default = (chx == chy) ? 2 : 0;
+			snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 			    "DIn%d - Out%d Playback Volume", chy + 1, chx + 1);
 
-			uaudio_mixer_add_ctl(sc, &mix);
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 	}
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(2, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_8;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_vol";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f;
-	mix.mul = 0x7f;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Volume", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
-
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(3, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_16;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_dur";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f00;
-	mix.mul = 0x7f00;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Duration", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
-
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(4, 0);
-	mix.class = UAC_OUTPUT;
-	mix.type = MIX_SIGNED_8;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.name = "effect_fb";
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	mix.minval = 0;
-	mix.maxval = 0x7f;
-	mix.mul = 0x7f;
-	mix.nchan = 1;
-	mix.update[0] = 1;
-	strlcpy(mix.desc, "Effect Feedback Volume", sizeof(mix.desc));
-	uaudio_mixer_add_ctl_sub(sc, &mix);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(2, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_8;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_vol";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f;
+	MIX(sc).mul = 0x7f;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Volume", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
+
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(3, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_16;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_dur";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f00;
+	MIX(sc).mul = 0x7f00;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Duration", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
+
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(6, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(4, 0);
+	MIX(sc).class = UAC_OUTPUT;
+	MIX(sc).type = MIX_SIGNED_8;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).name = "effect_fb";
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	MIX(sc).minval = 0;
+	MIX(sc).maxval = 0x7f;
+	MIX(sc).mul = 0x7f;
+	MIX(sc).nchan = 1;
+	MIX(sc).update[0] = 1;
+	strlcpy(MIX(sc).desc, "Effect Feedback Volume", sizeof(MIX(sc).desc));
+	uaudio_mixer_add_ctl_sub(sc, &MIX(sc));
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(7, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(7, sc->sc_mixer_iface_no);
 	for (chy = 0; chy != 4; chy++) {
 
-		mix.wValue[0] = MAKE_WORD(7, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_ret";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(7, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_ret";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Return %d Volume", chy + 1);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 
-	memset(&mix, 0, sizeof(mix));
-	mix.wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
+	MIX(sc).wIndex = MAKE_WORD(5, sc->sc_mixer_iface_no);
 
 	for (chy = 0; chy != 8; chy++) {
-		mix.wValue[0] = MAKE_WORD(9, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_send";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(9, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_send";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Send AIn%d Volume", chy + 1);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 
-		mix.wValue[0] = MAKE_WORD(9, chy + 1);
-		mix.type = MIX_SIGNED_16;
-		mix.ctl = SOUND_MIXER_NRDEVICES;
-		mix.name = "effect_send";
-		mix.nchan = 1;
-		mix.update[0] = 1;
-		snprintf(mix.desc, sizeof(mix.desc),
+		MIX(sc).wValue[0] = MAKE_WORD(9, chy + 1);
+		MIX(sc).type = MIX_SIGNED_16;
+		MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+		MIX(sc).name = "effect_send";
+		MIX(sc).nchan = 1;
+		MIX(sc).update[0] = 1;
+		snprintf(MIX(sc).desc, sizeof(MIX(sc).desc),
 		    "Effect Send DIn%d Volume", chy + 1 + 8);
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -2593,8 +2594,6 @@ static void
 uaudio_mixer_add_mixer(struct uaudio_softc *sc,
     const struct uaudio_terminal_node *iot, int id)
 {
-	struct uaudio_mixer_node mix;
-
 	const struct usb_audio_mixer_unit_0 *d0 = iot[id].u.mu_v1;
 	const struct usb_audio_mixer_unit_1 *d1;
 
@@ -2628,11 +2627,11 @@ uaudio_mixer_add_mixer(struct uaudio_sof
 
 	DPRINTFN(3, "ichs=%d ochs=%d\n", ichs, ochs);
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_SIGNED_16;
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_SIGNED_16;
 
 	if (uaudio_mixer_verify_desc(d0, ((ichs * ochs) + 7) / 8) == NULL)
 		return;
@@ -2660,11 +2659,11 @@ uaudio_mixer_add_mixer(struct uaudio_sof
 				for (o = 0; o < ochs; o++) {
 					bno = ((p + c) * ochs) + o;
 					if (BIT_TEST(d1->bmControls, bno))
-						mix.wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
+						MIX(sc).wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
 				}
 			}
-			mix.nchan = chs;
-			uaudio_mixer_add_ctl(sc, &mix);
+			MIX(sc).nchan = chs;
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 		p += chs;
 	}
@@ -2674,8 +2673,6 @@ static void
 uaudio20_mixer_add_mixer(struct uaudio_softc *sc,
     const struct uaudio_terminal_node *iot, int id)
 {
-	struct uaudio_mixer_node mix;
-
 	const struct usb_audio20_mixer_unit_0 *d0 = iot[id].u.mu_v2;
 	const struct usb_audio20_mixer_unit_1 *d1;
 
@@ -2709,11 +2706,11 @@ uaudio20_mixer_add_mixer(struct uaudio_s
 
 	DPRINTFN(3, "ichs=%d ochs=%d\n", ichs, ochs);
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	uaudio20_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_SIGNED_16;
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	uaudio20_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_SIGNED_16;
 
 	if (uaudio20_mixer_verify_desc(d0, ((ichs * ochs) + 7) / 8) == NULL)
 		return;
@@ -2741,11 +2738,11 @@ uaudio20_mixer_add_mixer(struct uaudio_s
 				for (o = 0; o < ochs; o++) {
 					bno = ((p + c) * ochs) + o;
 					if (BIT_TEST(d1->bmControls, bno))
-						mix.wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
+						MIX(sc).wValue[mc++] = MAKE_WORD(p + c + 1, o + 1);
 				}
 			}
-			mix.nchan = chs;
-			uaudio_mixer_add_ctl(sc, &mix);
+			MIX(sc).nchan = chs;
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 		}
 		p += chs;
 	}
@@ -2756,7 +2753,6 @@ uaudio_mixer_add_selector(struct uaudio_
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio_selector_unit *d = iot[id].u.su_v1;
-	struct uaudio_mixer_node mix;
 	uint16_t i;
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
@@ -2765,41 +2761,41 @@ uaudio_mixer_add_selector(struct uaudio_
 	if (d->bNrInPins == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(0, 0);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.nchan = 1;
-	mix.type = MIX_SELECTOR;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.minval = 1;
-	mix.maxval = d->bNrInPins;
-	mix.name = "selector";
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(0, 0);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).nchan = 1;
+	MIX(sc).type = MIX_SELECTOR;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).minval = 1;
+	MIX(sc).maxval = d->bNrInPins;
+	MIX(sc).name = "selector";
 
 	i = d->baSourceId[d->bNrInPins];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
-	if (mix.maxval > MAX_SELECTOR_INPUT_PIN) {
-		mix.maxval = MAX_SELECTOR_INPUT_PIN;
+	if (MIX(sc).maxval > MAX_SELECTOR_INPUT_PIN) {
+		MIX(sc).maxval = MAX_SELECTOR_INPUT_PIN;
 	}
-	mix.mul = (mix.maxval - mix.minval);
+	MIX(sc).mul = (MIX(sc).maxval - MIX(sc).minval);
 	for (i = 0; i < MAX_SELECTOR_INPUT_PIN; i++) {
-		mix.slctrtype[i] = SOUND_MIXER_NRDEVICES;
+		MIX(sc).slctrtype[i] = SOUND_MIXER_NRDEVICES;
 	}
 
-	for (i = 0; i < mix.maxval; i++) {
-		mix.slctrtype[i] = uaudio_mixer_feature_name(
-		    &iot[d->baSourceId[i]], &mix);
+	for (i = 0; i < MIX(sc).maxval; i++) {
+		MIX(sc).slctrtype[i] = uaudio_mixer_feature_name(
+		    &iot[d->baSourceId[i]], &MIX(sc));
 	}
 
-	mix.class = 0;			/* not used */
+	MIX(sc).class = 0;			/* not used */
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static void
@@ -2807,7 +2803,6 @@ uaudio20_mixer_add_selector(struct uaudi
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio20_selector_unit *d = iot[id].u.su_v2;
-	struct uaudio_mixer_node mix;
 	uint16_t i;
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
@@ -2816,40 +2811,40 @@ uaudio20_mixer_add_selector(struct uaudi
 	if (d->bNrInPins == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
-	mix.wValue[0] = MAKE_WORD(0, 0);
-	uaudio20_mixer_determine_class(&iot[id], &mix);
-	mix.nchan = 1;
-	mix.type = MIX_SELECTOR;
-	mix.ctl = SOUND_MIXER_NRDEVICES;
-	mix.minval = 1;
-	mix.maxval = d->bNrInPins;
-	mix.name = "selector";
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wValue[0] = MAKE_WORD(0, 0);
+	uaudio20_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).nchan = 1;
+	MIX(sc).type = MIX_SELECTOR;
+	MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+	MIX(sc).minval = 1;
+	MIX(sc).maxval = d->bNrInPins;
+	MIX(sc).name = "selector";
 
 	i = d->baSourceId[d->bNrInPins];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
-	if (mix.maxval > MAX_SELECTOR_INPUT_PIN)
-		mix.maxval = MAX_SELECTOR_INPUT_PIN;
+	if (MIX(sc).maxval > MAX_SELECTOR_INPUT_PIN)
+		MIX(sc).maxval = MAX_SELECTOR_INPUT_PIN;
 
-	mix.mul = (mix.maxval - mix.minval);
+	MIX(sc).mul = (MIX(sc).maxval - MIX(sc).minval);
 	for (i = 0; i < MAX_SELECTOR_INPUT_PIN; i++)
-		mix.slctrtype[i] = SOUND_MIXER_NRDEVICES;
+		MIX(sc).slctrtype[i] = SOUND_MIXER_NRDEVICES;
 
-	for (i = 0; i < mix.maxval; i++) {
-		mix.slctrtype[i] = uaudio20_mixer_feature_name(
-		    &iot[d->baSourceId[i]], &mix);
+	for (i = 0; i < MIX(sc).maxval; i++) {
+		MIX(sc).slctrtype[i] = uaudio20_mixer_feature_name(
+		    &iot[d->baSourceId[i]], &MIX(sc));
 	}
 
-	mix.class = 0;			/* not used */
+	MIX(sc).class = 0;			/* not used */
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static uint32_t
@@ -2879,7 +2874,6 @@ uaudio_mixer_add_feature(struct uaudio_s
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio_feature_unit *d = iot[id].u.fu_v1;
-	struct uaudio_mixer_node mix;
 	uint32_t fumask;
 	uint32_t mmask;
 	uint32_t cmask;
@@ -2892,7 +2886,7 @@ uaudio_mixer_add_feature(struct uaudio_s
 	if (d->bControlSize == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	nchan = (d->bLength - 7) / d->bControlSize;
 	mmask = uaudio_mixer_feature_get_bmaControls(d, 0);
@@ -2913,13 +2907,13 @@ uaudio_mixer_add_feature(struct uaudio_s
 	if (nchan > MIX_MAX_CHAN) {
 		nchan = MIX_MAX_CHAN;
 	}
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
 
 	i = d->bmaControls[d->bControlSize];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
 	for (ctl = 1; ctl <= LOUDNESS_CONTROL; ctl++) {
@@ -2930,87 +2924,87 @@ uaudio_mixer_add_feature(struct uaudio_s
 		    ctl, fumask);
 
 		if (mmask & fumask) {
-			mix.nchan = 1;
-			mix.wValue[0] = MAKE_WORD(ctl, 0);
+			MIX(sc).nchan = 1;
+			MIX(sc).wValue[0] = MAKE_WORD(ctl, 0);
 		} else if (cmask & fumask) {
-			mix.nchan = nchan - 1;
+			MIX(sc).nchan = nchan - 1;
 			for (i = 1; i < nchan; i++) {
 				if (uaudio_mixer_feature_get_bmaControls(d, i) & fumask)
-					mix.wValue[i - 1] = MAKE_WORD(ctl, i);
+					MIX(sc).wValue[i - 1] = MAKE_WORD(ctl, i);
 				else
-					mix.wValue[i - 1] = -1;
+					MIX(sc).wValue[i - 1] = -1;
 			}
 		} else {
 			continue;
 		}
 
-		mixernumber = uaudio_mixer_feature_name(&iot[id], &mix);
+		mixernumber = uaudio_mixer_feature_name(&iot[id], &MIX(sc));
 
 		switch (ctl) {
 		case MUTE_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mute";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mute";
 			break;
 
 		case VOLUME_CONTROL:
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "vol";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "vol";
 			break;
 
 		case BASS_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_BASS;
-			mix.name = "bass";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_BASS;
+			MIX(sc).name = "bass";
 			break;
 
 		case MID_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "mid";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "mid";
 			break;
 
 		case TREBLE_CONTROL:
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_TREBLE;
-			mix.name = "treble";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_TREBLE;
+			MIX(sc).name = "treble";
 			break;
 
 		case GRAPHIC_EQUALIZER_CONTROL:
 			continue;	/* XXX don't add anything */
 
 		case AGC_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "agc";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "agc";
 			break;
 
 		case DELAY_CONTROL:
-			mix.type = MIX_UNSIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "delay";
+			MIX(sc).type = MIX_UNSIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "delay";
 			break;
 
 		case BASS_BOOST_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "boost";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "boost";
 			break;
 
 		case LOUDNESS_CONTROL:
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
-			mix.name = "loudness";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
+			MIX(sc).name = "loudness";
 			break;
 
 		default:
-			mix.type = MIX_UNKNOWN;
+			MIX(sc).type = MIX_UNKNOWN;
 			break;
 		}
 
-		if (mix.type != MIX_UNKNOWN)
-			uaudio_mixer_add_ctl(sc, &mix);
+		if (MIX(sc).type != MIX_UNKNOWN)
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -3019,7 +3013,6 @@ uaudio20_mixer_add_feature(struct uaudio
     const struct uaudio_terminal_node *iot, int id)
 {
 	const struct usb_audio20_feature_unit *d = iot[id].u.fu_v2;
-	struct uaudio_mixer_node mix;
 	uint32_t ctl;
 	uint32_t mmask;
 	uint32_t cmask;
@@ -3032,7 +3025,7 @@ uaudio20_mixer_add_feature(struct uaudio
 	if (UGETDW(d->bmaControls[0]) == 0)
 		return;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	nchan = (d->bLength - 6) / 4;
 	mmask = UGETDW(d->bmaControls[0]);
@@ -3049,84 +3042,84 @@ uaudio20_mixer_add_feature(struct uaudio
 	if (nchan > MIX_MAX_CHAN)
 		nchan = MIX_MAX_CHAN;
 
-	mix.wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).wIndex = MAKE_WORD(d->bUnitId, sc->sc_mixer_iface_no);
 
 	i = d->bmaControls[nchan][0];
 	if (i == 0 ||
 	    usbd_req_get_string_any(sc->sc_udev, NULL,
-	    mix.desc, sizeof(mix.desc), i) != 0) {
-		mix.desc[0] = 0;
+	    MIX(sc).desc, sizeof(MIX(sc).desc), i) != 0) {
+		MIX(sc).desc[0] = 0;
 	}
 
 	for (ctl = 3; ctl != 0; ctl <<= 2) {
 
-		mixernumber = uaudio20_mixer_feature_name(&iot[id], &mix);
+		mixernumber = uaudio20_mixer_feature_name(&iot[id], &MIX(sc));
 
 		switch (ctl) {
 		case (3 << 0):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;
-			mix.name = "mute";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;
+			MIX(sc).name = "mute";
 			what = MUTE_CONTROL;
 			break;
 		case (3 << 2): 
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "vol";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "vol";
 			what = VOLUME_CONTROL;
 			break;
 		case (3 << 4):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_BASS;
-			mix.name = "bass";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_BASS;
+			MIX(sc).name = "bass";
 			what = BASS_CONTROL;
 			break;
 		case (3 << 6):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "mid";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "mid";
 			what = MID_CONTROL;
 			break;
 		case (3 << 8):
-			mix.type = MIX_SIGNED_8;
-			mix.ctl = SOUND_MIXER_TREBLE;
-			mix.name = "treble";
+			MIX(sc).type = MIX_SIGNED_8;
+			MIX(sc).ctl = SOUND_MIXER_TREBLE;
+			MIX(sc).name = "treble";
 			what = TREBLE_CONTROL;
 			break;
 		case (3 << 12):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "agc";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "agc";
 			what = AGC_CONTROL;
 			break;
 		case (3 << 14):
-			mix.type = MIX_UNSIGNED_16;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "delay";
+			MIX(sc).type = MIX_UNSIGNED_16;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "delay";
 			what = DELAY_CONTROL;
 			break;
 		case (3 << 16):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
-			mix.name = "boost";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_NRDEVICES;	/* XXXXX */
+			MIX(sc).name = "boost";
 			what = BASS_BOOST_CONTROL;
 			break;
 		case (3 << 18):
-			mix.type = MIX_ON_OFF;
-			mix.ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
-			mix.name = "loudness";
+			MIX(sc).type = MIX_ON_OFF;
+			MIX(sc).ctl = SOUND_MIXER_LOUD;	/* Is this correct ? */
+			MIX(sc).name = "loudness";
 			what = LOUDNESS_CONTROL;
 			break;
 		case (3 << 20):
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "igain";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "igain";
 			what = INPUT_GAIN_CONTROL;
 			break;
 		case (3 << 22):
-			mix.type = MIX_SIGNED_16;
-			mix.ctl = mixernumber;
-			mix.name = "igainpad";
+			MIX(sc).type = MIX_SIGNED_16;
+			MIX(sc).ctl = mixernumber;
+			MIX(sc).name = "igainpad";
 			what = INPUT_GAIN_PAD_CONTROL;
 			break;
 		default:
@@ -3134,22 +3127,22 @@ uaudio20_mixer_add_feature(struct uaudio
 		}
 
 		if ((mmask & ctl) == ctl) {
-			mix.nchan = 1;
-			mix.wValue[0] = MAKE_WORD(what, 0);
+			MIX(sc).nchan = 1;
+			MIX(sc).wValue[0] = MAKE_WORD(what, 0);
 		} else if ((cmask & ctl) == ctl) {
-			mix.nchan = nchan - 1;
+			MIX(sc).nchan = nchan - 1;
 			for (i = 1; i < nchan; i++) {
 				if ((UGETDW(d->bmaControls[i]) & ctl) == ctl)
-					mix.wValue[i - 1] = MAKE_WORD(what, i);
+					MIX(sc).wValue[i - 1] = MAKE_WORD(what, i);
 				else
-					mix.wValue[i - 1] = -1;
+					MIX(sc).wValue[i - 1] = -1;
 			}
 		} else {
 			continue;
 		}
 
-		if (mix.type != MIX_UNKNOWN)
-			uaudio_mixer_add_ctl(sc, &mix);
+		if (MIX(sc).type != MIX_UNKNOWN)
+			uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 
@@ -3159,10 +3152,9 @@ uaudio_mixer_add_processing_updown(struc
 {
 	const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu_v1;
 	const struct usb_audio_processing_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 	const struct usb_audio_processing_unit_updown *ud =
-	(const void *)(d1->bmControls + d1->bControlSize);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d1->bmControls + d1->bControlSize);
 	uint8_t i;
 
 	if (uaudio_mixer_verify_desc(d0, sizeof(*ud)) == NULL) {
@@ -3179,20 +3171,20 @@ uaudio_mixer_add_processing_updown(struc
 		DPRINTF("no mode select\n");
 		return;
 	}
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-	mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-	mix.nchan = 1;
-	mix.wValue[0] = MAKE_WORD(UD_MODE_SELECT_CONTROL, 0);
-	uaudio_mixer_determine_class(&iot[id], &mix);
-	mix.type = MIX_ON_OFF;		/* XXX */
+	MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+	MIX(sc).nchan = 1;
+	MIX(sc).wValue[0] = MAKE_WORD(UD_MODE_SELECT_CONTROL, 0);
+	uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+	MIX(sc).type = MIX_ON_OFF;		/* XXX */
 
 	for (i = 0; i < ud->bNrModes; i++) {
 		DPRINTFN(3, "i=%d bm=0x%x\n", i, UGETW(ud->waModes[i]));
 		/* XXX */
 	}
 
-	uaudio_mixer_add_ctl(sc, &mix);
+	uaudio_mixer_add_ctl(sc, &MIX(sc));
 }
 
 static void
@@ -3201,11 +3193,10 @@ uaudio_mixer_add_processing(struct uaudi
 {
 	const struct usb_audio_processing_unit_0 *d0 = iot[id].u.pu_v1;
 	const struct usb_audio_processing_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 	uint16_t ptype;
 
-	memset(&mix, 0, sizeof(mix));
+	memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
 	ptype = UGETW(d0->wProcessType);
 
@@ -3216,12 +3207,12 @@ uaudio_mixer_add_processing(struct uaudi
 		return;
 	}
 	if (d1->bmControls[0] & UA_PROC_ENABLE_MASK) {
-		mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-		mix.nchan = 1;
-		mix.wValue[0] = MAKE_WORD(XX_ENABLE_CONTROL, 0);
-		uaudio_mixer_determine_class(&iot[id], &mix);
-		mix.type = MIX_ON_OFF;
-		uaudio_mixer_add_ctl(sc, &mix);
+		MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+		MIX(sc).nchan = 1;
+		MIX(sc).wValue[0] = MAKE_WORD(XX_ENABLE_CONTROL, 0);
+		uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+		MIX(sc).type = MIX_ON_OFF;
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 	switch (ptype) {
 	case UPDOWNMIX_PROCESS:
@@ -3246,8 +3237,7 @@ uaudio_mixer_add_extension(struct uaudio
 {
 	const struct usb_audio_extension_unit_0 *d0 = iot[id].u.eu_v1;
 	const struct usb_audio_extension_unit_1 *d1 =
-	(const void *)(d0->baSourceId + d0->bNrInPins);
-	struct uaudio_mixer_node mix;
+	    (const void *)(d0->baSourceId + d0->bNrInPins);
 
 	DPRINTFN(3, "bUnitId=%d bNrInPins=%d\n",
 	    d0->bUnitId, d0->bNrInPins);
@@ -3260,15 +3250,15 @@ uaudio_mixer_add_extension(struct uaudio
 	}
 	if (d1->bmControls[0] & UA_EXT_ENABLE_MASK) {
 
-		memset(&mix, 0, sizeof(mix));
+		memset(&MIX(sc), 0, sizeof(MIX(sc)));
 
-		mix.wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
-		mix.nchan = 1;
-		mix.wValue[0] = MAKE_WORD(UA_EXT_ENABLE, 0);
-		uaudio_mixer_determine_class(&iot[id], &mix);
-		mix.type = MIX_ON_OFF;
+		MIX(sc).wIndex = MAKE_WORD(d0->bUnitId, sc->sc_mixer_iface_no);
+		MIX(sc).nchan = 1;
+		MIX(sc).wValue[0] = MAKE_WORD(UA_EXT_ENABLE, 0);
+		uaudio_mixer_determine_class(&iot[id], &MIX(sc));
+		MIX(sc).type = MIX_ON_OFF;
 
-		uaudio_mixer_add_ctl(sc, &mix);
+		uaudio_mixer_add_ctl(sc, &MIX(sc));
 	}
 }
 

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:29:30 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 581D7469;
 Sat, 29 Dec 2012 12:29:30 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 3CC138FC0A;
 Sat, 29 Dec 2012 12:29:30 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCTUJE022838;
 Sat, 29 Dec 2012 12:29:30 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCTUFk022837;
 Sat, 29 Dec 2012 12:29:30 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291229.qBTCTUFk022837@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:29:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244817 - stable/9/etc/devd
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:29:30 -0000

Author: hselasky
Date: Sat Dec 29 12:29:29 2012
New Revision: 244817
URL: http://svnweb.freebsd.org/changeset/base/244817

Log:
  MFC r241089, r243661 and r244252:
  
  Regenerate usb.conf

Modified:
  stable/9/etc/devd/usb.conf
Directory Properties:
  stable/9/etc/   (props changed)

Modified: stable/9/etc/devd/usb.conf
==============================================================================
--- stable/9/etc/devd/usb.conf	Sat Dec 29 12:20:49 2012	(r244816)
+++ stable/9/etc/devd/usb.conf	Sat Dec 29 12:29:29 2012	(r244817)
@@ -52,6 +52,17 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x05ac";
+	match "product" "0x12a8";
+	match "intclass" "0xff";
+	match "intsubclass" "0xfd";
+	match "intprotocol" "0x01";
+	action "kldload -n if_ipheth";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0104";
 	match "product" "0x00be";
 	action "kldload -n uipaq";
@@ -157,7 +168,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0403";
-	match "product" "(0x6001|0x6004|0x6006|0x6010|0x6011|0x6014|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeee
 c|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
+	match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeee
 b|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
 	action "kldload -n uftdi";
 };
 
@@ -412,6 +423,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0499";
+	match "product" "(0x1000|0x1001|0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012|0x1013|0x1014|0x1015|0x1016|0x1017|0x1018|0x1019|0x101a|0x101b|0x101c|0x101d|0x101e|0x101f|0x1020|0x1021|0x1022|0x1023|0x1024|0x1025|0x1026|0x1027|0x1028|0x1029|0x102a|0x102b|0x102e|0x1030|0x1031|0x1032|0x1033|0x1034|0x1035|0x1036|0x1037|0x1038|0x1039|0x103a|0x103b|0x103c|0x103d|0x103e|0x103f|0x1040|0x1041|0x1042|0x1043|0x1044|0x1045|0x104e|0x104f|0x1050|0x1051|0x1052|0x1053|0x1054|0x1055|0x1056|0x1057|0x1058|0x1059|0x105a|0x105b|0x105c|0x105d|0x1503|0x2000|0x2001|0x2002|0x2003|0x5000|0x5001|0x5002|0x5003|0x5004|0x5005|0x5006|0x5007|0x5008|0x5009|0x500a|0x500b|0x500c|0x500d|0x500e|0x500f|0x7000|0x7010)";
+	action "kldload -n snd_uaudio";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x049f";
 	match "product" "(0x0003|0x0032)";
 	action "kldload -n uipaq";
@@ -2061,7 +2080,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0b05";
-	match "product" "(0x1731|0x1732|0x1742|0x1760|0x1761|0x1784|0x1790)";
+	match "product" "(0x1731|0x1732|0x1742|0x1760|0x1761|0x1784|0x1790|0x179d)";
 	action "kldload -n if_run";
 };
 
@@ -2636,6 +2655,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0f3d";
+	match "product" "0x68aa";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0f4e";
 	match "product" "0x0200";
 	action "kldload -n uipaq";
@@ -3069,7 +3096,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x12d1";
-	match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1465|0x14ac|0x14fe|0x1505|0x1506|0x1520|0x1803|0x1c05|0x1c0b)";
+	match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1464|0x1465|0x14ac|0x14c9|0x14d1|0x14fe|0x1505|0x1506|0x1520|0x1521|0x1803|0x1c05|0x1c0b)";
 	action "kldload -n u3g";
 };
 
@@ -3861,7 +3888,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x1a86";
-	match "product" "0x7523";
+	match "product" "(0x5523|0x7523)";
 	action "kldload -n uchcom";
 };
 
@@ -4188,6 +4215,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x22de";
+	match "product" "0x6801";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x2478";
 	match "product" "0x2008";
 	action "kldload -n uplcom";
@@ -4600,5 +4635,5 @@ nomatch 32 {
 	action "kldload -n umass";
 };
 
-# 2271 USB entries processed
+# 2386 USB entries processed
 

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:33:33 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 4504A6CF;
 Sat, 29 Dec 2012 12:33:33 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 298EA8FC0A;
 Sat, 29 Dec 2012 12:33:33 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCXXUx023550;
 Sat, 29 Dec 2012 12:33:33 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCXXT1023549;
 Sat, 29 Dec 2012 12:33:33 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291233.qBTCXXT1023549@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:33:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244818 - stable/8/etc/devd
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:33:33 -0000

Author: hselasky
Date: Sat Dec 29 12:33:32 2012
New Revision: 244818
URL: http://svnweb.freebsd.org/changeset/base/244818

Log:
  MFC r235725, r239056, r241089, r243661 and r244252:
  
  Regenerate usb.conf

Modified:
  stable/8/etc/devd/usb.conf
Directory Properties:
  stable/8/etc/   (props changed)

Modified: stable/8/etc/devd/usb.conf
==============================================================================
--- stable/8/etc/devd/usb.conf	Sat Dec 29 12:29:29 2012	(r244817)
+++ stable/8/etc/devd/usb.conf	Sat Dec 29 12:33:32 2012	(r244818)
@@ -52,6 +52,17 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x05ac";
+	match "product" "0x12a8";
+	match "intclass" "0xff";
+	match "intsubclass" "0xfd";
+	match "intprotocol" "0x01";
+	action "kldload -n if_ipheth";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0104";
 	match "product" "0x00be";
 	action "kldload uipaq";
@@ -157,7 +168,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0403";
-	match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|0xa6d0|0xa6d0|0xcc48|0xcc49|0xcc4a|0xd678|0xe6c8|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xee18|0xf608|0xf60b|0xf850|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfc08|0xfc09|0xfc0b|0xfc0c|0xfc0d|0xfc82)";
+	match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeee
 b|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
 	action "kldload uftdi";
 };
 
@@ -293,7 +304,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0411";
-	match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2)";
+	match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2|0x01ee)";
 	action "kldload if_run";
 };
 
@@ -324,6 +335,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0456";
+	match "product" "(0xf000|0xf001)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x045a";
 	match "product" "(0x5001|0x5002)";
 	action "kldload urio";
@@ -404,6 +423,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0499";
+	match "product" "(0x1000|0x1001|0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012|0x1013|0x1014|0x1015|0x1016|0x1017|0x1018|0x1019|0x101a|0x101b|0x101c|0x101d|0x101e|0x101f|0x1020|0x1021|0x1022|0x1023|0x1024|0x1025|0x1026|0x1027|0x1028|0x1029|0x102a|0x102b|0x102e|0x1030|0x1031|0x1032|0x1033|0x1034|0x1035|0x1036|0x1037|0x1038|0x1039|0x103a|0x103b|0x103c|0x103d|0x103e|0x103f|0x1040|0x1041|0x1042|0x1043|0x1044|0x1045|0x104e|0x104f|0x1050|0x1051|0x1052|0x1053|0x1054|0x1055|0x1056|0x1057|0x1058|0x1059|0x105a|0x105b|0x105c|0x105d|0x1503|0x2000|0x2001|0x2002|0x2003|0x5000|0x5001|0x5002|0x5003|0x5004|0x5005|0x5006|0x5007|0x5008|0x5009|0x500a|0x500b|0x500c|0x500d|0x500e|0x500f|0x7000|0x7010)";
+	action "kldload -n snd_uaudio";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x049f";
 	match "product" "(0x0003|0x0032)";
 	action "kldload uipaq";
@@ -1021,7 +1048,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x05c6";
-	match "product" "(0x1000|0x6000|0x6613)";
+	match "product" "(0x1000|0x6000|0x6613|0x9000|0x9204|0x9205)";
 	action "kldload u3g";
 };
 
@@ -1068,6 +1095,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0647";
+	match "product" "0x0100";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x066b";
 	match "product" "(0x200c|0x2202)";
 	action "kldload if_aue";
@@ -1109,7 +1144,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x067b";
-	match "product" "(0x04bb|0x0609|0x0611|0x0612|0x1234|0x206a|0x2303)";
+	match "product" "(0x0307|0x04bb|0x0609|0x0611|0x0612|0x1234|0x206a|0x2303)";
 	action "kldload uplcom";
 };
 
@@ -1156,6 +1191,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x06ce";
+	match "product" "0x8311";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x06e1";
 	match "product" "(0x0008|0x0009)";
 	action "kldload if_kue";
@@ -1301,7 +1344,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0789";
-	match "product" "(0x0162|0x0163|0x0164|0x0166)";
+	match "product" "(0x0162|0x0163|0x0164|0x0166|0x0168)";
 	action "kldload if_run";
 };
 
@@ -1653,7 +1696,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0856";
-	match "product" "0xac01";
+	match "product" "(0xac01|0xac02|0xac03|0xac11|0xac12|0xac16|0xac17|0xac18|0xac19|0xac25|0xac26|0xac27|0xac33|0xac34|0xac49|0xac50|0xba02)";
 	action "kldload uftdi";
 };
 
@@ -1876,6 +1919,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0acd";
+	match "product" "0x0300";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0ace";
 	match "product" "(0x1211|0x1215)";
 	action "kldload if_zyd";
@@ -2029,7 +2080,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0b05";
-	match "product" "(0x1731|0x1732|0x1742|0x1760|0x1761|0x1784|0x1790)";
+	match "product" "(0x1731|0x1732|0x1742|0x1760|0x1761|0x1784|0x1790|0x179d)";
 	action "kldload if_run";
 };
 
@@ -2045,6 +2096,14 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0b39";
+	match "product" "0x0103";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0b39";
 	match "product" "0x0109";
 	action "kldload if_aue";
 };
@@ -2172,6 +2231,22 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0c26";
+	match "product" "(0x0004|0x0009|0x000a|0x000b|0x000c|0x000d|0x0010|0x0011|0x0012|0x0013|0x0018)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0c33";
+	match "product" "0x0010";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0c44";
 	match "product" "0x03a2";
 	action "kldload uipaq";
@@ -2180,6 +2255,30 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0c52";
+	match "product" "(0x2101|0x2102|0x2103|0x2104|0x2211|0x2212|0x2213|0x2221|0x2222|0x2223|0x2411|0x2412|0x2413|0x2421|0x2422|0x2423|0x2431|0x2432|0x2433|0x2441|0x2442|0x2443|0x2811|0x2812|0x2813|0x2821|0x2822|0x2823|0x2831|0x2832|0x2833|0x2841|0x2842|0x2843|0x2851|0x2852|0x2853|0x2861|0x2862|0x2863|0x2871|0x2872|0x2873|0x2881|0x2882|0x2883|0x9020)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0c6c";
+	match "product" "0x04b2";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0c7d";
+	match "product" "0x0005";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0c88";
 	match "product" "0x17da";
 	action "kldload u3g";
@@ -2276,6 +2375,22 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0d3a";
+	match "product" "0x0300";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x0d46";
+	match "product" "(0x2020|0x2021)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0d8e";
 	match "product" "0x3762";
 	action "kldload if_upgt";
@@ -2340,6 +2455,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0dcd";
+	match "product" "0x0001";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0df6";
 	match "product" "0x000d";
 	action "kldload if_urtw";
@@ -2532,6 +2655,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0f3d";
+	match "product" "0x68aa";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0f4e";
 	match "product" "0x0200";
 	action "kldload uipaq";
@@ -2557,7 +2688,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0f94";
-	match "product" "0x0001";
+	match "product" "(0x0001|0x0005)";
 	action "kldload uftdi";
 };
 
@@ -2588,6 +2719,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0fd8";
+	match "product" "0x0001";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0fe6";
 	match "product" "(0x8101|0x9700)";
 	action "kldload if_udav";
@@ -2612,6 +2751,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x103e";
+	match "product" "0x03e8";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1044";
 	match "product" "0x8001";
 	action "kldload if_ural";
@@ -2725,7 +2872,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x10c4";
-	match "product" "(0x8066|0x806f|0x807a|0x80ca|0x80dd|0x80ed|0x80f6|0x8115|0x813d|0x813f|0x814a|0x814a|0x814b|0x8156|0x815e|0x818b|0x819f|0x81a6|0x81ac|0x81ad|0x81c8|0x81e2|0x81e7|0x81e8|0x81f2|0x8218|0x822b|0x826b|0x8293|0x82f9|0x8341|0x8382|0x83a8|0x8411|0x846e|0x8477|0xea60|0xea61|0xea71|0xf001|0xf002|0xf003|0xf004)";
+	match "product" "(0x8066|0x806f|0x807a|0x80c4|0x80ca|0x80dd|0x80ed|0x80f6|0x8115|0x813d|0x813f|0x814a|0x814a|0x814b|0x8156|0x815e|0x815f|0x818b|0x819f|0x81a6|0x81a9|0x81ac|0x81ad|0x81c8|0x81e2|0x81e7|0x81e8|0x81f2|0x8218|0x822b|0x826b|0x8293|0x82f9|0x8341|0x8382|0x83a8|0x83d8|0x8411|0x8418|0x846e|0x8477|0x85ea|0x85eb|0x8664|0x8665|0xea60|0xea61|0xea70|0xea71|0xea80|0xf001|0xf002|0xf003|0xf004)";
 	action "kldload uslcom";
 };
 
@@ -2852,6 +2999,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1199";
+	match "product" "0x68aa";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x11ad";
 	match "product" "0x0701";
 	action "kldload uplcom";
@@ -2892,6 +3047,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1209";
+	match "product" "(0x1002|0x1006)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1231";
 	match "product" "(0xce01|0xce02)";
 	action "kldload uipaq";
@@ -2908,6 +3071,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x128d";
+	match "product" "0x0001";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x129b";
 	match "product" "0x1666";
 	action "kldload if_zyd";
@@ -2925,7 +3096,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x12d1";
-	match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1465|0x14ac|0x1520|0x1c05|0x1c0b)";
+	match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1464|0x1465|0x14ac|0x14c9|0x14d1|0x14fe|0x1505|0x1506|0x1520|0x1521|0x1803|0x1c05|0x1c0b)";
 	action "kldload u3g";
 };
 
@@ -2941,6 +3112,14 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x1342";
+	match "product" "0x0202";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x1342";
 	match "product" "0x0204";
 	action "kldload if_kue";
 };
@@ -3100,6 +3279,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1457";
+	match "product" "(0x5118|0x5118)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1472";
 	match "product" "0x0009";
 	action "kldload if_rum";
@@ -3324,6 +3511,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x15ba";
+	match "product" "(0x0003|0x002b)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x15c5";
 	match "product" "0x0008";
 	action "kldload if_run";
@@ -3373,7 +3568,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x166a";
-	match "product" "0x0303";
+	match "product" "(0x0101|0x0201|0x0301|0x0303|0x0304|0x0305|0x0401)";
 	action "kldload uslcom";
 };
 
@@ -3469,7 +3664,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x16d6";
-	match "product" "(0x0001|0x0001)";
+	match "product" "0x0001";
 	action "kldload uslcom";
 };
 
@@ -3588,6 +3783,22 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1781";
+	match "product" "0x0c30";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
+	match "vendor" "0x17a8";
+	match "product" "(0x0001|0x0005)";
+	action "kldload -n uslcom";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x17f4";
 	match "product" "0xaaaa";
 	action "kldload uslcom";
@@ -3661,15 +3872,23 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x19d2";
-	match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x2000|0x2002|0x2003|0xfff1|0xfff5|0xfffe)";
+	match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x1179|0x2000|0x2002|0x2003|0xfff1|0xfff5|0xfffe)";
 	action "kldload u3g";
 };
 
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1a79";
+	match "product" "0x6001";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1a86";
-	match "product" "0x7523";
+	match "product" "(0x5523|0x7523)";
 	action "kldload uchcom";
 };
 
@@ -3685,7 +3904,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x1b3d";
-	match "product" "0x0153";
+	match "product" "(0x0100|0x0101|0x0102|0x0103|0x0104|0x0105|0x0106|0x0107|0x0108|0x0109|0x010a|0x010b|0x010c|0x010d|0x010e|0x010f|0x0110|0x0111|0x0112|0x0113|0x0114|0x0115|0x0116|0x0117|0x0118|0x0119|0x011a|0x011b|0x011c|0x011d|0x011e|0x011f|0x0120|0x0121|0x0122|0x0123|0x0124|0x0125|0x0126|0x0128|0x0129|0x012a|0x012b|0x012d|0x012e|0x012f|0x0130|0x0131|0x0132|0x0133|0x0134|0x0135|0x0136|0x0137|0x0138|0x0139|0x013a|0x013b|0x013c|0x013d|0x013e|0x013f|0x0140|0x0141|0x0142|0x0143|0x0144|0x0145|0x0146|0x0147|0x0148|0x0149|0x014a|0x014b|0x014c|0x014d|0x014e|0x014f|0x0150|0x0151|0x0152|0x0153|0x0159|0x015a|0x015b|0x015c|0x015d|0x015e|0x015f|0x0160|0x0161|0x0162|0x0163|0x0164|0x0165|0x0166|0x0167|0x0168|0x0169|0x016a|0x016b|0x016c|0x016d|0x016e|0x016f|0x0170|0x0171|0x0172|0x0173|0x0174|0x0175|0x0176|0x0177|0x0178|0x0179|0x017a|0x017b|0x017c|0x017d|0x017e|0x017f|0x0180|0x0181|0x0182|0x0183|0x0184|0x0185|0x0186|0x0187|0x0188|0x0189|0x018a|0x018b|0x018c|0x018d|0x018e|0x018f|0x0190|0x0191|0x019
 2|0x0193|0x0194|0x0195|0x0196|0x0197|0x0198|0x0199|0x019a|0x019b|0x019c|0x019d|0x019e|0x019f|0x01a0|0x01a1|0x01a2|0x01a3|0x01a4|0x01a5|0x01a6|0x01a7|0x01a8|0x01a9|0x01aa|0x01ab|0x01ac|0x01ad|0x01ae|0x01af|0x01b0|0x01b1|0x01b2|0x01b3|0x01b4|0x01b5|0x01b6|0x01b7|0x01b8|0x01b9|0x01ba|0x01bb|0x01bc|0x01bd|0x01be|0x01bf|0x01c0|0x01c1|0x01c2|0x01c3|0x01c4|0x01c5|0x01c6|0x01c7|0x01c8|0x01c9|0x01ca|0x01cb|0x01cc|0x01cd|0x01ce|0x01cf|0x01d0|0x01d1|0x01d2|0x01d3|0x01d4|0x01d5|0x01d6|0x01d7|0x01d8|0x01d9|0x01da|0x01db|0x01dc|0x01dd|0x01de|0x01df|0x01e0|0x01e1|0x01e2|0x01e3|0x01e4|0x01e5|0x01e6|0x01e7|0x01e8|0x01e9|0x01ea|0x01eb|0x01ec|0x01ed|0x01ee|0x01ef|0x01f0|0x01f1|0x01f2|0x01f3|0x01f4|0x01f5|0x01f6|0x01f7|0x01f8|0x01f9|0x01fa|0x01fb|0x01fc|0x01fd|0x01fe|0x01ff)";
 	action "kldload uftdi";
 };
 
@@ -3708,6 +3927,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1b91";
+	match "product" "0x0064";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1bbb";
 	match "product" "(0x0000|0xf000)";
 	action "kldload u3g";
@@ -3724,6 +3951,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1bc9";
+	match "product" "0x6001";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1be3";
 	match "product" "0x07a6";
 	action "kldload uslcom";
@@ -3732,6 +3967,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1c0c";
+	match "product" "0x0102";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1c9e";
 	match "product" "(0x6061|0x9603|0x9605|0xf000)";
 	action "kldload u3g";
@@ -3780,6 +4023,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x1e29";
+	match "product" "(0x0102|0x0501)";
+	action "kldload -n uslcom";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x1eda";
 	match "product" "0x2310";
 	action "kldload if_run";
@@ -3916,6 +4167,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x20b7";
+	match "product" "0x0713";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x20b8";
 	match "product" "0x8888";
 	action "kldload if_run";
@@ -3932,6 +4191,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x2100";
+	match "product" "(0x9e52|0x9e54)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x22b8";
 	match "product" "(0x4204|0x4214|0x4224|0x4234|0x4244)";
 	action "kldload uipaq";
@@ -3948,6 +4215,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x22de";
+	match "product" "0x6801";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x2478";
 	match "product" "0x2008";
 	action "kldload uplcom";
@@ -3956,6 +4231,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x3195";
+	match "product" "(0xf190|0xf280|0xf281)";
+	action "kldload -n uslcom";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x3334";
 	match "product" "0x1701";
 	action "kldload if_aue";
@@ -4044,6 +4327,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x5050";
+	match "product" "(0x0100|0x0101|0x0102|0x0103|0x0104|0x0105|0x0106|0x0107|0x0300|0x0301|0x0400|0x0500|0x0700|0x0800|0x0900|0x0a00|0x0b00|0x0c00|0x0d00|0x0e00|0x0f00|0x1000|0x8000|0x8001|0x8002|0x8003|0x8004|0x8005)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x5173";
 	match "product" "0x1809";
 	action "kldload if_zyd";
@@ -4165,7 +4456,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x9710";
-	match "product" "0x7830";
+	match "product" "(0x7830|0x7832)";
 	action "kldload if_mos";
 };
 
@@ -4196,6 +4487,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0xdeee";
+	match "product" "(0x0300|0x0302|0x0303)";
+	action "kldload -n uftdi";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "intclass" "0x02";
 	match "intsubclass" "0x02";
 	match "intprotocol" "0x01";
@@ -4336,5 +4635,5 @@ nomatch 32 {
 	action "kldload umass";
 };
 
-# 1652 USB entries processed
+# 2386 USB entries processed
 

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:48:04 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id ED3F98B4;
 Sat, 29 Dec 2012 12:48:03 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id CE3EF8FC12;
 Sat, 29 Dec 2012 12:48:03 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCm3dg025538;
 Sat, 29 Dec 2012 12:48:03 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCm3vi025537;
 Sat, 29 Dec 2012 12:48:03 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291248.qBTCm3vi025537@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:48:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244819 - stable/8/sys/dev/usb
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:48:04 -0000

Author: hselasky
Date: Sat Dec 29 12:48:03 2012
New Revision: 244819
URL: http://svnweb.freebsd.org/changeset/base/244819

Log:
  Copy sys/dev/usbdevs from head @ r244719 to simplify merging.

Modified:
  stable/8/sys/dev/usb/usbdevs

Modified: stable/8/sys/dev/usb/usbdevs
==============================================================================
--- stable/8/sys/dev/usb/usbdevs	Sat Dec 29 12:33:32 2012	(r244818)
+++ stable/8/sys/dev/usb/usbdevs	Sat Dec 29 12:48:03 2012	(r244819)
@@ -317,10 +317,12 @@ vendor ACTLABS		0x061c	Act Labs
 vendor ALARIS		0x0620	Alaris
 vendor APEX		0x0624	Apex
 vendor CREATIVE3	0x062a	Creative Labs
+vendor MICRON		0x0634	Micron Technology
 vendor VIVITAR		0x0636	Vivitar
 vendor GUNZE		0x0637	Gunze Electronics USA
 vendor AVISION		0x0638	Avision
 vendor TEAC		0x0644	TEAC
+vendor ACTON		0x0647	Acton Research Corp.
 vendor SGI		0x065e	Silicon Graphics
 vendor SANWASUPPLY	0x0663	Sanwa Supply
 vendor MEGATEC		0x0665	Megatec
@@ -345,6 +347,7 @@ vendor AGFA		0x06bd	AGFA-Gevaert
 vendor ASIAMD		0x06be	Asia Microelectronic Development
 vendor BIZLINK		0x06c4	Bizlink International
 vendor KEYSPAN		0x06cd	Keyspan / InnoSys Inc.
+vendor CONTEC		0x06ce	Contec products
 vendor AASHIMA		0x06d6	Aashima Technology
 vendor LIEBERT		0x06da	Liebert
 vendor MULTITECH	0x06e0	MultiTech
@@ -487,7 +490,9 @@ vendor BROADCOM		0x0a5c	Broadcom
 vendor GREENHOUSE	0x0a6b	GREENHOUSE
 vendor MEDELI		0x0a67	Medeli
 vendor GEOCAST		0x0a79	Geocast Network Systems
-vendor IDQUANTIQUE	0x0aba	id Quantique
+vendor EGO		0x0a92	EGO systems
+vendor IDQUANTIQUE	0x0aba	ID Quantique
+vendor IDTECH		0x0acd	ID TECH
 vendor ZYDAS		0x0ace	Zydas Technology Corporation
 vendor NEODIO		0x0aec	Neodio
 vendor OPTION		0x0af0	Option N.V.
@@ -514,14 +519,20 @@ vendor ADDONICS2	0x0bf6	Addonics Technol
 vendor FSC		0x0bf8	Fujitsu Siemens Computers
 vendor AGATE		0x0c08	Agate Technologies
 vendor DMI		0x0c0b	DMI
+vendor ICOM		0x0c26	Icom Inc.
+vendor GNOTOMETRICS	0x0c33	GN Otometrics
 vendor CHICONY2		0x0c45	Chicony
 vendor REINERSCT	0x0c4b	Reiner-SCT
 vendor SEALEVEL		0x0c52	Sealevel System
+vendor JETI		0x0c6c	Jeti
 vendor LUWEN		0x0c76	Luwen
+vendor ELEKTOR		0x0c7d	ELEKTOR Electronics
 vendor KYOCERA2		0x0c88	Kyocera Wireless Corp.
 vendor ZCOM		0x0cde	Z-Com
 vendor ATHEROS2		0x0cf3	Atheros Communications
+vendor POSIFLEX		0x0d3a	POSIFLEX
 vendor TANGTOP		0x0d3d	Tangtop
+vendor KOBIL		0x0d46	KOBIL
 vendor SMC3		0x0d5c	Standard Microsystems
 vendor ADDON		0x0d7d	Add-on Technology
 vendor ACDC		0x0d7e	American Computer & Digital Components
@@ -530,6 +541,7 @@ vendor CONCEPTRONIC	0x0d8e	Conceptronic
 vendor SKANHEX		0x0d96	Skanhex Technology, Inc.
 vendor MSI		0x0db0	Micro Star International
 vendor ELCON		0x0db7	ELCON Systemtechnik
+vendor UNKNOWN4		0x0dcd	Unknown vendor
 vendor NETAC		0x0dd8	Netac
 vendor SITECOMEU	0x0df6	Sitecom Europe
 vendor MOBILEACTION	0x0df7	Mobile Action
@@ -553,6 +565,7 @@ vendor VTECH		0x0f88	VTech
 vendor FALCOM		0x0f94	Falcom Wireless Communications GmbH
 vendor RIM		0x0fca	Research In Motion
 vendor DYNASTREAM	0x0fcf	Dynastream Innovations
+vendor LARSENBRUSGAARD	0x0fd8	Larsen and Brusgaard
 vendor KONTRON		0x0fe6	Kontron AG
 vendor QUALCOMM		0x1004	Qualcomm
 vendor APACER		0x1005	Apacer
@@ -560,6 +573,7 @@ vendor MOTOROLA4	0x100d	Motorola
 vendor AIRPLUS		0x1011  Airplus
 vendor DESKNOTE		0x1019	Desknote
 vendor NEC3		0x1033	NEC
+vendor TTI		0x103e	Thurlby Thandar Instruments
 vendor GIGABYTE		0x1044	GIGABYTE
 vendor WESTERN		0x1058	Western Digital
 vendor MOTOROLA		0x1063	Motorola
@@ -588,12 +602,14 @@ vendor TOPFIELD		0x11db	Topfield Co., Lt
 vendor SIEMENS3		0x11f5	Siemens
 vendor NETINDEX		0x11f6	NetIndex
 vendor ALCATEL		0x11f7	Alcatel
+vendor INTERBIOMETRICS	0x1209	Interbiometrics
 vendor UNKNOWN3		0x1233	Unknown vendor
 vendor TSUNAMI		0x1241	Tsunami
 vendor PHEENET		0x124a	Pheenet
 vendor TARGUS		0x1267	Targus
 vendor TWINMOS		0x126f	TwinMOS
 vendor TENDA		0x1286	Tenda
+vendor TESTO		0x128d	Testo products
 vendor CREATIVE2	0x1292	Creative Labs
 vendor BELKIN2		0x1293	Belkin Components
 vendor CYBERTAN		0x129b	CyberTAN Technology
@@ -612,8 +628,10 @@ vendor INITIO		0x13fd	Initio Corporation
 vendor EMTEC		0x13fe	Emtec
 vendor NOVATEL		0x1410	Novatel Wireless
 vendor MERLIN		0x1416	Merlin
+vendor REDOCTANE	0x1430	RedOctane
 vendor WISTRONNEWEB	0x1435	Wistron NeWeb
 vendor RADIOSHACK	0x1453	Radio Shack
+vendor FIC		0x1457	FIC / OpenMoko
 vendor HUAWEI3COM	0x1472	Huawei-3Com
 vendor ABOCOM2		0x1482	AboCom Systems
 vendor SILICOM		0x1485	Silicom
@@ -632,8 +650,10 @@ vendor OQO		0x1557	OQO
 vendor UMEDIA		0x157e	U-MEDIA Communications
 vendor FIBERLINE	0x1582	Fiberline
 vendor SPARKLAN		0x15a9	SparkLAN
+vendor OLIMEX		0x15ba	Olimex
 vendor SOUNDGRAPH 	0x15c2	Soundgraph, Inc.
 vendor AMIT2		0x15c5	AMIT
+vendor TEXTECH		0x15ca	Textech International Ltd.
 vendor SOHOWARE		0x15e8	SOHOware
 vendor UMAX		0x1606	UMAX Data Systems
 vendor INSIDEOUT	0x1608	Inside Out Networks
@@ -665,13 +685,19 @@ vendor QCOM		0x18e8	Qcom
 vendor ELV		0x18ef	ELV
 vendor LINKSYS3		0x1915	Linksys
 vendor QUALCOMMINC	0x19d2	Qualcomm, Incorporated
+vendor BAYER		0x1a79	Bayer
 vendor WCH2		0x1a86	QinHeng Electronics
 vendor STELERA		0x1a8d	Stelera Wireless
-vendor MATRIXORBITAL	0x1b3d	Matrix Orbital 
+vendor CORSAIR		0x1b1c	Corsair
+vendor MATRIXORBITAL	0x1b3d	Matrix Orbital
 vendor OVISLINK		0x1b75	OvisLink
+vendor TML		0x1b91	The Mobility Lab
 vendor TCTMOBILE	0x1bbb  TCT Mobile
+vendor ALTI2		0x1bc9	Alti-2 products
+vendor SUNPLUS		0x1bcf	Sunplus Innovation Technology Inc.
 vendor WAGO		0x1be3  WAGO Kontakttechnik GmbH.
 vendor TELIT		0x1bc7  Telit
+vendor IONICS		0x1c0c	Ionics PlugComputer
 vendor LONGCHEER	0x1c9e	Longcheer Holdings, Ltd.
 vendor MPMAN		0x1cae	MpMan
 vendor DRESDENELEKTRONIK 0x1cf1 dresden elektronik
@@ -688,9 +714,14 @@ vendor PLANEX2		0x2019	Planex Communicat
 vendor HAUPPAUGE2	0x2040	Hauppauge Computer Works
 vendor TLAYTECH		0x20b9	Tlay Tech
 vendor ENCORE		0x203d	Encore
+vendor QIHARDWARE	0x20b7	QI-hardware
 vendor PARA		0x20b8	PARA Industrial
+vendor SIMTEC		0x20df	Simtec Electronics
+vendor RTSYSTEMS	0x2100	RTSYSTEMS
+vendor VIALABS		0x2109	VIA Labs
 vendor ERICSSON		0x2282	Ericsson
 vendor MOTOROLA2	0x22b8	Motorola
+vendor WETELECOM	0x22de	WeTelecom
 vendor TRIPPLITE	0x2478	Tripp-Lite
 vendor HIROSE		0x2631	Hirose Electric
 vendor NHJ		0x2770	NHJ
@@ -708,6 +739,7 @@ vendor IRIVER		0x4102	iRiver
 vendor DELL		0x413c	Dell
 vendor WCH		0x4348	QinHeng Electronics
 vendor ACEECA		0x4766	Aceeca
+vendor PAPOUCH		0x5050	Papouch products
 vendor AVERATEC		0x50c2	Averatec
 vendor SWEEX		0x5173	Sweex
 vendor PROLIFIC2	0x5372	Prolific Technologies
@@ -724,8 +756,10 @@ vendor SITECOM2		0x9016	Sitecom
 vendor MOSCHIP		0x9710	MosChip Semiconductor
 vendor MARVELL		0x9e88	Marvell Technology Group Ltd.
 vendor 3COM3		0xa727	3Com
+vendor EVOLUTION	0xdeee	Evolution Robotics products
 vendor DATAAPEX		0xdaae	DataApex
 vendor HP2		0xf003	Hewlett Packard
+vendor LOGILINK		0xfc08	LogiLink
 vendor USRP		0xfffe	GNU Radio USRP
 
 /*
@@ -779,6 +813,9 @@ product ABOCOM RT2573_3		0xb21d	RT2573
 product ABOCOM RT2573_4		0xb21e	RT2573
 product ABOCOM WUG2700		0xb21f	WUG2700
 
+/* Acton Research Corp. */
+product ACTON SPECTRAPRO	0x0100	FTDI compatible adapter
+
 /* Accton products */
 product ACCTON USB320_EC	0x1046	USB320-EC Ethernet Adapter
 product ACCTON 2664W		0x3501	2664W
@@ -906,6 +943,8 @@ product AIRPLUS MCD650		0x3198	MCD650 mo
 
 /* AirPrime products */
 product AIRPRIME PC5220		0x0112	CDMA Wireless PC Card
+product AIRPRIME USB308		0x68A3	USB308 HSPA+ USB Modem
+product AIRPRIME AC313U		0x68aa	Sierra Wireless AirCard 313U
 
 /* AirTies products */
 product AIRTIES RT3070		0x2310	RT3070
@@ -941,6 +980,9 @@ product ALINK 3GU		0x9200	3G modem
 product ALTEC ADA70		0x0070	ADA70 Speakers
 product ALTEC ASC495		0xff05	ASC495 Speakers
 
+/* Alti-2 products */
+product ALTI2 N3		0x6001	FTDI compatible adapter
+
 /* Allied Telesyn International products */
 product ALLIEDTELESYN ATUSB100	0xb100	AT-USB100
 
@@ -987,6 +1029,10 @@ product AMIT RT2870_1		0x0012	RT2870
 /* AMIT(2) products */
 product AMIT2 RT2870		0x0008	RT2870
 
+/* Analog Devices products */
+product ANALOGDEVICES GNICE	0xf000	FTDI compatible adapter
+product ANALOGDEVICES GNICEPLUS	0xf001	FTDI compatible adapter
+
 /* Anchor products */
 product ANCHOR SERIAL		0x2008	Serial
 product ANCHOR EZUSB		0x2131	EZUSB
@@ -1054,6 +1100,7 @@ product ASIX AX88178		0x1780	AX88178
 product ASIX AX88772		0x7720	AX88772
 product ASIX AX88772A		0x772a	AX88772A USB 2.0 10/100 Ethernet
 product ASIX AX88772B		0x772b	AX88772B USB 2.0 10/100 Ethernet
+product ASIX AX88772B_1		0x7e2b	AX88772B USB 2.0 10/100 Ethernet
 
 /* ASUS products */
 product ASUS2 USBN11		0x0b05	USB-N11
@@ -1075,6 +1122,7 @@ product ASUS A730W		0x4202	ASUS MyPal A7
 product ASUS P535		0x420f	ASUS P535 PDA
 product	ASUS GMSC		0x422f	ASUS Generic Mass Storage
 product ASUS RT2570		0x1706	RT2500USB Wireless Adapter
+product ASUS USB_N53		0x179d	ASUS Black Diamond Dual Band USB-N53
 
 /* ATen products */
 product ATEN UC1284		0x2001	Parallel printer
@@ -1121,8 +1169,27 @@ product	AZUREWAVE RT3070_3	0x3305	RT3070
 /* Baltech products */
 product BALTECH CARDREADER	0x9999	Card reader
 
+/* Bayer products */
+product BAYER CONTOUR_CABLE	0x6001	FTDI compatible adapter
+
 /* B&B Electronics products */
 product BBELECTRONICS USOTL4	0xAC01	RS-422/485
+product BBELECTRONICS 232USB9M		0xac27	FTDI compatible adapter
+product BBELECTRONICS 485USB9F_2W	0xac25	FTDI compatible adapter
+product BBELECTRONICS 485USB9F_4W	0xac26	FTDI compatible adapter
+product BBELECTRONICS 485USBTB_2W	0xac33	FTDI compatible adapter
+product BBELECTRONICS 485USBTB_4W	0xac34	FTDI compatible adapter
+product BBELECTRONICS TTL3USB9M		0xac50	FTDI compatible adapter
+product BBELECTRONICS TTL5USB9M		0xac49	FTDI compatible adapter
+product BBELECTRONICS USO9ML2		0xac03	FTDI compatible adapter
+product BBELECTRONICS USO9ML2DR		0xac17	FTDI compatible adapter
+product BBELECTRONICS USO9ML2DR_2	0xac16	FTDI compatible adapter
+product BBELECTRONICS USOPTL4		0xac11	FTDI compatible adapter
+product BBELECTRONICS USOPTL4DR		0xac19	FTDI compatible adapter
+product BBELECTRONICS USOPTL4DR2	0xac18	FTDI compatible adapter
+product BBELECTRONICS USPTL4		0xac12	FTDI compatible adapter
+product BBELECTRONICS USTL4		0xac02	FTDI compatible adapter
+product BBELECTRONICS ZZ_PROG1_USB	0xba02	FTDI compatible adapter
 
 /* Belkin products */
 /*product BELKIN F5U111		0x????	F5U111 Ethernet*/
@@ -1289,6 +1356,9 @@ product CONCEPTRONIC2 RT2870_6	0x3c28	RT
 /* Connectix products */
 product CONNECTIX QUICKCAM	0x0001	QuickCam
 
+/* Conect products */
+product CONTEC COM1USBH		0x8311	FTDI compatible adapter
+
 /* Corega products */
 product COREGA ETHER_USB_T	0x0001	Ether USB-T
 product COREGA FETHER_USB_TX	0x0004	FEther USB-TX
@@ -1309,6 +1379,9 @@ product COREGA CGWLUSB300GNM	0x0042	CG-W
 product COREGA WLUSB_11_STICK	0x7613	WLAN USB Stick 11
 product COREGA FETHER_USB_TXC	0x9601	FEther USB-TXC
 
+/* Corsair products */
+product CORSAIR K60		0x0a60	Corsair Vengeance K60 keyboard
+
 /* Creative products */
 product CREATIVE NOMAD_II	0x1002	Nomad II MP3 player
 product CREATIVE NOMAD_IIMG	0x4004	Nomad II MG
@@ -1474,12 +1547,17 @@ product EDIMAX EW7318USG	0x7318	USB Wire
 product EDIMAX RT2870_1		0x7711	RT2870
 product EDIMAX EW7717		0x7717	EW-7717
 product EDIMAX EW7718		0x7718	EW-7718
+product EDIMAX EW7811UN		0x7811	EW-7811Un
 
 /* eGalax Products */
 product EGALAX TPANEL		0x0001	Touch Panel
 product EGALAX TPANEL2		0x0002	Touch Panel
 product EGALAX2 TPANEL		0x0001	Touch Panel
 
+/* EGO Products */
+product EGO DUMMY		0x0000	Dummy Product
+product EGO M4U			0x1020	ESI M4U
+
 /* Eicon Networks */
 product EICON DIVA852		0x4905	Diva 852 ISDN TA
 
@@ -1501,6 +1579,9 @@ product ELECOM UCSGT		0x5003	UC-SGT
 product ELECOM UCSGT0		0x5004	UC-SGT
 product ELECOM LDUSBTX3		0xabc1	LD-USB/TX
 
+/* Elektor products */
+product ELEKTOR FT323R		0x0005	FTDI compatible adapter
+
 /* Elsa products */
 product ELSA MODEM1		0x2265	ELSA Modem Board
 product ELSA USB2ETHERNET	0x3000	Microlink USB2Ethernet
@@ -1581,11 +1662,17 @@ product EPSON SX400		0x084a	SX400/NX400/
 /* e-TEK Labs products */
 product ETEK 1COM		0x8007	Serial
 
+/* Evolution products */
+product EVOLUTION ER1		0x0300	FTDI compatible adapter
+product EVOLUTION HYBRID	0x0302	FTDI compatible adapter
+product EVOLUTION RCM4		0x0303	FTDI compatible adapter
+
 /* Extended Systems products */
 product EXTENDED XTNDACCESS	0x0100	XTNDAccess IrDA
 
 /* Falcom products */
 product FALCOM TWIST		0x0001	USB GSM/GPRS Modem
+product FALCOM SAMBA		0x0005	FTDI compatible adapter
 
 /* FEIYA products */
 product FEIYA DUMMY		0x0000	Dummy product
@@ -1600,6 +1687,9 @@ product FESTO CMSP		0x0501	CMSP
 /* Fiberline */
 product FIBERLINE WL430U	0x6003	WL-430U
 
+/* FIC / OpenMoko */
+product FIC NEO1973_DEBUG	0x5118	FTDI compatible adapter
+
 /* Fossil, Inc products */
 product FOSSIL WRISTPDA		0x0002	Wrist PDA
 
@@ -1618,7 +1708,9 @@ product FSC E5400		0x1009	PrismGT USB 2.
 product FTDI SERIAL_8U100AX	0x8372	8U100AX Serial
 product FTDI SERIAL_8U232AM	0x6001	8U232AM Serial
 product FTDI SERIAL_8U232AM4	0x6004	8U232AM Serial
+product FTDI SERIAL_232RL	0x6006	FT232RL Serial
 product FTDI SERIAL_2232C	0x6010	FT2232C Dual port Serial
+product FTDI 232H		0x6014	FTDI compatible adapter
 product FTDI SERIAL_2232D	0x9e90	FT2232D Dual port Serial
 product FTDI SERIAL_4232H	0x6011	FT4232H Quad port Serial
 product FTDI BEAGLEBONE		0xa6d0	BeagleBone
@@ -1650,6 +1742,204 @@ product FTDI SEMC_DSS20		0xfc82	SEMC DSS
 /* Commerzielle und Technische Informationssysteme GmbH products */
 product FTDI CTI_USB_NANO_485	0xf60b	CTI USB-Nano 485
 product FTDI CTI_USB_MINI_485	0xf608	CTI USB-Mini 485
+/* Other products */
+product FTDI 232RL		0xfbfa	FTDI compatible adapter
+product FTDI 4N_GALAXY_DE_1	0xf3c0	FTDI compatible adapter
+product FTDI 4N_GALAXY_DE_2	0xf3c1	FTDI compatible adapter
+product FTDI 4N_GALAXY_DE_3	0xf3c2	FTDI compatible adapter
+product FTDI 8U232AM_ALT	0x6006	FTDI compatible adapter
+product FTDI ACCESSO		0xfad0	FTDI compatible adapter
+product FTDI ACG_HFDUAL		0xdd20	FTDI compatible adapter
+product FTDI ACTIVE_ROBOTS	0xe548	FTDI compatible adapter
+product FTDI ACTZWAVE		0xf2d0	FTDI compatible adapter
+product FTDI AMC232		0xff00	FTDI compatible adapter
+product FTDI ARTEMIS		0xdf28	FTDI compatible adapter
+product FTDI ASK_RDR400		0xc991	FTDI compatible adapter
+product FTDI ATIK_ATK16		0xdf30	FTDI compatible adapter
+product FTDI ATIK_ATK16C	0xdf32	FTDI compatible adapter
+product FTDI ATIK_ATK16HR	0xdf31	FTDI compatible adapter
+product FTDI ATIK_ATK16HRC	0xdf33	FTDI compatible adapter
+product FTDI ATIK_ATK16IC	0xdf35	FTDI compatible adapter
+product FTDI BCS_SE923		0xfb99	FTDI compatible adapter
+product FTDI CANDAPTER		0x9f80	FTDI compatible adapter
+product FTDI CANUSB		0xffa8	FTDI compatible adapter
+product FTDI CCSICDU20_0	0xf9d0	FTDI compatible adapter
+product FTDI CCSICDU40_1	0xf9d1	FTDI compatible adapter
+product FTDI CCSICDU64_4	0xf9d4	FTDI compatible adapter
+product FTDI CCSLOAD_N_GO_3	0xf9d3	FTDI compatible adapter
+product FTDI CCSMACHX_2		0xf9d2	FTDI compatible adapter
+product FTDI CCSPRIME8_5	0xf9d5	FTDI compatible adapter
+product FTDI CHAMSYS_24_MASTER_WING	0xdaf8	FTDI compatible adapter
+product FTDI CHAMSYS_MAXI_WING	0xdafd	FTDI compatible adapter
+product FTDI CHAMSYS_MEDIA_WING	0xdafe	FTDI compatible adapter
+product FTDI CHAMSYS_MIDI_TIMECODE	0xdafb	FTDI compatible adapter
+product FTDI CHAMSYS_MINI_WING	0xdafc	FTDI compatible adapter
+product FTDI CHAMSYS_PC_WING	0xdaf9	FTDI compatible adapter
+product FTDI CHAMSYS_USB_DMX	0xdafa	FTDI compatible adapter
+product FTDI CHAMSYS_WING	0xdaff	FTDI compatible adapter
+product FTDI COM4SM		0xd578	FTDI compatible adapter
+product FTDI CONVERTER_0	0xd388	FTDI compatible adapter
+product FTDI CONVERTER_1	0xd389	FTDI compatible adapter
+product FTDI CONVERTER_2	0xd38a	FTDI compatible adapter
+product FTDI CONVERTER_3	0xd38b	FTDI compatible adapter
+product FTDI CONVERTER_4	0xd38c	FTDI compatible adapter
+product FTDI CONVERTER_5	0xd38d	FTDI compatible adapter
+product FTDI CONVERTER_6	0xd38e	FTDI compatible adapter
+product FTDI CONVERTER_7	0xd38f	FTDI compatible adapter
+product FTDI DMX4ALL		0xc850	FTDI compatible adapter
+product FTDI DOMINTELL_DGQG	0xef50	FTDI compatible adapter
+product FTDI DOMINTELL_DUSB	0xef51	FTDI compatible adapter
+product FTDI DOTEC		0x9868	FTDI compatible adapter
+product FTDI ECLO_COM_1WIRE	0xea90	FTDI compatible adapter
+product FTDI ECO_PRO_CDS	0xe520	FTDI compatible adapter
+product FTDI ELSTER_UNICOM	0xe700	FTDI compatible adapter
+product FTDI ELV_ALC8500	0xf06e	FTDI compatible adapter
+product FTDI ELV_CLI7000	0xfb59	FTDI compatible adapter
+product FTDI ELV_CSI8		0xe0f0	FTDI compatible adapter
+product FTDI ELV_EC3000		0xe006	FTDI compatible adapter
+product FTDI ELV_EM1000DL	0xe0f1	FTDI compatible adapter
+product FTDI ELV_EM1010PC	0xe0ef	FTDI compatible adapter
+product FTDI ELV_FEM		0xe00a	FTDI compatible adapter
+product FTDI ELV_FHZ1000PC	0xf06f	FTDI compatible adapter
+product FTDI ELV_FHZ1300PC	0xe0e8	FTDI compatible adapter
+product FTDI ELV_FM3RX		0xe0ed	FTDI compatible adapter
+product FTDI ELV_FS20SIG	0xe0f4	FTDI compatible adapter
+product FTDI ELV_HS485		0xe0ea	FTDI compatible adapter
+product FTDI ELV_KL100		0xe002	FTDI compatible adapter
+product FTDI ELV_MSM1		0xe001	FTDI compatible adapter
+product FTDI ELV_PCD200		0xf06c	FTDI compatible adapter
+product FTDI ELV_PCK100		0xe0f2	FTDI compatible adapter
+product FTDI ELV_PPS7330	0xfb5c	FTDI compatible adapter
+product FTDI ELV_RFP500		0xe0f3	FTDI compatible adapter
+product FTDI ELV_T1100		0xf06b	FTDI compatible adapter
+product FTDI ELV_TFD128		0xe0ec	FTDI compatible adapter
+product FTDI ELV_TFM100		0xfb5d	FTDI compatible adapter
+product FTDI ELV_TWS550		0xe009	FTDI compatible adapter
+product FTDI ELV_UAD8		0xf068	FTDI compatible adapter
+product FTDI ELV_UDA7		0xf069	FTDI compatible adapter
+product FTDI ELV_UDF77		0xfb5e	FTDI compatible adapter
+product FTDI ELV_UIO88		0xfb5f	FTDI compatible adapter
+product FTDI ELV_ULA200		0xf06d	FTDI compatible adapter
+product FTDI ELV_UM100		0xfb5a	FTDI compatible adapter
+product FTDI ELV_UMS100		0xe0eb	FTDI compatible adapter
+product FTDI ELV_UO100		0xfb5b	FTDI compatible adapter
+product FTDI ELV_UR100		0xfb58	FTDI compatible adapter
+product FTDI ELV_USI2		0xf06a	FTDI compatible adapter
+product FTDI ELV_USR		0xe000	FTDI compatible adapter
+product FTDI ELV_UTP8		0xe0f5	FTDI compatible adapter
+product FTDI ELV_WS300PC	0xe0f6	FTDI compatible adapter
+product FTDI ELV_WS444PC	0xe0f7	FTDI compatible adapter
+product FTDI ELV_WS500		0xe0e9	FTDI compatible adapter
+product FTDI ELV_WS550		0xe004	FTDI compatible adapter
+product FTDI ELV_WS777		0xe0ee	FTDI compatible adapter
+product FTDI ELV_WS888		0xe008	FTDI compatible adapter
+product FTDI FUTURE_0		0xf44a	FTDI compatible adapter
+product FTDI FUTURE_1		0xf44b	FTDI compatible adapter
+product FTDI FUTURE_2		0xf44c	FTDI compatible adapter
+product FTDI GENERIC		0x9378	FTDI compatible adapter
+product FTDI GUDEADS_E808	0xe808	FTDI compatible adapter
+product FTDI GUDEADS_E809	0xe809	FTDI compatible adapter
+product FTDI GUDEADS_E80A	0xe80a	FTDI compatible adapter
+product FTDI GUDEADS_E80B	0xe80b	FTDI compatible adapter
+product FTDI GUDEADS_E80C	0xe80c	FTDI compatible adapter
+product FTDI GUDEADS_E80D	0xe80d	FTDI compatible adapter
+product FTDI GUDEADS_E80E	0xe80e	FTDI compatible adapter
+product FTDI GUDEADS_E80F	0xe80f	FTDI compatible adapter
+product FTDI GUDEADS_E88D	0xe88d	FTDI compatible adapter
+product FTDI GUDEADS_E88E	0xe88e	FTDI compatible adapter
+product FTDI GUDEADS_E88F	0xe88f	FTDI compatible adapter
+product FTDI HD_RADIO		0x937c	FTDI compatible adapter
+product FTDI HO720		0xed72	FTDI compatible adapter
+product FTDI HO730		0xed73	FTDI compatible adapter
+product FTDI HO820		0xed74	FTDI compatible adapter
+product FTDI HO870		0xed71	FTDI compatible adapter
+product FTDI IBS_APP70		0xff3d	FTDI compatible adapter
+product FTDI IBS_PCMCIA		0xff3a	FTDI compatible adapter
+product FTDI IBS_PEDO		0xff3e	FTDI compatible adapter
+product FTDI IBS_PICPRO		0xff39	FTDI compatible adapter
+product FTDI IBS_PK1		0xff3b	FTDI compatible adapter
+product FTDI IBS_PROD		0xff3f	FTDI compatible adapter
+product FTDI IBS_RS232MON	0xff3c	FTDI compatible adapter
+product FTDI IBS_US485		0xff38	FTDI compatible adapter
+product FTDI IPLUS		0xd070	FTDI compatible adapter
+product FTDI IPLUS2		0xd071	FTDI compatible adapter
+product FTDI IRTRANS		0xfc60	FTDI compatible adapter
+product FTDI LENZ_LIUSB		0xd780	FTDI compatible adapter
+product FTDI LM3S_DEVEL_BOARD	0xbcd8	FTDI compatible adapter
+product FTDI LM3S_EVAL_BOARD	0xbcd9	FTDI compatible adapter
+product FTDI MASTERDEVEL2	0xf449	FTDI compatible adapter
+product FTDI MHAM_DB9		0xeeed	FTDI compatible adapter
+product FTDI MHAM_IC		0xeeec	FTDI compatible adapter
+product FTDI MHAM_KW		0xeee8	FTDI compatible adapter
+product FTDI MHAM_RS232		0xeeee	FTDI compatible adapter
+product FTDI MHAM_Y6		0xeeea	FTDI compatible adapter
+product FTDI MHAM_Y8		0xeeeb	FTDI compatible adapter
+product FTDI MHAM_Y9		0xeeef	FTDI compatible adapter
+product FTDI MHAM_YS		0xeee9	FTDI compatible adapter
+product FTDI MICRO_CHAMELEON	0xcaa0	FTDI compatible adapter
+product FTDI MTXORB_5		0xfa05	FTDI compatible adapter
+product FTDI MTXORB_6		0xfa06	FTDI compatible adapter
+product FTDI NXTCAM		0xabb8	FTDI compatible adapter
+product FTDI OCEANIC		0xf460	FTDI compatible adapter
+product FTDI OOCDLINK		0xbaf8	FTDI compatible adapter
+product FTDI OPENDCC		0xbfd8	FTDI compatible adapter
+product FTDI OPENDCC_GATEWAY	0xbfdb	FTDI compatible adapter
+product FTDI OPENDCC_GBM	0xbfdc	FTDI compatible adapter
+product FTDI OPENDCC_SNIFFER	0xbfd9	FTDI compatible adapter
+product FTDI OPENDCC_THROTTLE	0xbfda	FTDI compatible adapter
+product FTDI PCDJ_DAC2		0xfa88	FTDI compatible adapter
+product FTDI PERLE_ULTRAPORT	0xf0c0	FTDI compatible adapter
+product FTDI PHI_FISCO		0xe40b	FTDI compatible adapter
+product FTDI PIEGROUP		0xf208	FTDI compatible adapter
+product FTDI PROPOX_JTAGCABLEII	0xd738	FTDI compatible adapter
+product FTDI R2000KU_TRUE_RNG	0xfb80	FTDI compatible adapter
+product FTDI R2X0		0xfc71	FTDI compatible adapter
+product FTDI RELAIS		0xfa10	FTDI compatible adapter
+product FTDI REU_TINY		0xed22	FTDI compatible adapter
+product FTDI RMP200		0xe729	FTDI compatible adapter
+product FTDI RM_CANVIEW		0xfd60	FTDI compatible adapter
+product FTDI RRCIRKITS_LOCOBUFFER	0xc7d0	FTDI compatible adapter
+product FTDI SCIENCESCOPE_HS_LOGBOOK	0xff1d	FTDI compatible adapter
+product FTDI SCIENCESCOPE_LOGBOOKML	0xff18	FTDI compatible adapter
+product FTDI SCIENCESCOPE_LS_LOGBOOK	0xff1c	FTDI compatible adapter
+product FTDI SCS_DEVICE_0	0xd010	FTDI compatible adapter
+product FTDI SCS_DEVICE_1	0xd011	FTDI compatible adapter
+product FTDI SCS_DEVICE_2	0xd012	FTDI compatible adapter
+product FTDI SCS_DEVICE_3	0xd013	FTDI compatible adapter
+product FTDI SCS_DEVICE_4	0xd014	FTDI compatible adapter
+product FTDI SCS_DEVICE_5	0xd015	FTDI compatible adapter
+product FTDI SCS_DEVICE_6	0xd016	FTDI compatible adapter
+product FTDI SCS_DEVICE_7	0xd017	FTDI compatible adapter
+product FTDI SDMUSBQSS		0xf448	FTDI compatible adapter
+product FTDI SIGNALYZER_SH2	0xbca2	FTDI compatible adapter
+product FTDI SIGNALYZER_SH4	0xbca4	FTDI compatible adapter
+product FTDI SIGNALYZER_SLITE	0xbca1	FTDI compatible adapter
+product FTDI SIGNALYZER_ST	0xbca0	FTDI compatible adapter
+product FTDI SPECIAL_1		0xfc70	FTDI compatible adapter
+product FTDI SPECIAL_3		0xfc72	FTDI compatible adapter
+product FTDI SPECIAL_4		0xfc73	FTDI compatible adapter
+product FTDI SPROG_II		0xf0c8	FTDI compatible adapter
+product FTDI SR_RADIO		0x9379	FTDI compatible adapter
+product FTDI SUUNTO_SPORTS	0xf680	FTDI compatible adapter
+product FTDI TAVIR_STK500	0xfa33	FTDI compatible adapter
+product FTDI TERATRONIK_D2XX	0xec89	FTDI compatible adapter
+product FTDI TERATRONIK_VCP	0xec88	FTDI compatible adapter
+product FTDI THORLABS		0xfaf0	FTDI compatible adapter
+product FTDI TNC_X		0xebe0	FTDI compatible adapter
+product FTDI TTUSB		0xff20	FTDI compatible adapter
+product FTDI USBX_707		0xf857	FTDI compatible adapter
+product FTDI USINT_CAT		0xb810	FTDI compatible adapter
+product FTDI USINT_RS232	0xb812	FTDI compatible adapter
+product FTDI USINT_WKEY		0xb811	FTDI compatible adapter
+product FTDI VARDAAN		0xf070	FTDI compatible adapter
+product FTDI VNHCPCUSB_D	0xfe38	FTDI compatible adapter
+product FTDI WESTREX_MODEL_777		0xdc00	FTDI compatible adapter
+product FTDI WESTREX_MODEL_8900F	0xdc01	FTDI compatible adapter
+product FTDI XF_547		0xfc0a	FTDI compatible adapter
+product FTDI XF_640		0xfc0e	FTDI compatible adapter
+product FTDI XF_642		0xfc0f	FTDI compatible adapter
+product FTDI XM_RADIO		0x937a	FTDI compatible adapter
+product FTDI YEI_SERVOCENTER31	0xe050	FTDI compatible adapter
 
 /* Fuji photo products */
 product FUJIPHOTO MASS0100	0x0100	Mass Storage
@@ -1712,6 +2002,9 @@ product GLOBESPAN PRISM_GT_2	0x2002	Pris
 /* G.Mate, Inc products */
 product GMATE YP3X00		0x1001	YP3X00 PDA
 
+/* GN Otometrics */
+product GNOTOMETRICS USB	0x0010	FTDI compatible adapter
+
 /* GoHubs products */
 product GOHUBS GOCOM232		0x1001	GoCOM232 Serial
 
@@ -1918,6 +2211,22 @@ product HUAWEI3COM WUB320G	0x0009	Aolynk
 /* IBM Corporation */
 product IBM USBCDROMDRIVE	0x4427	USB CD-ROM Drive
 
+/* Icom products */
+product ICOM SP1		0x0004	FTDI compatible adapter
+product ICOM OPC_U_UC		0x0018	FTDI compatible adapter
+product ICOM RP2C1		0x0009	FTDI compatible adapter
+product ICOM RP2C2		0x000a	FTDI compatible adapter
+product ICOM RP2D		0x000b	FTDI compatible adapter
+product ICOM RP2KVR		0x0013	FTDI compatible adapter
+product ICOM RP2KVT		0x0012	FTDI compatible adapter
+product ICOM RP2VR		0x000d	FTDI compatible adapter
+product ICOM RP2VT		0x000c	FTDI compatible adapter
+product ICOM RP4KVR		0x0011	FTDI compatible adapter
+product ICOM RP4KVT		0x0010	FTDI compatible adapter
+
+/* ID-tech products */
+product IDTECH IDT1221U		0x0300	FTDI compatible adapter
+
 /* Imagination Technologies products */
 product IMAGINATION DBX1	0x2107	DBX1 DSP core
 
@@ -1942,6 +2251,10 @@ product INTEL TESTBOARD		0x9890	82930 te
 product INTEL2 IRMH        	0x0020	Integrated Rate Matching Hub
 product INTEL2 IRMH2        	0x0024	Integrated Rate Matching Hub
 
+/* Interbiometric products */
+product INTERBIOMETRICS IOBOARD		0x1002	FTDI compatible adapter
+product INTERBIOMETRICS MINI_IOBOARD		0x1006	FTDI compatible adapter
+
 /* Intersil products */
 product INTERSIL PRISM_GT	0x1000	PrismGT USB 2.0 WLAN
 product INTERSIL PRISM_2X	0x3642	Prism2.x or Atmel WLAN
@@ -1973,6 +2286,9 @@ product IODATA2 USB2SC		0x0a09	USB2.0-SC
 product IOMEGA ZIP100		0x0001	Zip 100
 product IOMEGA ZIP250		0x0030	Zip 250
 
+/* Ionic products */
+product IONICS PLUGCOMPUTER		0x0102	FTDI compatible adapter
+
 /* Integrated System Solution Corp. products */
 product ISSC ISSCBTA		0x1001	Bluetooth USB Adapter
 
@@ -1990,6 +2306,9 @@ product JABLOTRON PC60B		0x0001	PC-60B
 /* Jaton products */
 product JATON EDA		0x5704	Ethernet
 
+/* Jeti products */
+product JETI SPC1201		0x04b2	FTDI compatible adapter
+
 /* JMicron products */
 product JMICRON JM20336		0x2336	USB to SATA Bridge
 product JMICRON JM20337		0x2338	USB to ATA/ATAPI Bridge
@@ -2053,6 +2372,10 @@ product KINGSTON KNU101TX	0x000a	KNU101T
 product KLSI DUH3E10BT		0x0008	USB Ethernet
 product KLSI DUH3E10BTN		0x0009	USB Ethernet
 
+/* Kobil products */
+product KOBIL CONV_B1		0x2020	FTDI compatible adapter
+product KOBIL CONV_KAAN		0x2021	FTDI compatible adapter
+
 /* Kodak products */
 product KODAK DC220		0x0100	Digital Science DC220
 product KODAK DC260		0x0110	Digital Science DC260
@@ -2087,6 +2410,9 @@ product KYOCERA2 KPC680		0x180a	Qualcomm
 product LACIE HD		0xa601	Hard Disk
 product LACIE CDRW		0xa602	CD R/W
 
+/* Larsen and Brusgaard products */
+product LARSENBRUSGAARD ALTITRACK	0x0001	FTDI compatible adapter
+
 /* Leadtek products */
 product LEADTEK 9531		0x2101	9531 GPS
 
@@ -2124,12 +2450,17 @@ product LINKSYS4 WUSB54GCV3	0x0077	WUSB5
 product LINKSYS4 RT3070		0x0078	RT3070
 product LINKSYS4 WUSB600NV2	0x0079	WUSB600N v2
 
+/* Logilink products */
+product LOGILINK DUMMY		0x0000	Dummy product
+product LOGILINK U2M		0x0101	LogiLink USB MIDI Cable
+
 /* Logitech products */
 product LOGITECH M2452		0x0203	M2452 keyboard
 product LOGITECH M4848		0x0301	M4848 mouse
 product LOGITECH PAGESCAN	0x040f	PageScan
 product LOGITECH QUICKCAMWEB	0x0801	QuickCam Web
 product LOGITECH QUICKCAMPRO	0x0810	QuickCam Pro
+product LOGITECH WEBCAMC100	0X0817	Webcam C100
 product LOGITECH QUICKCAMEXP	0x0840	QuickCam Express
 product LOGITECH QUICKCAM	0x0850	QuickCam
 product LOGITECH QUICKCAMPRO3	0x0990	QuickCam Pro 9000
@@ -2157,12 +2488,13 @@ product LOGITEC RT2870_1	0x0162	RT2870
 product LOGITEC RT2870_2	0x0163	RT2870
 product LOGITEC RT2870_3	0x0164	RT2870
 product LOGITEC LANW300NU2	0x0166  LAN-W300N/U2
+product LOGITEC LANW150NU2	0x0168  LAN-W150N/U2
 
 /* Longcheer Holdings, Ltd. products */
 product LONGCHEER WM66		0x6061	Longcheer WM66 HSDPA
 product LONGCHEER W14		0x9603	Mobilcom W14
-product LONGCHEER XSSTICK	0x9605	4G Systems XSStick P14
 product LONGCHEER DISK		0xf000	Driver disk
+product LONGCHEER XSSTICK	0x9605	4G Systems XSStick P14
 
 
 /* Lucent products */
@@ -2179,9 +2511,257 @@ product MAGTEK USBSWIPE		0x0002	USB Mag 
 
 /* Marvell Technology Group, Ltd. products */
 product MARVELL SHEEVAPLUG	0x9e8f	SheevaPlug serial interface
-  
+
 /* Matrix Orbital products */
+product MATRIXORBITAL FTDI_RANGE_0100		0x0100	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0101		0x0101	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0102		0x0102	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0103		0x0103	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0104		0x0104	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0105		0x0105	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0106		0x0106	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0107		0x0107	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0108		0x0108	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0109		0x0109	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010A		0x010a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010B		0x010b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010C		0x010c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010D		0x010d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010E		0x010e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_010F		0x010f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0110		0x0110	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0111		0x0111	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0112		0x0112	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0113		0x0113	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0114		0x0114	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0115		0x0115	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0116		0x0116	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0117		0x0117	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0118		0x0118	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0119		0x0119	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011A		0x011a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011B		0x011b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011C		0x011c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011D		0x011d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011E		0x011e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_011F		0x011f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0120		0x0120	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0121		0x0121	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0122		0x0122	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0123		0x0123	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0124		0x0124	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0125		0x0125	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0126		0x0126	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0128		0x0128	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0129		0x0129	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_012A		0x012a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_012B		0x012b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_012D		0x012d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_012E		0x012e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_012F		0x012f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0130		0x0130	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0131		0x0131	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0132		0x0132	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0133		0x0133	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0134		0x0134	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0135		0x0135	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0136		0x0136	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0137		0x0137	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0138		0x0138	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0139		0x0139	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013A		0x013a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013B		0x013b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013C		0x013c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013D		0x013d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013E		0x013e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_013F		0x013f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0140		0x0140	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0141		0x0141	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0142		0x0142	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0143		0x0143	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0144		0x0144	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0145		0x0145	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0146		0x0146	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0147		0x0147	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0148		0x0148	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0149		0x0149	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014A		0x014a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014B		0x014b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014C		0x014c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014D		0x014d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014E		0x014e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_014F		0x014f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0150		0x0150	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0151		0x0151	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0152		0x0152	FTDI compatible adapter
 product MATRIXORBITAL MOUA	0x0153	Martrix Orbital MOU-Axxxx LCD displays
+product MATRIXORBITAL FTDI_RANGE_0159		0x0159	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015A		0x015a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015B		0x015b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015C		0x015c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015D		0x015d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015E		0x015e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_015F		0x015f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0160		0x0160	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0161		0x0161	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0162		0x0162	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0163		0x0163	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0164		0x0164	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0165		0x0165	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0166		0x0166	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0167		0x0167	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0168		0x0168	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0169		0x0169	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016A		0x016a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016B		0x016b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016C		0x016c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016D		0x016d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016E		0x016e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_016F		0x016f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0170		0x0170	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0171		0x0171	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0172		0x0172	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0173		0x0173	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0174		0x0174	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0175		0x0175	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0176		0x0176	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0177		0x0177	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0178		0x0178	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0179		0x0179	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017A		0x017a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017B		0x017b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017C		0x017c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017D		0x017d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017E		0x017e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_017F		0x017f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0180		0x0180	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0181		0x0181	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0182		0x0182	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0183		0x0183	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0184		0x0184	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0185		0x0185	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0186		0x0186	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0187		0x0187	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0188		0x0188	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0189		0x0189	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018A		0x018a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018B		0x018b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018C		0x018c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018D		0x018d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018E		0x018e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_018F		0x018f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0190		0x0190	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0191		0x0191	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0192		0x0192	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0193		0x0193	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0194		0x0194	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0195		0x0195	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0196		0x0196	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0197		0x0197	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0198		0x0198	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_0199		0x0199	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019A		0x019a	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019B		0x019b	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019C		0x019c	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019D		0x019d	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019E		0x019e	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_019F		0x019f	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A0		0x01a0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A1		0x01a1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A2		0x01a2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A3		0x01a3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A4		0x01a4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A5		0x01a5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A6		0x01a6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A7		0x01a7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A8		0x01a8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01A9		0x01a9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AA		0x01aa	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AB		0x01ab	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AC		0x01ac	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AD		0x01ad	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AE		0x01ae	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01AF		0x01af	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B0		0x01b0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B1		0x01b1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B2		0x01b2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B3		0x01b3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B4		0x01b4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B5		0x01b5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B6		0x01b6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B7		0x01b7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B8		0x01b8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01B9		0x01b9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BA		0x01ba	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BB		0x01bb	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BC		0x01bc	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BD		0x01bd	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BE		0x01be	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01BF		0x01bf	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C0		0x01c0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C1		0x01c1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C2		0x01c2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C3		0x01c3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C4		0x01c4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C5		0x01c5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C6		0x01c6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C7		0x01c7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C8		0x01c8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01C9		0x01c9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CA		0x01ca	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CB		0x01cb	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CC		0x01cc	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CD		0x01cd	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CE		0x01ce	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01CF		0x01cf	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D0		0x01d0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D1		0x01d1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D2		0x01d2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D3		0x01d3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D4		0x01d4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D5		0x01d5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D6		0x01d6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D7		0x01d7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D8		0x01d8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01D9		0x01d9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DA		0x01da	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DB		0x01db	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DC		0x01dc	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DD		0x01dd	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DE		0x01de	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01DF		0x01df	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E0		0x01e0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E1		0x01e1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E2		0x01e2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E3		0x01e3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E4		0x01e4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E5		0x01e5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E6		0x01e6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E7		0x01e7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E8		0x01e8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01E9		0x01e9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01EA		0x01ea	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01EB		0x01eb	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01EC		0x01ec	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01ED		0x01ed	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01EE		0x01ee	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01EF		0x01ef	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F0		0x01f0	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F1		0x01f1	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F2		0x01f2	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F3		0x01f3	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F4		0x01f4	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F5		0x01f5	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F6		0x01f6	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F7		0x01f7	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F8		0x01f8	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01F9		0x01f9	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FA		0x01fa	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FB		0x01fb	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FC		0x01fc	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FD		0x01fd	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FE		0x01fe	FTDI compatible adapter
+product MATRIXORBITAL FTDI_RANGE_01FF		0x01ff	FTDI compatible adapter
 
 /* MCT Corp. */
 product MCT HUB0100		0x0100	Hub
@@ -2224,12 +2804,14 @@ product MELCO RT2870_1		0x0148	RT2870
 product MELCO RT2870_2		0x0150	RT2870
 product MELCO WLIUCGN		0x015d	WLI-UC-GN
 product MELCO WLIUCG301N	0x016f	WLI-UC-G301N
-product MELCO WLIUCGNM		0x01a2  WLI-UC-GNM
+product MELCO WLIUCGNM		0x01a2	WLI-UC-GNM
+product MELCO WLIUCGNM2		0x01ee	WLI-UC-GNM2
 
 /* Merlin products */
 product MERLIN V620             0x1110  Merlin V620
 
 /* MetaGeek products */
+product METAGEEK TELLSTICK	0x0c30	FTDI compatible adapter
 product METAGEEK WISPY1B	0x083e	MetaGeek Wi-Spy
 product METAGEEK WISPY24X	0x083f	MetaGeek Wi-Spy 2.4x
 product METAGEEK2 WISPYDBX	0x5000	MetaGeek Wi-Spy DBx
@@ -2267,6 +2849,9 @@ product MSI RT3070_7		0x899a	RT3070
 product MSI RT2573_3		0xa861	RT2573
 product MSI RT2573_4		0xa874	RT2573
 
+/* Micron products */
+product MICRON REALSSD		0x0655	Real SSD eUSB
+
 /* Microsoft products */
 product MICROSOFT SIDEPREC	0x0008	SideWinder Precision Pro
 product MICROSOFT INTELLIMOUSE	0x0009	IntelliMouse
@@ -2333,13 +2918,16 @@ product MITSUMI FDD		0x6901	USB FDD
 product MOBILEACTION MA620	0x0620	MA-620 Infrared Adapter
 
 /* Mobility products */
+product MOBILITY USB_SERIAL	0x0202	FTDI compatible adapter
 product MOBILITY EA		0x0204	Ethernet
 product MOBILITY EASIDOCK	0x0304	EasiDock Ethernet
 
 /* MosChip products */
 product MOSCHIP MCS7703		0x7703	MCS7703 Serial Port Adapter
+product MOSCHIP MCS7730		0x7730  MCS7730 Ethernet
 product MOSCHIP MCS7820		0x7820	MCS7820 Serial Port Adapter
 product MOSCHIP MCS7830		0x7830	MCS7830 Ethernet
+product MOSCHIP MCS7832		0x7832	MCS7832 Ethernet
 product MOSCHIP MCS7840		0x7840	MCS7840 Serial Port Adapter
 
 /* Motorola products */
@@ -2482,6 +3070,10 @@ product	MERLIN V620		0x1110	Merlin V620
 product O2MICRO OZ776_HUB	0x7761	OZ776 hub
 product O2MICRO OZ776_CCID_SC	0x7772	OZ776 CCID SC Reader
 
+/* Olimex products */
+product OLIMEX ARM_USB_OCD		0x0003	FTDI compatible adapter
+product OLIMEX ARM_USB_OCD_H		0x002b	FTDI compatible adapter
+
 /* Olympus products */
 product OLYMPUS C1		0x0102	C-1 Digital Camera
 product OLYMPUS C700		0x0105	C-700 Ultra Zoom
@@ -2584,9 +3176,42 @@ product PANASONIC KXLCB35AN	0x0d0e	DVD-R
 product PANASONIC SDCAAE	0x1b00	MultiMediaCard
 product PANASONIC TYTP50P6S	0x3900	TY-TP50P6-S 50in Touch Panel
 
+/* Papouch products */
+product PAPOUCH AD4USB		0x8003	FTDI compatible adapter
+product PAPOUCH AP485		0x0101	FTDI compatible adapter
+product PAPOUCH AP485_2		0x0104	FTDI compatible adapter
+product PAPOUCH DRAK5		0x0700	FTDI compatible adapter
+product PAPOUCH DRAK6		0x1000	FTDI compatible adapter
+product PAPOUCH GMSR		0x8005	FTDI compatible adapter
+product PAPOUCH GMUX		0x8004	FTDI compatible adapter
+product PAPOUCH IRAMP		0x0500	FTDI compatible adapter
+product PAPOUCH LEC		0x0300	FTDI compatible adapter
+product PAPOUCH MU		0x8001	FTDI compatible adapter
+product PAPOUCH QUIDO10X1		0x0b00	FTDI compatible adapter
+product PAPOUCH QUIDO2X16		0x0e00	FTDI compatible adapter
+product PAPOUCH QUIDO2X2		0x0a00	FTDI compatible adapter
+product PAPOUCH QUIDO30X3		0x0c00	FTDI compatible adapter
+product PAPOUCH QUIDO3X32		0x0f00	FTDI compatible adapter
+product PAPOUCH QUIDO4X4		0x0900	FTDI compatible adapter
+product PAPOUCH QUIDO60X3		0x0d00	FTDI compatible adapter
+product PAPOUCH QUIDO8X8		0x0800	FTDI compatible adapter

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

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 12:51:53 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 3A36CA9A;
 Sat, 29 Dec 2012 12:51:53 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 1D68B8FC0C;
 Sat, 29 Dec 2012 12:51:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTCprPl026089;
 Sat, 29 Dec 2012 12:51:53 GMT
 (envelope-from hselasky@svn.freebsd.org)
Received: (from hselasky@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTCpqta026087;
 Sat, 29 Dec 2012 12:51:52 GMT
 (envelope-from hselasky@svn.freebsd.org)
Message-Id: <201212291251.qBTCpqta026087@svn.freebsd.org>
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Sat, 29 Dec 2012 12:51:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244820 - stable/8/sys/dev/usb/serial
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 12:51:53 -0000

Author: hselasky
Date: Sat Dec 29 12:51:52 2012
New Revision: 244820
URL: http://svnweb.freebsd.org/changeset/base/244820

Log:
  MFC r239055 and r239567:
  
  Add more USB ID's to FTDI driver.

Modified:
  stable/8/sys/dev/usb/serial/uftdi.c
  stable/8/sys/dev/usb/serial/uftdi_reg.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/dev/   (props changed)
  stable/8/sys/dev/usb/   (props changed)

Modified: stable/8/sys/dev/usb/serial/uftdi.c
==============================================================================
--- stable/8/sys/dev/usb/serial/uftdi.c	Sat Dec 29 12:48:03 2012	(r244819)
+++ stable/8/sys/dev/usb/serial/uftdi.c	Sat Dec 29 12:51:52 2012	(r244820)
@@ -209,53 +209,635 @@ MODULE_VERSION(uftdi, 1);
 static const STRUCT_USB_HOST_ID uftdi_devs[] = {
 #define	UFTDI_DEV(v, p, i) \
   { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
+	UFTDI_DEV(ACTON, SPECTRAPRO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ALTI2, N3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ANALOGDEVICES, GNICE, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(ANALOGDEVICES, GNICEPLUS, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
 	UFTDI_DEV(ATMEL, STK541, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(BAYER, CONTOUR_CABLE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, 232USB9M, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, 485USB9F_2W, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, 485USB9F_4W, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, 485USBTB_2W, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, 485USBTB_4W, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, TTL3USB9M, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, TTL5USB9M, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USO9ML2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USO9ML2DR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USO9ML2DR_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USOPTL4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USOPTL4DR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USOPTL4DR2, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(BBELECTRONICS, USOTL4, UFTDI_TYPE_8U232AM),
-	UFTDI_DEV(DRESDENELEKTRONIK, SENSORTERMINALBOARD,
-	    UFTDI_TYPE_8U232AM),
-	UFTDI_DEV(DRESDENELEKTRONIK, WIRELESSHANDHELDTERMINAL,
-	    UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(BBELECTRONICS, USPTL4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, USTL4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(BBELECTRONICS, ZZ_PROG1_USB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(CONTEC, COM1USBH, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(DRESDENELEKTRONIK, SENSORTERMINALBOARD, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(DRESDENELEKTRONIK, WIRELESSHANDHELDTERMINAL, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(ELEKTOR, FT323R, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(EVOLUTION, ER1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(EVOLUTION, HYBRID, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(EVOLUTION, RCM4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FALCOM, SAMBA, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FALCOM, TWIST, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FIC, NEO1973_DEBUG, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FIC, NEO1973_DEBUG, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, 232H, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, 232RL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, 4N_GALAXY_DE_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, 4N_GALAXY_DE_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, 4N_GALAXY_DE_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, 8U232AM_ALT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ACCESSO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ACG_HFDUAL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ACTIVE_ROBOTS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ACTZWAVE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, AMC232, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ARTEMIS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ASK_RDR400, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ATIK_ATK16, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ATIK_ATK16C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ATIK_ATK16HR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ATIK_ATK16HRC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ATIK_ATK16IC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, BCS_SE923, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, BEAGLEBONE, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, CANDAPTER, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CANUSB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSICDU20_0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSICDU40_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSICDU64_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSLOAD_N_GO_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSMACHX_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CCSPRIME8_5, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, CFA_631, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, CFA_632, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, CFA_633, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, CFA_634, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, CFA_635, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, CHAMSYS_24_MASTER_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_MAXI_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_MEDIA_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_MIDI_TIMECODE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_MINI_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_PC_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_USB_DMX, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CHAMSYS_WING, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, COM4SM, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, CONVERTER_7, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, CTI_USB_MINI_485, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, CTI_USB_NANO_485, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, DMX4ALL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, DOMINTELL_DGQG, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, DOMINTELL_DUSB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, DOTEC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ECLO_COM_1WIRE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ECO_PRO_CDS, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, EISCOU, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, ELSTER_UNICOM, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_ALC8500, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_CLI7000, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_CSI8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_EC3000, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_EM1000DL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_EM1010PC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_FEM, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_FHZ1000PC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_FHZ1300PC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_FM3RX, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_FS20SIG, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_HS485, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_KL100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_MSM1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_PCD200, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_PCK100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_PPS7330, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_RFP500, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_T1100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_TFD128, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_TFM100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_TWS550, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UAD8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UDA7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UDF77, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UIO88, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_ULA200, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UM100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UMS100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UO100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UR100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_USI2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_USR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_UTP8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS300PC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS444PC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS500, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS550, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS777, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, ELV_WS888, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, EMCU2D, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, EMCU2H, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, FUTURE_0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, FUTURE_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, FUTURE_2, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, GAMMASCOUT, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, GENERIC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E808, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E809, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E80F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E88D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E88E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, GUDEADS_E88F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, HD_RADIO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, HO720, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, HO730, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, HO820, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, HO870, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_APP70, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_PCMCIA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_PEDO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_PICPRO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_PK1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_PROD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_RS232MON, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IBS_US485, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IPLUS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IPLUS2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, IRTRANS, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, KBS, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, LENZ_LIUSB, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, LK202, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, LK204, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, LM3S_DEVEL_BOARD, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, LM3S_EVAL_BOARD, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, MASTERDEVEL2, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, MAXSTREAM, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, MHAM_DB9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_IC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_KW, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_RS232, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_Y6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_Y8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_Y9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MHAM_YS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MICRO_CHAMELEON, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MTXORB_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, MTXORB_6, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, MX2_3, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, MX4_5, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, NXTCAM, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OCEANIC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OOCDLINK, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, OPENDCC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OPENDCC_GATEWAY, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OPENDCC_GBM, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OPENDCC_SNIFFER, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, OPENDCC_THROTTLE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, PCDJ_DAC2, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, PCMSFU, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, PERLE_ULTRAPORT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, PHI_FISCO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, PIEGROUP, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, PROPOX_JTAGCABLEII, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, R2000KU_TRUE_RNG, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, R2X0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, RELAIS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, REU_TINY, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, RMP200, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, RM_CANVIEW, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, RRCIRKITS_LOCOBUFFER, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCIENCESCOPE_HS_LOGBOOK, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCIENCESCOPE_LOGBOOKML, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCIENCESCOPE_LS_LOGBOOK, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SCS_DEVICE_7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SDMUSBQSS, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, SEMC_DSS20, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, SERIAL_2232C, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, SERIAL_2232D, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, SERIAL_232RL, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, SERIAL_4232H, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, SERIAL_8U100AX, UFTDI_TYPE_SIO),
 	UFTDI_DEV(FTDI, SERIAL_8U232AM, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, SERIAL_8U232AM4, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, SIGNALYZER_SH2, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, SIGNALYZER_SH4, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, SIGNALYZER_SLITE, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, SIGNALYZER_ST, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(FTDI, SPECIAL_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SPECIAL_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SPECIAL_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SPROG_II, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SR_RADIO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, SUUNTO_SPORTS, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, TACTRIX_OPENPORT_13M, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, TACTRIX_OPENPORT_13S, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, TACTRIX_OPENPORT_13U, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, TAVIR_STK500, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, TERATRONIK_D2XX, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, TERATRONIK_VCP, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, THORLABS, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, TNC_X, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, TTUSB, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, TURTELIZER2, UFTDI_TYPE_8U232AM | UFTDI_FLAG_JTAG),
 	UFTDI_DEV(FTDI, UOPTBR, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(FTDI, USBSERIAL, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, USBX_707, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(FTDI, USB_UIRT, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(FTDI, USINT_CAT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, USINT_RS232, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, USINT_WKEY, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, VARDAAN, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, VNHCPCUSB_D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, WESTREX_MODEL_777, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, WESTREX_MODEL_8900F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, XF_547, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, XF_640, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, XF_642, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, XM_RADIO, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(FTDI, YEI_SERVOCENTER31, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(GNOTOMETRICS, USB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, SP1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, OPC_U_UC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2C1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2C2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2KVR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2KVT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2VR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP2VT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP4KVR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(ICOM, RP4KVT, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(IDTECH, IDT1221U, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(INTERBIOMETRICS, IOBOARD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(INTERBIOMETRICS, MINI_IOBOARD, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(INTREPIDCS, NEOVI, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(INTREPIDCS, VALUECAN, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(IONICS, PLUGCOMPUTER, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(JETI, SPC1201, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(KOBIL, CONV_B1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(KOBIL, CONV_KAAN, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(LARSENBRUSGAARD, ALTITRACK, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(MARVELL, SHEEVAPLUG, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0100, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0101, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0102, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0103, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0104, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0105, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0106, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0107, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0108, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0109, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_010F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0110, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0111, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0112, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0113, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0114, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0115, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0116, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0117, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0118, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0119, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_011F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0120, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0121, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0122, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0123, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0124, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0125, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0126, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0128, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0129, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_012A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_012B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_012D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_012E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_012F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0130, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0131, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0132, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0133, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0134, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0135, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0136, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0137, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0138, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0139, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_013F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0140, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0141, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0142, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0143, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0144, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0145, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0146, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0147, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0148, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0149, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_014F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0150, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0151, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0152, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0159, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_015F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0160, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0161, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0162, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0163, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0164, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0165, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0166, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0167, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0168, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0169, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_016F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0170, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0171, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0172, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0173, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0174, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0175, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0176, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0177, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0178, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0179, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_017F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0180, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0181, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0182, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0183, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0184, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0185, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0186, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0187, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0188, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0189, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_018F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0190, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0191, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0192, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0193, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0194, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0195, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0196, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0197, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0198, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_0199, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019A, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019D, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019E, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_019F, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01A9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01AF, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01B9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01BF, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01C9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01CF, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01D9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01DF, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01E9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01EA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01EB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01EC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01ED, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01EE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01EF, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F0, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01F9, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FA, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FD, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MATRIXORBITAL, FTDI_RANGE_01FF, UFTDI_TYPE_AUTO),
 	UFTDI_DEV(MATRIXORBITAL, MOUA, UFTDI_TYPE_8U232AM),
 	UFTDI_DEV(MELCO, PCOPRS1, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(METAGEEK, TELLSTICK, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(MOBILITY, USB_SERIAL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(OLIMEX, ARM_USB_OCD, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(OLIMEX, ARM_USB_OCD_H, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
+	UFTDI_DEV(PAPOUCH, AD4USB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, AP485, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, AP485_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, DRAK5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, DRAK6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, GMSR, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, GMUX, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, IRAMP, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, LEC, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, MU, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO10X1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO2X16, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO2X2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO30X3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO3X32, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO4X4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO60X3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, QUIDO8X8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB232, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB422, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB422_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB485, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB485C, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB485S, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SB485_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, SIMUKEY, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, TMU, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(PAPOUCH, UPSUSB, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(POSIFLEX, PP7000, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(QIHARDWARE, JTAGSERIAL, UFTDI_TYPE_AUTO | UFTDI_FLAG_JTAG),
 	UFTDI_DEV(RATOC, REXUSB60F, UFTDI_TYPE_8U232AM),
-	UFTDI_DEV(SIIG2, US2308, UFTDI_TYPE_8U232AM)
+	UFTDI_DEV(RTSYSTEMS, CT29B, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(RTSYSTEMS, SERIAL_VX7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2101, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2102, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2103, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2104, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2106, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2201_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2201_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2202_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2202_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2203_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2203_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2401_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2401_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2401_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2401_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2402_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2402_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2402_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2402_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2403_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2403_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2403_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2403_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2801_8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2802_8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_1, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_2, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_3, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_4, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_5, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_6, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_7, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SEALEVEL, 2803_8, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SIIG2, DK201, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(SIIG2, US2308, UFTDI_TYPE_8U232AM),
+	UFTDI_DEV(TESTO, USB_INTERFACE, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(TML, USB_SERIAL, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(TTI, QL355P, UFTDI_TYPE_AUTO),
+	UFTDI_DEV(UNKNOWN4, NF_RIC, UFTDI_TYPE_AUTO),
 #undef UFTDI_DEV
 };
 
@@ -314,6 +896,17 @@ uftdi_attach(device_t dev)
 	sc->sc_type = USB_GET_DRIVER_INFO(uaa) & UFTDI_TYPE_MASK;
 
 	switch (sc->sc_type) {
+	case UFTDI_TYPE_AUTO:
+		/* simplified type check */
+		if (uaa->info.bcdDevice >= 0x0200 ||
+		    usbd_get_iface(uaa->device, 1) != NULL) {
+			sc->sc_type = UFTDI_TYPE_8U232AM;
+			sc->sc_hdrlen = 0;
+		} else {
+			sc->sc_type = UFTDI_TYPE_SIO;
+			sc->sc_hdrlen = 1;
+		}
+		break;
 	case UFTDI_TYPE_SIO:
 		sc->sc_hdrlen = 1;
 		break;

Modified: stable/8/sys/dev/usb/serial/uftdi_reg.h
==============================================================================
--- stable/8/sys/dev/usb/serial/uftdi_reg.h	Sat Dec 29 12:48:03 2012	(r244819)
+++ stable/8/sys/dev/usb/serial/uftdi_reg.h	Sat Dec 29 12:51:52 2012	(r244820)
@@ -39,6 +39,7 @@
 #define	UFTDI_TYPE_MASK		0x000000ff
 #define	UFTDI_TYPE_SIO		0x00000001
 #define	UFTDI_TYPE_8U232AM	0x00000002
+#define	UFTDI_TYPE_AUTO		(UFTDI_TYPE_SIO | UFTDI_TYPE_8U232AM)
 #define	UFTDI_FLAG_MASK		0x0000ff00
 #define	UFTDI_FLAG_JTAG		0x00000100
 

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 14:56:29 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 8B5F6D60;
 Sat, 29 Dec 2012 14:56:29 +0000 (UTC)
 (envelope-from kostikbel@gmail.com)
Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1])
 by mx1.freebsd.org (Postfix) with ESMTP id 264198FC08;
 Sat, 29 Dec 2012 14:56:28 +0000 (UTC)
Received: from tom.home (kostik@localhost [127.0.0.1])
 by kib.kiev.ua (8.14.5/8.14.5) with ESMTP id qBTEuOMc019949;
 Sat, 29 Dec 2012 16:56:24 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
DKIM-Filter: OpenDKIM Filter v2.7.3 kib.kiev.ua qBTEuOMc019949
Received: (from kostik@localhost)
 by tom.home (8.14.5/8.14.5/Submit) id qBTEuNUh019948;
 Sat, 29 Dec 2012 16:56:23 +0200 (EET)
 (envelope-from kostikbel@gmail.com)
X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com
 using -f
Date: Sat, 29 Dec 2012 16:56:23 +0200
From: Konstantin Belousov <kostikbel@gmail.com>
To: "Robert N. M. Watson" <rwatson@freebsd.org>
Subject: Re: svn commit: r244663 - stable/9
Message-ID: <20121229145623.GB82219@kib.kiev.ua>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
 <CAGE5yCp1oVe74_8wot8rJe5BU9uOHyfLipUN0cFtCC77CLo8hA@mail.gmail.com>
 <50DE74F1.70105@mu.org>
 <C256AEF0-E68E-4C15-9A00-3465C89DD51D@freebsd.org>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature"; boundary="mBuDz+cd8w/hvK2v"
Content-Disposition: inline
In-Reply-To: <C256AEF0-E68E-4C15-9A00-3465C89DD51D@freebsd.org>
User-Agent: Mutt/1.5.21 (2010-09-15)
X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no
 version=3.3.2
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home
Cc: Adrian Chadd <adrian@freebsd.org>, src-committers@freebsd.org,
 Peter Wemm <peter@wemm.org>, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, Alfred Perlstein <bright@mu.org>,
 svn-src-stable-9@freebsd.org
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 14:56:29 -0000


--mBuDz+cd8w/hvK2v
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Dec 29, 2012 at 10:49:59AM +0000, Robert N. M. Watson wrote:
>=20
> On 29 Dec 2012, at 04:43, Alfred Perlstein wrote:
>=20
> > Yes.  Kib and I chatted offline, it seems that the SOP is really "there=
 is no guarantee about KPI when talking about VFS" so the headache that it =
would be to write the shim layer and maintain it (particularly considering =
the 9.x release cycle slowness) was not worth it.
> >=20
> > In a few days I'm going to blow up the extra entries in VFSOPS and VOPS=
 by some 10 entries to hopefully keep us KPI friendly for the next release.=
  I may also introduce a VFS_KPI version number.  Let me know if you have a=
ny thoughts on that, my thoughts are basically to make it like FreeBSD_vers=
ion, and eventually someone can add macros for VFS klds to refuse to load d=
epending on VFS_KPI.
>=20
> I don't think stub entries hurt.
>=20
> But I think a VFS_KPI version number is premature.
We have the version number for eons, but it is unusable because there is
no defined VFS KPI. See VFS_VERSION in the sys/sys/mount.h and its use
for the module loading and filesystem registrations.

--mBuDz+cd8w/hvK2v
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJQ3wSWAAoJEJDCuSvBvK1BRrYP/jQ6Sd+MGwOisM8YotsuIzBR
S1keOAc3eKutEYUnSg7d/85AfcvkXe+J60LIIljbTw8S6mL9sDCWM+gQ9R57Gt9N
4alUH59M+YjBNKmbi/kza6vknwHN+Nh5xt42AITuNq856swnwZC7ozxmWaOXPf4i
KPnIGgD2xjI+a24jHGnT4TBrDHtYYjQ7hH3L0gJNVUYhjjLkoE9EpPZfQNoOltYH
oAaX9eEaCQM5kmOKRXNtOWsAM1JxaWFW6AUvoRSbfWpWK0hSnB5ZBvsuEu634bJS
zG+xHC9BV3y+HWmgwuN7wVrFQg8h+TS/f9a9tQ1bjno653hqMr6O7bG5iUpdkaai
ffgtZdXHzMetku+/CLph3fAkvA56UIDGWu5OqKfo/oQiTaVqDpShFigVi6DMxZyg
LYXwvZZ0exrrIkIWffOvN4bUp2qUz8mppuBiiWhRrf5X5UWIOZQ0LPLbpKcE5kpy
AjtjVgnFYAKrlQ8ntsAA0jzDivi/eJCpDusFSAC4TcAsO8pGv1APf0dXdSbZL1o/
V7h1lGPnIbKEf5CQYivzXZaNyiKddkpfVnS3TfcWODwQl5u/QKSG6UEEGiQDI83j
osDrCfq3ofMQNaCh/s+2SHrP0RLEKbgaSi9mvifIKtYywEI6CkTBpMFQjkc1Xtv8
wddck44otHEL4YU0f4zv
=qk75
-----END PGP SIGNATURE-----

--mBuDz+cd8w/hvK2v--

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 14:58:05 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 99D2DEC9;
 Sat, 29 Dec 2012 14:58:05 +0000 (UTC)
 (envelope-from adrian.chadd@gmail.com)
Received: from mail-wg0-f54.google.com (mail-wg0-f54.google.com [74.125.82.54])
 by mx1.freebsd.org (Postfix) with ESMTP id 512508FC08;
 Sat, 29 Dec 2012 14:58:04 +0000 (UTC)
Received: by mail-wg0-f54.google.com with SMTP id fg15so5079567wgb.21
 for <multiple recipients>; Sat, 29 Dec 2012 06:57:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:sender:in-reply-to:references:date
 :x-google-sender-auth:message-id:subject:from:to:cc:content-type
 :content-transfer-encoding;
 bh=ohG/2eRmm3x2jgpTj7MGBBbveOD8RTz+7jj7NNxW3O8=;
 b=Kb6jv91M2V3gDe3UqJWyWnxDu6atg+KCB3YP87oi9j0vdIKTimXm9tSwVNnLzs91iz
 +Kq7HHY2a9/j5/6DMHTSmwIpnqJccn5dF/TT4SgRxB7/cxKVpVEo21lWuUZij3z/tec7
 PxeUH6dCpUyondW+6JPKkw2TN45n5DKd3lOBBZaXYbSF3CcyTWGb1YZqNWKxNuu07euH
 fACeNBd9Vvz3mSA4GkG8yCrwJ2yiD2/kT0pCCYoAFu3xFUmb7/VloI886vCb/zBYU5tt
 8xBoHbCtEGxbgFUYApxmXfMQG5kmatU71PL/wA02cmMtl7Q3dAfYiw5SCJOc3Yy0zPKO
 9Bfw==
MIME-Version: 1.0
Received: by 10.180.72.146 with SMTP id d18mr48368754wiv.33.1356792654354;
 Sat, 29 Dec 2012 06:50:54 -0800 (PST)
Sender: adrian.chadd@gmail.com
Received: by 10.217.57.9 with HTTP; Sat, 29 Dec 2012 06:50:54 -0800 (PST)
In-Reply-To: <00E4FFFA-8ADB-4D43-B977-3834C48133E4@freebsd.org>
References: <201212241422.qBOEMrcF021632@svn.freebsd.org>
 <CAJ-VmokV-JL_xZ9otRXubKZ8KQKe7GgLuLU3UMij0HUD_KhCNw@mail.gmail.com>
 <50D8B533.8080507@mu.org> <20121225104422.GB53644@kib.kiev.ua>
 <alpine.BSF.2.00.1212251911360.56707@fledge.watson.org>
 <CAJ-Vmo=oYfzxwEDYnXotx4b8qvnQTr4ofrLRkwkKH5C9GB0sMg@mail.gmail.com>
 <00E4FFFA-8ADB-4D43-B977-3834C48133E4@freebsd.org>
Date: Sat, 29 Dec 2012 06:50:54 -0800
X-Google-Sender-Auth: yQPqxdeVuxt9H4olrOLWZ3j89kA
Message-ID: <CAJ-VmonDbwPkpZL_QdHjr+c2X06_rGD+wy_R+xeVBs=hnQ4qTw@mail.gmail.com>
Subject: Re: svn commit: r244663 - stable/9
From: Adrian Chadd <adrian@freebsd.org>
To: "Robert N. M. Watson" <rwatson@freebsd.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: src-committers@freebsd.org, svn-src-stable@freebsd.org,
 svn-src-all@freebsd.org, Alfred Perlstein <bright@mu.org>,
 svn-src-stable-9@freebsd.org, Konstantin Belousov <kostikbel@gmail.com>
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 14:58:05 -0000

On 29 December 2012 02:44, Robert N. M. Watson <rwatson@freebsd.org> wrote:

[snip]

>> [adrian chadd]
>> So, regardless of whether we should or shouldn't break things, a more
>> thorough discussion would've been nice.
>
> Adrian:
>
> The standing consensus is that we try not to break certain classes of dev=
ice drivers, not that we don't ever change any kernel interfaces. The reaso=
n is that we don't have a formal definition of "public" and do not wish to =
use the definition "all definitions in all header files" or "all symbols ev=
er linked by any module" -- that definition would prevent almost any change=
 to the kernel in -STABLE branches at all. The reason VIMAGE/MRT/etc had to=
 be done with great caution is that they directly affected network device d=
rivers, which are a category of module which we have decided we do want to =
try to support in external binary form. The other major category is binary =
storage drivers.
>
> When we talked to various VFS maintainers, looked at the past change hist=
ory there, and looked at the set of third-party file systems (especially, t=
hose we could see in ports), the consensus there was that it was too diffic=
ult to define a stable VFS KPI and KBI for third-party modules. In particul=
ar, there appear to be at most one or two in ports at any given moment, and=
 quick analyses of them suggested that their kernel feature dependency foot=
print was far more than just "vnode operations".
>
> KPIs and KBIs have benefits and downsides: we need to consider them as a =
tradeoff space, and not an absolute, and use them where they have significa=
nt payoff. Especially as we don't have formal tools for reasoning about or =
testing them.

Sure, that's a logical, reasoned analysis of what the state of play of
the VFS interface and users. But again, it'd have been nice to get
some notification before it was pushed to -stable, just as a heads up
(and a chance for feedback) for people and companies who aren't on
your radar.



Adrian

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 19:06:04 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id EDF2D661;
 Sat, 29 Dec 2012 19:06:04 +0000 (UTC)
 (envelope-from gshapiro@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id D01348FC08;
 Sat, 29 Dec 2012 19:06:04 +0000 (UTC)
Received: from svn.freebsd.org (svn.FreeBSD.org [8.8.178.70])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTJ64fG031084;
 Sat, 29 Dec 2012 19:06:04 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Received: (from gshapiro@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTJ6487031082;
 Sat, 29 Dec 2012 19:06:04 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Message-Id: <201212291906.qBTJ6487031082@svn.freebsd.org>
From: Gregory Neil Shapiro <gshapiro@FreeBSD.org>
Date: Sat, 29 Dec 2012 19:06:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject: svn commit: r244827 - stable/9/contrib/sendmail/include/libmilter
X-SVN-Group: stable-9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 19:06:05 -0000

Author: gshapiro
Date: Sat Dec 29 19:06:04 2012
New Revision: 244827
URL: http://svnweb.freebsd.org/changeset/base/244827

Log:
  MFC: Properly define true/false when defining __bool_true_false_are_defined
       for filters which pull in mfapi.h before stdbool.h.  Issue reported by
       Petr Rehor, maintainer of amavisd-milter port.

Modified:
  stable/9/contrib/sendmail/include/libmilter/mfapi.h
Directory Properties:
  stable/9/contrib/sendmail/   (props changed)

Modified: stable/9/contrib/sendmail/include/libmilter/mfapi.h
==============================================================================
--- stable/9/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 18:40:47 2012	(r244826)
+++ stable/9/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 19:06:04 2012	(r244827)
@@ -96,6 +96,8 @@ typedef int	sfsistat;
 #  ifndef bool
 #   ifndef __bool_true_false_are_defined
 typedef int	bool;
+#    define false	0
+#    define true	1
 #    define __bool_true_false_are_defined	1
 #   endif /* ! __bool_true_false_are_defined */
 #  endif /* bool */

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 19:12:39 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 67CF77E8;
 Sat, 29 Dec 2012 19:12:39 +0000 (UTC)
 (envelope-from gshapiro@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 48FD58FC08;
 Sat, 29 Dec 2012 19:12:39 +0000 (UTC)
Received: from svn.freebsd.org (svn.FreeBSD.org [8.8.178.70])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTJCd7d032374;
 Sat, 29 Dec 2012 19:12:39 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Received: (from gshapiro@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTJCdxf032373;
 Sat, 29 Dec 2012 19:12:39 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Message-Id: <201212291912.qBTJCdxf032373@svn.freebsd.org>
From: Gregory Neil Shapiro <gshapiro@FreeBSD.org>
Date: Sat, 29 Dec 2012 19:12:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject: svn commit: r244828 - stable/8/contrib/sendmail/include/libmilter
X-SVN-Group: stable-8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 19:12:39 -0000

Author: gshapiro
Date: Sat Dec 29 19:12:38 2012
New Revision: 244828
URL: http://svnweb.freebsd.org/changeset/base/244828

Log:
  MFC: Properly define true/false when defining __bool_true_false_are_defined
       for filters which pull in mfapi.h before stdbool.h.  Issue reported by
       Petr Rehor, maintainer of amavisd-milter port.

Modified:
  stable/8/contrib/sendmail/include/libmilter/mfapi.h
Directory Properties:
  stable/8/contrib/sendmail/   (props changed)

Modified: stable/8/contrib/sendmail/include/libmilter/mfapi.h
==============================================================================
--- stable/8/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 19:06:04 2012	(r244827)
+++ stable/8/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 19:12:38 2012	(r244828)
@@ -96,6 +96,8 @@ typedef int	sfsistat;
 #  ifndef bool
 #   ifndef __bool_true_false_are_defined
 typedef int	bool;
+#    define false	0
+#    define true	1
 #    define __bool_true_false_are_defined	1
 #   endif /* ! __bool_true_false_are_defined */
 #  endif /* bool */

From owner-svn-src-stable@FreeBSD.ORG  Sat Dec 29 19:13:17 2012
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 4970894B;
 Sat, 29 Dec 2012 19:13:17 +0000 (UTC)
 (envelope-from gshapiro@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id 2BFFB8FC12;
 Sat, 29 Dec 2012 19:13:17 +0000 (UTC)
Received: from svn.freebsd.org (svn.FreeBSD.org [8.8.178.70])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBTJDH1P032530;
 Sat, 29 Dec 2012 19:13:17 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Received: (from gshapiro@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBTJDHHK032529;
 Sat, 29 Dec 2012 19:13:17 GMT
 (envelope-from gshapiro@svn.freebsd.org)
Message-Id: <201212291913.qBTJDHHK032529@svn.freebsd.org>
From: Gregory Neil Shapiro <gshapiro@FreeBSD.org>
Date: Sat, 29 Dec 2012 19:13:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject: svn commit: r244829 - stable/7/contrib/sendmail/include/libmilter
X-SVN-Group: stable-7
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
 <svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
 <mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 29 Dec 2012 19:13:17 -0000

Author: gshapiro
Date: Sat Dec 29 19:13:16 2012
New Revision: 244829
URL: http://svnweb.freebsd.org/changeset/base/244829

Log:
  MFC: Properly define true/false when defining __bool_true_false_are_defined
       for filters which pull in mfapi.h before stdbool.h.  Issue reported by
       Petr Rehor, maintainer of amavisd-milter port.

Modified:
  stable/7/contrib/sendmail/include/libmilter/mfapi.h
Directory Properties:
  stable/7/contrib/sendmail/   (props changed)

Modified: stable/7/contrib/sendmail/include/libmilter/mfapi.h
==============================================================================
--- stable/7/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 19:12:38 2012	(r244828)
+++ stable/7/contrib/sendmail/include/libmilter/mfapi.h	Sat Dec 29 19:13:16 2012	(r244829)
@@ -96,6 +96,8 @@ typedef int	sfsistat;
 #  ifndef bool
 #   ifndef __bool_true_false_are_defined
 typedef int	bool;
+#    define false	0
+#    define true	1
 #    define __bool_true_false_are_defined	1
 #   endif /* ! __bool_true_false_are_defined */
 #  endif /* bool */