From owner-svn-src-projects@FreeBSD.ORG  Sun Feb 12 06:28:00 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4247F106566C;
	Sun, 12 Feb 2012 06:28:00 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2F9318FC0A;
	Sun, 12 Feb 2012 06:28:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1C6S0xV068651;
	Sun, 12 Feb 2012 06:28:00 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1C6S0iE068646;
	Sun, 12 Feb 2012 06:28:00 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202120628.q1C6S0iE068646@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sun, 12 Feb 2012 06:28:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231546 - in projects/armv6/sys: arm/conf conf dev/usb
	dev/usb/net
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Feb 2012 06:28:00 -0000

Author: gonzo
Date: Sun Feb 12 06:27:59 2012
New Revision: 231546
URL: http://svn.freebsd.org/changeset/base/231546

Log:
  Add SMSC LAN95XX driver submitted by Ben Gray with some
  cleanup and EEPROM handling code by me.
  
  Before we figure out the way to pass MAC from u-boot to
  driver, stick with hardcoded address for debugging purposes.
  
  Submitted by:	Ben Gray <ben.r.gray@gmail.com>

Added:
  projects/armv6/sys/dev/usb/net/if_smsc.c   (contents, props changed)
  projects/armv6/sys/dev/usb/net/if_smscreg.h   (contents, props changed)
Modified:
  projects/armv6/sys/arm/conf/PANDABOARD
  projects/armv6/sys/conf/files
  projects/armv6/sys/dev/usb/usbdevs

Modified: projects/armv6/sys/arm/conf/PANDABOARD
==============================================================================
--- projects/armv6/sys/arm/conf/PANDABOARD	Sun Feb 12 06:01:49 2012	(r231545)
+++ projects/armv6/sys/arm/conf/PANDABOARD	Sun Feb 12 06:27:59 2012	(r231546)
@@ -124,8 +124,8 @@ device		da		# Direct Access (disks)
 
 # USB Ethernet support, requires miibus
 device		miibus
-device		axe			# ASIX Electronics USB Ethernet
-# device		smsc		# SMSC LAN95xx USB Ethernet
+# device		axe			# ASIX Electronics USB Ethernet
+device		smsc		# SMSC LAN95xx USB Ethernet
 
 # Flattened Device Tree
 options         FDT

Modified: projects/armv6/sys/conf/files
==============================================================================
--- projects/armv6/sys/conf/files	Sun Feb 12 06:01:49 2012	(r231545)
+++ projects/armv6/sys/conf/files	Sun Feb 12 06:27:59 2012	(r231546)
@@ -1925,11 +1925,12 @@ dev/usb/net/if_ipheth.c		optional ipheth
 dev/usb/net/if_kue.c		optional kue
 dev/usb/net/if_mos.c		optional mos
 dev/usb/net/if_rue.c		optional rue
+dev/usb/net/if_smsc.c		optional smsc
 dev/usb/net/if_udav.c		optional udav
 dev/usb/net/if_usie.c		optional usie
 dev/usb/net/ruephy.c		optional rue
 dev/usb/net/usb_ethernet.c	optional aue | axe | cdce | cue | kue | mos | \
-					 rue | udav
+					 rue | smsc | udav
 dev/usb/net/uhso.c		optional uhso
 #
 # USB WLAN drivers

Added: projects/armv6/sys/dev/usb/net/if_smsc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/dev/usb/net/if_smsc.c	Sun Feb 12 06:27:59 2012	(r231546)
@@ -0,0 +1,1440 @@
+/*-
+ * Copyright (c) 2011
+ *	Ben Gray <ben.r.gray@gmail.com>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the company nor the name of the author may be used to
+ *    endorse or promote products derived from this software without specific
+ *    prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BEN GRAY ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL BEN GRAY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * SMSC LAN9xxx devices.
+ *
+ */
+
+#include <sys/stdint.h>
+#include <sys/stddef.h>
+#include <sys/param.h>
+#include <sys/queue.h>
+#include <sys/types.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/bus.h>
+#include <sys/module.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/condvar.h>
+#include <sys/sysctl.h>
+#include <sys/sx.h>
+#include <sys/unistd.h>
+#include <sys/callout.h>
+#include <sys/malloc.h>
+#include <sys/priv.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdi_util.h>
+#include "usbdevs.h"
+
+#define	USB_DEBUG_VAR smsc_debug
+#include <dev/usb/usb_debug.h>
+#include <dev/usb/usb_process.h>
+
+#include <dev/usb/net/usb_ethernet.h>
+#include <dev/usb/net/if_smscreg.h>
+#include <dev/usb/usb_device.h>
+
+/*
+ * From looking at the Linux SMSC logs I believe the LAN95xx devices have
+ * the following endpoints:
+ *   Endpoints In 1 Out 2 Int 3 
+ *
+ */
+enum {
+	SMSC_BULK_DT_RD,
+	SMSC_BULK_DT_WR,
+	SMSC_INTR_DT_RD,
+	SMSC_N_TRANSFER,
+};
+
+#ifdef USB_DEBUG
+static int smsc_debug = 0;
+
+SYSCTL_NODE(_hw_usb, OID_AUTO, smsc, CTLFLAG_RW, 0, "USB smsc");
+SYSCTL_INT(_hw_usb_smsc, OID_AUTO, debug, CTLFLAG_RW, &smsc_debug, 0,
+    "Debug level");
+#endif
+
+/*
+ * Various supported device vendors/products.
+ */
+static const struct usb_device_id smsc_devs[] = {
+#define	SMSC_DEV(p,i) { USB_VPI(USB_VENDOR_SMC2, USB_PRODUCT_SMC2_##p, i) }
+	SMSC_DEV(LAN9514_ETH, 0),
+#undef SMSC_DEV
+};
+
+struct smsc_softc {
+	struct usb_ether  sc_ue;
+	struct mtx        sc_mtx;
+	struct usb_xfer  *sc_xfer[SMSC_N_TRANSFER];
+	int               sc_phyno;
+
+	/* The following stores the settings in the mac control (SMSC_REG_MAC_CR) register */
+	uint32_t          sc_mac_cr;
+
+	uint32_t          sc_flags;
+#define	SMSC_FLAG_LINK      0x0001
+#define	SMSC_FLAG_LAN9514   0x1000	/* LAN9514 */
+
+};
+
+#define	SMSC_LOCK(_sc)             mtx_lock(&(_sc)->sc_mtx)
+#define	SMSC_UNLOCK(_sc)           mtx_unlock(&(_sc)->sc_mtx)
+#define	SMSC_LOCK_ASSERT(_sc, t)   mtx_assert(&(_sc)->sc_mtx, t)
+
+#define SMSC_TIMEOUT	100	/* 10*ms */
+
+static device_probe_t smsc_probe;
+static device_attach_t smsc_attach;
+static device_detach_t smsc_detach;
+
+static usb_callback_t smsc_bulk_read_callback;
+static usb_callback_t smsc_bulk_write_callback;
+static usb_callback_t smsc_intr_callback;
+
+static miibus_readreg_t smsc_miibus_readreg;
+static miibus_writereg_t smsc_miibus_writereg;
+static miibus_statchg_t smsc_miibus_statchg;
+
+static uether_fn_t smsc_attach_post;
+static uether_fn_t smsc_init;
+static uether_fn_t smsc_stop;
+static uether_fn_t smsc_start;
+static uether_fn_t smsc_tick;
+static uether_fn_t smsc_setmulti;
+static uether_fn_t smsc_setpromisc;
+
+static int	smsc_ifmedia_upd(struct ifnet *);
+static void	smsc_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+
+static int smsc_chip_init(struct smsc_softc *sc);
+
+static const struct usb_config smsc_config[SMSC_N_TRANSFER] = {
+
+	[SMSC_BULK_DT_WR] = {
+		.type = UE_BULK,
+		.endpoint = UE_ADDR_ANY,
+		.direction = UE_DIR_OUT,
+		.frames = 16,
+		.bufsize = 16 * MCLBYTES,
+		.flags = {.pipe_bof = 1,.force_short_xfer = 1,},
+		.callback = smsc_bulk_write_callback,
+		.timeout = 10000,	/* 10 seconds */
+	},
+
+	[SMSC_BULK_DT_RD] = {
+		.type = UE_BULK,
+		.endpoint = UE_ADDR_ANY,
+		.direction = UE_DIR_IN,
+		.bufsize = 18944,	/* bytes */
+		.flags = {.pipe_bof = 1,.short_xfer_ok = 1,},
+		.callback = smsc_bulk_read_callback,
+		.timeout = 0,	/* no timeout */
+	},
+
+	[SMSC_INTR_DT_RD] = {
+		.type = UE_INTERRUPT,
+		.endpoint = UE_ADDR_ANY,
+		.direction = UE_DIR_IN,
+		.flags = {.pipe_bof = 1,.short_xfer_ok = 1,},
+		.bufsize = 0,	/* use wMaxPacketSize */
+		.callback = smsc_intr_callback,
+	},
+};
+
+static const struct usb_ether_methods smsc_ue_methods = {
+	.ue_attach_post = smsc_attach_post,
+	.ue_start = smsc_start,
+	.ue_init = smsc_init,
+	.ue_stop = smsc_stop,
+	.ue_tick = smsc_tick,
+	.ue_setmulti = smsc_setmulti,
+	.ue_setpromisc = smsc_setpromisc,
+	.ue_mii_upd = smsc_ifmedia_upd,
+	.ue_mii_sts = smsc_ifmedia_sts,
+};
+
+/**
+ *	smsc_read_reg - Reads a 32-bit register on the device
+ *	@sc: driver soft context
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Register value or 0 if read failed
+ */
+static uint32_t
+smsc_read_reg(struct smsc_softc *sc, uint32_t off)
+{
+	struct usb_device_request req;
+	uint32_t buf;
+	usb_error_t err;
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+
+	req.bmRequestType = UT_READ_VENDOR_DEVICE;
+	req.bRequest = SMSC_UR_READ;
+	USETW(req.wValue, 0);
+	USETW(req.wIndex, off);
+	USETW(req.wLength, 4);
+
+	err = uether_do_request(&sc->sc_ue, &req, &buf, 1000);
+	if (err != 0) {
+		device_printf(sc->sc_ue.ue_dev, "Failed to read register 0x%0x, err = %d\n", off, err);
+		return (0);
+	}
+
+	return le32toh(buf);
+}
+
+/**
+ *	smsc_write_reg - Reads a 32-bit register on the device
+ *	@sc: driver soft context
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Nothing
+ */
+static void
+smsc_write_reg(struct smsc_softc *sc, uint32_t off, uint32_t data)
+{
+	struct usb_device_request req;
+	uint32_t buf;
+	usb_error_t err;
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+	
+	buf = htole32(data);
+
+	req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
+	req.bRequest = SMSC_UR_WRITE;
+	USETW(req.wValue, 0);
+	USETW(req.wIndex, off);
+	USETW(req.wLength, 4);
+
+	err = uether_do_request(&sc->sc_ue, &req, &buf, 1000);
+	if (err != 0)
+		device_printf(sc->sc_ue.ue_dev, "Failed to write register 0x%0x, err = %d\n", off, err);
+
+}
+
+/**
+ *	smsc_wait_for_bits - Reads data from eeprom
+ *	@sc: driver soft context
+ *	@reg: register number
+ *	@bits: bit to wait for to clear
+ *
+ *	RETURNS:
+ *	0 if succeeded, -1 if timed out
+ */
+static int
+smsc_wait_for_bits(struct smsc_softc *sc, uint32_t reg, uint32_t bits)
+{
+	int i;
+	uint32_t val;
+
+	for (i = 0; i != SMSC_TIMEOUT; i++) {
+		val = smsc_read_reg(sc, SMSC_REG_E2P_CMD);
+		if (!(val & bits))
+			break;
+		if (uether_pause(&sc->sc_ue, hz / 100))
+			break;
+	}
+
+	if (i == SMSC_TIMEOUT)
+		return (-1);
+
+	return (0);
+}
+
+/**
+ *	smsc_read_eeprom - Reads data from eeprom
+ *	@sc: driver soft context
+ *	@off: EEPROM offset
+ *	@data: memory to read data to
+ *	@length: read length bytes
+ *
+ *	
+ *
+ *	RETURNS:
+ *	0 on success, -1 otherwise
+ */
+static int
+smsc_read_eeprom(struct smsc_softc *sc, uint32_t off, uint8_t *data, int length)
+{
+	int timedout, i;
+	uint32_t val;
+
+	if (smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY)) {
+		device_printf(sc->sc_ue.ue_dev, "Timed-out waiting for busy EEPROM\n");
+		return (-1);
+	}
+
+	for (i = 0; i < length; i++) {
+		smsc_write_reg(sc, SMSC_REG_E2P_CMD,
+			E2P_CMD_BUSY | E2P_CMD_READ | ((off+i) & E2P_CMD_ADDR));
+
+		timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY);
+		val = smsc_read_reg(sc, SMSC_REG_E2P_CMD);
+		if (timedout || (val & E2P_CMD_TIMEOUT)) {
+			device_printf(sc->sc_ue.ue_dev, 
+				"Timed-out reading from EEPROM\n");
+			return (-1);
+		}
+
+		val = smsc_read_reg(sc, SMSC_REG_E2P_DATA);
+		data[i] = val & E2P_DATA_MASK;
+	}
+
+	return (0);
+}
+
+#if 0
+/**
+ *	smsc_write_eeprom - Reads data from eeprom
+ *	@sc: driver soft context
+ *	@off: EEPROM offset
+ *	@data: memory to write
+ *	@length: write length bytes
+ *
+ *	RETURNS:
+ *	0 on success, -1 otherwise
+ */
+static int
+smsc_write_eeprom(struct smsc_softc *sc, uint32_t off, uint8_t *data, int length)
+{
+	int timedout, i;
+	uint32_t val;
+
+	if (smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY)) {
+		device_printf(sc->sc_ue.ue_dev, "Timed-out waiting for busy EEPROM\n");
+		return (-1);
+	}
+
+	/*
+	 * Write/Erase
+	 */
+	smsc_write_reg(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY | E2P_CMD_EWEN);
+	timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY);
+	val = smsc_read_reg(sc, SMSC_REG_E2P_CMD);
+
+	if (timedout || (val & E2P_CMD_TIMEOUT)) {
+		device_printf(sc->sc_ue.ue_dev, "Timed-out erasing EEPROM\n");
+		return (-1);
+	}
+
+	for (i = 0; i < length; i++) {
+		val = data[i];
+		smsc_write_reg(sc, SMSC_REG_E2P_DATA, val);
+		smsc_write_reg(sc, SMSC_REG_E2P_CMD,
+			E2P_CMD_BUSY | E2P_CMD_WRITE | ((off+i) & E2P_CMD_ADDR));
+
+		timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY);
+		val = smsc_read_reg(sc, SMSC_REG_E2P_CMD);
+
+		if (timedout || (val & E2P_CMD_TIMEOUT)) {
+			device_printf(sc->sc_ue.ue_dev, 
+				"Timed-out writing EEPROM %d %x\n", i, val);
+			return (-1);
+		}
+	}
+
+	return (0);
+}
+#endif
+
+/**
+ *	smsc_miibus_readreg - Reads a MII/MDIO register
+ *	@dev: usb ether device
+ *	@phy: the number of phy writing to
+ *	@reg: the register address
+ *	@val: the value to write
+ *
+ *
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static int
+smsc_miibus_readreg(device_t dev, int phy, int reg)
+{
+	struct smsc_softc *sc = device_get_softc(dev);
+	int locked;
+	uint32_t addr;
+	uint32_t val = 0;
+	int i;
+
+	locked = mtx_owned(&sc->sc_mtx);
+	if (!locked)
+		SMSC_LOCK(sc);
+
+	addr = (phy << 11) | (reg << 6) | MII_READ;
+	smsc_write_reg(sc, SMSC_REG_MII_ADDR, addr);
+
+	for (i = 0; i != SMSC_TIMEOUT; i++) {
+		if (!(smsc_read_reg(sc, SMSC_REG_MII_ADDR) & MII_BUSY))
+			break;
+		if (uether_pause(&sc->sc_ue, hz / 100))
+			break;
+	}
+
+	if (i == SMSC_TIMEOUT)
+		device_printf(sc->sc_ue.ue_dev, "MII read timed out\n");
+
+	val = smsc_read_reg(sc, SMS_REG_MII_DATA);
+
+	if (!locked)
+		SMSC_UNLOCK(sc);
+
+	return (val & 0xFFFF);
+}
+
+/**
+ *	smsc_miibus_writereg - Writes a MII/MDIO register
+ *	@dev: usb ether device
+ *	@phy: the number of phy writing to
+ *	@reg: the register address
+ *	@val: the value to write
+ *
+ *
+ *
+ *	RETURNS:
+ *	0 
+ */
+static int
+smsc_miibus_writereg(device_t dev, int phy, int reg, int val)
+{
+	struct smsc_softc *sc = device_get_softc(dev);
+	int locked;
+	uint32_t addr;
+	int i;
+
+	if (sc->sc_phyno != phy)
+		return (0);
+
+	locked = mtx_owned(&sc->sc_mtx);
+	if (!locked)
+		SMSC_LOCK(sc);
+
+	val = htole32(val);
+	smsc_write_reg(sc, SMS_REG_MII_DATA, val);
+
+	addr = (phy << 11) | (reg << 6) | MII_WRITE;
+	smsc_write_reg(sc, SMSC_REG_MII_ADDR, addr);
+
+	for (i = 0; i != SMSC_TIMEOUT; i++) {
+		if (!(smsc_read_reg(sc, SMSC_REG_MII_ADDR) & MII_BUSY))
+			break;
+		if (uether_pause(&sc->sc_ue, hz / 100))
+			break;
+	}
+
+	if (i == SMSC_TIMEOUT)
+		device_printf(sc->sc_ue.ue_dev, "MII write timed out\n");
+
+	if (!locked)
+		SMSC_UNLOCK(sc);
+	
+	return (0);
+}
+
+
+
+/**
+ *	smsc_miibus_statchg - Called when the MII status changes
+ *	@dev: usb ether device
+ *
+ *
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_miibus_statchg(device_t dev)
+{
+	struct smsc_softc *sc = device_get_softc(dev);
+	struct mii_data *mii = uether_getmii(&sc->sc_ue);
+	struct ifnet *ifp;
+	int locked;
+
+	locked = mtx_owned(&sc->sc_mtx);
+	if (!locked)
+		SMSC_LOCK(sc);
+
+	ifp = uether_getifp(&sc->sc_ue);
+	if (mii == NULL || ifp == NULL ||
+	    (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+		goto done;
+ 
+	/* Use the MII status to determine link status */
+	sc->sc_flags &= ~SMSC_FLAG_LINK;
+	if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
+	    (IFM_ACTIVE | IFM_AVALID)) {
+		switch (IFM_SUBTYPE(mii->mii_media_active)) {
+			case IFM_10_T:
+			case IFM_100_TX:
+				sc->sc_flags |= SMSC_FLAG_LINK;
+				break;
+			case IFM_1000_T:
+				/* Gigabit ethernet not supported by chipset */
+				break;
+			default:
+				break;
+		}
+	}
+ 
+	/* Lost link, do nothing. */
+	if ((sc->sc_flags & SMSC_FLAG_LINK) == 0)
+		goto done;
+	
+	/* Enable/disable full duplex operation */
+	if ((IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) != 0) {
+		sc->sc_mac_cr &= ~MAC_CR_RCVOWN;
+		sc->sc_mac_cr |= MAC_CR_FDPX;
+	} else {
+		sc->sc_mac_cr &= ~MAC_CR_FDPX;
+		sc->sc_mac_cr |= MAC_CR_RCVOWN;
+	}
+	
+	smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr);
+	
+done:
+	if (!locked)
+		SMSC_UNLOCK(sc);
+}
+
+/**
+ *	smsc_ifmedia_upd - Set media options
+ *	@ifp: interface pointer
+ *
+ *	Basically boilerplate code that simply calls the mii functions to set the
+ *	media options.
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static int
+smsc_ifmedia_upd(struct ifnet *ifp)
+{
+	struct smsc_softc *sc = ifp->if_softc;
+	struct mii_data *mii = uether_getmii(&sc->sc_ue);
+	int err;
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+
+	if (mii->mii_instance) {
+		struct mii_softc *miisc;
+
+		LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
+			mii_phy_reset(miisc);
+	}
+	err = mii_mediachg(mii);
+	return (err);
+}
+
+/**
+ *	smsc_ifmedia_sts - Report current media status
+ *	@ifp: 
+ *	@ifmr: 
+ *
+ *	Basically boilerplate code that simply calls the mii functions to get the
+ *	media status.
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+{
+	struct smsc_softc *sc = ifp->if_softc;
+	struct mii_data *mii = uether_getmii(&sc->sc_ue);
+
+	SMSC_LOCK(sc);
+	
+	mii_pollstat(mii);
+	
+	SMSC_UNLOCK(sc);
+	
+	ifmr->ifm_active = mii->mii_media_active;
+	ifmr->ifm_status = mii->mii_media_status;
+}
+
+/**
+ *	smsc_hash - Calculate the hash of a mac address
+ *	@addr: The mac address to calculate the has on
+ *
+ *
+ *	RETURNS:
+ *	Returns a value from 0-63 which is the hash of the mac address.
+ */
+static inline uint32_t
+smsc_hash(uint8_t addr[ETHER_ADDR_LEN])
+{
+	return (ether_crc32_be(addr, ETHER_ADDR_LEN) >> 26) & 0x3f;
+}
+
+/**
+ *	smsc_setmulti - Setup multicast
+ *	@ue: 
+ *
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_setmulti(struct usb_ether *ue)
+{
+	struct smsc_softc *sc = uether_getsc(ue);
+	struct ifnet *ifp = uether_getifp(ue);
+	struct ifmultiaddr *ifma;
+	uint32_t hashtbl[2] = { 0, 0 };
+	uint32_t hash;
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+
+	if (ifp->if_flags & IFF_PROMISC) {
+		/* Enter promiscuous mode and set the bits accordingly */
+		sc->sc_mac_cr |= MAC_CR_PRMS;
+		sc->sc_mac_cr &= ~(MAC_CR_MCPAS | MAC_CR_HPFILT);
+	} else if (ifp->if_flags & IFF_ALLMULTI) {
+		/* Enter multicaste mode and set the bits accordingly */
+		sc->sc_mac_cr |= MAC_CR_MCPAS;
+		sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_HPFILT);
+		
+	} else {
+		/* Take the lock of the mac address list before hashing each of them */
+		if_maddr_rlock(ifp);
+
+		if (!TAILQ_EMPTY(&ifp->if_multiaddrs)) {
+			/* We are filtering on a set of address so calculate hashes of each
+			 * of the address and set the corresponding bits in the register.
+			 */
+			sc->sc_mac_cr |= MAC_CR_HPFILT;
+			sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_MCPAS);
+		
+			TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
+				if (ifma->ifma_addr->sa_family != AF_LINK)
+					continue;
+
+				hash = smsc_hash(LLADDR((struct sockaddr_dl *)ifma->ifma_addr));
+				hashtbl[hash >> 5] |= 1 << (hash & 0x1F);
+			}
+		} else {
+			/* Only receive packets with destination set to our mac address */
+			sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_MCPAS | MAC_CR_HPFILT);
+		}
+
+		if_maddr_runlock(ifp);
+	}
+
+	/* Write the hash table and mac control registers */
+	smsc_write_reg(sc, SMSC_REG_HASHH, hashtbl[1]);
+	smsc_write_reg(sc, SMSC_REG_HASHL, hashtbl[0]);
+	smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr);
+}
+
+/**
+ *	smsc_setpromisc - Setup promiscuous mode
+ *	@ue: 
+ *
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_setpromisc(struct usb_ether *ue)
+{
+	struct smsc_softc *sc = uether_getsc(ue);
+	struct ifnet *ifp = uether_getifp(ue);
+
+	device_printf(sc->sc_ue.ue_dev, "promiscuous mode enabled\n");
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+
+	/* Set/clear the promiscuous bit based on setting */
+	if (ifp->if_flags & IFF_PROMISC) {
+		sc->sc_mac_cr |= MAC_CR_PRMS;
+	} else {
+		sc->sc_mac_cr &= ~MAC_CR_PRMS;
+	}
+
+	/* Write mac control registers */
+	smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr);
+}
+
+/**
+ *	smsc_set_mac_address - Sets the mac address in the device
+ *	@sc: driver soft context
+ *	@addr: pointer to array contain at least 6 bytes of the mac
+ *
+ *	Writes the MAC address into the device, usually this doesn't need to be
+ *	done because typically the MAC is read from the attached EEPROM.
+ *
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_set_mac_address(struct smsc_softc *sc, const uint8_t *addr)
+{
+	uint32_t tmp;
+
+	/* Program the lower 4 bytes of the MAC */
+	tmp = addr[3] << 24 | addr[2] << 16 | addr[1] << 8 | addr[0];
+	smsc_write_reg(sc, SMSC_REG_ADDRL, tmp);
+		
+	/* Program the upper 2 bytes of the MAC */
+	tmp = addr[5] << 8 | addr[4];
+	smsc_write_reg(sc, SMSC_REG_ADDRH, tmp);
+}
+
+/**
+ *	smsc_reset - Reset the SMSC interface
+ *	@sc: device soft context
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_reset(struct smsc_softc *sc)
+{
+	struct usb_config_descriptor *cd;
+	usb_error_t err;
+
+	cd = usbd_get_config_descriptor(sc->sc_ue.ue_udev);
+
+	err = usbd_req_set_config(sc->sc_ue.ue_udev, &sc->sc_mtx,
+	    cd->bConfigurationValue);
+
+	if (err)
+		device_printf(sc->sc_ue.ue_dev, "reset failed (ignored)\n");
+
+	/* Wait a little while for the chip to get its brains in order. */
+	uether_pause(&sc->sc_ue, hz / 100);
+
+	/* Reinitialize controller to achieve full reset. */
+	smsc_chip_init(sc);
+}
+
+
+/**
+ *	smsc_init - Initialises the LAN95xx chip
+ *	@ue: USB ether interface
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_init(struct usb_ether *ue)
+{
+	struct smsc_softc *sc = uether_getsc(ue);
+	struct ifnet *ifp = uether_getifp(ue);
+
+	SMSC_LOCK_ASSERT(sc, MA_OWNED);
+
+	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+		return;
+
+	/* Cancel pending I/O */
+	smsc_stop(ue);
+
+	/* Reset the ethernet interface */
+	smsc_reset(sc);
+
+	/* Set MAC address. */
+	smsc_set_mac_address(sc, IF_LLADDR(ifp));
+
+	/* Load the multicast filter. */
+	smsc_setmulti(ue);
+
+	usbd_xfer_set_stall(sc->sc_xfer[SMSC_BULK_DT_WR]);
+
+	/* Indicate we are up and running */
+	ifp->if_drv_flags |= IFF_DRV_RUNNING;
+
+	/* Switch to selected media. */
+	smsc_ifmedia_upd(ifp);
+	smsc_start(ue);
+}
+
+
+/**
+ *	smsc_intr_callback - Inteerupt callback used to process the USB packet
+ *	@xfer: the USB transfer
+ *	@error:
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_intr_callback(struct usb_xfer *xfer, usb_error_t error)
+{
+	int actlen;
+
+	usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL);
+}
+
+/**
+ *	smsc_bulk_read_callback - Read callback used to process the USB packet
+ *	@xfer: the USB transfer
+ *	@error:
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
+{
+	struct smsc_softc *sc = usbd_xfer_softc(xfer);
+	struct usb_ether *ue = &sc->sc_ue;
+	struct ifnet *ifp = uether_getifp(ue);
+	struct usb_page_cache *pc;
+	uint32_t rxhdr;
+	uint16_t pktlen;
+	uint32_t len;
+
+	int actlen;
+	int frames;
+	static int count = 0;
+
+	usbd_xfer_status(xfer, &actlen, NULL, &frames, NULL);
+	count++;
+	switch (USB_GET_STATE(xfer)) {
+		case USB_ST_TRANSFERRED:
+			/* From looking at the linux driver it appears the received packet
+			 * is prefixed with a 32-bit header, which contains information like
+			 * the status of the received packet.
+			 *
+			 * Also there maybe multiple packets in the USB frame, each will
+			 * have a header and each needs to have it's own mbuf allocated and
+			 * populated for it.
+			 */
+			if (actlen < sizeof(rxhdr) + ETHER_CRC_LEN) {
+				ifp->if_ierrors++;
+				printf("DROP\n");
+				goto tr_setup;
+			}
+			pc = usbd_xfer_get_frame(xfer, 0);
+			usbd_copy_out(pc, 0, &rxhdr, sizeof(rxhdr));
+			actlen -= sizeof(rxhdr);
+			rxhdr = le32toh(rxhdr);
+			pktlen = (uint16_t)((rxhdr & SMSC_RX_STATUS_FL_MASK) >> SMSC_RX_STATUS_FL_SHIFT);
+			len = min(pktlen, actlen);
+			if (rxhdr & SMSC_RX_STATUS_ES) {
+				ifp->if_ierrors++;
+				printf("DROP\n");
+				goto tr_setup;
+			}
+			uether_rxbuf(ue, pc, 2 + sizeof(rxhdr), len);
+			/* FALLTHROUGH */
+			
+		case USB_ST_SETUP:
+tr_setup:
+			usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_len(xfer));
+			usbd_transfer_submit(xfer);
+			uether_rxflush(ue);
+			return;
+
+		default:
+			device_printf(sc->sc_ue.ue_dev, "bulk read error, %s", usbd_errstr(error));
+			if (error != USB_ERR_CANCELLED) {
+				usbd_xfer_set_stall(xfer);
+				goto tr_setup;
+			}
+			device_printf(sc->sc_ue.ue_dev, "start rx %i", usbd_xfer_max_len(xfer));
+			return;
+	}
+}
+
+/**
+ *	smsc_bulk_write_callback - Write callback used to send ethernet frame
+ *	@xfer: the USB transfer
+ *	@error:
+ *
+ *	
+ *
+ *	RETURNS:
+ *	Returns 0 on success or a negative error code.
+ */
+static void
+smsc_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
+{
+	struct smsc_softc *sc = usbd_xfer_softc(xfer);
+	struct ifnet *ifp = uether_getifp(&sc->sc_ue);
+	struct usb_page_cache *pc;
+	struct mbuf *m;
+	uint32_t txhdr;
+	uint32_t frm_len = 0;
+	uint32_t csum_prefix = 0;
+
+	switch (USB_GET_STATE(xfer)) {
+		case USB_ST_TRANSFERRED:
+			ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+			/* FALLTHROUGH */
+
+		case USB_ST_SETUP:
+tr_setup:
+			if ((sc->sc_flags & SMSC_FLAG_LINK) == 0 ||
+				(ifp->if_drv_flags & IFF_DRV_OACTIVE) != 0) {
+				/* Don't send anything if there is no link or controller is
+				 * busy.
+				 */
+				return;
+			}
+			
+			/* Pull the frame of the queue */
+			IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+			if (m == NULL)
+				return;
+
+			/* Get the frame so we copy in the header and frame data */
+			pc = usbd_xfer_get_frame(xfer, 0);
+			
+			/* Check if we can use the H/W checksumming */
+			if ((ifp->if_capenable & IFCAP_TXCSUM) &&
+			    ((m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) != 0)) {
+				panic("HW checksumming support is not implemented\n");
+			}
+
+			/* Each frame is prefixed with two 32-bit values describing the
+			 * length and checksum offloading request.
+			 */
+			txhdr = m->m_pkthdr.len | SMSC_TX_CMD_A_FIRST_SEG | SMSC_TX_CMD_A_LAST_SEG;
+			txhdr = htole32(txhdr);
+			usbd_copy_in(pc, 0, &txhdr, sizeof(txhdr));
+			
+			txhdr = m->m_pkthdr.len;
+			if (csum_prefix)
+				txhdr |= SMSC_TX_CMD_B_CSUM_ENABLE;
+			txhdr = htole32(txhdr);
+			usbd_copy_in(pc, 4, &txhdr, sizeof(txhdr));
+			
+			frm_len += 8;
+				
+
+			/* Next copy in the actual packet */
+			usbd_m_copy_in(pc, frm_len, m, 0, m->m_pkthdr.len);
+			frm_len += m->m_pkthdr.len;
+
+			/* Set the length of the transfer including the header */
+			usbd_xfer_set_frame_len(xfer, 0, frm_len);
+
+			/* Update the number of packets sent */
+			ifp->if_opackets++;
+
+			/* If there's a BPF listener, bounce a copy of this frame to him */

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

From owner-svn-src-projects@FreeBSD.ORG  Sun Feb 12 07:06:46 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4B0BA106564A;
	Sun, 12 Feb 2012 07:06:46 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3A2B88FC0C;
	Sun, 12 Feb 2012 07:06:46 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1C76kTW069972;
	Sun, 12 Feb 2012 07:06:46 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1C76kI2069970;
	Sun, 12 Feb 2012 07:06:46 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202120706.q1C76kI2069970@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sun, 12 Feb 2012 07:06:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231548 - projects/armv6/sys/boot/fdt/dts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Feb 2012 07:06:46 -0000

Author: gonzo
Date: Sun Feb 12 07:06:45 2012
New Revision: 231548
URL: http://svn.freebsd.org/changeset/base/231548

Log:
  Fix interrupt number for UART

Modified:
  projects/armv6/sys/boot/fdt/dts/pandaboard.dts

Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts
==============================================================================
--- projects/armv6/sys/boot/fdt/dts/pandaboard.dts	Sun Feb 12 06:41:29 2012	(r231547)
+++ projects/armv6/sys/boot/fdt/dts/pandaboard.dts	Sun Feb 12 07:06:45 2012	(r231548)
@@ -77,7 +77,7 @@
 			compatible = "ns16550";
 			reg = <0x48020000 0x1000>;
 			reg-shift = <2>;
-			interrupts = < 68 >;
+			interrupts = < 106 >;
 			interrupt-parent = <&GIC>;
 			clock-frequency = < 48000000 >; /* 48Mhz clock for all uarts */
 							/* (techref 17.3.1.1) */

From owner-svn-src-projects@FreeBSD.ORG  Sun Feb 12 23:45:27 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 62F66106566C;
	Sun, 12 Feb 2012 23:45:27 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4EDEF8FC13;
	Sun, 12 Feb 2012 23:45:27 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1CNjRps006271;
	Sun, 12 Feb 2012 23:45:27 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1CNjRc1006269;
	Sun, 12 Feb 2012 23:45:27 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202122345.q1CNjRc1006269@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sun, 12 Feb 2012 23:45:27 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231569 - projects/armv6/sys/arm/ti/omap4
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Feb 2012 23:45:27 -0000

Author: gonzo
Date: Sun Feb 12 23:45:27 2012
New Revision: 231569
URL: http://svn.freebsd.org/changeset/base/231569

Log:
  Clean out unused files

Deleted:
  projects/armv6/sys/arm/ti/omap4/omap4.c
  projects/armv6/sys/arm/ti/omap4/omap4_timer.c
  projects/armv6/sys/arm/ti/omap4/uart_cpu_omap4.c
Modified:
  projects/armv6/sys/arm/ti/omap4/files.omap4

Modified: projects/armv6/sys/arm/ti/omap4/files.omap4
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/files.omap4	Sun Feb 12 23:18:05 2012	(r231568)
+++ projects/armv6/sys/arm/ti/omap4/files.omap4	Sun Feb 12 23:45:27 2012	(r231569)
@@ -22,7 +22,6 @@ arm/ti/ti_machdep.c				standard
 arm/ti/omap_gpio.c				optional	gpio
 arm/ti/usb/omap_ehci.c				optional	usb ehci
 
-# arm/ti/omap4/omap4.c				standard
 arm/ti/omap4/omap4_prcm_clks.c			standard
 arm/ti/omap4/omap4_scm_padconf.c		standard
 

From owner-svn-src-projects@FreeBSD.ORG  Sun Feb 12 23:48:39 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D6EF11065672;
	Sun, 12 Feb 2012 23:48:39 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C15C68FC16;
	Sun, 12 Feb 2012 23:48:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1CNmdGf006401;
	Sun, 12 Feb 2012 23:48:39 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1CNmdN3006399;
	Sun, 12 Feb 2012 23:48:39 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202122348.q1CNmdN3006399@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sun, 12 Feb 2012 23:48:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231570 - projects/armv6/sys/arm/ti/usb
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Feb 2012 23:48:39 -0000

Author: gonzo
Date: Sun Feb 12 23:48:39 2012
New Revision: 231570
URL: http://svn.freebsd.org/changeset/base/231570

Log:
  Replace readl/writel with read_4/write_4

Modified:
  projects/armv6/sys/arm/ti/usb/omap_ehci.c

Modified: projects/armv6/sys/arm/ti/usb/omap_ehci.c
==============================================================================
--- projects/armv6/sys/arm/ti/usb/omap_ehci.c	Sun Feb 12 23:45:27 2012	(r231569)
+++ projects/armv6/sys/arm/ti/usb/omap_ehci.c	Sun Feb 12 23:48:39 2012	(r231570)
@@ -133,8 +133,8 @@ static device_suspend_t omap_ehci_suspen
 static device_resume_t omap_ehci_resume;
 
 /**
- *	omap_tll_readl - read a 32-bit value from the USBTLL registers
- *	omap_tll_writel - write a 32-bit value from the USBTLL registers
+ *	omap_tll_read_4 - read a 32-bit value from the USBTLL registers
+ *	omap_tll_write_4 - write a 32-bit value from the USBTLL registers
  *	omap_tll_readb - read an 8-bit value from the USBTLL registers
  *	omap_tll_writeb - write an 8-bit value from the USBTLL registers
  *	@sc: omap ehci device context
@@ -149,13 +149,13 @@ static device_resume_t omap_ehci_resume;
  *	nothing in case of write function, if read function returns the value read.
  */
 static inline uint32_t
-omap_tll_readl(struct omap_ehci_softc *sc, bus_size_t off)
+omap_tll_read_4(struct omap_ehci_softc *sc, bus_size_t off)
 {
 	return bus_read_4(sc->tll_mem_res, off);
 }
 
 static inline void
-omap_tll_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
+omap_tll_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
 {
 	bus_write_4(sc->tll_mem_res, off, val);
 }
@@ -173,8 +173,8 @@ omap_tll_writeb(struct omap_ehci_softc *
 }
 
 /**
- *	omap_ehci_readl - read a 32-bit value from the EHCI registers
- *	omap_ehci_writel - write a 32-bit value from the EHCI registers
+ *	omap_ehci_read_4 - read a 32-bit value from the EHCI registers
+ *	omap_ehci_write_4 - write a 32-bit value from the EHCI registers
  *	@sc: omap ehci device context
  *	@off: byte offset within the register set to read from
  *	@val: the value to write into the register
@@ -187,19 +187,19 @@ omap_tll_writeb(struct omap_ehci_softc *
  *	nothing in case of write function, if read function returns the value read.
  */
 static inline uint32_t
-omap_ehci_readl(struct omap_ehci_softc *sc, bus_size_t off)
+omap_ehci_read_4(struct omap_ehci_softc *sc, bus_size_t off)
 {
 	return (bus_read_4(sc->base.sc_io_res, off));
 }
 static inline void
-omap_ehci_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
+omap_ehci_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
 {
 	bus_write_4(sc->base.sc_io_res, off, val);
 }
 
 /**
- *	omap_uhh_readl - read a 32-bit value from the UHH registers
- *	omap_uhh_writel - write a 32-bit value from the UHH registers
+ *	omap_uhh_read_4 - read a 32-bit value from the UHH registers
+ *	omap_uhh_write_4 - write a 32-bit value from the UHH registers
  *	@sc: omap ehci device context
  *	@off: byte offset within the register set to read from
  *	@val: the value to write into the register
@@ -212,12 +212,12 @@ omap_ehci_writel(struct omap_ehci_softc 
  *	nothing in case of write function, if read function returns the value read.
  */
 static inline uint32_t
-omap_uhh_readl(struct omap_ehci_softc *sc, bus_size_t off)
+omap_uhh_read_4(struct omap_ehci_softc *sc, bus_size_t off)
 {
 	return bus_read_4(sc->uhh_mem_res, off);
 }
 static inline void
-omap_uhh_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
+omap_uhh_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val)
 {
 	bus_write_4(sc->uhh_mem_res, off, val);
 }
@@ -244,17 +244,17 @@ omap_ehci_utmi_init(struct omap_ehci_sof
 	 * same, SDR mode, bit stuffing and no autoidle.
 	 */
 	for (i=0; i<3; i++) {
-		reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i));
+		reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i));
 		
 		reg &= ~(TLL_CHANNEL_CONF_UTMIAUTOIDLE
 				 | TLL_CHANNEL_CONF_ULPINOBITSTUFF
 				 | TLL_CHANNEL_CONF_ULPIDDRMODE);
 		
-		omap_tll_writel(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg);
+		omap_tll_write_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg);
 	}
 	
 	/* Program the common TLL register */
-	reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_SHARED_CONF);
+	reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_SHARED_CONF);
 
 	reg &= ~( TLL_SHARED_CONF_USB_90D_DDR_EN
 			| TLL_SHARED_CONF_USB_DIVRATIO_MASK);
@@ -262,18 +262,18 @@ omap_ehci_utmi_init(struct omap_ehci_sof
 			| TLL_SHARED_CONF_USB_DIVRATIO_2
 			| TLL_SHARED_CONF_USB_180D_SDR_EN);
 	
-	omap_tll_writel(isc, OMAP_USBTLL_TLL_SHARED_CONF, reg);
+	omap_tll_write_4(isc, OMAP_USBTLL_TLL_SHARED_CONF, reg);
 	
 	/* Enable channels now */
 	for (i = 0; i < 3; i++) {
-		reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i));
+		reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i));
 		
 		/* Enable only the reg that is needed */
 		if ((en_mask & (1 << i)) == 0)
 			continue;
 		
 		reg |= TLL_CHANNEL_CONF_CHANEN;
-		omap_tll_writel(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg);
+		omap_tll_write_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg);
 	}
 }
 
@@ -305,10 +305,10 @@ omap_ehci_soft_phy_reset(struct omap_ehc
 		/* start ULPI access*/
 		| (1 << OMAP_USBHOST_INSNREG05_ULPI_CONTROL_SHIFT);
 
-	omap_ehci_writel(isc, OMAP_USBHOST_INSNREG05_ULPI, reg);
+	omap_ehci_write_4(isc, OMAP_USBHOST_INSNREG05_ULPI, reg);
 
 	/* Wait for ULPI access completion */
-	while ((omap_ehci_readl(isc, OMAP_USBHOST_INSNREG05_ULPI)
+	while ((omap_ehci_read_4(isc, OMAP_USBHOST_INSNREG05_ULPI)
 	       & (1 << OMAP_USBHOST_INSNREG05_ULPI_CONTROL_SHIFT))) {
 
 		/* Sleep for a tick */
@@ -371,7 +371,7 @@ omap_ehci_init(struct omap_ehci_softc *i
 		DELAY(10);
 
 	/* Read the UHH revision */
-	isc->ehci_rev = omap_uhh_readl(isc, OMAP_USBHOST_UHH_REVISION);
+	isc->ehci_rev = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_REVISION);
 	device_printf(isc->sc_dev, "UHH revision 0x%08x\n", isc->ehci_rev);
 	
 	/* Initilise the low level interface module(s) */
@@ -381,13 +381,13 @@ omap_ehci_init(struct omap_ehci_softc *i
 		omap_prcm_clk_enable(USBTLL_CLK);
 
 		/* Perform TLL soft reset, and wait until reset is complete */
-		omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_SOFTRESET);
+		omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_SOFTRESET);
 	
 		/* Set the timeout to 100ms*/
 		timeout = (hz < 10) ? 1 : ((100 * hz) / 1000);
 
 		/* Wait for TLL reset to complete */
-		while ((omap_tll_readl(isc, OMAP_USBTLL_SYSSTATUS) & 
+		while ((omap_tll_read_4(isc, OMAP_USBTLL_SYSSTATUS) & 
 		        TLL_SYSSTATUS_RESETDONE) == 0x00) {
 
 			/* Sleep for a tick */
@@ -407,7 +407,7 @@ omap_ehci_init(struct omap_ehci_softc *i
 		 *                     assertion when no more activity on the USB.
 		 * ENAWAKEUP = 1     : Wakeup generation enabled
 		 */
-		omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_ENAWAKEUP |
+		omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_ENAWAKEUP |
 		                                            TLL_SYSCONFIG_AUTOIDLE |
 		                                            TLL_SYSCONFIG_SIDLE_SMART_IDLE |
 		                                            TLL_SYSCONFIG_CACTIVITY);
@@ -439,7 +439,7 @@ omap_ehci_init(struct omap_ehci_softc *i
 	}
 
 	/* Put UHH in SmartIdle/SmartStandby mode */
-	reg = omap_uhh_readl(isc, OMAP_USBHOST_UHH_SYSCONFIG);
+	reg = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_SYSCONFIG);
 	if (isc->ehci_rev == OMAP_EHCI_REV1) {
 		reg &= ~(UHH_SYSCONFIG_SIDLEMODE_MASK |
 		         UHH_SYSCONFIG_MIDLEMODE_MASK);
@@ -454,10 +454,10 @@ omap_ehci_init(struct omap_ehci_softc *i
 		reg &= ~UHH_SYSCONFIG_STANDBYMODE_MASK;
 		reg |=  UHH_SYSCONFIG_STANDBYMODE_NOSTDBY;
 	}
-	omap_uhh_writel(isc, OMAP_USBHOST_UHH_SYSCONFIG, reg);
+	omap_uhh_write_4(isc, OMAP_USBHOST_UHH_SYSCONFIG, reg);
 	device_printf(isc->sc_dev, "OMAP_UHH_SYSCONFIG: 0x%08x\n", reg);
 
-	reg = omap_uhh_readl(isc, OMAP_USBHOST_UHH_HOSTCONFIG);
+	reg = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_HOSTCONFIG);
 	
 	/* Setup ULPI bypass and burst configurations */
 	reg |= (UHH_HOSTCONFIG_ENA_INCR4 |
@@ -499,7 +499,7 @@ omap_ehci_init(struct omap_ehci_softc *i
 			reg |= UHH_HOSTCONFIG_P2_MODE_HSIC;
 	}
 
-	omap_uhh_writel(isc, OMAP_USBHOST_UHH_HOSTCONFIG, reg);
+	omap_uhh_write_4(isc, OMAP_USBHOST_UHH_HOSTCONFIG, reg);
 	device_printf(isc->sc_dev, "UHH setup done, uhh_hostconfig=0x%08x\n", reg);
 	
 
@@ -512,7 +512,7 @@ omap_ehci_init(struct omap_ehci_softc *i
 	 * register bit disables this feature and restores normal behavior."
 	 */
 #if 0
-	omap_ehci_writel(isc, OMAP_USBHOST_INSNREG04,
+	omap_ehci_write_4(isc, OMAP_USBHOST_INSNREG04,
 	                 OMAP_USBHOST_INSNREG04_DISABLE_UNSUSPEND);
 #endif
 
@@ -554,10 +554,10 @@ omap_ehci_init(struct omap_ehci_softc *i
 	 * which the host controller issues interrupts.  We set it to 1 microframe
 	 * at startup - the default is 8 mircoframes (equates to 1ms).
 	 */
-	reg = omap_ehci_readl(isc, OMAP_USBHOST_USBCMD);
+	reg = omap_ehci_read_4(isc, OMAP_USBHOST_USBCMD);
 	reg &= 0xff00ffff;
 	reg |= (1 << 16);
-	omap_ehci_writel(isc, OMAP_USBHOST_USBCMD, reg);
+	omap_ehci_write_4(isc, OMAP_USBHOST_USBCMD, reg);
 
 	/* Soft reset the PHY using PHY reset command over ULPI */
 	if (isc->port_mode[0] == EHCI_HCD_OMAP_MODE_PHY)
@@ -605,8 +605,8 @@ omap_ehci_fini(struct omap_ehci_softc *i
 		timeout = (100 * hz) / 1000;
 
 	/* Reset the UHH, OHCI and EHCI modules */
-	omap_uhh_writel(isc, OMAP_USBHOST_UHH_SYSCONFIG, 0x0002);
-	while ((omap_uhh_readl(isc, OMAP_USBHOST_UHH_SYSSTATUS) & 0x07) == 0x00) {
+	omap_uhh_write_4(isc, OMAP_USBHOST_UHH_SYSCONFIG, 0x0002);
+	while ((omap_uhh_read_4(isc, OMAP_USBHOST_UHH_SYSSTATUS) & 0x07) == 0x00) {
 		/* Sleep for a tick */
 		pause("USBRESET", 1);
 		
@@ -624,8 +624,8 @@ omap_ehci_fini(struct omap_ehci_softc *i
 		timeout = (100 * hz) / 1000;
 
 	/* Reset the TLL module */
-	omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, 0x0002);
-	while ((omap_tll_readl(isc, OMAP_USBTLL_SYSSTATUS) & (0x01)) == 0x00) {
+	omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, 0x0002);
+	while ((omap_tll_read_4(isc, OMAP_USBTLL_SYSSTATUS) & (0x01)) == 0x00) {
 		/* Sleep for a tick */
 		pause("USBRESET", 1);
 		

From owner-svn-src-projects@FreeBSD.ORG  Mon Feb 13 11:36:42 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B3246106568B;
	Mon, 13 Feb 2012 11:36:42 +0000 (UTC) (envelope-from pho@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A21458FC14;
	Mon, 13 Feb 2012 11:36:42 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1DBag4T040655;
	Mon, 13 Feb 2012 11:36:42 GMT (envelope-from pho@svn.freebsd.org)
Received: (from pho@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1DBag4K040653;
	Mon, 13 Feb 2012 11:36:42 GMT (envelope-from pho@svn.freebsd.org)
Message-Id: <201202131136.q1DBag4K040653@svn.freebsd.org>
From: Peter Holm <pho@FreeBSD.org>
Date: Mon, 13 Feb 2012 11:36:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231583 - projects/stress2/misc
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Feb 2012 11:36:42 -0000

Author: pho
Date: Mon Feb 13 11:36:42 2012
New Revision: 231583
URL: http://svn.freebsd.org/changeset/base/231583

Log:
  Added two snapshot scenarios that also fails for the non SUJ case.

Added:
  projects/stress2/misc/suj26.sh   (contents, props changed)
  projects/stress2/misc/suj27.sh   (contents, props changed)

Added: projects/stress2/misc/suj26.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/stress2/misc/suj26.sh	Mon Feb 13 11:36:42 2012	(r231583)
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2012 Peter Holm <pho@FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# Variation of suj16.sh with more test programs and VM pressure.
+
+# Deadlocks seen.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart &&  mdconfig -d -u $mdstart
+
+mdconfig -a -t swap -s 2g -u $mdstart || exit 1
+bsdlabel -w md$mdstart auto
+
+[ $# -eq 1 ] && opt="$1" || opt="-j"
+newfs $opt md${mdstart}$part > /dev/null 2>&1
+
+mount /dev/md${mdstart}$part $mntpoint
+chmod 777 $mntpoint
+
+export runRUNTIME=30m
+export RUNDIR=$mntpoint/stressX
+export creatINCARNATIONS=2
+
+export TESTPROGS="
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/swap/swap
+"
+su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 &
+rpid=$!
+mdstart2=$((mdstart + 1))
+mntpoint2=${mntpoint}2
+[ -d $mntpoint2 ] || mkdir $mntpoint2
+mount | grep $mntpoint2 | grep -q /dev/md && umount -f $mntpoint2
+mdconfig -l | grep -q md$mdstart2 &&  mdconfig -d -u $mdstart2
+while kill -0 $rpid 2> /dev/null; do
+	rm -f /mnt/.snap/suj26
+	{ mksnap_ffs /mnt /mnt/.snap/suj26 || continue; } 2>&1 | \
+		grep -v "Resource temporarily unavailable"
+	[ ! -s /mnt/.snap/suj26 ] && continue
+	mdconfig -a -t vnode -f /mnt/.snap/suj26 -u $mdstart2 -o readonly
+	mount -r /dev/md$mdstart2 $mntpoint2
+
+	ls -l $mntpoint2 > /dev/null
+
+	umount $mntpoint2
+	mdconfig -d -u $mdstart2
+done
+wait
+
+while mount | grep $mntpoint | grep -q /dev/md; do
+	umount $mntpoint || sleep 1
+done
+mdconfig -d -u $mdstart

Added: projects/stress2/misc/suj27.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/stress2/misc/suj27.sh	Mon Feb 13 11:36:42 2012	(r231583)
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2012 Peter Holm <pho@FreeBSD.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# Variation of suj26.sh with one more test program.
+
+# Deadlocks seen.
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
+mdconfig -l | grep -q md$mdstart &&  mdconfig -d -u $mdstart
+
+mdconfig -a -t swap -s 2g -u $mdstart || exit 1
+bsdlabel -w md$mdstart auto
+
+[ $# -eq 1 ] && opt="$1" || opt="-j"
+newfs $opt md${mdstart}$part > /dev/null 2>&1
+
+mount /dev/md${mdstart}$part $mntpoint
+chmod 777 $mntpoint
+
+export runRUNTIME=30m
+export RUNDIR=$mntpoint/stressX
+export creatINCARNATIONS=2
+
+export TESTPROGS="
+testcases/creat/creat
+testcases/mkdir/mkdir
+testcases/rw/rw
+testcases/swap/swap
+"
+su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 &
+rpid=$!
+mdstart2=$((mdstart + 1))
+mntpoint2=${mntpoint}2
+[ -d $mntpoint2 ] || mkdir $mntpoint2
+mount | grep $mntpoint2 | grep -q /dev/md && umount -f $mntpoint2
+mdconfig -l | grep -q md$mdstart2 &&  mdconfig -d -u $mdstart2
+while kill -0 $rpid 2> /dev/null; do
+	rm -f /mnt/.snap/suj27
+	{ mksnap_ffs /mnt /mnt/.snap/suj27 || continue; } 2>&1 | \
+		grep -v "Resource temporarily unavailable"
+	[ ! -s /mnt/.snap/suj27 ] && continue
+	mdconfig -a -t vnode -f /mnt/.snap/suj27 -u $mdstart2 -o readonly
+	mount -r /dev/md$mdstart2 $mntpoint2
+
+	ls -l $mntpoint2 > /dev/null
+
+	umount $mntpoint2
+	mdconfig -d -u $mdstart2
+done
+wait
+
+while mount | grep $mntpoint | grep -q /dev/md; do
+	umount $mntpoint || sleep 1
+done
+mdconfig -d -u $mdstart

From owner-svn-src-projects@FreeBSD.ORG  Tue Feb 14 09:11:55 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 631591065670;
	Tue, 14 Feb 2012 09:11:55 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 343B58FC13;
	Tue, 14 Feb 2012 09:11:55 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1E9BtpH087916;
	Tue, 14 Feb 2012 09:11:55 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1E9Bswb087915;
	Tue, 14 Feb 2012 09:11:54 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202140911.q1E9Bswb087915@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Tue, 14 Feb 2012 09:11:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231645 - projects/multi-fibv6/9
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Feb 2012 09:11:55 -0000

Author: bz
Date: Tue Feb 14 09:11:54 2012
New Revision: 231645
URL: http://svn.freebsd.org/changeset/base/231645

Log:
  Create a working branch to prepare the merge of multi-FIB IPv6 support
  to stable/9.
  
  Sponsored by:	Cisco Systems, Inc.

Added:
     - copied from r231644, stable/9/
Directory Properties:
  projects/multi-fibv6/9/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Tue Feb 14 09:12:09 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1E5A31065674;
	Tue, 14 Feb 2012 09:12:09 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E43988FC14;
	Tue, 14 Feb 2012 09:12:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1E9C8gF087962;
	Tue, 14 Feb 2012 09:12:08 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1E9C8oe087961;
	Tue, 14 Feb 2012 09:12:08 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202140912.q1E9C8oe087961@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Tue, 14 Feb 2012 09:12:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231646 - projects/multi-fibv6/8
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Feb 2012 09:12:09 -0000

Author: bz
Date: Tue Feb 14 09:12:08 2012
New Revision: 231646
URL: http://svn.freebsd.org/changeset/base/231646

Log:
  Create a working branch to prepare the merge of multi-FIB IPv6 support
  to stable/8.
  
  Sponsored by:	Cisco Systems, Inc.

Added:
     - copied from r231645, stable/8/
Directory Properties:
  projects/multi-fibv6/8/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Tue Feb 14 11:37:04 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id EEA18106566C;
	Tue, 14 Feb 2012 11:37:04 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id DD7318FC18;
	Tue, 14 Feb 2012 11:37:04 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EBb4fB096286;
	Tue, 14 Feb 2012 11:37:04 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EBb4hQ096283;
	Tue, 14 Feb 2012 11:37:04 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202141137.q1EBb4hQ096283@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Tue, 14 Feb 2012 11:37:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231670 - projects/multi-fibv6/head/contrib/netcat
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Feb 2012 11:37:05 -0000

Author: bz
Date: Tue Feb 14 11:37:04 2012
New Revision: 231670
URL: http://svn.freebsd.org/changeset/base/231670

Log:
  Switch from setfib(2) moving the process to a different FIB to setsockopt(2)
  with SO_SETFIB to only tag the socket with the right FIB.
  
  That way either setfib(1) or nc -V can be used depending on what wants to be
  achieved.  This also allows nc to be used for simple regression testing of
  either feature.
  
  Sponsored by:	Cisco Systems, Inc.

Modified:
  projects/multi-fibv6/head/contrib/netcat/netcat.c

Modified: projects/multi-fibv6/head/contrib/netcat/netcat.c
==============================================================================
--- projects/multi-fibv6/head/contrib/netcat/netcat.c	Tue Feb 14 11:24:24 2012	(r231669)
+++ projects/multi-fibv6/head/contrib/netcat/netcat.c	Tue Feb 14 11:37:04 2012	(r231670)
@@ -605,8 +605,10 @@ remote_connect(const char *host, const c
 #endif
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid)) == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		/* Bind to a local port or source address if specified. */
@@ -678,8 +680,11 @@ local_listen(char *host, char *port, str
 			continue;
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid));
+			if (ret == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));

From owner-svn-src-projects@FreeBSD.ORG  Tue Feb 14 11:51:32 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AC1AB106566B;
	Tue, 14 Feb 2012 11:51:32 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 99F848FC1C;
	Tue, 14 Feb 2012 11:51:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EBpWBQ096752;
	Tue, 14 Feb 2012 11:51:32 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EBpWUW096749;
	Tue, 14 Feb 2012 11:51:32 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202141151.q1EBpWUW096749@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Tue, 14 Feb 2012 11:51:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231671 - projects/multi-fibv6/head/sys/netinet6
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Feb 2012 11:51:32 -0000

Author: bz
Date: Tue Feb 14 11:51:32 2012
New Revision: 231671
URL: http://svn.freebsd.org/changeset/base/231671

Log:
  Allow to provide a hint to in6_selectsrc() for the interface using the
  return ifnet double pointer.
  Pass that hint down to in6_selectif() to be used when i) the default FIB
  is queried and ii) route lookup fails because the network is not present
  (i.e. someone deleted the connected subnet).
  This hint should not be generally used from anywhere outside the neighbor
  discovery code.  We just make use of it from nd6_ns_output().
  
  Extend the nd6_na_output() interface by a nd6_na_output_fib() version
  and pass the FIB number from the NS mbuf on to NA to allow the new mbuf
  to inherit the FIB tag and a later lookup from ip6_output() to succeed
  in the aformentioned example case.
  Provide a wrapper function for the old public interface also used from
  CARP but mark it with BURN_BRIDGES to cleanup in HEAD after MFC.
  
  Sponsored by:	Cisco Systems, Inc.

Modified:
  projects/multi-fibv6/head/sys/netinet6/in6_src.c
  projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c

Modified: projects/multi-fibv6/head/sys/netinet6/in6_src.c
==============================================================================
--- projects/multi-fibv6/head/sys/netinet6/in6_src.c	Tue Feb 14 11:37:04 2012	(r231670)
+++ projects/multi-fibv6/head/sys/netinet6/in6_src.c	Tue Feb 14 11:51:32 2012	(r231671)
@@ -131,7 +131,8 @@ static int selectroute __P((struct socka
 	struct ip6_moptions *, struct route_in6 *, struct ifnet **,
 	struct rtentry **, int, int));
 static int in6_selectif __P((struct sockaddr_in6 *, struct ip6_pktopts *,
-	struct ip6_moptions *, struct route_in6 *ro, struct ifnet **, int));
+	struct ip6_moptions *, struct route_in6 *ro, struct ifnet **,
+	struct ifnet *, int));
 
 static struct in6_addrpolicy *lookup_addrsel_policy(struct sockaddr_in6 *);
 
@@ -182,7 +183,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso
     struct ifnet **ifpp, struct in6_addr *srcp)
 {
 	struct in6_addr dst, tmp;
-	struct ifnet *ifp = NULL;
+	struct ifnet *ifp = NULL, *oifp = NULL;
 	struct in6_ifaddr *ia = NULL, *ia_best = NULL;
 	struct in6_pktinfo *pi = NULL;
 	int dst_scope = -1, best_scope = -1, best_matchlen = -1;
@@ -195,8 +196,18 @@ in6_selectsrc(struct sockaddr_in6 *dstso
 	KASSERT(srcp != NULL, ("%s: srcp is NULL", __func__));
 
 	dst = dstsock->sin6_addr; /* make a copy for local operation */
-	if (ifpp)
+	if (ifpp) {
+		/*
+		 * Save a possibly passed in ifp for in6_selectsrc. Only
+		 * neighbor discovery code should use this feature, where
+		 * we may know the interface but not the FIB number holding
+		 * the connected subnet in case someone deleted it from the
+		 * default FIB and we need to check the interface.
+		 */
+		if (*ifpp != NULL)
+			oifp = *ifpp;
 		*ifpp = NULL;
+	}
 
 	if (inp != NULL) {
 		INP_LOCK_ASSERT(inp);
@@ -217,7 +228,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso
 		struct in6_ifaddr *ia6;
 
 		/* get the outgoing interface */
-		if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp,
+		if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, oifp,
 		    (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB))
 		    != 0)
 			return (error);
@@ -283,7 +294,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso
 	 * the outgoing interface and the destination address.
 	 */
 	/* get the outgoing interface */
-	if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp,
+	if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, oifp,
 	    (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB)) != 0)
 		return (error);
 
@@ -750,12 +761,14 @@ selectroute(struct sockaddr_in6 *dstsock
 static int
 in6_selectif(struct sockaddr_in6 *dstsock, struct ip6_pktopts *opts,
     struct ip6_moptions *mopts, struct route_in6 *ro, struct ifnet **retifp,
-    int fibnum)
+    struct ifnet *oifp, int fibnum)
 {
 	int error;
 	struct route_in6 sro;
 	struct rtentry *rt = NULL;
 
+	KASSERT(retifp != NULL, ("%s: retifp is NULL", __func__));
+
 	if (ro == NULL) {
 		bzero(&sro, sizeof(sro));
 		ro = &sro;
@@ -765,6 +778,11 @@ in6_selectif(struct sockaddr_in6 *dstsoc
 	    &rt, 1, fibnum)) != 0) {
 		if (ro == &sro && rt && rt == sro.ro_rt)
 			RTFREE(rt);
+		/* Help ND. See oifp comment in in6_selectsrc(). */
+		if (oifp != NULL && fibnum == RT_DEFAULT_FIB) {
+			*retifp = oifp;
+			error = 0;
+		}
 		return (error);
 	}
 

Modified: projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c
==============================================================================
--- projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c	Tue Feb 14 11:37:04 2012	(r231670)
+++ projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c	Tue Feb 14 11:51:32 2012	(r231671)
@@ -85,6 +85,8 @@ static void nd6_dad_timer(struct dadq *)
 static void nd6_dad_ns_output(struct dadq *, struct ifaddr *);
 static void nd6_dad_ns_input(struct ifaddr *);
 static void nd6_dad_na_input(struct ifaddr *);
+static void nd6_na_output_fib(struct ifnet *, const struct in6_addr *,
+    const struct in6_addr *, u_long, int, struct sockaddr *, u_int);
 
 VNET_DEFINE(int, dad_ignore_ns) = 0;	/* ignore NS in DAD - specwise incorrect*/
 VNET_DEFINE(int, dad_maxtry) = 15;	/* max # of *tries* to transmit DAD packet */
@@ -344,19 +346,20 @@ nd6_ns_input(struct mbuf *m, int off, in
 		in6_all = in6addr_linklocal_allnodes;
 		if (in6_setscope(&in6_all, ifp, NULL) != 0)
 			goto bad;
-		nd6_na_output(ifp, &in6_all, &taddr6,
+		nd6_na_output_fib(ifp, &in6_all, &taddr6,
 		    ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) |
-		    rflag, tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL);
+		    rflag, tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL,
+		    M_GETFIB(m));
 		goto freeit;
 	}
 
 	nd6_cache_lladdr(ifp, &saddr6, lladdr, lladdrlen,
 	    ND_NEIGHBOR_SOLICIT, 0);
 
-	nd6_na_output(ifp, &saddr6, &taddr6,
+	nd6_na_output_fib(ifp, &saddr6, &taddr6,
 	    ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) |
 	    rflag | ND_NA_FLAG_SOLICITED, tlladdr,
-	    proxy ? (struct sockaddr *)&proxydl : NULL);
+	    proxy ? (struct sockaddr *)&proxydl : NULL, M_GETFIB(m));
  freeit:
 	if (ifa != NULL)
 		ifa_free(ifa);
@@ -508,14 +511,16 @@ nd6_ns_output(struct ifnet *ifp, const s
 			int error;
 			struct sockaddr_in6 dst_sa;
 			struct in6_addr src_in;
+			struct ifnet *oifp;
 
 			bzero(&dst_sa, sizeof(dst_sa));
 			dst_sa.sin6_family = AF_INET6;
 			dst_sa.sin6_len = sizeof(dst_sa);
 			dst_sa.sin6_addr = ip6->ip6_dst;
 
+			oifp = ifp;
 			error = in6_selectsrc(&dst_sa, NULL,
-			    NULL, &ro, NULL, NULL, &src_in);
+			    NULL, &ro, NULL, &oifp, &src_in);
 			if (error) {
 				char ip6buf[INET6_ADDRSTRLEN];
 				nd6log((LOG_DEBUG,
@@ -957,13 +962,14 @@ nd6_na_input(struct mbuf *m, int off, in
  * tlladdr - 1 if include target link-layer address
  * sdl0 - sockaddr_dl (= proxy NA) or NULL
  */
-void
-nd6_na_output(struct ifnet *ifp, const struct in6_addr *daddr6_0,
+static void
+nd6_na_output_fib(struct ifnet *ifp, const struct in6_addr *daddr6_0,
     const struct in6_addr *taddr6, u_long flags, int tlladdr,
-    struct sockaddr *sdl0)
+    struct sockaddr *sdl0, u_int fibnum)
 {
 	struct mbuf *m;
 	struct m_tag *mtag;
+	struct ifnet *oifp;
 	struct ip6_hdr *ip6;
 	struct nd_neighbor_advert *nd_na;
 	struct ip6_moptions im6o;
@@ -999,6 +1005,7 @@ nd6_na_output(struct ifnet *ifp, const s
 	if (m == NULL)
 		return;
 	m->m_pkthdr.rcvif = NULL;
+	M_SETFIB(m, fibnum);
 
 	if (IN6_IS_ADDR_MULTICAST(&daddr6)) {
 		m->m_flags |= M_MCAST;
@@ -1040,7 +1047,8 @@ nd6_na_output(struct ifnet *ifp, const s
 	 * Select a source whose scope is the same as that of the dest.
 	 */
 	bcopy(&dst_sa, &ro.ro_dst, sizeof(dst_sa));
-	error = in6_selectsrc(&dst_sa, NULL, NULL, &ro, NULL, NULL, &src);
+	oifp = ifp;
+	error = in6_selectsrc(&dst_sa, NULL, NULL, &ro, NULL, &oifp, &src);
 	if (error) {
 		char ip6buf[INET6_ADDRSTRLEN];
 		nd6log((LOG_DEBUG, "nd6_na_output: source can't be "
@@ -1129,6 +1137,18 @@ nd6_na_output(struct ifnet *ifp, const s
 	return;
 }
 
+#ifndef BURN_BRIDGES
+void
+nd6_na_output(struct ifnet *ifp, const struct in6_addr *daddr6_0,
+    const struct in6_addr *taddr6, u_long flags, int tlladdr,
+    struct sockaddr *sdl0)
+{
+
+	nd6_na_output_fib(ifp, daddr6_0, taddr6, flags, tlladdr, sdl0,
+	    RT_DEFAULT_FIB);
+}
+#endif
+
 caddr_t
 nd6_ifptomac(struct ifnet *ifp)
 {

From owner-svn-src-projects@FreeBSD.ORG  Tue Feb 14 22:06:09 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 83D24106564A;
	Tue, 14 Feb 2012 22:06:09 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6F6758FC18;
	Tue, 14 Feb 2012 22:06:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EM69jA021319;
	Tue, 14 Feb 2012 22:06:09 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EM69AI021318;
	Tue, 14 Feb 2012 22:06:09 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202142206.q1EM69AI021318@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Tue, 14 Feb 2012 22:06:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231715 - in projects/multi-fibv6/9: contrib/netcat
	contrib/pf/pfctl etc/rc.d share/man/man4 sys/contrib/pf/net
	sys/fs/nfsclient sys/kern sys/net sys/netinet
	sys/netinet/ipfw sys/netine...
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Feb 2012 22:06:09 -0000

Author: bz
Date: Tue Feb 14 22:06:08 2012
New Revision: 231715
URL: http://svn.freebsd.org/changeset/base/231715

Log:
  Initial backport of the multi-FIB IPv6 changes from HEAD.
  
  Sponsored by:	Cisco Systems, Inc.

Modified:
  projects/multi-fibv6/9/contrib/netcat/netcat.c
  projects/multi-fibv6/9/contrib/pf/pfctl/parse.y
  projects/multi-fibv6/9/etc/rc.d/routing
  projects/multi-fibv6/9/share/man/man4/faith.4
  projects/multi-fibv6/9/sys/contrib/pf/net/pf.c
  projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c
  projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c
  projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c
  projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h
  projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c
  projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c
  projects/multi-fibv6/9/sys/kern/uipc_socket.c
  projects/multi-fibv6/9/sys/net/flowtable.c
  projects/multi-fibv6/9/sys/net/if_faith.c
  projects/multi-fibv6/9/sys/net/route.c
  projects/multi-fibv6/9/sys/net/route.h
  projects/multi-fibv6/9/sys/netinet/in.c
  projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c
  projects/multi-fibv6/9/sys/netinet/sctp_os_bsd.h
  projects/multi-fibv6/9/sys/netinet/tcp_subr.c
  projects/multi-fibv6/9/sys/netinet6/icmp6.c
  projects/multi-fibv6/9/sys/netinet6/in6.c
  projects/multi-fibv6/9/sys/netinet6/in6_gif.c
  projects/multi-fibv6/9/sys/netinet6/in6_ifattach.c
  projects/multi-fibv6/9/sys/netinet6/in6_mcast.c
  projects/multi-fibv6/9/sys/netinet6/in6_rmx.c
  projects/multi-fibv6/9/sys/netinet6/in6_src.c
  projects/multi-fibv6/9/sys/netinet6/in6_var.h
  projects/multi-fibv6/9/sys/netinet6/ip6_forward.c
  projects/multi-fibv6/9/sys/netinet6/ip6_input.c
  projects/multi-fibv6/9/sys/netinet6/ip6_output.c
  projects/multi-fibv6/9/sys/netinet6/ip6_var.h
  projects/multi-fibv6/9/sys/netinet6/nd6.c
  projects/multi-fibv6/9/sys/netinet6/nd6_nbr.c
  projects/multi-fibv6/9/sys/netinet6/nd6_rtr.c
  projects/multi-fibv6/9/sys/netinet6/raw_ip6.c
  projects/multi-fibv6/9/sys/netipsec/ipsec_output.c
  projects/multi-fibv6/9/sys/nfs/bootp_subr.c
  projects/multi-fibv6/9/sys/nfsclient/nfs_vfsops.c
  projects/multi-fibv6/9/usr.bin/netstat/route.c

Modified: projects/multi-fibv6/9/contrib/netcat/netcat.c
==============================================================================
--- projects/multi-fibv6/9/contrib/netcat/netcat.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/contrib/netcat/netcat.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -605,8 +605,10 @@ remote_connect(const char *host, const c
 #endif
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid)) == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		/* Bind to a local port or source address if specified. */
@@ -678,8 +680,11 @@ local_listen(char *host, char *port, str
 			continue;
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid));
+			if (ret == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));

Modified: projects/multi-fibv6/9/contrib/pf/pfctl/parse.y
==============================================================================
--- projects/multi-fibv6/9/contrib/pf/pfctl/parse.y	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/contrib/pf/pfctl/parse.y	Tue Feb 14 22:06:08 2012	(r231715)
@@ -33,6 +33,9 @@ __FBSDID("$FreeBSD$");
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
+#ifdef __FreeBSD__
+#include <sys/sysctl.h>
+#endif
 #include <net/if.h>
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -335,6 +338,7 @@ int		 expand_skip_interface(struct node_
 int	 check_rulestate(int);
 int	 getservice(char *);
 int	 rule_label(struct pf_rule *, char *);
+int	 rt_tableid_max(void);
 
 void	 mv_rules(struct pf_ruleset *, struct pf_ruleset *);
 void	 decide_address_family(struct node_host *, sa_family_t *);
@@ -1174,7 +1178,7 @@ scrub_opt	: NODF	{
 			scrub_opts.randomid = 1;
 		}
 		| RTABLE NUMBER				{
-			if ($2 < 0 /* || $2 > RT_TABLEID_MAX */) {
+			if ($2 < 0 || $2 > rt_tableid_max()) {
 				yyerror("invalid rtable id");
 				YYERROR;
 			}
@@ -1322,7 +1326,7 @@ antispoof_opt	: label	{
 			antispoof_opts.label = $1;
 		}
 		| RTABLE NUMBER				{
-			if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) {
+			if ($2 < 0 || $2 > rt_tableid_max()) {
 				yyerror("invalid rtable id");
 				YYERROR;
 			}
@@ -2361,7 +2365,7 @@ filter_opt	: USER uids {
 				filter_opts.prob = 1;
 		}
 		| RTABLE NUMBER				{
-			if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) {
+			if ($2 < 0 || $2 > rt_tableid_max()) {
 				yyerror("invalid rtable id");
 				YYERROR;
 			}
@@ -4190,7 +4194,7 @@ tagged		: /* empty */		{ $$.neg = 0; $$.
 
 rtable		: /* empty */		{ $$ = -1; }
 		| RTABLE NUMBER		{
-			if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) {
+			if ($2 < 0 || $2 > rt_tableid_max()) {
 				yyerror("invalid rtable id");
 				YYERROR;
 			}
@@ -6051,3 +6055,23 @@ pfctl_load_anchors(int dev, struct pfctl
 
 	return (0);
 }
+
+int
+rt_tableid_max(void)
+{
+#ifdef __FreeBSD__
+	int fibs;
+	size_t l = sizeof(fibs);
+
+        if (sysctlbyname("net.fibs", &fibs, &l, NULL, 0) == -1)
+		fibs = 16;	/* XXX RT_MAXFIBS, at least limit it some. */
+	/*
+	 * As the OpenBSD code only compares > and not >= we need to adjust
+	 * here given we only accept values of 0..n and want to avoid #ifdefs
+	 * in the grammer.
+	 */
+	return (fibs - 1);
+#else
+	return (RT_TABLEID_MAX);
+#endif
+}

Modified: projects/multi-fibv6/9/etc/rc.d/routing
==============================================================================
--- projects/multi-fibv6/9/etc/rc.d/routing	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/etc/rc.d/routing	Tue Feb 14 22:06:08 2012	(r231715)
@@ -137,12 +137,22 @@ static_inet()
 
 static_inet6()
 {
-	local _action i
+	local _action i fibs
 	_action=$1
 
+	# get the number of FIBs supported.
+	fibs=`sysctl -n net.fibs`
+	: ${fibs:=1}
+
 	# disallow "internal" addresses to appear on the wire
-	route ${_action} -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
-	route ${_action} -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject
+	i=0
+	while test ${i} -lt ${fibs}; do
+		setfib -F ${i} route ${_action} \
+		    -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
+		setfib -F ${i} route ${_action} \
+		    -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject
+		i=$((i + 1))
+	done
 
 	case ${ipv6_defaultrouter} in
 	[Nn][Oo] | '')
@@ -214,8 +224,14 @@ static_inet6()
 	# for the host case, you will allow to omit the identifiers.
 	# Under this configuration, the packets will go to the default
 	# interface.
-	route ${_action} -inet6 fe80:: -prefixlen 10 ::1 -reject
-	route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject
+	i=0
+	while test ${i} -lt ${fibs}; do
+		setfib -F ${i} route ${_action} \
+		    -inet6 fe80:: -prefixlen 10 ::1 -reject
+		setfib -F ${i} route ${_action} \
+		    -inet6 ff02:: -prefixlen 16 ::1 -reject
+		i=$((i + 1))
+	done
 
 	case ${ipv6_default_interface} in
 	'')

Modified: projects/multi-fibv6/9/share/man/man4/faith.4
==============================================================================
--- projects/multi-fibv6/9/share/man/man4/faith.4	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/share/man/man4/faith.4	Tue Feb 14 22:06:08 2012	(r231715)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 10, 1999
+.Dd January 23, 2012
 .Dt FAITH 4
 .Os
 .Sh NAME
@@ -58,7 +58,7 @@ variable in
 .Xr rc.conf 5 .
 .Pp
 Special action will be taken when IPv6 TCP traffic is seen on a router,
-and the routing table suggests to route it to the
+and the default routing table suggests to route it to the
 .Nm
 interface.
 In this case, the packet will be accepted by the router,

Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf.c
==============================================================================
--- projects/multi-fibv6/9/sys/contrib/pf/net/pf.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/contrib/pf/net/pf.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -320,7 +320,7 @@ u_int8_t		 pf_get_wscale(struct mbuf *, 
 u_int16_t		 pf_get_mss(struct mbuf *, int, u_int16_t,
 			    sa_family_t);
 u_int16_t		 pf_calc_mss(struct pf_addr *, sa_family_t,
-				u_int16_t);
+				int, u_int16_t);
 void			 pf_set_rt_ifp(struct pf_state *,
 			    struct pf_addr *);
 int			 pf_check_proto_cksum(struct mbuf *, int, int,
@@ -3137,7 +3137,7 @@ pf_get_mss(struct mbuf *m, int off, u_in
 }
 
 u_int16_t
-pf_calc_mss(struct pf_addr *addr, sa_family_t af, u_int16_t offer)
+pf_calc_mss(struct pf_addr *addr, sa_family_t af, int rtableid, u_int16_t offer)
 {
 #ifdef INET
 	struct sockaddr_in	*dst;
@@ -3166,11 +3166,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
 		dst->sin_len = sizeof(*dst);
 		dst->sin_addr = addr->v4;
 #ifdef __FreeBSD__
-#ifdef RTF_PRCLONING
-		rtalloc_ign(&ro, (RTF_CLONING | RTF_PRCLONING));
-#else /* !RTF_PRCLONING */
-		in_rtalloc_ign(&ro, 0, 0);
-#endif
+		in_rtalloc_ign(&ro, 0, rtableid);
 #else /* ! __FreeBSD__ */
 		rtalloc_noclone(&ro, NO_CLONING);
 #endif
@@ -3186,12 +3182,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
 		dst6->sin6_len = sizeof(*dst6);
 		dst6->sin6_addr = addr->v6;
 #ifdef __FreeBSD__
-#ifdef RTF_PRCLONING
-		rtalloc_ign((struct route *)&ro6,
-		    (RTF_CLONING | RTF_PRCLONING));
-#else /* !RTF_PRCLONING */
-		rtalloc_ign((struct route *)&ro6, 0);
-#endif
+		in6_rtalloc_ign(&ro6, 0, rtableid);
 #else /* ! __FreeBSD__ */
 		rtalloc_noclone((struct route *)&ro6, NO_CLONING);
 #endif
@@ -3532,14 +3523,14 @@ pf_test_rule(struct pf_rule **rm, struct
 		else if (r->proto && r->proto != pd->proto)
 			r = r->skip[PF_SKIP_PROTO].ptr;
 		else if (PF_MISMATCHAW(&r->src.addr, saddr, af,
-		    r->src.neg, kif))
+		    r->src.neg, kif, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_SRC_ADDR].ptr;
 		/* tcp/udp only. port_op always 0 in other cases */
 		else if (r->src.port_op && !pf_match_port(r->src.port_op,
 		    r->src.port[0], r->src.port[1], sport))
 			r = r->skip[PF_SKIP_SRC_PORT].ptr;
 		else if (PF_MISMATCHAW(&r->dst.addr, daddr, af,
-		    r->dst.neg, NULL))
+		    r->dst.neg, NULL, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 		/* tcp/udp only. port_op always 0 in other cases */
 		else if (r->dst.port_op && !pf_match_port(r->dst.port_op,
@@ -3988,9 +3979,10 @@ pf_create_state(struct pf_rule *r, struc
 		}
 		s->src.seqhi = htonl(arc4random());
 		/* Find mss option */
+		int rtid = M_GETFIB(m);
 		mss = pf_get_mss(m, off, th->th_off, pd->af);
-		mss = pf_calc_mss(pd->src, pd->af, mss);
-		mss = pf_calc_mss(pd->dst, pd->af, mss);
+		mss = pf_calc_mss(pd->src, pd->af, rtid, mss);
+		mss = pf_calc_mss(pd->dst, pd->af, rtid, mss);
 		s->src.mss = mss;
 #ifdef __FreeBSD__
 		pf_send_tcp(NULL, r, pd->af, pd->dst, pd->src, th->th_dport,
@@ -4072,10 +4064,10 @@ pf_test_fragment(struct pf_rule **rm, in
 		else if (r->proto && r->proto != pd->proto)
 			r = r->skip[PF_SKIP_PROTO].ptr;
 		else if (PF_MISMATCHAW(&r->src.addr, pd->src, af,
-		    r->src.neg, kif))
+		    r->src.neg, kif, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_SRC_ADDR].ptr;
 		else if (PF_MISMATCHAW(&r->dst.addr, pd->dst, af,
-		    r->dst.neg, NULL))
+		    r->dst.neg, NULL, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 		else if (r->tos && !(r->tos == pd->tos))
 			r = TAILQ_NEXT(r, entries);
@@ -5677,7 +5669,8 @@ pf_pull_hdr(struct mbuf *m, int off, voi
 }
 
 int
-pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *kif)
+pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *kif,
+    int rtableid)
 {
 #ifdef __FreeBSD__
 #ifdef RADIX_MPATH
@@ -5751,13 +5744,21 @@ pf_routable(struct pf_addr *addr, sa_fam
 		goto out;
 
 #ifdef __FreeBSD__
-/* XXX MRT not always INET */ /* stick with table 0 though */
+	switch (af) {
+#ifdef INET6
+	case AF_INET6:
+		in6_rtalloc_ign(&ro, 0, rtableid);
+		break;
+#endif
 #ifdef INET
-	if (af == AF_INET)
-		in_rtalloc_ign((struct route *)&ro, 0, 0);
-	else
+	case AF_INET:
+		in_rtalloc_ign((struct route *)&ro, 0, rtableid);
+		break;
 #endif
-		rtalloc_ign((struct route *)&ro, 0);
+	default:
+		rtalloc_ign((struct route *)&ro, 0);	/* No/default FIB. */
+		break;
+	}
 #else /* ! __FreeBSD__ */
 	rtalloc_noclone((struct route *)&ro, NO_CLONING);
 #endif
@@ -5803,7 +5804,8 @@ out:
 }
 
 int
-pf_rtlabel_match(struct pf_addr *addr, sa_family_t af, struct pf_addr_wrap *aw)
+pf_rtlabel_match(struct pf_addr *addr, sa_family_t af, struct pf_addr_wrap *aw,
+    int rtableid)
 {
 	struct sockaddr_in	*dst;
 #ifdef INET6
@@ -5835,16 +5837,21 @@ pf_rtlabel_match(struct pf_addr *addr, s
 	}
 
 #ifdef __FreeBSD__
-# ifdef RTF_PRCLONING
-	rtalloc_ign((struct route *)&ro, (RTF_CLONING|RTF_PRCLONING));
-# else /* !RTF_PRCLONING */
+	switch (af) {
+#ifdef INET6
+	case AF_INET6:
+		in6_rtalloc_ign(&ro, 0, rtableid);
+		break;
+#endif
 #ifdef INET
-	if (af == AF_INET)
-		in_rtalloc_ign((struct route *)&ro, 0, 0);
-	else
+	case AF_INET:
+		in_rtalloc_ign((struct route *)&ro, 0, rtableid);
+		break;
 #endif
+	default:
 		rtalloc_ign((struct route *)&ro, 0);
-# endif
+		break;
+	}
 #else /* ! __FreeBSD__ */
 	rtalloc_noclone((struct route *)&ro, NO_CLONING);
 #endif
@@ -5927,7 +5934,7 @@ pf_route(struct mbuf **m, struct pf_rule
 
 	if (r->rt == PF_FASTROUTE) {
 #ifdef __FreeBSD__
-		in_rtalloc(ro, 0);
+		in_rtalloc_ign(ro, 0, M_GETFIB(m0));
 #else
 		rtalloc(ro);
 #endif
@@ -6893,7 +6900,7 @@ done:
 		    ("pf: dropping packet with ip options\n"));
 	}
 
-	if ((s && s->tag) || r->rtableid)
+	if ((s && s->tag) || r->rtableid >= 0)
 #ifdef __FreeBSD__
 		pf_tag_packet(m, s ? s->tag : 0, r->rtableid, pd.pf_mtag);
 #else
@@ -7437,7 +7444,7 @@ done:
 		    ("pf: dropping packet with dangerous v6 headers\n"));
 	}
 
-	if ((s && s->tag) || r->rtableid)
+	if ((s && s->tag) || r->rtableid >= 0)
 #ifdef __FreeBSD__
 		pf_tag_packet(m, s ? s->tag : 0, r->rtableid, pd.pf_mtag);
 #else

Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c
==============================================================================
--- projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -1754,7 +1754,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a
 		}
 
 #ifdef __FreeBSD__ /* ROUTING */
-		if (rule->rtableid > 0 && rule->rtableid > rt_numfibs)
+		if (rule->rtableid > 0 && rule->rtableid >= rt_numfibs)
 #else
 		if (rule->rtableid > 0 && !rtable_exists(rule->rtableid))
 #endif
@@ -2035,7 +2035,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a
 
 			if (newrule->rtableid > 0 &&
 #ifdef __FreeBSD__ /* ROUTING */
-			    newrule->rtableid > rt_numfibs)
+			    newrule->rtableid >= rt_numfibs)
 #else
 			    !rtable_exists(newrule->rtableid))
 #endif

Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c
==============================================================================
--- projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -261,7 +261,7 @@ pf_match_translation(struct pf_pdesc *pd
 		else if (r->proto && r->proto != pd->proto)
 			r = r->skip[PF_SKIP_PROTO].ptr;
 		else if (PF_MISMATCHAW(&src->addr, saddr, pd->af,
-		    src->neg, kif))
+		    src->neg, kif, M_GETFIB(m)))
 			r = r->skip[src == &r->src ? PF_SKIP_SRC_ADDR :
 			    PF_SKIP_DST_ADDR].ptr;
 		else if (src->port_op && !pf_match_port(src->port_op,
@@ -269,10 +269,11 @@ pf_match_translation(struct pf_pdesc *pd
 			r = r->skip[src == &r->src ? PF_SKIP_SRC_PORT :
 			    PF_SKIP_DST_PORT].ptr;
 		else if (dst != NULL &&
-		    PF_MISMATCHAW(&dst->addr, daddr, pd->af, dst->neg, NULL))
+		    PF_MISMATCHAW(&dst->addr, daddr, pd->af, dst->neg, NULL,
+		    M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 		else if (xdst != NULL && PF_MISMATCHAW(xdst, daddr, pd->af,
-		    0, NULL))
+		    0, NULL, M_GETFIB(m)))
 			r = TAILQ_NEXT(r, entries);
 		else if (dst != NULL && dst->port_op &&
 		    !pf_match_port(dst->port_op, dst->port[0],

Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c
==============================================================================
--- projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -1163,11 +1163,11 @@ pf_normalize_ip(struct mbuf **m0, int di
 			r = r->skip[PF_SKIP_PROTO].ptr;
 		else if (PF_MISMATCHAW(&r->src.addr,
 		    (struct pf_addr *)&h->ip_src.s_addr, AF_INET,
-		    r->src.neg, kif))
+		    r->src.neg, kif, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_SRC_ADDR].ptr;
 		else if (PF_MISMATCHAW(&r->dst.addr,
 		    (struct pf_addr *)&h->ip_dst.s_addr, AF_INET,
-		    r->dst.neg, NULL))
+		    r->dst.neg, NULL, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 #ifdef __FreeBSD__
 		else if (r->match_tag && !pf_match_tag(m, r, &tag, pd->pf_mtag))
@@ -1428,11 +1428,11 @@ pf_normalize_ip6(struct mbuf **m0, int d
 #endif
 		else if (PF_MISMATCHAW(&r->src.addr,
 		    (struct pf_addr *)&h->ip6_src, AF_INET6,
-		    r->src.neg, kif))
+		    r->src.neg, kif, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_SRC_ADDR].ptr;
 		else if (PF_MISMATCHAW(&r->dst.addr,
 		    (struct pf_addr *)&h->ip6_dst, AF_INET6,
-		    r->dst.neg, NULL))
+		    r->dst.neg, NULL, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 		else
 			break;
@@ -1593,13 +1593,13 @@ pf_normalize_tcp(int dir, struct pfi_kif
 		else if (r->proto && r->proto != pd->proto)
 			r = r->skip[PF_SKIP_PROTO].ptr;
 		else if (PF_MISMATCHAW(&r->src.addr, pd->src, af,
-		    r->src.neg, kif))
+		    r->src.neg, kif, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_SRC_ADDR].ptr;
 		else if (r->src.port_op && !pf_match_port(r->src.port_op,
 			    r->src.port[0], r->src.port[1], th->th_sport))
 			r = r->skip[PF_SKIP_SRC_PORT].ptr;
 		else if (PF_MISMATCHAW(&r->dst.addr, pd->dst, af,
-		    r->dst.neg, NULL))
+		    r->dst.neg, NULL, M_GETFIB(m)))
 			r = r->skip[PF_SKIP_DST_ADDR].ptr;
 		else if (r->dst.port_op && !pf_match_port(r->dst.port_op,
 			    r->dst.port[0], r->dst.port[1], th->th_dport))

Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h
==============================================================================
--- projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h	Tue Feb 14 22:06:08 2012	(r231715)
@@ -402,14 +402,18 @@ extern struct mtx pf_task_mtx;
 #endif /* PF_INET6_ONLY */
 #endif /* PF_INET_INET6 */
 
-#define	PF_MISMATCHAW(aw, x, af, neg, ifp)				\
+/*
+ * XXX callers not FIB-aware in our version of pf yet.
+ * OpenBSD fixed it later it seems, 2010/05/07 13:33:16 claudio.
+ */
+#define	PF_MISMATCHAW(aw, x, af, neg, ifp, rtid)			\
 	(								\
 		(((aw)->type == PF_ADDR_NOROUTE &&			\
-		    pf_routable((x), (af), NULL)) ||			\
+		    pf_routable((x), (af), NULL, (rtid))) ||		\
 		(((aw)->type == PF_ADDR_URPFFAILED && (ifp) != NULL &&	\
-		    pf_routable((x), (af), (ifp))) ||			\
+		    pf_routable((x), (af), (ifp), (rtid))) ||		\
 		((aw)->type == PF_ADDR_RTLABEL &&			\
-		    !pf_rtlabel_match((x), (af), (aw))) ||		\
+		    !pf_rtlabel_match((x), (af), (aw), (rtid))) ||	\
 		((aw)->type == PF_ADDR_TABLE &&				\
 		    !pfr_match_addr((aw)->p.tbl, (x), (af))) ||		\
 		((aw)->type == PF_ADDR_DYNIFTL &&			\
@@ -1977,8 +1981,10 @@ int	pf_normalize_tcp_stateful(struct mbu
 u_int32_t
 	pf_state_expires(const struct pf_state *);
 void	pf_purge_expired_fragments(void);
-int	pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *);
-int	pf_rtlabel_match(struct pf_addr *, sa_family_t, struct pf_addr_wrap *);
+int	pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *,
+	    int);
+int	pf_rtlabel_match(struct pf_addr *, sa_family_t, struct pf_addr_wrap *,
+	    int);
 #ifdef __FreeBSD__
 int	pf_socket_lookup(int, struct pf_pdesc *,  struct inpcb *);
 #else

Modified: projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c
==============================================================================
--- projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -976,7 +976,8 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad.sin_len = sizeof (struct sockaddr_in);
 		sad.sin_addr.s_addr = sin->sin_addr.s_addr;
 		CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred));
-		rt = rtalloc1((struct sockaddr *)&sad, 0, 0UL);
+		rt = rtalloc1_fib((struct sockaddr *)&sad, 0, 0UL,
+		     curthread->td_proc->p_fibnum);
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&
@@ -1001,7 +1002,8 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad6.sin6_len = sizeof (struct sockaddr_in6);
 		sad6.sin6_addr = sin6->sin6_addr;
 		CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred));
-		rt = rtalloc1((struct sockaddr *)&sad6, 0, 0UL);
+		rt = rtalloc1_fib((struct sockaddr *)&sad6, 0, 0UL,
+		     curthread->td_proc->p_fibnum);
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&

Modified: projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -459,10 +459,10 @@ nfs_mountroot(struct mount *mp)
 		sin.sin_len = sizeof(sin);
                 /* XXX MRT use table 0 for this sort of thing */
 		CURVNET_SET(TD_TO_VNET(td));
-		error = rtrequest(RTM_ADD, (struct sockaddr *)&sin,
+		error = rtrequest_fib(RTM_ADD, (struct sockaddr *)&sin,
 		    (struct sockaddr *)&nd->mygateway,
 		    (struct sockaddr *)&mask,
-		    RTF_UP | RTF_GATEWAY, NULL);
+		    RTF_UP | RTF_GATEWAY, NULL, RT_DEFAULT_FIB);
 		CURVNET_RESTORE();
 		if (error)
 			panic("nfs_mountroot: RTM_ADD: %d", error);

Modified: projects/multi-fibv6/9/sys/kern/uipc_socket.c
==============================================================================
--- projects/multi-fibv6/9/sys/kern/uipc_socket.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/kern/uipc_socket.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -392,6 +392,7 @@ socreate(int dom, struct socket **aso, i
 	so->so_type = type;
 	so->so_cred = crhold(cred);
 	if ((prp->pr_domain->dom_family == PF_INET) ||
+	    (prp->pr_domain->dom_family == PF_INET6) ||
 	    (prp->pr_domain->dom_family == PF_ROUTE))
 		so->so_fibnum = td->td_proc->p_fibnum;
 	else
@@ -2498,12 +2499,13 @@ sosetopt(struct socket *so, struct socko
 		case SO_SETFIB:
 			error = sooptcopyin(sopt, &optval, sizeof optval,
 					    sizeof optval);
-			if (optval < 0 || optval > rt_numfibs) {
+			if (optval < 0 || optval >= rt_numfibs) {
 				error = EINVAL;
 				goto bad;
 			}
 			if (so->so_proto != NULL &&
 			   ((so->so_proto->pr_domain->dom_family == PF_INET) ||
+			   (so->so_proto->pr_domain->dom_family == PF_INET6) ||
 			   (so->so_proto->pr_domain->dom_family == PF_ROUTE))) {
 				so->so_fibnum = optval;
 				/* Note: ignore error */

Modified: projects/multi-fibv6/9/sys/net/flowtable.c
==============================================================================
--- projects/multi-fibv6/9/sys/net/flowtable.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/net/flowtable.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -373,7 +373,7 @@ SYSCTL_VNET_PROC(_net_inet_flowtable, OI
 
 #ifndef RADIX_MPATH
 static void
-in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
+rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
 {
 
 	rtalloc_ign_fib(ro, 0, fibnum);
@@ -1312,7 +1312,7 @@ flowtable_alloc(char *name, int nentry, 
 #ifdef RADIX_MPATH
 	ft->ft_rtalloc = rtalloc_mpath_fib;
 #else
-	ft->ft_rtalloc = in_rtalloc_ign_wrapper;
+	ft->ft_rtalloc = rtalloc_ign_wrapper;
 #endif
 	if (flags & FL_PCPU) {
 		ft->ft_lock = flowtable_pcpu_lock;

Modified: projects/multi-fibv6/9/sys/net/if_faith.c
==============================================================================
--- projects/multi-fibv6/9/sys/net/if_faith.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/net/if_faith.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -338,7 +338,7 @@ faithprefix(in6)
 	sin6.sin6_family = AF_INET6;
 	sin6.sin6_len = sizeof(struct sockaddr_in6);
 	sin6.sin6_addr = *in6;
-	rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL);
+	rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB);
 	if (rt && rt->rt_ifp && rt->rt_ifp->if_type == IFT_FAITH &&
 	    (rt->rt_ifp->if_flags & IFF_UP) != 0)
 		ret = 1;

Modified: projects/multi-fibv6/9/sys/net/route.c
==============================================================================
--- projects/multi-fibv6/9/sys/net/route.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/net/route.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -35,6 +35,7 @@
  ***********************************************************************/
 
 #include "opt_inet.h"
+#include "opt_inet6.h"
 #include "opt_route.h"
 #include "opt_mrouting.h"
 #include "opt_mpath.h"
@@ -72,7 +73,11 @@ SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLA
 /*
  * Allow the boot code to allow LESS than RT_MAXFIBS to be used.
  * We can't do more because storage is statically allocated for now.
- * (for compatibility reasons.. this will change).
+ * (for compatibility reasons.. this will change. When this changes, code should
+ * be refactored to protocol independent parts and protocol dependent parts,
+ * probably hanging of domain(9) specific storage to not need the full
+ * fib * af RNH allocation etc. but allow tuning the number of tables per
+ * address family).
  */
 TUNABLE_INT("net.fibs", &rt_numfibs);
 
@@ -82,6 +87,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs);
  * changes for the FIB of the caller when adding a new set of addresses
  * to an interface.  XXX this is a shotgun aproach to a problem that needs
  * a more fine grained solution.. that will come.
+ * XXX also has the problems getting the FIB from curthread which will not
+ * always work given the fib can be overridden and prefixes can be added
+ * from the network stack context.
  */
 u_int rt_add_addr_allfibs = 1;
 SYSCTL_UINT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW,
@@ -196,27 +204,23 @@ vnet_route_init(const void *unused __unu
 	V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), NULL, NULL,
 	    NULL, NULL, UMA_ALIGN_PTR, 0);
 	for (dom = domains; dom; dom = dom->dom_next) {
-		if (dom->dom_rtattach)  {
-			for  (table = 0; table < rt_numfibs; table++) {
-				if ( (fam = dom->dom_family) == AF_INET ||
-				    table == 0) {
- 			        	/* for now only AF_INET has > 1 table */
-					/* XXX MRT 
-					 * rtattach will be also called
-					 * from vfs_export.c but the
-					 * offset will be 0
-					 * (only for AF_INET and AF_INET6
-					 * which don't need it anyhow)
-					 */
-					rnh = rt_tables_get_rnh_ptr(table, fam);
-					if (rnh == NULL)
-						panic("%s: rnh NULL", __func__);
-					dom->dom_rtattach((void **)rnh,
-				    	    dom->dom_rtoffset);
-				} else {
-					break;
-				}
-			}
+		if (dom->dom_rtattach == NULL)
+			continue;
+
+		for  (table = 0; table < rt_numfibs; table++) {
+			fam = dom->dom_family;
+			if (table != 0 && fam != AF_INET6 && fam != AF_INET)
+				break;
+
+			/*
+			 * XXX MRT rtattach will be also called from
+			 * vfs_export.c but the offset will be 0 (only for
+			 * AF_INET and AF_INET6 which don't need it anyhow).
+			 */
+			rnh = rt_tables_get_rnh_ptr(table, fam);
+			if (rnh == NULL)
+				panic("%s: rnh NULL", __func__);
+			dom->dom_rtattach((void **)rnh, dom->dom_rtoffset);
 		}
 	}
 }
@@ -233,20 +237,19 @@ vnet_route_uninit(const void *unused __u
 	struct radix_node_head **rnh;
 
 	for (dom = domains; dom; dom = dom->dom_next) {
-		if (dom->dom_rtdetach) {
-			for (table = 0; table < rt_numfibs; table++) {
-				if ( (fam = dom->dom_family) == AF_INET ||
-				    table == 0) {
-					/* For now only AF_INET has > 1 tbl. */
-					rnh = rt_tables_get_rnh_ptr(table, fam);
-					if (rnh == NULL)
-						panic("%s: rnh NULL", __func__);
-					dom->dom_rtdetach((void **)rnh,
-					    dom->dom_rtoffset);
-				} else {
-					break;
-				}
-			}
+		if (dom->dom_rtdetach == NULL)
+			continue;
+
+		for (table = 0; table < rt_numfibs; table++) {
+			fam = dom->dom_family;
+
+			if (table != 0 && fam != AF_INET6 && fam != AF_INET)
+				break;
+
+			rnh = rt_tables_get_rnh_ptr(table, fam);
+			if (rnh == NULL)
+				panic("%s: rnh NULL", __func__);
+			dom->dom_rtdetach((void **)rnh, dom->dom_rtoffset);
 		}
 	}
 }
@@ -274,7 +277,8 @@ sys_setfib(struct thread *td, struct set
 void
 rtalloc(struct route *ro)
 {
-	rtalloc_ign_fib(ro, 0UL, 0);
+
+	rtalloc_ign_fib(ro, 0UL, RT_DEFAULT_FIB);
 }
 
 void
@@ -294,7 +298,7 @@ rtalloc_ign(struct route *ro, u_long ign
 		RTFREE(rt);
 		ro->ro_rt = NULL;
 	}
-	ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, 0);
+	ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, RT_DEFAULT_FIB);
 	if (ro->ro_rt)
 		RT_UNLOCK(ro->ro_rt);
 }
@@ -324,7 +328,8 @@ rtalloc_ign_fib(struct route *ro, u_long
 struct rtentry *
 rtalloc1(struct sockaddr *dst, int report, u_long ignflags)
 {
-	return (rtalloc1_fib(dst, report, ignflags, 0));
+
+	return (rtalloc1_fib(dst, report, ignflags, RT_DEFAULT_FIB));
 }
 
 struct rtentry *
@@ -339,8 +344,15 @@ rtalloc1_fib(struct sockaddr *dst, int r
 	int needlock;
 
 	KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum"));
-	if (dst->sa_family != AF_INET)	/* Only INET supports > 1 fib now */
-		fibnum = 0;
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
 	rnh = rt_tables_get_rnh(fibnum, dst->sa_family);
 	newrt = NULL;
 	if (rnh == NULL)
@@ -486,7 +498,8 @@ rtredirect(struct sockaddr *dst,
 	int flags,
 	struct sockaddr *src)
 {
-	rtredirect_fib(dst, gateway, netmask, flags, src, 0);
+
+	rtredirect_fib(dst, gateway, netmask, flags, src, RT_DEFAULT_FIB);
 }
 
 void
@@ -617,7 +630,8 @@ out:
 int
 rtioctl(u_long req, caddr_t data)
 {
-	return (rtioctl_fib(req, data, 0));
+
+	return (rtioctl_fib(req, data, RT_DEFAULT_FIB));
 }
 
 /*
@@ -647,7 +661,8 @@ rtioctl_fib(u_long req, caddr_t data, u_
 struct ifaddr *
 ifa_ifwithroute(int flags, struct sockaddr *dst, struct sockaddr *gateway)
 {
-	return (ifa_ifwithroute_fib(flags, dst, gateway, 0));
+
+	return (ifa_ifwithroute_fib(flags, dst, gateway, RT_DEFAULT_FIB));
 }
 
 struct ifaddr *
@@ -732,7 +747,9 @@ rtrequest(int req,
 	int flags,
 	struct rtentry **ret_nrt)
 {
-	return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, 0));
+
+	return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt,
+	    RT_DEFAULT_FIB));
 }
 
 int
@@ -771,7 +788,8 @@ rtrequest_fib(int req,
 int
 rt_getifa(struct rt_addrinfo *info)
 {
-	return (rt_getifa_fib(info, 0));
+
+	return (rt_getifa_fib(info, RT_DEFAULT_FIB));
 }
 
 /*
@@ -1029,8 +1047,16 @@ rtrequest1_fib(int req, struct rt_addrin
 #define senderr(x) { error = x ; goto bad; }
 
 	KASSERT((fibnum < rt_numfibs), ("rtrequest1_fib: bad fibnum"));
-	if (dst->sa_family != AF_INET)	/* Only INET supports > 1 fib now */
-		fibnum = 0;
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
+
 	/*
 	 * Find the correct routing tree to use for this Address Family
 	 */
@@ -1136,8 +1162,7 @@ rtrequest1_fib(int req, struct rt_addrin
 		rt->rt_flags = RTF_UP | flags;
 		rt->rt_fibnum = fibnum;
 		/*
-		 * Add the gateway. Possibly re-malloc-ing the storage for it
-		 * 
+		 * Add the gateway. Possibly re-malloc-ing the storage for it.
 		 */
 		RT_LOCK(rt);
 		if ((error = rt_setgate(rt, dst, gateway)) != 0) {
@@ -1186,12 +1211,15 @@ rtrequest1_fib(int req, struct rt_addrin
 
 #ifdef FLOWTABLE
 		rt0 = NULL;
-		/* XXX
-		 * "flow-table" only support IPv4 at the moment.
-		 * XXX-BZ as of r205066 it would support IPv6.
-		 */
+		/* "flow-table" only supports IPv6 and IPv4 at the moment. */
+		switch (dst->sa_family) {
+#ifdef INET6
+		case AF_INET6:
+#endif
 #ifdef INET
-		if (dst->sa_family == AF_INET) {
+		case AF_INET:
+#endif
+#if defined(INET6) || defined(INET)
 			rn = rnh->rnh_matchaddr(dst, rnh);
 			if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) {
 				struct sockaddr *mask;
@@ -1230,9 +1258,9 @@ rtrequest1_fib(int req, struct rt_addrin
 					}
 				}
 			}
+#endif/* INET6 || INET */
 		}
-#endif
-#endif
+#endif /* FLOWTABLE */
 
 		/* XXX mtu manipulation will be done in rnh_addaddr -- itojun */
 		rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes);
@@ -1254,9 +1282,18 @@ rtrequest1_fib(int req, struct rt_addrin
 		} 
 #ifdef FLOWTABLE
 		else if (rt0 != NULL) {
+			switch (dst->sa_family) {
+#ifdef INET6
+			case AF_INET6:
+				flowtable_route_flush(V_ip6_ft, rt0);
+				break;
+#endif
 #ifdef INET
-			flowtable_route_flush(V_ip_ft, rt0);
+			case AF_INET:
+				flowtable_route_flush(V_ip_ft, rt0);
+				break;
 #endif
+			}
 			RTFREE(rt0);
 		}
 #endif
@@ -1388,8 +1425,17 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 		dst = ifa->ifa_addr;
 		netmask = ifa->ifa_netmask;
 	}
-	if ( dst->sa_family != AF_INET)
-		fibnum = 0;
+	if (dst->sa_len == 0)
+		return(EINVAL);
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
 	if (fibnum == -1) {
 		if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) {
 			startfib = endfib = curthread->td_proc->p_fibnum;
@@ -1402,8 +1448,6 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 		startfib = fibnum;
 		endfib = fibnum;
 	}
-	if (dst->sa_len == 0)
-		return(EINVAL);
 
 	/*
 	 * If it's a delete, check that if it exists,
@@ -1427,9 +1471,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 	 * Now go through all the requested tables (fibs) and do the
 	 * requested action. Realistically, this will either be fib 0
 	 * for protocols that don't do multiple tables or all the
-	 * tables for those that do. XXX For this version only AF_INET.
-	 * When that changes code should be refactored to protocol
-	 * independent parts and protocol dependent parts.
+	 * tables for those that do.
 	 */
 	for ( fibnum = startfib; fibnum <= endfib; fibnum++) {
 		if (cmd == RTM_DELETE) {
@@ -1569,12 +1611,14 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 	return (error);
 }
 
+#ifndef BURN_BRIDGES
 /* special one for inet internal use. may not use. */
 int
 rtinit_fib(struct ifaddr *ifa, int cmd, int flags)
 {
 	return (rtinit1(ifa, cmd, flags, -1));
 }
+#endif
 
 /*
  * Set up a routing table entry, normally
@@ -1584,7 +1628,7 @@ int
 rtinit(struct ifaddr *ifa, int cmd, int flags)
 {
 	struct sockaddr *dst;
-	int fib = 0;
+	int fib = RT_DEFAULT_FIB;
 
 	if (flags & RTF_HOST) {
 		dst = ifa->ifa_dstaddr;
@@ -1592,7 +1636,12 @@ rtinit(struct ifaddr *ifa, int cmd, int 
 		dst = ifa->ifa_addr;
 	}
 
-	if (dst->sa_family == AF_INET)
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We do support multiple FIBs. */
 		fib = -1;
+		break;
+	}
 	return (rtinit1(ifa, cmd, flags, fib));
 }

Modified: projects/multi-fibv6/9/sys/net/route.h
==============================================================================
--- projects/multi-fibv6/9/sys/net/route.h	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/net/route.h	Tue Feb 14 22:06:08 2012	(r231715)
@@ -111,6 +111,7 @@ struct rt_metrics {
  #endif
 #endif
 
+#define	RT_DEFAULT_FIB	0	/* Explicitly mark fib=0 restricted cases */
 extern u_int rt_numfibs;	/* number fo usable routing tables */
 /*
  * XXX kernel function pointer `rt_output' is visible to applications.
@@ -405,8 +406,10 @@ void	 rtredirect(struct sockaddr *, stru
 int	 rtrequest(int, struct sockaddr *,
 	    struct sockaddr *, struct sockaddr *, int, struct rtentry **);
 
+#ifndef BURN_BRIDGES
 /* defaults to "all" FIBs */
 int	 rtinit_fib(struct ifaddr *, int, int);
+#endif
 
 /* XXX MRT NEW VERSIONS THAT USE FIBs
  * For now the protocol indepedent versions are the same as the AF_INET ones

Modified: projects/multi-fibv6/9/sys/netinet/in.c
==============================================================================
--- projects/multi-fibv6/9/sys/netinet/in.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/netinet/in.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -938,7 +938,7 @@ in_ifinit(struct ifnet *ifp, struct in_i
 
 		bzero(&ia_ro, sizeof(ia_ro));
 		*((struct sockaddr_in *)(&ia_ro.ro_dst)) = ia->ia_addr;
-		rtalloc_ign_fib(&ia_ro, 0, 0);
+		rtalloc_ign_fib(&ia_ro, 0, RT_DEFAULT_FIB);
 		if ((ia_ro.ro_rt != NULL) && (ia_ro.ro_rt->rt_ifp != NULL) &&
 		    (ia_ro.ro_rt->rt_ifp == V_loif)) {
 			RT_LOCK(ia_ro.ro_rt);

Modified: projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c
==============================================================================
--- projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c	Tue Feb 14 21:48:46 2012	(r231714)
+++ projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c	Tue Feb 14 22:06:08 2012	(r231715)
@@ -496,7 +496,7 @@ search_ip6_addr_net (struct in6_addr * i
 }
 
 static int
-verify_path6(struct in6_addr *src, struct ifnet *ifp)
+verify_path6(struct in6_addr *src, struct ifnet *ifp, u_int fib)
 {

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

From owner-svn-src-projects@FreeBSD.ORG  Wed Feb 15 06:49:51 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9A059106566B;
	Wed, 15 Feb 2012 06:49:51 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 80B458FC17;
	Wed, 15 Feb 2012 06:49:51 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1F6npsH041818;
	Wed, 15 Feb 2012 06:49:51 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1F6np39041797;
	Wed, 15 Feb 2012 06:49:51 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202150649.q1F6np39041797@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Wed, 15 Feb 2012 06:49:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231744 - in projects/multi-fibv6/8: contrib/netcat etc
	etc/rc.d share/man/man4 sys/contrib/pf/net sys/fs/nfsclient
	sys/kern sys/net sys/netinet sys/netinet/ipfw sys/netinet6
	sys/netips...
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Feb 2012 06:49:51 -0000

Author: bz
Date: Wed Feb 15 06:49:50 2012
New Revision: 231744
URL: http://svn.freebsd.org/changeset/base/231744

Log:
  Initial backport of the multi-FIB IPv6 changes from HEAD.
  
  Sponsored by:	Cisco Systems, Inc.

Modified:
  projects/multi-fibv6/8/contrib/netcat/netcat.c
  projects/multi-fibv6/8/etc/network.subr
  projects/multi-fibv6/8/etc/rc.d/network_ipv6
  projects/multi-fibv6/8/share/man/man4/faith.4
  projects/multi-fibv6/8/sys/contrib/pf/net/pf.c
  projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c
  projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c
  projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c
  projects/multi-fibv6/8/sys/kern/uipc_socket.c
  projects/multi-fibv6/8/sys/net/flowtable.c
  projects/multi-fibv6/8/sys/net/if_faith.c
  projects/multi-fibv6/8/sys/net/route.c
  projects/multi-fibv6/8/sys/net/route.h
  projects/multi-fibv6/8/sys/netinet/in.c
  projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c
  projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h
  projects/multi-fibv6/8/sys/netinet/tcp_subr.c
  projects/multi-fibv6/8/sys/netinet6/icmp6.c
  projects/multi-fibv6/8/sys/netinet6/in6.c
  projects/multi-fibv6/8/sys/netinet6/in6_gif.c
  projects/multi-fibv6/8/sys/netinet6/in6_ifattach.c
  projects/multi-fibv6/8/sys/netinet6/in6_mcast.c
  projects/multi-fibv6/8/sys/netinet6/in6_rmx.c
  projects/multi-fibv6/8/sys/netinet6/in6_src.c
  projects/multi-fibv6/8/sys/netinet6/in6_var.h
  projects/multi-fibv6/8/sys/netinet6/ip6_forward.c
  projects/multi-fibv6/8/sys/netinet6/ip6_input.c
  projects/multi-fibv6/8/sys/netinet6/ip6_output.c
  projects/multi-fibv6/8/sys/netinet6/ip6_var.h
  projects/multi-fibv6/8/sys/netinet6/nd6.c
  projects/multi-fibv6/8/sys/netinet6/nd6_nbr.c
  projects/multi-fibv6/8/sys/netinet6/nd6_rtr.c
  projects/multi-fibv6/8/sys/netinet6/raw_ip6.c
  projects/multi-fibv6/8/sys/netipsec/ipsec_output.c
  projects/multi-fibv6/8/sys/nfs/bootp_subr.c
  projects/multi-fibv6/8/sys/nfsclient/nfs_vfsops.c
  projects/multi-fibv6/8/usr.bin/netstat/route.c

Modified: projects/multi-fibv6/8/contrib/netcat/netcat.c
==============================================================================
--- projects/multi-fibv6/8/contrib/netcat/netcat.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/contrib/netcat/netcat.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -605,8 +605,10 @@ remote_connect(const char *host, const c
 #endif
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid)) == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		/* Bind to a local port or source address if specified. */
@@ -678,8 +680,11 @@ local_listen(char *host, char *port, str
 			continue;
 
 		if (rtableid) {
-			if (setfib(rtableid) == -1)
-				err(1, "setfib");
+			ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
+			    sizeof(rtableid));
+			if (ret == -1)
+				err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
+				    rtableid);
 		}
 
 		ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));

Modified: projects/multi-fibv6/8/etc/network.subr
==============================================================================
--- projects/multi-fibv6/8/etc/network.subr	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/etc/network.subr	Wed Feb 15 06:49:50 2012	(r231744)
@@ -1125,16 +1125,33 @@ network6_default_interface_setup()
 		;;
 	esac
 
+	# Get the number of FIBs supported.
+	fibs=`sysctl -n net.fibs`
+	: ${fibs:=1}
+
 	# Disallow unicast packets without outgoing scope identifiers,
 	# or route such packets to a "default" interface, if it is specified.
 	route add -inet6 fe80:: -prefixlen 10 ::1 -reject
 	case ${ipv6_default_interface} in
 	[Nn][Oo] | '')
-		route add -inet6 ff02:: -prefixlen 16 ::1 -reject
+		i=0
+		while test ${i} -lt ${fibs}; do
+			setfib -F ${i} \
+			    route add -inet6 ff02:: -prefixlen 16 ::1 -reject
+			i=$((i + 1))
+		done
 		;;
 	*)
 		laddr=`network6_getladdr ${ipv6_default_interface}`
+		# Only add the laddr route to the default FIB and a reject
+		# route to all others.
 		route add -inet6 ff02:: ${laddr} -prefixlen 16 -interface
+		i=1
+		while test ${i} -lt ${fibs}; do
+			setfib -F ${i} \
+			    route add -inet6 ff02:: -prefixlen 16 ::1 -reject
+			i=$((i + 1))
+		done
 
 		# Disable installing the default interface with the
 		# case net.inet6.ip6.forwarding=0 and

Modified: projects/multi-fibv6/8/etc/rc.d/network_ipv6
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/network_ipv6	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/etc/rc.d/network_ipv6	Wed Feb 15 06:49:50 2012	(r231744)
@@ -41,9 +41,21 @@ start_cmd="network_ipv6_start"
 
 network_ipv6_start()
 {
-	# disallow "internal" addresses to appear on the wire
-	route add -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
-	route add -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject
+	local fibs i
+
+	# Get the number of FIBs supported.
+	fibs=`sysctl -n net.fibs`
+	: ${fibs:=1}
+
+  	# disallow "internal" addresses to appear on the wire
+	i=0
+	while test ${i} -lt ${fibs}; do
+		setfib -F ${i} route add -inet6 \
+		   ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
+		setfib -F ${i} route add -inet6 \
+		  ::0.0.0.0 -prefixlen 96 ::1 -reject
+		i=$((i + 1))
+	done
 
 	case ${ipv6_network_interfaces} in
 	[Aa][Uu][Tt][Oo])

Modified: projects/multi-fibv6/8/share/man/man4/faith.4
==============================================================================
--- projects/multi-fibv6/8/share/man/man4/faith.4	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/share/man/man4/faith.4	Wed Feb 15 06:49:50 2012	(r231744)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 10, 1999
+.Dd January 23, 2012
 .Dt FAITH 4
 .Os
 .Sh NAME
@@ -58,7 +58,7 @@ variable in
 .Xr rc.conf 5 .
 .Pp
 Special action will be taken when IPv6 TCP traffic is seen on a router,
-and the routing table suggests to route it to the
+and the default routing table suggests to route it to the
 .Nm
 interface.
 In this case, the packet will be accepted by the router,

Modified: projects/multi-fibv6/8/sys/contrib/pf/net/pf.c
==============================================================================
--- projects/multi-fibv6/8/sys/contrib/pf/net/pf.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/contrib/pf/net/pf.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -3197,11 +3197,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
 		dst->sin_len = sizeof(*dst);
 		dst->sin_addr = addr->v4;
 #ifdef __FreeBSD__
-#ifdef RTF_PRCLONING
-		rtalloc_ign(&ro, (RTF_CLONING | RTF_PRCLONING));
-#else /* !RTF_PRCLONING */
-		in_rtalloc_ign(&ro, 0, 0);
-#endif
+		in_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB);
 #else /* ! __FreeBSD__ */
 		rtalloc_noclone(&ro, NO_CLONING);
 #endif
@@ -3217,12 +3213,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam
 		dst6->sin6_len = sizeof(*dst6);
 		dst6->sin6_addr = addr->v6;
 #ifdef __FreeBSD__
-#ifdef RTF_PRCLONING
-		rtalloc_ign((struct route *)&ro6,
-		    (RTF_CLONING | RTF_PRCLONING));
-#else /* !RTF_PRCLONING */
-		rtalloc_ign((struct route *)&ro6, 0);
-#endif
+		in6_rtalloc_ign(&ro6, 0, RT_DEFAULT_FIB);
 #else /* ! __FreeBSD__ */
 		rtalloc_noclone((struct route *)&ro6, NO_CLONING);
 #endif
@@ -6134,9 +6125,11 @@ pf_routable(struct pf_addr *addr, sa_fam
 #ifdef __FreeBSD__
 /* XXX MRT not always INET */ /* stick with table 0 though */
 	if (af == AF_INET)
-		in_rtalloc_ign((struct route *)&ro, 0, 0);
+		in_rtalloc_ign((struct route *)&ro, 0, RT_DEFAULT_FIB);
+#ifdef INET6
 	else
-		rtalloc_ign((struct route *)&ro, 0);
+		in6_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB);
+#endif
 #else /* ! __FreeBSD__ */
 	rtalloc_noclone((struct route *)&ro, NO_CLONING);
 #endif
@@ -6212,14 +6205,12 @@ pf_rtlabel_match(struct pf_addr *addr, s
 	}
 
 #ifdef __FreeBSD__
-# ifdef RTF_PRCLONING
-	rtalloc_ign((struct route *)&ro, (RTF_CLONING|RTF_PRCLONING));
-# else /* !RTF_PRCLONING */
 	if (af == AF_INET)
-		in_rtalloc_ign((struct route *)&ro, 0, 0);
+		in_rtalloc_ign((struct route *)&ro, 0, RT_DEFAULT_FIB);
+#ifdef INET6
 	else
-		rtalloc_ign((struct route *)&ro, 0);
-# endif
+		in6_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB);
+#endif
 #else /* ! __FreeBSD__ */
 	rtalloc_noclone((struct route *)&ro, NO_CLONING);
 #endif

Modified: projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c
==============================================================================
--- projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -1531,7 +1531,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a
 		}
 
 #ifdef __FreeBSD__ /* ROUTING */
-		if (rule->rtableid > 0 && rule->rtableid > rt_numfibs)
+		if (rule->rtableid > 0 && rule->rtableid >= rt_numfibs)
 #else
 		if (rule->rtableid > 0 && !rtable_exists(rule->rtableid))
 #endif
@@ -1794,7 +1794,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a
 
 			if (newrule->rtableid > 0 &&
 #ifdef __FreeBSD__ /* ROUTING */
-			    newrule->rtableid > rt_numfibs)
+			    newrule->rtableid >= rt_numfibs)
 #else
 			    !rtable_exists(newrule->rtableid))
 #endif

Modified: projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c
==============================================================================
--- projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -946,7 +946,8 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad.sin_len = sizeof (struct sockaddr_in);
 		sad.sin_addr.s_addr = sin->sin_addr.s_addr;
 		CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred));
-		rt = rtalloc1((struct sockaddr *)&sad, 0, 0UL);
+		rt = rtalloc1_fib((struct sockaddr *)&sad, 0, 0UL,
+		     curthread->td_proc->p_fibnum);
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&
@@ -971,7 +972,8 @@ nfscl_getmyip(struct nfsmount *nmp, int 
 		sad6.sin6_len = sizeof (struct sockaddr_in6);
 		sad6.sin6_addr = sin6->sin6_addr;
 		CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred));
-		rt = rtalloc1((struct sockaddr *)&sad6, 0, 0UL);
+		rt = rtalloc1_fib((struct sockaddr *)&sad6, 0, 0UL,
+		     curthread->td_proc->p_fibnum);
 		if (rt != NULL) {
 			if (rt->rt_ifp != NULL &&
 			    rt->rt_ifa != NULL &&

Modified: projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c
==============================================================================
--- projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -455,10 +455,10 @@ nfs_mountroot(struct mount *mp)
 		sin.sin_len = sizeof(sin);
                 /* XXX MRT use table 0 for this sort of thing */
 		CURVNET_SET(TD_TO_VNET(td));
-		error = rtrequest(RTM_ADD, (struct sockaddr *)&sin,
+		error = rtrequest_fib(RTM_ADD, (struct sockaddr *)&sin,
 		    (struct sockaddr *)&nd->mygateway,
 		    (struct sockaddr *)&mask,
-		    RTF_UP | RTF_GATEWAY, NULL);
+		    RTF_UP | RTF_GATEWAY, NULL, RT_DEFAULT_FIB);
 		CURVNET_RESTORE();
 		if (error)
 			panic("nfs_mountroot: RTM_ADD: %d", error);

Modified: projects/multi-fibv6/8/sys/kern/uipc_socket.c
==============================================================================
--- projects/multi-fibv6/8/sys/kern/uipc_socket.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/kern/uipc_socket.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -383,6 +383,7 @@ socreate(int dom, struct socket **aso, i
 	so->so_type = type;
 	so->so_cred = crhold(cred);
 	if ((prp->pr_domain->dom_family == PF_INET) ||
+	    (prp->pr_domain->dom_family == PF_INET6) ||
 	    (prp->pr_domain->dom_family == PF_ROUTE))
 		so->so_fibnum = td->td_proc->p_fibnum;
 	else
@@ -2492,12 +2493,13 @@ sosetopt(struct socket *so, struct socko
 		case SO_SETFIB:
 			error = sooptcopyin(sopt, &optval, sizeof optval,
 					    sizeof optval);
-			if (optval < 0 || optval > rt_numfibs) {
+			if (optval < 0 || optval >= rt_numfibs) {
 				error = EINVAL;
 				goto bad;
 			}
 			if (so->so_proto != NULL &&
 			   ((so->so_proto->pr_domain->dom_family == PF_INET) ||
+			   (so->so_proto->pr_domain->dom_family == PF_INET6) ||
 			   (so->so_proto->pr_domain->dom_family == PF_ROUTE))) {
 				so->so_fibnum = optval;
 				/* Note: ignore error */

Modified: projects/multi-fibv6/8/sys/net/flowtable.c
==============================================================================
--- projects/multi-fibv6/8/sys/net/flowtable.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/net/flowtable.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -373,7 +373,7 @@ SYSCTL_VNET_PROC(_net_inet_flowtable, OI
 
 #ifndef RADIX_MPATH
 static void
-in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
+rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum)
 {
 
 	rtalloc_ign_fib(ro, 0, fibnum);
@@ -1313,7 +1313,7 @@ flowtable_alloc(char *name, int nentry, 
 #ifdef RADIX_MPATH
 	ft->ft_rtalloc = rtalloc_mpath_fib;
 #else
-	ft->ft_rtalloc = in_rtalloc_ign_wrapper;
+	ft->ft_rtalloc = rtalloc_ign_wrapper;
 #endif
 	if (flags & FL_PCPU) {
 		ft->ft_lock = flowtable_pcpu_lock;

Modified: projects/multi-fibv6/8/sys/net/if_faith.c
==============================================================================
--- projects/multi-fibv6/8/sys/net/if_faith.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/net/if_faith.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -338,7 +338,7 @@ faithprefix(in6)
 	sin6.sin6_family = AF_INET6;
 	sin6.sin6_len = sizeof(struct sockaddr_in6);
 	sin6.sin6_addr = *in6;
-	rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL);
+	rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB);
 	if (rt && rt->rt_ifp && rt->rt_ifp->if_type == IFT_FAITH &&
 	    (rt->rt_ifp->if_flags & IFF_UP) != 0)
 		ret = 1;

Modified: projects/multi-fibv6/8/sys/net/route.c
==============================================================================
--- projects/multi-fibv6/8/sys/net/route.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/net/route.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -35,6 +35,7 @@
  ***********************************************************************/
 
 #include "opt_inet.h"
+#include "opt_inet6.h"
 #include "opt_route.h"
 #include "opt_mrouting.h"
 #include "opt_mpath.h"
@@ -72,7 +73,11 @@ SYSCTL_INT(_net, OID_AUTO, fibs, CTLFLAG
 /*
  * Allow the boot code to allow LESS than RT_MAXFIBS to be used.
  * We can't do more because storage is statically allocated for now.
- * (for compatibility reasons.. this will change).
+ * (for compatibility reasons.. this will change. When this changes, code should
+ * be refactored to protocol independent parts and protocol dependent parts,
+ * probably hanging of domain(9) specific storage to not need the full
+ * fib * af RNH allocation etc. but allow tuning the number of tables per
+ * address family).
  */
 TUNABLE_INT("net.fibs", &rt_numfibs);
 
@@ -82,6 +87,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs);
  * changes for the FIB of the caller when adding a new set of addresses
  * to an interface.  XXX this is a shotgun aproach to a problem that needs
  * a more fine grained solution.. that will come.
+ * XXX also has the problems getting the FIB from curthread which will not
+ * always work given the fib can be overridden and prefixes can be added
+ * from the network stack context.
  */
 u_int rt_add_addr_allfibs = 1;
 SYSCTL_INT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW,
@@ -196,27 +204,23 @@ vnet_route_init(const void *unused __unu
 	V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), NULL, NULL,
 	    NULL, NULL, UMA_ALIGN_PTR, 0);
 	for (dom = domains; dom; dom = dom->dom_next) {
-		if (dom->dom_rtattach)  {
-			for  (table = 0; table < rt_numfibs; table++) {
-				if ( (fam = dom->dom_family) == AF_INET ||
-				    table == 0) {
- 			        	/* for now only AF_INET has > 1 table */
-					/* XXX MRT 
-					 * rtattach will be also called
-					 * from vfs_export.c but the
-					 * offset will be 0
-					 * (only for AF_INET and AF_INET6
-					 * which don't need it anyhow)
-					 */
-					rnh = rt_tables_get_rnh_ptr(table, fam);
-					if (rnh == NULL)
-						panic("%s: rnh NULL", __func__);
-					dom->dom_rtattach((void **)rnh,
-				    	    dom->dom_rtoffset);
-				} else {
-					break;
-				}
-			}
+		if (dom->dom_rtattach == NULL)
+			continue;
+
+		for  (table = 0; table < rt_numfibs; table++) {
+			fam = dom->dom_family;
+			if (table != 0 && fam != AF_INET6 && fam != AF_INET)
+				break;
+
+			/*
+			 * XXX MRT rtattach will be also called from
+			 * vfs_export.c but the offset will be 0 (only for
+			 * AF_INET and AF_INET6 which don't need it anyhow).
+			 */
+			rnh = rt_tables_get_rnh_ptr(table, fam);
+			if (rnh == NULL)
+				panic("%s: rnh NULL", __func__);
+			dom->dom_rtattach((void **)rnh, dom->dom_rtoffset);
 		}
 	}
 }
@@ -233,20 +237,19 @@ vnet_route_uninit(const void *unused __u
 	struct radix_node_head **rnh;
 
 	for (dom = domains; dom; dom = dom->dom_next) {
-		if (dom->dom_rtdetach) {
-			for (table = 0; table < rt_numfibs; table++) {
-				if ( (fam = dom->dom_family) == AF_INET ||
-				    table == 0) {
-					/* For now only AF_INET has > 1 tbl. */
-					rnh = rt_tables_get_rnh_ptr(table, fam);
-					if (rnh == NULL)
-						panic("%s: rnh NULL", __func__);
-					dom->dom_rtdetach((void **)rnh,
-					    dom->dom_rtoffset);
-				} else {
-					break;
-				}
-			}
+		if (dom->dom_rtdetach == NULL)
+			continue;
+
+		for (table = 0; table < rt_numfibs; table++) {
+			fam = dom->dom_family;
+
+			if (table != 0 && fam != AF_INET6 && fam != AF_INET)
+				break;
+
+			rnh = rt_tables_get_rnh_ptr(table, fam);
+			if (rnh == NULL)
+				panic("%s: rnh NULL", __func__);
+			dom->dom_rtdetach((void **)rnh, dom->dom_rtoffset);
 		}
 	}
 }
@@ -274,7 +277,8 @@ setfib(struct thread *td, struct setfib_
 void
 rtalloc(struct route *ro)
 {
-	rtalloc_ign_fib(ro, 0UL, 0);
+
+	rtalloc_ign_fib(ro, 0UL, RT_DEFAULT_FIB);
 }
 
 void
@@ -294,7 +298,7 @@ rtalloc_ign(struct route *ro, u_long ign
 		RTFREE(rt);
 		ro->ro_rt = NULL;
 	}
-	ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, 0);
+	ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, RT_DEFAULT_FIB);
 	if (ro->ro_rt)
 		RT_UNLOCK(ro->ro_rt);
 }
@@ -324,7 +328,8 @@ rtalloc_ign_fib(struct route *ro, u_long
 struct rtentry *
 rtalloc1(struct sockaddr *dst, int report, u_long ignflags)
 {
-	return (rtalloc1_fib(dst, report, ignflags, 0));
+
+	return (rtalloc1_fib(dst, report, ignflags, RT_DEFAULT_FIB));
 }
 
 struct rtentry *
@@ -339,8 +344,15 @@ rtalloc1_fib(struct sockaddr *dst, int r
 	int needlock;
 
 	KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum"));
-	if (dst->sa_family != AF_INET)	/* Only INET supports > 1 fib now */
-		fibnum = 0;
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
 	rnh = rt_tables_get_rnh(fibnum, dst->sa_family);
 	newrt = NULL;
 	if (rnh == NULL)
@@ -486,7 +498,8 @@ rtredirect(struct sockaddr *dst,
 	int flags,
 	struct sockaddr *src)
 {
-	rtredirect_fib(dst, gateway, netmask, flags, src, 0);
+
+	rtredirect_fib(dst, gateway, netmask, flags, src, RT_DEFAULT_FIB);
 }
 
 void
@@ -617,7 +630,8 @@ out:
 int
 rtioctl(u_long req, caddr_t data)
 {
-	return (rtioctl_fib(req, data, 0));
+
+	return (rtioctl_fib(req, data, RT_DEFAULT_FIB));
 }
 
 /*
@@ -647,7 +661,8 @@ rtioctl_fib(u_long req, caddr_t data, u_
 struct ifaddr *
 ifa_ifwithroute(int flags, struct sockaddr *dst, struct sockaddr *gateway)
 {
-	return (ifa_ifwithroute_fib(flags, dst, gateway, 0));
+
+	return (ifa_ifwithroute_fib(flags, dst, gateway, RT_DEFAULT_FIB));
 }
 
 struct ifaddr *
@@ -732,7 +747,9 @@ rtrequest(int req,
 	int flags,
 	struct rtentry **ret_nrt)
 {
-	return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, 0));
+
+	return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt,
+	    RT_DEFAULT_FIB));
 }
 
 int
@@ -771,7 +788,8 @@ rtrequest_fib(int req,
 int
 rt_getifa(struct rt_addrinfo *info)
 {
-	return (rt_getifa_fib(info, 0));
+
+	return (rt_getifa_fib(info, RT_DEFAULT_FIB));
 }
 
 /*
@@ -1029,8 +1047,16 @@ rtrequest1_fib(int req, struct rt_addrin
 #define senderr(x) { error = x ; goto bad; }
 
 	KASSERT((fibnum < rt_numfibs), ("rtrequest1_fib: bad fibnum"));
-	if (dst->sa_family != AF_INET)	/* Only INET supports > 1 fib now */
-		fibnum = 0;
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
+
 	/*
 	 * Find the correct routing tree to use for this Address Family
 	 */
@@ -1136,8 +1162,7 @@ rtrequest1_fib(int req, struct rt_addrin
 		rt->rt_flags = RTF_UP | flags;
 		rt->rt_fibnum = fibnum;
 		/*
-		 * Add the gateway. Possibly re-malloc-ing the storage for it
-		 * 
+		 * Add the gateway. Possibly re-malloc-ing the storage for it.
 		 */
 		RT_LOCK(rt);
 		if ((error = rt_setgate(rt, dst, gateway)) != 0) {
@@ -1186,12 +1211,17 @@ rtrequest1_fib(int req, struct rt_addrin
 
 #ifdef FLOWTABLE
 		rt0 = NULL;
-		/* XXX
-		 * "flow-table" only support IPv4 at the moment.
-		 * XXX-BZ as of r205066 it would support IPv6.
-		 */
+		/* "flow-table" only supports IPv6 and IPv4 at the moment. */
+		switch (dst->sa_family) {
+#ifdef notyet
+#ifdef INET6
+		case AF_INET6:
+#endif
+#endif
 #ifdef INET
-		if (dst->sa_family == AF_INET) {
+		case AF_INET:
+#endif
+#if defined(INET6) || defined(INET)
 			rn = rnh->rnh_matchaddr(dst, rnh);
 			if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) {
 				struct sockaddr *mask;
@@ -1230,9 +1260,9 @@ rtrequest1_fib(int req, struct rt_addrin
 					}
 				}
 			}
+#endif/* INET6 || INET */
 		}
-#endif
-#endif
+#endif /* FLOWTABLE */
 
 		/* XXX mtu manipulation will be done in rnh_addaddr -- itojun */
 		rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes);
@@ -1254,9 +1284,20 @@ rtrequest1_fib(int req, struct rt_addrin
 		} 
 #ifdef FLOWTABLE
 		else if (rt0 != NULL) {
+			switch (dst->sa_family) {
+#ifdef notyet
+#ifdef INET6
+			case AF_INET6:
+				flowtable_route_flush(V_ip6_ft, rt0);
+				break;
+#endif
+#endif
 #ifdef INET
-			flowtable_route_flush(V_ip_ft, rt0);
+			case AF_INET:
+				flowtable_route_flush(V_ip_ft, rt0);
+				break;
 #endif
+			}
 			RTFREE(rt0);
 		}
 #endif
@@ -1388,8 +1429,17 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 		dst = ifa->ifa_addr;
 		netmask = ifa->ifa_netmask;
 	}
-	if ( dst->sa_family != AF_INET)
-		fibnum = 0;
+	if (dst->sa_len == 0)
+		return(EINVAL);
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We support multiple FIBs. */
+		break;
+	default:
+		fibnum = RT_DEFAULT_FIB;
+		break;
+	}
 	if (fibnum == -1) {
 		if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) {
 			startfib = endfib = curthread->td_proc->p_fibnum;
@@ -1402,8 +1452,6 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 		startfib = fibnum;
 		endfib = fibnum;
 	}
-	if (dst->sa_len == 0)
-		return(EINVAL);
 
 	/*
 	 * If it's a delete, check that if it exists,
@@ -1427,9 +1475,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 	 * Now go through all the requested tables (fibs) and do the
 	 * requested action. Realistically, this will either be fib 0
 	 * for protocols that don't do multiple tables or all the
-	 * tables for those that do. XXX For this version only AF_INET.
-	 * When that changes code should be refactored to protocol
-	 * independent parts and protocol dependent parts.
+	 * tables for those that do.
 	 */
 	for ( fibnum = startfib; fibnum <= endfib; fibnum++) {
 		if (cmd == RTM_DELETE) {
@@ -1569,12 +1615,14 @@ rtinit1(struct ifaddr *ifa, int cmd, int
 	return (error);
 }
 
+#ifndef BURN_BRIDGES
 /* special one for inet internal use. may not use. */
 int
 rtinit_fib(struct ifaddr *ifa, int cmd, int flags)
 {
 	return (rtinit1(ifa, cmd, flags, -1));
 }
+#endif
 
 /*
  * Set up a routing table entry, normally
@@ -1584,7 +1632,7 @@ int
 rtinit(struct ifaddr *ifa, int cmd, int flags)
 {
 	struct sockaddr *dst;
-	int fib = 0;
+	int fib = RT_DEFAULT_FIB;
 
 	if (flags & RTF_HOST) {
 		dst = ifa->ifa_dstaddr;
@@ -1592,7 +1640,12 @@ rtinit(struct ifaddr *ifa, int cmd, int 
 		dst = ifa->ifa_addr;
 	}
 
-	if (dst->sa_family == AF_INET)
+	switch (dst->sa_family) {
+	case AF_INET6:
+	case AF_INET:
+		/* We do support multiple FIBs. */
 		fib = -1;
+		break;
+	}
 	return (rtinit1(ifa, cmd, flags, fib));
 }

Modified: projects/multi-fibv6/8/sys/net/route.h
==============================================================================
--- projects/multi-fibv6/8/sys/net/route.h	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/net/route.h	Wed Feb 15 06:49:50 2012	(r231744)
@@ -107,6 +107,7 @@ struct rt_metrics {
  #endif
 #endif
 
+#define	RT_DEFAULT_FIB	0	/* Explicitly mark fib=0 restricted cases */
 extern u_int rt_numfibs;	/* number fo usable routing tables */
 /*
  * XXX kernel function pointer `rt_output' is visible to applications.
@@ -401,8 +402,10 @@ void	 rtredirect(struct sockaddr *, stru
 int	 rtrequest(int, struct sockaddr *,
 	    struct sockaddr *, struct sockaddr *, int, struct rtentry **);
 
+#ifndef BURN_BRIDGES
 /* defaults to "all" FIBs */
 int	 rtinit_fib(struct ifaddr *, int, int);
+#endif
 
 /* XXX MRT NEW VERSIONS THAT USE FIBs
  * For now the protocol indepedent versions are the same as the AF_INET ones

Modified: projects/multi-fibv6/8/sys/netinet/in.c
==============================================================================
--- projects/multi-fibv6/8/sys/netinet/in.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet/in.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -957,7 +957,7 @@ in_ifinit(struct ifnet *ifp, struct in_i
 
 		bzero(&ia_ro, sizeof(ia_ro));
 		*((struct sockaddr_in *)(&ia_ro.ro_dst)) = ia->ia_addr;
-		rtalloc_ign_fib(&ia_ro, 0, 0);
+		rtalloc_ign_fib(&ia_ro, 0, RT_DEFAULT_FIB);
 		if ((ia_ro.ro_rt != NULL) && (ia_ro.ro_rt->rt_ifp != NULL) &&
 		    (ia_ro.ro_rt->rt_ifp == V_loif)) {
 			RT_LOCK(ia_ro.ro_rt);

Modified: projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c
==============================================================================
--- projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -494,7 +494,7 @@ search_ip6_addr_net (struct in6_addr * i
 }
 
 static int
-verify_path6(struct in6_addr *src, struct ifnet *ifp)
+verify_path6(struct in6_addr *src, struct ifnet *ifp, u_int fib)
 {
 	struct route_in6 ro;
 	struct sockaddr_in6 *dst;
@@ -505,9 +505,8 @@ verify_path6(struct in6_addr *src, struc
 	dst->sin6_family = AF_INET6;
 	dst->sin6_len = sizeof(*dst);
 	dst->sin6_addr = *src;
-	/* XXX MRT 0 for ipv6 at this time */
-	rtalloc_ign((struct route *)&ro, 0);
 
+	in6_rtalloc_ign(&ro, 0, fib);
 	if (ro.ro_rt == NULL)
 		return 0;
 
@@ -1682,7 +1681,7 @@ do {								\
 #ifdef INET6
 				    is_ipv6 ?
 					verify_path6(&(args->f_id.src_ip6),
-					    m->m_pkthdr.rcvif) :
+					    m->m_pkthdr.rcvif, args->f_id.fib) :
 #endif
 				    verify_path(src_ip, m->m_pkthdr.rcvif,
 				        args->f_id.fib)));
@@ -1694,7 +1693,7 @@ do {								\
 #ifdef INET6
 				    is_ipv6 ?
 				        verify_path6(&(args->f_id.src_ip6),
-				            NULL) :
+				            NULL, args->f_id.fib) :
 #endif
 				    verify_path(src_ip, NULL, args->f_id.fib)));
 				break;
@@ -1712,7 +1711,8 @@ do {								\
 #ifdef INET6
 					    is_ipv6 ? verify_path6(
 					        &(args->f_id.src_ip6),
-					        m->m_pkthdr.rcvif) :
+					        m->m_pkthdr.rcvif,
+						args->f_id.fib) :
 #endif
 					    verify_path(src_ip,
 					    	m->m_pkthdr.rcvif,

Modified: projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h
==============================================================================
--- projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h	Wed Feb 15 06:49:50 2012	(r231744)
@@ -424,6 +424,12 @@ typedef struct callout sctp_os_timer_t;
 typedef struct route sctp_route_t;
 typedef struct rtentry sctp_rtentry_t;
 
+/*
+ * XXX multi-FIB support was backed out in r179783 and it seems clear that the
+ * VRF support as currently in FreeBSD is not ready to support multi-FIB.
+ * It might be best to implement multi-FIB support for both v4 and v6 indepedent
+ * of VRFs and leave those to a real MPLS stack.
+ */
 #define SCTP_RTALLOC(ro, vrf_id) rtalloc_ign((struct route *)ro, 0UL)
 
 /* Future zero copy wakeup/send  function */

Modified: projects/multi-fibv6/8/sys/netinet/tcp_subr.c
==============================================================================
--- projects/multi-fibv6/8/sys/netinet/tcp_subr.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet/tcp_subr.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -1801,7 +1801,7 @@ tcp_maxmtu6(struct in_conninfo *inc, int
 		sro6.ro_dst.sin6_family = AF_INET6;
 		sro6.ro_dst.sin6_len = sizeof(struct sockaddr_in6);
 		sro6.ro_dst.sin6_addr = inc->inc6_faddr;
-		rtalloc_ign((struct route *)&sro6, 0);
+		in6_rtalloc_ign(&sro6, 0, inc->inc_fibnum);
 	}
 	if (sro6.ro_rt != NULL) {
 		ifp = sro6.ro_rt->rt_ifp;

Modified: projects/multi-fibv6/8/sys/netinet6/icmp6.c
==============================================================================
--- projects/multi-fibv6/8/sys/netinet6/icmp6.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet6/icmp6.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -359,7 +359,7 @@ icmp6_error(struct mbuf *m, int type, in
 		m_adj(m, ICMPV6_PLD_MAXLEN - m->m_pkthdr.len);
 
 	preplen = sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr);
-	M_PREPEND(m, preplen, M_DONTWAIT);
+	M_PREPEND(m, preplen, M_DONTWAIT);	/* FIB is also copied over. */
 	if (m && m->m_len < preplen)
 		m = m_pullup(m, preplen);
 	if (m == NULL) {
@@ -581,7 +581,7 @@ icmp6_input(struct mbuf **mp, int *offp,
 			MGETHDR(n, M_DONTWAIT, n0->m_type);
 			n0len = n0->m_pkthdr.len;	/* save for use below */
 			if (n)
-				M_MOVE_PKTHDR(n, n0);
+				M_MOVE_PKTHDR(n, n0);	/* FIB copied. */
 			if (n && maxlen >= MHLEN) {
 				MCLGET(n, M_DONTWAIT);
 				if ((n->m_flags & M_EXT) == 0) {
@@ -1419,7 +1419,7 @@ ni6_input(struct mbuf *m, int off)
 		m_freem(m);
 		return (NULL);
 	}
-	M_MOVE_PKTHDR(n, m); /* just for recvif */
+	M_MOVE_PKTHDR(n, m); /* just for recvif and FIB */
 	if (replylen > MHLEN) {
 		if (replylen > MCLBYTES) {
 			/*
@@ -2332,7 +2332,7 @@ icmp6_redirect_input(struct mbuf *m, int
 	sin6.sin6_family = AF_INET6;
 	sin6.sin6_len = sizeof(struct sockaddr_in6);
 	bcopy(&reddst6, &sin6.sin6_addr, sizeof(reddst6));
-	rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL);
+	rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB);
 	if (rt) {
 		if (rt->rt_gateway == NULL ||
 		    rt->rt_gateway->sa_family != AF_INET6) {
@@ -2421,6 +2421,7 @@ icmp6_redirect_input(struct mbuf *m, int
 		struct sockaddr_in6 sdst;
 		struct sockaddr_in6 sgw;
 		struct sockaddr_in6 ssrc;
+		u_int fibnum;
 
 		bzero(&sdst, sizeof(sdst));
 		bzero(&sgw, sizeof(sgw));
@@ -2431,9 +2432,11 @@ icmp6_redirect_input(struct mbuf *m, int
 		bcopy(&redtgt6, &sgw.sin6_addr, sizeof(struct in6_addr));
 		bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr));
 		bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr));
-		rtredirect((struct sockaddr *)&sdst, (struct sockaddr *)&sgw,
-		    (struct sockaddr *)NULL, RTF_GATEWAY | RTF_HOST,
-		    (struct sockaddr *)&ssrc);
+		for (fibnum = 0; fibnum < rt_numfibs; fibnum++)
+			in6_rtredirect((struct sockaddr *)&sdst,
+			    (struct sockaddr *)&sgw, (struct sockaddr *)NULL,
+			    RTF_GATEWAY | RTF_HOST, (struct sockaddr *)&ssrc,
+			    fibnum);
 	}
 	/* finally update cached route in each socket via pfctlinput */
     {
@@ -2517,6 +2520,7 @@ icmp6_redirect_output(struct mbuf *m0, s
 		MCLGET(m, M_DONTWAIT);
 	if (!m)
 		goto fail;
+	M_SETFIB(m, rt->rt_fibnum);
 	m->m_pkthdr.rcvif = NULL;
 	m->m_len = 0;
 	maxlen = M_TRAILINGSPACE(m);

Modified: projects/multi-fibv6/8/sys/netinet6/in6.c
==============================================================================
--- projects/multi-fibv6/8/sys/netinet6/in6.c	Wed Feb 15 06:45:49 2012	(r231743)
+++ projects/multi-fibv6/8/sys/netinet6/in6.c	Wed Feb 15 06:49:50 2012	(r231744)
@@ -198,6 +198,11 @@ in6_control(struct socket *so, u_long cm
 	switch (cmd) {
 	case SIOCGETSGCNT_IN6:
 	case SIOCGETMIFCNT_IN6:
+		/*	
+		 * XXX mrt_ioctl has a 3rd, unused, FIB argument in route.c.
+		 * We cannot see how that would be needed, so do not adjust the
+		 * KPI blindly; more likely should clean up the IPv4 variant.
+		 */
 		return (mrt6_ioctl ? mrt6_ioctl(cmd, data) : EOPNOTSUPP);
 	}
 
@@ -696,6 +701,169 @@ out:
 }
 
 /*
+ * Join necessary multicast groups.  Factored out from in6_update_ifa().
+ * This entire work should only be done once, for the default FIB.
+ */
+static int
+in6_update_ifa_join_mc(struct ifnet *ifp, struct in6_aliasreq *ifra,
+    struct in6_ifaddr *ia, int flags, struct in6_multi **in6m_sol)
+{
+	char ip6buf[INET6_ADDRSTRLEN];
+	struct sockaddr_in6 mltaddr, mltmask;
+	struct in6_addr llsol;
+	struct in6_multi_mship *imm;
+	struct rtentry *rt;
+	int delay, error;
+
+	KASSERT(in6m_sol != NULL, ("%s: in6m_sol is NULL", __func__));
+
+	/* Join solicited multicast addr for new host id. */
+	bzero(&llsol, sizeof(struct in6_addr));
+	llsol.s6_addr32[0] = IPV6_ADDR_INT32_MLL;
+	llsol.s6_addr32[1] = 0;
+	llsol.s6_addr32[2] = htonl(1);
+	llsol.s6_addr32[3] = ifra->ifra_addr.sin6_addr.s6_addr32[3];
+	llsol.s6_addr8[12] = 0xff;
+	if ((error = in6_setscope(&llsol, ifp, NULL)) != 0) {
+		/* XXX: should not happen */
+		log(LOG_ERR, "%s: in6_setscope failed\n", __func__);
+		goto cleanup;
+	}
+	delay = 0;
+	if ((flags & IN6_IFAUPDATE_DADDELAY)) {
+		/*
+		 * We need a random delay for DAD on the address being
+		 * configured.  It also means delaying transmission of the
+		 * corresponding MLD report to avoid report collision.
+		 * [RFC 4861, Section 6.3.7]
+		 */
+		delay = arc4random() % (MAX_RTR_SOLICITATION_DELAY * hz);
+	}
+	imm = in6_joingroup(ifp, &llsol, &error, delay);
+	if (imm == NULL) {
+		nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s "
+		    "(errno=%d)\n", __func__, ip6_sprintf(ip6buf, &llsol),
+		    if_name(ifp), error));
+		goto cleanup;
+	}
+	LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
+	*in6m_sol = imm->i6mm_maddr;
+
+	bzero(&mltmask, sizeof(mltmask));
+	mltmask.sin6_len = sizeof(struct sockaddr_in6);
+	mltmask.sin6_family = AF_INET6;
+	mltmask.sin6_addr = in6mask32;
+#define	MLTMASK_LEN  4	/* mltmask's masklen (=32bit=4octet) */
+
+	/*
+	 * Join link-local all-nodes address.
+	 */
+	bzero(&mltaddr, sizeof(mltaddr));
+	mltaddr.sin6_len = sizeof(struct sockaddr_in6);
+	mltaddr.sin6_family = AF_INET6;
+	mltaddr.sin6_addr = in6addr_linklocal_allnodes;
+	if ((error = in6_setscope(&mltaddr.sin6_addr, ifp, NULL)) != 0)
+		goto cleanup; /* XXX: should not fail */
+
+	/*
+	 * XXX: do we really need this automatic routes?  We should probably
+	 * reconsider this stuff.  Most applications actually do not need the
+	 * routes, since they usually specify the outgoing interface.
+	 */
+	rt = in6_rtalloc1((struct sockaddr *)&mltaddr, 0, 0UL, RT_DEFAULT_FIB);
+	if (rt != NULL) {
+		/* XXX: only works in !SCOPEDROUTING case. */
+		if (memcmp(&mltaddr.sin6_addr,
+		    &((struct sockaddr_in6 *)rt_key(rt))->sin6_addr,
+		    MLTMASK_LEN)) {
+			RTFREE_LOCKED(rt);
+			rt = NULL;
+		}
+	}
+	if (rt == NULL) {
+		error = in6_rtrequest(RTM_ADD, (struct sockaddr *)&mltaddr,
+		    (struct sockaddr *)&ia->ia_addr,
+		    (struct sockaddr *)&mltmask, RTF_UP,
+		    (struct rtentry **)0, RT_DEFAULT_FIB);
+		if (error)
+			goto cleanup;
+	} else
+		RTFREE_LOCKED(rt);
+
+	imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error, 0);
+	if (imm == NULL) {
+		nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s "
+		    "(errno=%d)\n", __func__, ip6_sprintf(ip6buf,
+		    &mltaddr.sin6_addr), if_name(ifp), error));
+		goto cleanup;
+	}
+	LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
+
+	/*
+	 * Join node information group address.
+	 */
+	delay = 0;
+	if ((flags & IN6_IFAUPDATE_DADDELAY)) {
+		/*
+		 * The spec does not say anything about delay for this group,
+		 * but the same logic should apply.
+		 */
+		delay = arc4random() % (MAX_RTR_SOLICITATION_DELAY * hz);
+	}
+	if (in6_nigroup(ifp, NULL, -1, &mltaddr.sin6_addr) == 0) {
+		/* XXX jinmei */
+		imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error, delay);
+		if (imm == NULL)
+			nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s "
+			    "(errno=%d)\n", __func__, ip6_sprintf(ip6buf,
+			    &mltaddr.sin6_addr), if_name(ifp), error));
+			/* XXX not very fatal, go on... */
+		else
+			LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain);
+	}
+
+	/*
+	 * Join interface-local all-nodes address.
+	 * (ff01::1%ifN, and ff01::%ifN/32)
+	 */
+	mltaddr.sin6_addr = in6addr_nodelocal_allnodes;
+	if ((error = in6_setscope(&mltaddr.sin6_addr, ifp, NULL)) != 0)
+		goto cleanup; /* XXX: should not fail */
+	/* XXX: again, do we really need the route? */
+	rt = in6_rtalloc1((struct sockaddr *)&mltaddr, 0, 0UL, RT_DEFAULT_FIB);
+	if (rt != NULL) {
+		if (memcmp(&mltaddr.sin6_addr,
+		    &((struct sockaddr_in6 *)rt_key(rt))->sin6_addr,
+		    MLTMASK_LEN)) {
+			RTFREE_LOCKED(rt);
+			rt = NULL;
+		}
+	}
+	if (rt == NULL) {
+		error = in6_rtrequest(RTM_ADD, (struct sockaddr *)&mltaddr,
+		    (struct sockaddr *)&ia->ia_addr,
+		    (struct sockaddr *)&mltmask, RTF_UP,
+		    (struct rtentry **)0, RT_DEFAULT_FIB);

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

From owner-svn-src-projects@FreeBSD.ORG  Thu Feb 16 02:02:00 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id EA648106564A;
	Thu, 16 Feb 2012 02:02:00 +0000 (UTC)
	(envelope-from nwhitehorn@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id D94048FC0C;
	Thu, 16 Feb 2012 02:02:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1G220wq093299;
	Thu, 16 Feb 2012 02:02:00 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Received: (from nwhitehorn@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1G22033093296;
	Thu, 16 Feb 2012 02:02:00 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Message-Id: <201202160202.q1G22033093296@svn.freebsd.org>
From: Nathan Whitehorn <nwhitehorn@FreeBSD.org>
Date: Thu, 16 Feb 2012 02:02:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231804 - in projects/pseries/powerpc: include pseries
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2012 02:02:01 -0000

Author: nwhitehorn
Date: Thu Feb 16 02:02:00 2012
New Revision: 231804
URL: http://svn.freebsd.org/changeset/base/231804

Log:
  Follow the standard with a little more paranoia.

Modified:
  projects/pseries/powerpc/include/pte.h
  projects/pseries/powerpc/pseries/mmu_phyp.c

Modified: projects/pseries/powerpc/include/pte.h
==============================================================================
--- projects/pseries/powerpc/include/pte.h	Thu Feb 16 01:41:34 2012	(r231803)
+++ projects/pseries/powerpc/include/pte.h	Thu Feb 16 02:02:00 2012	(r231804)
@@ -96,8 +96,9 @@ struct lpteg {
 #define LPTE_VSID_SHIFT		12
 #define LPTE_AVPN_MASK		0xFFFFFFFFFFFFFF80ULL
 #define LPTE_API		0x0000000000000F80ULL
-#define LPTE_LOCKED		0x0000000000000010ULL
-#define LPTE_WIRED		0x0000000000000008ULL
+#define LPTE_SWBITS		0x0000000000000078ULL
+#define LPTE_WIRED		0x0000000000000010ULL
+#define LPTE_LOCKED		0x0000000000000008ULL
 #define LPTE_BIG		0x0000000000000004ULL	/* 4kb/16Mb page */
 #define LPTE_HID		0x0000000000000002ULL
 #define LPTE_VALID		0x0000000000000001ULL

Modified: projects/pseries/powerpc/pseries/mmu_phyp.c
==============================================================================
--- projects/pseries/powerpc/pseries/mmu_phyp.c	Thu Feb 16 01:41:34 2012	(r231803)
+++ projects/pseries/powerpc/pseries/mmu_phyp.c	Thu Feb 16 02:02:00 2012	(r231804)
@@ -262,7 +262,7 @@ mphyp_pte_spillable_ident(u_int ptegidx,
 		phyp_pft_hcall(H_READ, 0, slot, 0, 0, &pt.pte_hi, &pt.pte_lo,
 		    &junk);
 		
-		if (pt.pte_hi & (LPTE_LOCKED | LPTE_WIRED))
+		if (pt.pte_hi & LPTE_SWBITS)
 			continue;
 
 		/* This is a candidate, so remember it */

From owner-svn-src-projects@FreeBSD.ORG  Thu Feb 16 14:42:35 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B9437106566B;
	Thu, 16 Feb 2012 14:42:35 +0000 (UTC)
	(envelope-from dmarion@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A18BA8FC12;
	Thu, 16 Feb 2012 14:42:35 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GEgZmP020997;
	Thu, 16 Feb 2012 14:42:35 GMT (envelope-from dmarion@svn.freebsd.org)
Received: (from dmarion@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GEgZ7s020985;
	Thu, 16 Feb 2012 14:42:35 GMT (envelope-from dmarion@svn.freebsd.org)
Message-Id: <201202161442.q1GEgZ7s020985@svn.freebsd.org>
From: Damjan Marion <dmarion@FreeBSD.org>
Date: Thu, 16 Feb 2012 14:42:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231822 - in projects/armv6/sys: arm/ti arm/ti/am335x
	arm/ti/omap4 boot/fdt/dts conf
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2012 14:42:35 -0000

Author: dmarion
Date: Thu Feb 16 14:42:35 2012
New Revision: 231822
URL: http://svn.freebsd.org/changeset/base/231822

Log:
  Initial codedrop for TI AM335x / BeagleBone
  Includes:
   - AINTC Interrupt controller code
   - minimal PRCM code to enable Timers and select clock source
   - DMTimer code
   - CPU ID code
   - Console UART (FDT)
  
  Approved by:	cognet (mentor)

Added:
  projects/armv6/sys/arm/ti/aintc.c
  projects/armv6/sys/arm/ti/am335x/
  projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c
  projects/armv6/sys/arm/ti/am335x/am335x_prcm.c
  projects/armv6/sys/arm/ti/am335x/am335x_reg.h
  projects/armv6/sys/arm/ti/am335x/files.am335x
  projects/armv6/sys/arm/ti/am335x/std.am335x
  projects/armv6/sys/arm/ti/am335x/std.beaglebone
  projects/armv6/sys/arm/ti/std.ti
  projects/armv6/sys/boot/fdt/dts/beaglebone.dts
Deleted:
  projects/armv6/sys/arm/ti/std.omap
Modified:
  projects/armv6/sys/arm/ti/omap4/std.omap4
  projects/armv6/sys/arm/ti/ti_cpuid.c
  projects/armv6/sys/conf/options.arm

Added: projects/armv6/sys/arm/ti/aintc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/aintc.c	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,191 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@Freebsd.org>
+ * All rights reserved.
+ *
+ * Based on OMAP3 INTC code by Ben Gray
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/ktr.h>
+#include <sys/module.h>
+#include <sys/rman.h>
+#include <machine/bus.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#define INTC_REVISION		0x00
+#define INTC_SYSCONFIG		0x10
+#define INTC_SYSSTATUS		0x14
+#define INTC_SIR_IRQ		0x40
+#define INTC_CONTROL		0x48
+#define INTC_THRESHOLD		0x68
+#define INTC_MIR_CLEAR(x)	(0x88 + ((x) * 0x20))
+#define INTC_MIR_SET(x)		(0x8C + ((x) * 0x20))
+#define INTC_ISR_SET(x)		(0x90 + ((x) * 0x20))
+#define INTC_ISR_CLEAR(x)	(0x94 + ((x) * 0x20))
+
+struct ti_aintc_softc {
+	device_t		sc_dev;
+	struct resource *	aintc_res[3];
+	bus_space_tag_t		aintc_bst;
+	bus_space_handle_t	aintc_bsh;
+	uint8_t			ver;
+};
+
+static struct resource_spec ti_aintc_spec[] = {
+	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },
+	{ -1, 0 }
+};
+
+
+static struct ti_aintc_softc *ti_aintc_sc = NULL;
+
+#define	aintc_read_4(reg)		\
+    bus_space_read_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg)
+#define	aintc_write_4(reg, val)		\
+    bus_space_write_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg, val)
+
+
+static int
+ti_aintc_probe(device_t dev)
+{
+	if (!ofw_bus_is_compatible(dev, "ti,aintc"))
+		return (ENXIO);
+	device_set_desc(dev, "TI AINTC Interrupt Controller");
+	return (BUS_PROBE_DEFAULT);
+}
+
+static int
+ti_aintc_attach(device_t dev)
+{
+	struct		ti_aintc_softc *sc = device_get_softc(dev);
+	uint32_t x;
+
+	sc->sc_dev = dev;
+
+	if (ti_aintc_sc)
+		return (ENXIO);
+
+	if (bus_alloc_resources(dev, ti_aintc_spec, sc->aintc_res)) {
+		device_printf(dev, "could not allocate resources\n");
+		return (ENXIO);
+	}
+
+	sc->aintc_bst = rman_get_bustag(sc->aintc_res[0]);
+	sc->aintc_bsh = rman_get_bushandle(sc->aintc_res[0]);
+
+	ti_aintc_sc = sc;
+
+	x = aintc_read_4(INTC_REVISION);
+	device_printf(dev, "Revision %u.%u\n",(x >> 4) & 0xF, x & 0xF);
+	return (0);
+}
+
+static device_method_t ti_aintc_methods[] = {
+	DEVMETHOD(device_probe,		ti_aintc_probe),
+	DEVMETHOD(device_attach,	ti_aintc_attach),
+	{ 0, 0 }
+};
+
+static driver_t ti_aintc_driver = {
+	"aintc",
+	ti_aintc_methods,
+	sizeof(struct ti_aintc_softc),
+};
+
+static devclass_t ti_aintc_devclass;
+
+DRIVER_MODULE(aintc, simplebus, ti_aintc_driver, ti_aintc_devclass, 0, 0);
+
+int
+arm_get_next_irq(int last_irq)
+{
+	uint32_t active_irq;
+
+	if (last_irq != -1) {
+		aintc_write_4(INTC_ISR_CLEAR(last_irq >> 5),
+			1UL << (last_irq & 0x1F));
+		aintc_write_4(INTC_CONTROL,1);
+	}
+
+	/* Get the next active interrupt */
+	active_irq = aintc_read_4(INTC_SIR_IRQ);
+
+	/* Check for spurious interrupt */
+	if ((active_irq & 0xffffff80)) {
+		device_printf(ti_aintc_sc->sc_dev,
+			"Spurious interrupt detected (0x%08x)\n", active_irq);
+		return -1;
+	}
+
+	if (active_irq != last_irq)
+		return active_irq;
+	else
+		return -1;
+}
+
+void
+arm_mask_irq(uintptr_t nb)
+{
+	aintc_write_4(INTC_MIR_SET(nb >> 5), (1UL << (nb & 0x1F)));
+}
+
+void
+arm_unmask_irq(uintptr_t nb)
+{
+	aintc_write_4(INTC_MIR_CLEAR(nb >> 5), (1UL << (nb & 0x1F)));
+}
+
+static int
+fdt_ti_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
+    int *pol)
+{
+
+	if (!fdt_is_compatible(node, "ti,aintc"))
+		return (ENXIO);
+
+	*interrupt = fdt32_to_cpu(intr[0]);
+	*trig = INTR_TRIGGER_CONFORM;
+	*pol = INTR_POLARITY_CONFORM;
+
+	return (0);
+}
+
+fdt_pic_decode_t fdt_pic_table[] = {
+	&fdt_ti_aintc_decode_ic,
+	NULL
+};
+
+

Added: projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,373 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@Freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/rman.h>
+#include <sys/timeet.h>
+#include <sys/timetc.h>
+#include <sys/watchdog.h>
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/frame.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <machine/bus.h>
+#include <machine/fdt.h>
+
+#define AM335X_NUM_TIMERS	8
+
+#define DMTIMER_TIDR		0x00 /* Identification Register */
+#define DMTIMER_TIOCP_CFG	0x10 /* Timer OCP Configuration Reg */
+#define DMTIMER_IQR_EOI		0x20 /* Timer IRQ End-Of-Interrupt Reg */
+#define DMTIMER_IRQSTATUS_RAW	0x24 /* Timer IRQSTATUS Raw Reg */
+#define DMTIMER_IRQSTATUS	0x28 /* Timer IRQSTATUS Reg */
+#define DMTIMER_IRQENABLE_SET	0x2c /* Timer IRQSTATUS Set Reg */
+#define DMTIMER_IRQENABLE_CLR	0x30 /* Timer IRQSTATUS Clear Reg */
+#define DMTIMER_IRQWAKEEN	0x34 /* Timer IRQ Wakeup Enable Reg */
+#define DMTIMER_TCLR		0x38 /* Timer Control Register */
+#define DMTIMER_TCRR		0x3C /* Timer Counter Register */
+#define DMTIMER_TLDR		0x40 /* Timer Load Reg */
+#define DMTIMER_TTGR		0x44 /* Timer Trigger Reg */
+#define DMTIMER_TWPS		0x48 /* Timer Write Posted Status Reg */
+#define DMTIMER_TMAR		0x4C /* Timer Match Reg */
+#define DMTIMER_TCAR1		0x50 /* Timer Capture Reg */
+#define DMTIMER_TSICR		0x54 /* Timer Synchr. Interface Control Reg */
+#define DMTIMER_TCAR2		0x48 /* Timer Capture Reg */
+ 
+
+struct am335x_dmtimer_softc {
+	struct resource *	tmr_mem_res[AM335X_NUM_TIMERS];
+	struct resource *	tmr_irq_res[AM335X_NUM_TIMERS];
+	uint32_t		clkfreq;
+	struct am335x_dmtimer {
+		bus_space_tag_t		bst;
+		bus_space_handle_t	bsh;
+		struct eventtimer	et;
+	} t[AM335X_NUM_TIMERS];
+};
+
+static struct resource_spec am335x_dmtimer_mem_spec[] = {
+	{ SYS_RES_MEMORY,   0,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   1,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   2,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   3,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   4,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   5,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   6,  RF_ACTIVE },
+	{ SYS_RES_MEMORY,   7,  RF_ACTIVE },
+	{ -1,               0,  0 }
+};
+static struct resource_spec am335x_dmtimer_irq_spec[] = {
+	{ SYS_RES_IRQ,      0,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      1,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      2,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      3,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      4,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      5,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      6,  RF_ACTIVE },
+	{ SYS_RES_IRQ,      7,  RF_ACTIVE },
+	{ -1,               0,  0 }
+};
+
+static struct am335x_dmtimer *am335x_dmtimer_tc_tmr = NULL;
+
+/* Read/Write macros for Timer used as timecounter */
+#define am335x_dmtimer_tc_read_4(reg)		\
+	bus_space_read_4(am335x_dmtimer_tc_tmr->bst, \
+		am335x_dmtimer_tc_tmr->bsh, reg)
+
+#define am335x_dmtimer_tc_write_4(reg, val)	\
+	bus_space_write_4(am335x_dmtimer_tc_tmr->bst, \
+		am335x_dmtimer_tc_tmr->bsh, reg, val)
+
+/* Read/Write macros for Timer used as eventtimer */
+#define am335x_dmtimer_et_read_4(reg)		\
+	bus_space_read_4(tmr->bst, tmr->bsh, reg)
+
+#define am335x_dmtimer_et_write_4(reg, val)	\
+	bus_space_write_4(tmr->bst, tmr->bsh, reg, val)
+
+static unsigned am335x_dmtimer_tc_get_timecount(struct timecounter *);
+
+static struct timecounter am335x_dmtimer_tc = {
+	.tc_name           = "AM335x Timecouter",
+	.tc_get_timecount  = am335x_dmtimer_tc_get_timecount,
+	.tc_poll_pps       = NULL,
+	.tc_counter_mask   = ~0u,
+	.tc_frequency      = 0,
+	.tc_quality        = 1000,
+};
+
+static unsigned
+am335x_dmtimer_tc_get_timecount(struct timecounter *tc)
+{
+	return am335x_dmtimer_tc_read_4(DMTIMER_TCRR);
+}
+
+static int
+am335x_dmtimer_start(struct eventtimer *et, struct bintime *first,
+              struct bintime *period)
+{
+	struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)et->et_priv;
+	uint32_t load, count;
+	uint32_t tclr = 0;
+
+	if (period != NULL) {
+		load = (et->et_frequency * (period->frac >> 32)) >> 32;
+		if (period->sec > 0)
+			load += et->et_frequency * period->sec;
+		tclr |= 2; /* autoreload bit */
+		panic("periodic timer not implemented\n");
+	} else {
+		load = 0;
+	}
+
+	if (first != NULL) {
+		count = (tmr->et.et_frequency * (first->frac >> 32)) >> 32;
+		if (first->sec != 0)
+			count += tmr->et.et_frequency * first->sec;
+	} else {
+		count = load;
+	}
+
+	/* Reset Timer */
+	am335x_dmtimer_et_write_4(DMTIMER_TSICR, 2);
+
+	/* Wait for reset to complete */
+	while (am335x_dmtimer_et_read_4(DMTIMER_TIOCP_CFG) & 1);
+
+	/* set load value */
+	am335x_dmtimer_et_write_4(DMTIMER_TLDR, 0xFFFFFFFE - load);
+
+	/* set counter value */
+	am335x_dmtimer_et_write_4(DMTIMER_TCRR, 0xFFFFFFFE - count);
+
+	/* enable overflow interrupt */
+	am335x_dmtimer_et_write_4(DMTIMER_IRQENABLE_SET, 2);
+
+	/* start timer(ST) */
+	tclr |= 1;
+	am335x_dmtimer_et_write_4(DMTIMER_TCLR, tclr);
+
+	return (0);
+}
+
+static int
+am335x_dmtimer_stop(struct eventtimer *et)
+{
+	struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)et->et_priv;
+
+	/* Disable all interrupts */
+	am335x_dmtimer_et_write_4(DMTIMER_IRQENABLE_CLR, 7);
+
+	/* Stop Timer */
+	am335x_dmtimer_et_write_4(DMTIMER_TCLR, 0);
+
+	return (0);
+}
+
+static int
+am335x_dmtimer_intr(void *arg)
+{
+	struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)arg;
+
+	/* Ack interrupt */
+	am335x_dmtimer_et_write_4(DMTIMER_IRQSTATUS, 7);
+	if (tmr->et.et_active)
+		tmr->et.et_event_cb(&tmr->et, tmr->et.et_arg);
+
+	return (FILTER_HANDLED);
+}
+
+static int
+am335x_dmtimer_probe(device_t dev)
+{
+	struct	am335x_dmtimer_softc *sc;
+	sc = (struct am335x_dmtimer_softc *)device_get_softc(dev);
+
+	if (ofw_bus_is_compatible(dev, "ti,am335x-dmtimer")) {
+		device_set_desc(dev, "AM335x DMTimer");
+		return(BUS_PROBE_DEFAULT);
+	}
+
+	return (ENXIO);
+}
+
+static int
+am335x_dmtimer_attach(device_t dev)
+{
+	struct am335x_dmtimer_softc *sc = device_get_softc(dev);
+	phandle_t node;
+	pcell_t clock;
+	void *ihl;
+	int err;
+	int i;
+
+	if (am335x_dmtimer_tc_tmr != NULL)
+		return (EINVAL);
+
+	/* Get the base clock frequency */
+	node = ofw_bus_get_node(dev);
+	if ((OF_getprop(node, "clock-frequency", &clock, sizeof(clock))) <= 0) {
+		device_printf(dev, "missing clock-frequency attribute in FDT\n");
+		return (ENXIO);
+	}
+	sc->clkfreq = fdt32_to_cpu(clock);
+
+	/* Request the memory resources */
+	err = bus_alloc_resources(dev, am335x_dmtimer_mem_spec,
+		sc->tmr_mem_res);
+	if (err) {
+		device_printf(dev, "Error: could not allocate mem resources\n");
+		return (ENXIO);
+	}
+
+	/* Request the IRQ resources */
+	err = bus_alloc_resources(dev, am335x_dmtimer_irq_spec,
+		sc->tmr_irq_res);
+	if (err) {
+		device_printf(dev, "Error: could not allocate irq resources\n");
+		return (ENXIO);
+	}
+
+	for(i=0;i<AM335X_NUM_TIMERS;i++) {
+		sc->t[i].bst = rman_get_bustag(sc->tmr_mem_res[i]);
+		sc->t[i].bsh = rman_get_bushandle(sc->tmr_mem_res[i]);
+	}
+
+	/* Take DMTimer2 for TC */
+	am335x_dmtimer_tc_tmr = &sc->t[2];
+
+	/* Reset Timer */
+	am335x_dmtimer_tc_write_4(DMTIMER_TSICR, 2);
+
+	/* Wait for reset to complete */
+	while (am335x_dmtimer_tc_read_4(DMTIMER_TIOCP_CFG) & 1);
+
+	/* set load value */
+	am335x_dmtimer_tc_write_4(DMTIMER_TLDR, 0);
+
+	/* set counter value */
+	am335x_dmtimer_tc_write_4(DMTIMER_TCRR, 0);
+
+	/* Set Timer autoreload(AR) and start timer(ST) */
+	am335x_dmtimer_tc_write_4(DMTIMER_TCLR, 3);
+
+	am335x_dmtimer_tc.tc_frequency = sc->clkfreq;
+	tc_init(&am335x_dmtimer_tc);
+
+	/* Setup and enable the timer */
+	if (bus_setup_intr(dev, sc->tmr_irq_res[3], INTR_TYPE_CLK,
+			am335x_dmtimer_intr, NULL, &sc->t[3], &ihl) != 0) {
+		bus_release_resources(dev, am335x_dmtimer_irq_spec,
+			sc->tmr_irq_res);
+		device_printf(dev, "Unable to setup the clock irq handler.\n");
+		return (ENXIO);
+	}
+
+	sc->t[3].et.et_name = "AM335x Eventtimer0";
+	sc->t[3].et.et_flags = ET_FLAGS_PERIODIC | ET_FLAGS_ONESHOT;
+	sc->t[3].et.et_quality = 1000;
+	sc->t[3].et.et_frequency = sc->clkfreq;
+	sc->t[3].et.et_min_period.sec = 0;
+	sc->t[3].et.et_min_period.frac =
+	    ((0x00000002LLU << 32) / sc->t[3].et.et_frequency) << 32;
+	sc->t[3].et.et_max_period.sec = 0xfffffff0U / sc->t[3].et.et_frequency;
+	sc->t[3].et.et_max_period.frac =
+	    ((0xfffffffeLLU << 32) / sc->t[3].et.et_frequency) << 32;
+	sc->t[3].et.et_start = am335x_dmtimer_start;
+	sc->t[3].et.et_stop = am335x_dmtimer_stop;
+	sc->t[3].et.et_priv = &sc->t[3];
+	et_register(&sc->t[3].et);
+
+	return (0);
+}
+
+static device_method_t am335x_dmtimer_methods[] = {
+	DEVMETHOD(device_probe,		am335x_dmtimer_probe),
+	DEVMETHOD(device_attach,	am335x_dmtimer_attach),
+	{ 0, 0 }
+};
+
+static driver_t am335x_dmtimer_driver = {
+	"am335x-dmtimer",
+	am335x_dmtimer_methods,
+	sizeof(struct am335x_dmtimer_softc),
+};
+
+static devclass_t am335x_dmtimer_devclass;
+
+DRIVER_MODULE(am335x_dmtimer, simplebus, am335x_dmtimer_driver, am335x_dmtimer_devclass, 0, 0);
+
+void
+cpu_initclocks(void)
+{
+	cpu_initclocks_bsp();
+}
+
+void
+DELAY(int usec)
+{
+		int32_t counts;
+	uint32_t first, last;
+
+	if (am335x_dmtimer_tc_tmr == NULL) {
+		for (; usec > 0; usec--)
+			for (counts = 200; counts > 0; counts--)
+				/* Prevent gcc from optimizing  out the loop */
+				cpufunc_nullop();
+		return;
+	}
+
+	/* Get the number of times to count */
+	counts = usec * ((am335x_dmtimer_tc.tc_frequency / 1000000) + 1);;
+
+	first = am335x_dmtimer_tc_read_4(DMTIMER_TCRR);
+
+	while (counts > 0) {
+		last = am335x_dmtimer_tc_read_4(DMTIMER_TCRR);
+		if (last>first) {
+			counts -= (int32_t)(last - first);
+		} else {
+			counts -= (int32_t)((0xFFFFFFFF - first) + last);
+		}
+		first = last;
+	}
+}
+

Added: projects/armv6/sys/arm/ti/am335x/am335x_prcm.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/am335x_prcm.c	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,156 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@Freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/rman.h>
+#include <sys/timeet.h>
+#include <sys/timetc.h>
+#include <sys/watchdog.h>
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/frame.h>
+#include <machine/intr.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <machine/bus.h>
+#include <machine/fdt.h>
+
+#define CM_PER				0
+#define CM_PER_L4LS_CLKSTCTRL		(CM_PER + 0x00)
+#define CM_PER_TIMER7_CLKCTRL		(CM_PER + 0x7C)
+#define CM_PER_TIMER2_CLKCTRL		(CM_PER + 0x80)
+#define CM_PER_TIMER3_CLKCTRL		(CM_PER + 0x84)
+#define CM_PER_TIMER4_CLKCTRL		(CM_PER + 0x88)
+#define CM_PER_TIMER5_CLKCTRL		(CM_PER + 0xEC)
+#define CM_PER_TIMER6_CLKCTRL		(CM_PER + 0xF0)
+
+#define CM_DPLL				0x500
+#define CLKSEL_TIMER7_CLK		(CM_DPLL + 0x04)
+#define CLKSEL_TIMER2_CLK		(CM_DPLL + 0x08)
+#define CLKSEL_TIMER3_CLK		(CM_DPLL + 0x0C)
+#define CLKSEL_TIMER4_CLK		(CM_DPLL + 0x10)
+#define CLKSEL_TIMER5_CLK		(CM_DPLL + 0x18)
+#define CLKSEL_TIMER6_CLK		(CM_DPLL + 0x1C)
+
+struct am335x_prcm_softc {
+	struct resource *	res[2];
+	bus_space_tag_t		bst;
+	bus_space_handle_t	bsh;
+};
+
+static struct resource_spec am335x_prcm_spec[] = {
+	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },
+	{ -1, 0 }
+};
+
+static struct am335x_prcm_softc *am335x_prcm_sc = NULL;
+
+/* Read/Write macros */
+#define prcm_read_4(reg)		\
+	bus_space_read_4(am335x_prcm_sc->bst, am335x_prcm_sc->bsh, reg)
+#define prcm_write_4(reg, val)		\
+	bus_space_write_4(am335x_prcm_sc->bst, am335x_prcm_sc->bsh, reg, val)
+
+static int
+am335x_prcm_probe(device_t dev)
+{
+	struct	am335x_prcm_softc *sc;
+	sc = (struct am335x_prcm_softc *)device_get_softc(dev);
+
+	if (ofw_bus_is_compatible(dev, "am335x,prcm")) {
+		device_set_desc(dev, "AM335x PRCM");
+		return(BUS_PROBE_DEFAULT);
+	}
+
+	return (ENXIO);
+}
+
+static int
+am335x_prcm_attach(device_t dev)
+{
+	struct am335x_prcm_softc *sc = device_get_softc(dev);
+
+	if (am335x_prcm_sc)
+		return (ENXIO);
+
+	if (bus_alloc_resources(dev, am335x_prcm_spec, sc->res)) {
+		device_printf(dev, "could not allocate resources\n");
+		return (ENXIO);
+	}
+
+	sc->bst = rman_get_bustag(sc->res[0]);
+	sc->bsh = rman_get_bushandle(sc->res[0]);
+
+	am335x_prcm_sc = sc;
+
+	/* Select CLK_M_OSC clock for Timer 2 */
+	prcm_write_4(CLKSEL_TIMER2_CLK,1);
+        while ((prcm_read_4(CLKSEL_TIMER2_CLK) & 0x1) != 1);
+
+	/* Enable Timer 2 Module */
+	prcm_write_4(CM_PER_TIMER2_CLKCTRL, 2);
+        while ((prcm_read_4(CM_PER_TIMER2_CLKCTRL) & 0x3) != 2);
+
+	/* Select CLK_M_OSC clock for Timer 3 */
+	prcm_write_4(CLKSEL_TIMER3_CLK,1);
+        while ((prcm_read_4(CLKSEL_TIMER3_CLK) & 0x1) != 1);
+
+	/* Enable Timer 3 Module */
+	prcm_write_4(CM_PER_TIMER3_CLKCTRL, 2);
+        while ((prcm_read_4(CM_PER_TIMER3_CLKCTRL) & 0x3) != 2);
+
+	return (0);
+}
+
+static device_method_t am335x_prcm_methods[] = {
+	DEVMETHOD(device_probe,		am335x_prcm_probe),
+	DEVMETHOD(device_attach,	am335x_prcm_attach),
+	{ 0, 0 }
+};
+
+static driver_t am335x_prcm_driver = {
+	"am335x-prcm",
+	am335x_prcm_methods,
+	sizeof(struct am335x_prcm_softc),
+};
+
+static devclass_t am335x_prcm_devclass;
+
+DRIVER_MODULE(am335x_prcm, simplebus, am335x_prcm_driver,
+	am335x_prcm_devclass, 0, 0);
+

Added: projects/armv6/sys/arm/ti/am335x/am335x_reg.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/am335x_reg.h	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,39 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@Freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _AM335X_REG_H_
+#define _AM335X_REG_H_
+
+#define AM335X_L4_WKUP_BASE			0x44C00000
+#define AM335X_L4_WKUP_SIZE			0x400000
+
+#define AM335X_CONTROL_BASE			AM335X_L4_WKUP_BASE + 0x210000
+#define AM335X_CONTROL_SIZE			0x2000
+#define AM335X_CONTROL_DEVICE_ID		0x0600
+#define AM335X_CONTROL_DEV_FEATURE		0x0604
+
+#endif
+

Added: projects/armv6/sys/arm/ti/am335x/files.am335x
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/files.am335x	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,20 @@
+#$FreeBSD$
+
+kern/kern_clocksource.c				standard
+
+arm/arm/bus_space_generic.c			standard
+arm/arm/bus_space_asm_generic.S			standard
+arm/arm/cpufunc_asm_armv5.S			standard
+arm/arm/cpufunc_asm_arm10.S			standard
+arm/arm/cpufunc_asm_arm11.S			standard
+arm/arm/cpufunc_asm_armv7.S			standard
+arm/arm/irq_dispatch.S				standard
+
+arm/ti/ti_machdep.c				standard
+arm/ti/aintc.c					standard
+
+arm/ti/am335x/am335x_prcm.c			standard
+arm/ti/am335x/am335x_dmtimer.c			standard
+arm/ti/am335x/if_cpsw.c				standard
+
+dev/uart/uart_dev_ns8250.c			optional	uart

Added: projects/armv6/sys/arm/ti/am335x/std.am335x
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/std.am335x	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,21 @@
+# AM335x generic configuration
+#$FreeBSD$
+files		"../ti/am335x/files.am335x"
+include		"../ti/std.ti"
+makeoption	ARM_LITTLE_ENDIAN
+
+# Physical memory starts at 0x80000000.  We assume images are loaded at
+# 0x80200000, e.g. from u-boot with 'fatload mmc 0 0x80200000 kernel.bin'
+#
+#
+options		PHYSADDR=0x80000000
+options		KERNPHYSADDR=0x80200000
+makeoptions	KERNPHYSADDR=0x80200000
+options		KERNVIRTADDR=0xc0200000		# Used in ldscript.arm
+makeoptions	KERNVIRTADDR=0xc0200000
+
+options		STARTUP_PAGETABLE_ADDR=0x80000000
+
+options		SOC_TI_AM335X
+
+options		ARM_L2_PIPT

Added: projects/armv6/sys/arm/ti/am335x/std.beaglebone
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/std.beaglebone	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+include	"../ti/am335x/std.am335x"

Modified: projects/armv6/sys/arm/ti/omap4/std.omap4
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/std.omap4	Thu Feb 16 14:08:14 2012	(r231821)
+++ projects/armv6/sys/arm/ti/omap4/std.omap4	Thu Feb 16 14:42:35 2012	(r231822)
@@ -1,7 +1,7 @@
 # Omap4430 generic configuration
 #$FreeBSD$
 files		"../ti/omap4/files.omap4"
-include		"../ti/std.omap"
+include		"../ti/std.ti"
 makeoption	ARM_LITTLE_ENDIAN
 
 # Physical memory starts at 0x80000000.  We assume images are loaded at

Added: projects/armv6/sys/arm/ti/std.ti
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/std.ti	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+# This should be armv7-a but current gcc doesn't support it
+# makeoptions	CONF_CFLAGS=-march=armv6
+
+cpu 		CPU_CORTEXA

Modified: projects/armv6/sys/arm/ti/ti_cpuid.c
==============================================================================
--- projects/armv6/sys/arm/ti/ti_cpuid.c	Thu Feb 16 14:08:14 2012	(r231821)
+++ projects/armv6/sys/arm/ti/ti_cpuid.c	Thu Feb 16 14:42:35 2012	(r231822)
@@ -51,9 +51,7 @@ __FBSDID("$FreeBSD$");
 
 #include <arm/ti/omap4/omap4_reg.h>
 #include <arm/ti/omap3/omap3_reg.h>
-#ifdef notyet
 #include <arm/ti/am335x/am335x_reg.h>
-#endif
 
 #define OMAP4_STD_FUSE_DIE_ID_0    0x2200
 #define OMAP4_ID_CODE              0x2204
@@ -216,7 +214,6 @@ omap3_get_revision(void)
 		OMAP_REV_MINOR(chip_revision));
 }
 
-#ifdef notyet
 static void
 am335x_get_revision(void)
 {
@@ -255,7 +252,6 @@ am335x_get_revision(void)
 	printf("Texas Instruments AM335%c Processor, Revision ES1.%u\n",
 		cpu_last_char, AM335X_DEVREV(chip_revision));
 }
-#endif
 
 /**
  *	ti_cpu_ident - attempts to identify the chip we are running on
@@ -278,11 +274,9 @@ ti_cpu_ident(void *dummy)
 	case CHIP_OMAP_4:
 		omap4_get_revision();
 		break;
-#ifdef notyet
 	case CHIP_AM335X:
 		am335x_get_revision();
 		break;
-#endif
 	default:
 		panic("Unknown chip type, fixme!\n");
 	}

Added: projects/armv6/sys/boot/fdt/dts/beaglebone.dts
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/boot/fdt/dts/beaglebone.dts	Thu Feb 16 14:42:35 2012	(r231822)
@@ -0,0 +1,118 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@Freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/dts-v1/;
+
+/ {
+	model = "beaglebone";
+	compatible = "beaglebone", "ti,am335x";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	interrupt-parent = <&AINTC>;
+
+	aliases {
+		soc = &SOC;
+		uart0 = &uart0;
+	};
+
+	memory {
+		device_type = "memory";
+		reg = < 0x80000000 0x10000000 >;	/* 256MB RAM */
+	};
+
+	SOC: am335x {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "simple-bus";
+		ranges;
+		bus-frequency = <0>;
+
+		AINTC: interrupt-controller@48200000 {
+			compatible = "ti,aintc";
+			interrupt-controller;
+			#address-cells = <0>;
+			#interrupt-cells = <1>;
+			reg =	< 0x48200000 0x1000 >;
+		};
+
+		prcm@44E00000 {
+			compatible = "am335x,prcm";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg = < 0x44E00000 0x1300 >;
+		};
+
+		dmtimers@44E05000 {
+			compatible = "ti,am335x-dmtimer";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg =	< 0x44E05000 0x1000
+				  0x44E31000 0x1000
+				  0x48040000 0x1000
+				  0x48042000 0x1000
+				  0x48044000 0x1000
+				  0x48046000 0x1000
+				  0x48048000 0x1000
+				  0x4804A000 0x1000 >;
+			interrupts = < 66 67 68 69 92 93 94 95 >;
+			interrupt-parent = <&AINTC>;
+			clock-frequency = < 24000000 >;
+		};
+
+		uart0: serial@44E09000 {
+			compatible = "ns16550";
+			reg = <0x44E09000 0x1000>;
+			reg-shift = <2>;
+			interrupts = < 72 >;
+			interrupt-parent = <&AINTC>;
+			clock-frequency = < 48000000 >; /* FIXME */
+		};
+
+		enet0: ethernet@4A100000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "ti,cpsw";
+			reg = <0x4A100000 0x2000>;
+			interrupts = <40 41 42 43>;
+			interrupt-parent = <&AINTC>;
+			phy-handle = <&phy0>;
+			mdio@0 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "ti,cpsw-mdio";
+				phy0: ethernet-phy@0 {
+					reg = <0x0>;
+				};
+			};
+		};
+	};
+

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

From owner-svn-src-projects@FreeBSD.ORG  Thu Feb 16 15:04:12 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 2195B1065672;
	Thu, 16 Feb 2012 15:04:12 +0000 (UTC)
	(envelope-from dmarion@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E6DC08FC15;
	Thu, 16 Feb 2012 15:04:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GF4BCa021943;
	Thu, 16 Feb 2012 15:04:11 GMT (envelope-from dmarion@svn.freebsd.org)
Received: (from dmarion@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GF4BT3021940;
	Thu, 16 Feb 2012 15:04:11 GMT (envelope-from dmarion@svn.freebsd.org)
Message-Id: <201202161504.q1GF4BT3021940@svn.freebsd.org>
From: Damjan Marion <dmarion@FreeBSD.org>
Date: Thu, 16 Feb 2012 15:04:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231826 - projects/armv6/sys/arm/ti
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2012 15:04:12 -0000

Author: dmarion
Date: Thu Feb 16 15:04:11 2012
New Revision: 231826
URL: http://svn.freebsd.org/changeset/base/231826

Log:
  Keep FDT interrupt decode in arm/ti/common.c
  
  Approved by:	cognet (mentor)

Modified:
  projects/armv6/sys/arm/ti/aintc.c
  projects/armv6/sys/arm/ti/common.c

Modified: projects/armv6/sys/arm/ti/aintc.c
==============================================================================
--- projects/armv6/sys/arm/ti/aintc.c	Thu Feb 16 14:54:51 2012	(r231825)
+++ projects/armv6/sys/arm/ti/aintc.c	Thu Feb 16 15:04:11 2012	(r231826)
@@ -167,25 +167,3 @@ arm_unmask_irq(uintptr_t nb)
 {
 	aintc_write_4(INTC_MIR_CLEAR(nb >> 5), (1UL << (nb & 0x1F)));
 }
-
-static int
-fdt_ti_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
-    int *pol)
-{
-
-	if (!fdt_is_compatible(node, "ti,aintc"))
-		return (ENXIO);
-
-	*interrupt = fdt32_to_cpu(intr[0]);
-	*trig = INTR_TRIGGER_CONFORM;
-	*pol = INTR_POLARITY_CONFORM;
-
-	return (0);
-}
-
-fdt_pic_decode_t fdt_pic_table[] = {
-	&fdt_ti_aintc_decode_ic,
-	NULL
-};
-
-

Modified: projects/armv6/sys/arm/ti/common.c
==============================================================================
--- projects/armv6/sys/arm/ti/common.c	Thu Feb 16 14:54:51 2012	(r231825)
+++ projects/armv6/sys/arm/ti/common.c	Thu Feb 16 15:04:11 2012	(r231826)
@@ -53,6 +53,7 @@ struct fdt_fixup_entry fdt_fixup_table[]
 	{ NULL, NULL }
 };
 
+#ifdef SOC_OMAP4
 static int
 fdt_gic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
     int *pol)
@@ -67,8 +68,31 @@ fdt_gic_decode_ic(phandle_t node, pcell_
 
 	return (0);
 }
+#endif
+
+#ifdef SOC_TI_AM335X
+static int
+fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig,
+    int *pol)
+{
+
+	if (!fdt_is_compatible(node, "ti,aintc"))
+		return (ENXIO);
+
+	*interrupt = fdt32_to_cpu(intr[0]);
+	*trig = INTR_TRIGGER_CONFORM;
+	*pol = INTR_POLARITY_CONFORM;
+
+	return (0);
+}
+#endif
 
 fdt_pic_decode_t fdt_pic_table[] = {
+#ifdef SOC_OMAP4
 	&fdt_gic_decode_ic,
+#endif
+#ifdef SOC_TI_AM335X
+	&fdt_aintc_decode_ic,
+#endif
 	NULL
 };

From owner-svn-src-projects@FreeBSD.ORG  Thu Feb 16 15:36:05 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C98321065672;
	Thu, 16 Feb 2012 15:36:05 +0000 (UTC)
	(envelope-from dmarion@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A8D098FC17;
	Thu, 16 Feb 2012 15:36:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GFa5hV022996;
	Thu, 16 Feb 2012 15:36:05 GMT (envelope-from dmarion@svn.freebsd.org)
Received: (from dmarion@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GFa5qr022995;
	Thu, 16 Feb 2012 15:36:05 GMT (envelope-from dmarion@svn.freebsd.org)
Message-Id: <201202161536.q1GFa5qr022995@svn.freebsd.org>
From: Damjan Marion <dmarion@FreeBSD.org>
Date: Thu, 16 Feb 2012 15:36:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231827 - projects/armv6/sys/arm/conf
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2012 15:36:05 -0000

Author: dmarion
Date: Thu Feb 16 15:36:05 2012
New Revision: 231827
URL: http://svn.freebsd.org/changeset/base/231827

Log:
  BEAGLEBONE conf file
  
  Approved by:	cognet (mentor)

Added:
  projects/armv6/sys/arm/conf/BEAGLEBONE

Added: projects/armv6/sys/arm/conf/BEAGLEBONE
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/conf/BEAGLEBONE	Thu Feb 16 15:36:05 2012	(r231827)
@@ -0,0 +1,133 @@
+# BEAGLEBONE -- Custom configuration for the BeagleBone ARM development
+# platform, check out www.beagleboard.org/bone
+#
+# For more information on this file, please read the handbook section on
+# Kernel Configuration Files:
+#
+#    http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
+#
+# The handbook is also available locally in /usr/share/doc/handbook
+# if you've installed the doc distribution, otherwise always see the
+# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
+# latest information.
+#
+# An exhaustive list of options and more detailed explanations of the
+# device lines is also present in the ../../conf/NOTES and NOTES files.
+# If you are in doubt as to the purpose or necessity of a line, check first
+# in NOTES.
+#
+# $FreeBSD$
+
+ident		BEAGLEBONE
+
+
+
+# This probably wants to move somewhere else.  Maybe we can create a basic
+# OMAP4340 config, then make a PANDABOARD config that includes the basic one,
+# adds the start addresses and custom devices plus pulls in this hints file.
+
+include     "../ti/am335x/std.beaglebone"
+
+#To statically compile in device wiring instead of /boot/device.hints
+makeoptions	MODULES_OVERRIDE=""
+makeoptions WITHOUT_MODULES="ahc"
+
+makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols
+options		HZ=100
+
+options		SCHED_4BSD		#4BSD scheduler
+options		INET			#InterNETworking
+#options	INET6			#IPv6 communications protocols
+options		FFS			#Berkeley Fast Filesystem
+options		SOFTUPDATES		#Enable FFS soft updates support
+options		UFS_ACL			#Support for access control lists
+options		UFS_DIRHASH		#Improve performance on big directories
+#options	MD_ROOT			#MD is a potential root device
+#options	MD_ROOT_SIZE=6144
+#options	ROOTDEVNAME=\"ufs:md0\"
+options		NFSCLIENT		#Network Filesystem Client
+device		snp
+#options	NFSCL
+#options	NFSSERVER		#Network Filesystem Server
+options		NFS_ROOT		#NFS usable as /, requires NFSCLIENT
+options		BREAK_TO_DEBUGGER
+options		BOOTP_NFSROOT
+options		BOOTP_COMPAT
+options		BOOTP
+options		BOOTP_NFSV3
+options		BOOTP_WIRED_TO=cpsw0
+options		MSDOSFS			#MSDOS Filesystem
+#options	CD9660			#ISO 9660 Filesystem
+#options	PROCFS			#Process filesystem (requires PSEUDOFS)
+options		PSEUDOFS		#Pseudo-filesystem framework
+options		COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]
+options		SCSI_DELAY=5000		#Delay (in ms) before probing SCSI
+options		KTRACE			#ktrace(1) support
+options		SYSVSHM			#SYSV-style shared memory
+options		SYSVMSG			#SYSV-style message queues
+options		SYSVSEM			#SYSV-style semaphores
+options		_KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
+options		KBD_INSTALL_CDEV	# install a CDEV entry in /dev
+
+options		PREEMPTION
+
+# MMC/SD/SDIO Card slot support
+device		mmc				# mmc/sd bus
+device		mmcsd			# mmc/sd flash cards
+
+# I2C support
+#device		iicbus
+#device		iic
+#device		omap3_i2c
+
+device		loop
+device		ether
+device		mii
+device		smcphy
+device		uart
+device		uart_ns8250
+
+device		gpio
+
+device		pty
+
+# Debugging for use in -current
+#options	VERBOSE_SYSINIT		#Enable verbose sysinit messages
+options		KDB
+options		DDB			#Enable the kernel debugger
+options		INVARIANTS		#Enable calls of extra sanity checking
+options		INVARIANT_SUPPORT	#Extra sanity checks of internal structures, required by INVARIANTS
+options		WITNESS			#Enable checks to detect deadlocks and cycles
+options		WITNESS_SKIPSPIN	#Don't run witness on spinlocks for speed
+#options	DIAGNOSTIC
+
+device		md
+
+# The following enables MFS as root, this seems similar to an initramfs or initrd
+# as used in Linux.
+# options		MD_ROOT
+# options		MD_ROOT_SIZE=7560
+
+device		random		# Entropy device
+
+# USB support
+device		usb
+options		USB_DEBUG
+#options	USB_REQ_DEBUG
+#options		USB_VERBOSE
+device		ohci
+device		ehci
+device		umass
+device		scbus		# SCSI bus (required for SCSI)
+device		da		# Direct Access (disks)
+
+
+# USB Ethernet support, requires miibus
+device		miibus
+device		axe			# ASIX Electronics USB Ethernet
+
+# Flattened Device Tree
+options         FDT
+options         FDT_DTB_STATIC
+makeoptions     FDT_DTS_FILE=beaglebone.dts
+

From owner-svn-src-projects@FreeBSD.ORG  Fri Feb 17 00:27:50 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AC2E2106564A;
	Fri, 17 Feb 2012 00:27:50 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 970AA8FC16;
	Fri, 17 Feb 2012 00:27:50 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1H0RorO041530;
	Fri, 17 Feb 2012 00:27:50 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1H0RoTi041495;
	Fri, 17 Feb 2012 00:27:50 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202170027.q1H0RoTi041495@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Fri, 17 Feb 2012 00:27:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231846 - in projects/multi-fibv6/head: . bin/sh
	cddl/contrib/opensolaris/cmd/zfs contrib/gcc
	contrib/llvm/tools/bugpoint contrib/llvm/tools/llc
	contrib/llvm/tools/lli contrib/llvm/tool...
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Feb 2012 00:27:50 -0000

Author: bz
Date: Fri Feb 17 00:27:48 2012
New Revision: 231846
URL: http://svn.freebsd.org/changeset/base/231846

Log:
  IFC @231845
  
  Sponsored by:	Cisco Systems, Inc.

Added:
  projects/multi-fibv6/head/contrib/llvm/tools/bugpoint/
     - copied from r231845, head/contrib/llvm/tools/bugpoint/
  projects/multi-fibv6/head/contrib/llvm/tools/llc/
     - copied from r231845, head/contrib/llvm/tools/llc/
  projects/multi-fibv6/head/contrib/llvm/tools/lli/
     - copied from r231845, head/contrib/llvm/tools/lli/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-ar/
     - copied from r231845, head/contrib/llvm/tools/llvm-ar/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-as/
     - copied from r231845, head/contrib/llvm/tools/llvm-as/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-bcanalyzer/
     - copied from r231845, head/contrib/llvm/tools/llvm-bcanalyzer/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-diff/
     - copied from r231845, head/contrib/llvm/tools/llvm-diff/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-dis/
     - copied from r231845, head/contrib/llvm/tools/llvm-dis/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-extract/
     - copied from r231845, head/contrib/llvm/tools/llvm-extract/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-ld/
     - copied from r231845, head/contrib/llvm/tools/llvm-ld/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-link/
     - copied from r231845, head/contrib/llvm/tools/llvm-link/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-mc/
     - copied from r231845, head/contrib/llvm/tools/llvm-mc/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-nm/
     - copied from r231845, head/contrib/llvm/tools/llvm-nm/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-objdump/
     - copied from r231845, head/contrib/llvm/tools/llvm-objdump/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-prof/
     - copied from r231845, head/contrib/llvm/tools/llvm-prof/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-ranlib/
     - copied from r231845, head/contrib/llvm/tools/llvm-ranlib/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-rtdyld/
     - copied from r231845, head/contrib/llvm/tools/llvm-rtdyld/
  projects/multi-fibv6/head/contrib/llvm/tools/llvm-stub/
     - copied from r231845, head/contrib/llvm/tools/llvm-stub/
  projects/multi-fibv6/head/contrib/llvm/tools/macho-dump/
     - copied from r231845, head/contrib/llvm/tools/macho-dump/
  projects/multi-fibv6/head/contrib/llvm/tools/opt/
     - copied from r231845, head/contrib/llvm/tools/opt/
  projects/multi-fibv6/head/etc/rc.d/utx
     - copied unchanged from r231845, head/etc/rc.d/utx
  projects/multi-fibv6/head/lib/clang/libllvmarchive/
     - copied from r231845, head/lib/clang/libllvmarchive/
  projects/multi-fibv6/head/lib/clang/libllvmdebuginfo/
     - copied from r231845, head/lib/clang/libllvmdebuginfo/
  projects/multi-fibv6/head/lib/clang/libllvmexecutionengine/
     - copied from r231845, head/lib/clang/libllvmexecutionengine/
  projects/multi-fibv6/head/lib/clang/libllvminterpreter/
     - copied from r231845, head/lib/clang/libllvminterpreter/
  projects/multi-fibv6/head/lib/clang/libllvmjit/
     - copied from r231845, head/lib/clang/libllvmjit/
  projects/multi-fibv6/head/lib/clang/libllvmlinker/
     - copied from r231845, head/lib/clang/libllvmlinker/
  projects/multi-fibv6/head/lib/clang/libllvmmcdisassembler/
     - copied from r231845, head/lib/clang/libllvmmcdisassembler/
  projects/multi-fibv6/head/lib/clang/libllvmmcjit/
     - copied from r231845, head/lib/clang/libllvmmcjit/
  projects/multi-fibv6/head/lib/clang/libllvmobject/
     - copied from r231845, head/lib/clang/libllvmobject/
  projects/multi-fibv6/head/lib/clang/libllvmruntimedyld/
     - copied from r231845, head/lib/clang/libllvmruntimedyld/
  projects/multi-fibv6/head/lib/libc/arm/gen/__aeabi_read_tp.c
     - copied unchanged from r231845, head/lib/libc/arm/gen/__aeabi_read_tp.c
  projects/multi-fibv6/head/share/man/man3/offsetof.3
     - copied unchanged from r231845, head/share/man/man3/offsetof.3
  projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS
     - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS
  projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS_HOST
     - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS_HOST
  projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS_UCODE
     - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS_UCODE
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/
     - copied from r231845, head/sys/contrib/dev/acpica/components/
  projects/multi-fibv6/head/sys/dev/oce/
     - copied from r231845, head/sys/dev/oce/
  projects/multi-fibv6/head/sys/modules/oce/
     - copied from r231845, head/sys/modules/oce/
  projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pci.c
     - copied unchanged from r231845, head/sys/powerpc/ofw/ofw_pci.c
  projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pci.h
     - copied unchanged from r231845, head/sys/powerpc/ofw/ofw_pci.h
  projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS
     - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS
  projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS_HOST
     - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS_HOST
  projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS_UCODE
     - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS_UCODE
  projects/multi-fibv6/head/tools/build/options/WITH_CLANG_EXTRAS
     - copied unchanged from r231845, head/tools/build/options/WITH_CLANG_EXTRAS
  projects/multi-fibv6/head/tools/regression/bin/sh/builtins/hash4.0
     - copied unchanged from r231845, head/tools/regression/bin/sh/builtins/hash4.0
  projects/multi-fibv6/head/tools/test/hwpmc/
     - copied from r231845, head/tools/test/hwpmc/
  projects/multi-fibv6/head/tools/test/ptrace/
     - copied from r231845, head/tools/test/ptrace/
  projects/multi-fibv6/head/tools/tools/fixwhite/
     - copied from r231845, head/tools/tools/fixwhite/
  projects/multi-fibv6/head/usr.bin/clang/bugpoint/
     - copied from r231845, head/usr.bin/clang/bugpoint/
  projects/multi-fibv6/head/usr.bin/clang/llc/
     - copied from r231845, head/usr.bin/clang/llc/
  projects/multi-fibv6/head/usr.bin/clang/lli/
     - copied from r231845, head/usr.bin/clang/lli/
  projects/multi-fibv6/head/usr.bin/clang/llvm-ar/
     - copied from r231845, head/usr.bin/clang/llvm-ar/
  projects/multi-fibv6/head/usr.bin/clang/llvm-as/
     - copied from r231845, head/usr.bin/clang/llvm-as/
  projects/multi-fibv6/head/usr.bin/clang/llvm-bcanalyzer/
     - copied from r231845, head/usr.bin/clang/llvm-bcanalyzer/
  projects/multi-fibv6/head/usr.bin/clang/llvm-diff/
     - copied from r231845, head/usr.bin/clang/llvm-diff/
  projects/multi-fibv6/head/usr.bin/clang/llvm-dis/
     - copied from r231845, head/usr.bin/clang/llvm-dis/
  projects/multi-fibv6/head/usr.bin/clang/llvm-extract/
     - copied from r231845, head/usr.bin/clang/llvm-extract/
  projects/multi-fibv6/head/usr.bin/clang/llvm-ld/
     - copied from r231845, head/usr.bin/clang/llvm-ld/
  projects/multi-fibv6/head/usr.bin/clang/llvm-link/
     - copied from r231845, head/usr.bin/clang/llvm-link/
  projects/multi-fibv6/head/usr.bin/clang/llvm-mc/
     - copied from r231845, head/usr.bin/clang/llvm-mc/
  projects/multi-fibv6/head/usr.bin/clang/llvm-nm/
     - copied from r231845, head/usr.bin/clang/llvm-nm/
  projects/multi-fibv6/head/usr.bin/clang/llvm-objdump/
     - copied from r231845, head/usr.bin/clang/llvm-objdump/
  projects/multi-fibv6/head/usr.bin/clang/llvm-prof/
     - copied from r231845, head/usr.bin/clang/llvm-prof/
  projects/multi-fibv6/head/usr.bin/clang/llvm-ranlib/
     - copied from r231845, head/usr.bin/clang/llvm-ranlib/
  projects/multi-fibv6/head/usr.bin/clang/llvm-rtdyld/
     - copied from r231845, head/usr.bin/clang/llvm-rtdyld/
  projects/multi-fibv6/head/usr.bin/clang/llvm-stub/
     - copied from r231845, head/usr.bin/clang/llvm-stub/
  projects/multi-fibv6/head/usr.bin/clang/macho-dump/
     - copied from r231845, head/usr.bin/clang/macho-dump/
  projects/multi-fibv6/head/usr.bin/clang/opt/
     - copied from r231845, head/usr.bin/clang/opt/
  projects/multi-fibv6/head/usr.sbin/utx/
     - copied from r231845, head/usr.sbin/utx/
Deleted:
  projects/multi-fibv6/head/sys/contrib/dev/acpica/debugger/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/disassembler/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/dispatcher/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/events/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/executer/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/hardware/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/namespace/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/parser/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/resources/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/tables/
  projects/multi-fibv6/head/sys/contrib/dev/acpica/utilities/
  projects/multi-fibv6/head/usr.sbin/utxrm/
Modified:
  projects/multi-fibv6/head/Makefile
  projects/multi-fibv6/head/UPDATING
  projects/multi-fibv6/head/bin/sh/eval.c
  projects/multi-fibv6/head/bin/sh/exec.c
  projects/multi-fibv6/head/bin/sh/jobs.c
  projects/multi-fibv6/head/bin/sh/jobs.h
  projects/multi-fibv6/head/bin/sh/var.c
  projects/multi-fibv6/head/bin/sh/var.h
  projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
  projects/multi-fibv6/head/contrib/gcc/gcc.c
  projects/multi-fibv6/head/crypto/openssh/auth2.c
  projects/multi-fibv6/head/crypto/openssh/channels.c
  projects/multi-fibv6/head/crypto/openssh/channels.h
  projects/multi-fibv6/head/crypto/openssh/kex.c
  projects/multi-fibv6/head/crypto/openssh/loginrec.c   (contents, props changed)
  projects/multi-fibv6/head/crypto/openssh/readconf.c
  projects/multi-fibv6/head/crypto/openssh/readconf.h
  projects/multi-fibv6/head/crypto/openssh/servconf.c
  projects/multi-fibv6/head/crypto/openssh/sftp.1
  projects/multi-fibv6/head/crypto/openssh/ssh.c
  projects/multi-fibv6/head/crypto/openssh/sshd.c
  projects/multi-fibv6/head/crypto/openssh/sshd_config.5
  projects/multi-fibv6/head/crypto/openssh/version.h
  projects/multi-fibv6/head/etc/Makefile
  projects/multi-fibv6/head/etc/defaults/periodic.conf
  projects/multi-fibv6/head/etc/defaults/rc.conf
  projects/multi-fibv6/head/etc/devd/usb.conf
  projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs
  projects/multi-fibv6/head/etc/rc.d/LOGIN
  projects/multi-fibv6/head/etc/rc.d/Makefile
  projects/multi-fibv6/head/etc/rc.d/SERVERS
  projects/multi-fibv6/head/etc/rc.d/addswap
  projects/multi-fibv6/head/etc/rc.d/amd
  projects/multi-fibv6/head/etc/rc.d/apmd
  projects/multi-fibv6/head/etc/rc.d/cleanvar
  projects/multi-fibv6/head/etc/rc.d/devfs
  projects/multi-fibv6/head/etc/rc.d/keyserv
  projects/multi-fibv6/head/etc/rc.d/lockd
  projects/multi-fibv6/head/etc/rc.d/mountd
  projects/multi-fibv6/head/etc/rc.d/nfsd
  projects/multi-fibv6/head/etc/rc.d/routing
  projects/multi-fibv6/head/etc/rc.d/statd
  projects/multi-fibv6/head/etc/rc.d/var
  projects/multi-fibv6/head/etc/rc.d/watchdogd
  projects/multi-fibv6/head/etc/rc.d/ypbind
  projects/multi-fibv6/head/etc/rc.d/yppasswdd
  projects/multi-fibv6/head/etc/rc.d/ypserv
  projects/multi-fibv6/head/etc/rc.d/ypset
  projects/multi-fibv6/head/etc/rc.d/ypupdated
  projects/multi-fibv6/head/etc/rc.d/ypxfrd
  projects/multi-fibv6/head/etc/rc.resume
  projects/multi-fibv6/head/etc/rc.subr
  projects/multi-fibv6/head/etc/rc.suspend
  projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/auto-host.h
  projects/multi-fibv6/head/include/rpc/Makefile
  projects/multi-fibv6/head/include/rpc/svc.h
  projects/multi-fibv6/head/include/rpcsvc/Makefile
  projects/multi-fibv6/head/lib/clang/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmanalysis/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmipa/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmipo/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmmc/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmscalaropts/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmsupport/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmtransformutils/Makefile
  projects/multi-fibv6/head/lib/clang/libllvmx86disassembler/Makefile
  projects/multi-fibv6/head/lib/libc/arm/gen/Makefile.inc
  projects/multi-fibv6/head/lib/libc/db/man/hash.3
  projects/multi-fibv6/head/lib/libc/gen/arc4random.3
  projects/multi-fibv6/head/lib/libc/gen/directory.3
  projects/multi-fibv6/head/lib/libc/gen/getutxent.3
  projects/multi-fibv6/head/lib/libc/gen/getutxent.c
  projects/multi-fibv6/head/lib/libc/gen/sysctl.3
  projects/multi-fibv6/head/lib/libc/locale/btowc.3
  projects/multi-fibv6/head/lib/libc/net/eui64.3
  projects/multi-fibv6/head/lib/libc/net/getifaddrs.c
  projects/multi-fibv6/head/lib/libc/net/nsdispatch.3
  projects/multi-fibv6/head/lib/libc/powerpc/SYS.h
  projects/multi-fibv6/head/lib/libc/powerpc/gen/setjmp.S
  projects/multi-fibv6/head/lib/libc/powerpc64/SYS.h
  projects/multi-fibv6/head/lib/libc/powerpc64/gen/setjmp.S
  projects/multi-fibv6/head/lib/libc/rpc/Makefile.inc
  projects/multi-fibv6/head/lib/libc/rpc/rpc.3
  projects/multi-fibv6/head/lib/libc/rpc/rpc_clnt_create.3
  projects/multi-fibv6/head/lib/libc/string/strerror.3
  projects/multi-fibv6/head/lib/libc/sys/getdirentries.2
  projects/multi-fibv6/head/lib/libc/sys/jail.2
  projects/multi-fibv6/head/lib/libc/sys/kqueue.2
  projects/multi-fibv6/head/lib/libc/sys/nfssvc.2
  projects/multi-fibv6/head/lib/libc/yp/Makefile.inc
  projects/multi-fibv6/head/lib/libcam/cam.3
  projects/multi-fibv6/head/lib/libcam/cam_cdbparse.3
  projects/multi-fibv6/head/lib/libdevstat/devstat.3
  projects/multi-fibv6/head/lib/libipsec/pfkey.c
  projects/multi-fibv6/head/lib/libprocstat/common_kvm.c
  projects/multi-fibv6/head/lib/libradius/libradius.3
  projects/multi-fibv6/head/lib/librpcsvc/Makefile
  projects/multi-fibv6/head/lib/libthr/arch/arm/arm/pthread_md.c
  projects/multi-fibv6/head/lib/libthr/arch/arm/include/pthread_md.h
  projects/multi-fibv6/head/lib/libthr/arch/mips/include/pthread_md.h
  projects/multi-fibv6/head/lib/libthr/arch/mips/mips/pthread_md.c
  projects/multi-fibv6/head/lib/libthr/thread/thr_list.c
  projects/multi-fibv6/head/lib/libthr/thread/thr_private.h
  projects/multi-fibv6/head/lib/libutil/login_class.c
  projects/multi-fibv6/head/lib/libutil/pidfile.3
  projects/multi-fibv6/head/lib/libutil/pidfile.c
  projects/multi-fibv6/head/lib/libutil/pw_util.c
  projects/multi-fibv6/head/lib/libypclnt/Makefile
  projects/multi-fibv6/head/libexec/rtld-elf/arm/reloc.c
  projects/multi-fibv6/head/libexec/rtld-elf/arm/rtld_machdep.h
  projects/multi-fibv6/head/libexec/rtld-elf/mips/reloc.c
  projects/multi-fibv6/head/libexec/rtld-elf/mips/rtld_machdep.h
  projects/multi-fibv6/head/libexec/rtld-elf/rtld.c
  projects/multi-fibv6/head/libexec/ypxfr/Makefile
  projects/multi-fibv6/head/release/picobsd/tinyware/passwd/Makefile
  projects/multi-fibv6/head/release/rc.local
  projects/multi-fibv6/head/rescue/rescue/Makefile
  projects/multi-fibv6/head/sbin/bsdlabel/bsdlabel.8
  projects/multi-fibv6/head/sbin/fsck_ffs/fsck_ffs.8
  projects/multi-fibv6/head/sbin/fsck_ffs/setup.c
  projects/multi-fibv6/head/sbin/fsdb/fsdbutil.c
  projects/multi-fibv6/head/sbin/hastd/parse.y
  projects/multi-fibv6/head/sbin/hastd/primary.c
  projects/multi-fibv6/head/sbin/hastd/rangelock.c
  projects/multi-fibv6/head/sbin/ifconfig/Makefile
  projects/multi-fibv6/head/sbin/ifconfig/ifconfig.c
  projects/multi-fibv6/head/sbin/init/init.8
  projects/multi-fibv6/head/sbin/init/init.c
  projects/multi-fibv6/head/sbin/ipfw/ipfw.8
  projects/multi-fibv6/head/sbin/ipfw/ipfw2.c
  projects/multi-fibv6/head/sbin/newfs_msdos/newfs_msdos.8
  projects/multi-fibv6/head/sbin/reboot/nextboot.sh
  projects/multi-fibv6/head/sbin/route/route.c
  projects/multi-fibv6/head/share/man/man3/Makefile
  projects/multi-fibv6/head/share/man/man4/ada.4
  projects/multi-fibv6/head/share/man/man4/agp.4
  projects/multi-fibv6/head/share/man/man4/cd.4
  projects/multi-fibv6/head/share/man/man4/da.4
  projects/multi-fibv6/head/share/man/man4/ed.4
  projects/multi-fibv6/head/share/man/man4/icmp6.4
  projects/multi-fibv6/head/share/man/man4/ip6.4
  projects/multi-fibv6/head/share/man/man4/isci.4   (contents, props changed)
  projects/multi-fibv6/head/share/man/man4/lmc.4
  projects/multi-fibv6/head/share/man/man4/mem.4
  projects/multi-fibv6/head/share/man/man4/mps.4
  projects/multi-fibv6/head/share/man/man4/mtio.4
  projects/multi-fibv6/head/share/man/man4/natm.4
  projects/multi-fibv6/head/share/man/man4/net80211.4
  projects/multi-fibv6/head/share/man/man4/ng_async.4
  projects/multi-fibv6/head/share/man/man4/ng_bridge.4
  projects/multi-fibv6/head/share/man/man4/ng_btsocket.4
  projects/multi-fibv6/head/share/man/man4/ng_car.4
  projects/multi-fibv6/head/share/man/man4/ng_ccatm.4
  projects/multi-fibv6/head/share/man/man4/ng_cisco.4
  projects/multi-fibv6/head/share/man/man4/ng_etf.4
  projects/multi-fibv6/head/share/man/man4/ng_hci.4
  projects/multi-fibv6/head/share/man/man4/ng_l2cap.4
  projects/multi-fibv6/head/share/man/man4/ng_l2tp.4
  projects/multi-fibv6/head/share/man/man4/ng_mppc.4
  projects/multi-fibv6/head/share/man/man4/ng_netflow.4
  projects/multi-fibv6/head/share/man/man4/ng_one2many.4
  projects/multi-fibv6/head/share/man/man4/ng_ppp.4
  projects/multi-fibv6/head/share/man/man4/ng_pppoe.4
  projects/multi-fibv6/head/share/man/man4/ng_pptpgre.4
  projects/multi-fibv6/head/share/man/man4/ppi.4
  projects/multi-fibv6/head/share/man/man4/sbp.4
  projects/multi-fibv6/head/share/man/man4/sdhci.4
  projects/multi-fibv6/head/share/man/man4/sfxge.4
  projects/multi-fibv6/head/share/man/man4/tcp.4
  projects/multi-fibv6/head/share/man/man4/u3g.4
  projects/multi-fibv6/head/share/man/man4/usb_quirk.4
  projects/multi-fibv6/head/share/man/man5/devfs.5
  projects/multi-fibv6/head/share/man/man5/fs.5
  projects/multi-fibv6/head/share/man/man5/periodic.conf.5
  projects/multi-fibv6/head/share/man/man5/portindex.5
  projects/multi-fibv6/head/share/man/man5/rc.conf.5
  projects/multi-fibv6/head/share/man/man5/src.conf.5
  projects/multi-fibv6/head/share/man/man7/hier.7
  projects/multi-fibv6/head/share/man/man7/ports.7
  projects/multi-fibv6/head/share/man/man7/security.7
  projects/multi-fibv6/head/share/man/man9/DEVICE_PROBE.9
  projects/multi-fibv6/head/share/man/man9/MD5.9
  projects/multi-fibv6/head/share/man/man9/bios.9
  projects/multi-fibv6/head/share/man/man9/bus_space.9
  projects/multi-fibv6/head/share/man/man9/crypto.9
  projects/multi-fibv6/head/share/man/man9/device_set_flags.9
  projects/multi-fibv6/head/share/man/man9/devstat.9
  projects/multi-fibv6/head/share/man/man9/devtoname.9
  projects/multi-fibv6/head/share/man/man9/eventtimers.9
  projects/multi-fibv6/head/share/man/man9/get_cyclecount.9
  projects/multi-fibv6/head/share/man/man9/mbchain.9
  projects/multi-fibv6/head/share/man/man9/mbuf_tags.9
  projects/multi-fibv6/head/share/man/man9/mdchain.9
  projects/multi-fibv6/head/share/man/man9/netisr.9
  projects/multi-fibv6/head/share/man/man9/random.9
  projects/multi-fibv6/head/share/man/man9/rijndael.9
  projects/multi-fibv6/head/share/man/man9/zone.9
  projects/multi-fibv6/head/share/misc/committers-ports.dot
  projects/multi-fibv6/head/share/mk/bsd.kmod.mk
  projects/multi-fibv6/head/share/mk/bsd.own.mk
  projects/multi-fibv6/head/sys/amd64/acpica/acpi_switch.S
  projects/multi-fibv6/head/sys/amd64/acpica/acpi_wakecode.S
  projects/multi-fibv6/head/sys/amd64/acpica/acpi_wakeup.c
  projects/multi-fibv6/head/sys/amd64/amd64/apic_vector.S
  projects/multi-fibv6/head/sys/amd64/amd64/machdep.c
  projects/multi-fibv6/head/sys/amd64/amd64/mp_machdep.c
  projects/multi-fibv6/head/sys/amd64/amd64/vm_machdep.c
  projects/multi-fibv6/head/sys/boot/ficl/fileaccess.c
  projects/multi-fibv6/head/sys/boot/ficl/i386/sysdep.h
  projects/multi-fibv6/head/sys/boot/pc98/loader/Makefile
  projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/Makefile
  projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/boot1.c
  projects/multi-fibv6/head/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/multi-fibv6/head/sys/cam/scsi/scsi_xpt.c
  projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/multi-fibv6/head/sys/compat/freebsd32/freebsd32_signal.h
  projects/multi-fibv6/head/sys/compat/linux/linux_stats.c
  projects/multi-fibv6/head/sys/compat/linux/linux_util.c
  projects/multi-fibv6/head/sys/compat/linux/linux_util.h
  projects/multi-fibv6/head/sys/conf/NOTES
  projects/multi-fibv6/head/sys/conf/files
  projects/multi-fibv6/head/sys/conf/files.powerpc
  projects/multi-fibv6/head/sys/conf/newvers.sh
  projects/multi-fibv6/head/sys/contrib/dev/acpica/acpica_prep.sh
  projects/multi-fibv6/head/sys/contrib/dev/acpica/changes.txt   (contents, props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/aslrestype2s.c
  projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/aslstubs.c
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acconfig.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acdebug.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acevents.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acexcep.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acglobal.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/achware.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acmacros.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acpiosxf.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acpixf.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actables.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actbl.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actypes.h
  projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
  projects/multi-fibv6/head/sys/dev/aac/aac.c
  projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdMemory.c
  projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdSynch.c
  projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdTable.c
  projects/multi-fibv6/head/sys/dev/acpica/acpi.c
  projects/multi-fibv6/head/sys/dev/acpica/acpi_ec.c
  projects/multi-fibv6/head/sys/dev/acpica/acpi_hpet.c
  projects/multi-fibv6/head/sys/dev/acpica/acpi_timer.c
  projects/multi-fibv6/head/sys/dev/acpica/acpivar.h
  projects/multi-fibv6/head/sys/dev/ata/ata-queue.c
  projects/multi-fibv6/head/sys/dev/ath/ath_dfs/null/dfs_null.c
  projects/multi-fibv6/head/sys/dev/ath/ath_hal/ah.h
  projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416.h
  projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
  projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
  projects/multi-fibv6/head/sys/dev/ath/if_ath.c
  projects/multi-fibv6/head/sys/dev/ath/if_athvar.h
  projects/multi-fibv6/head/sys/dev/bge/if_bge.c
  projects/multi-fibv6/head/sys/dev/cxgb/cxgb_adapter.h
  projects/multi-fibv6/head/sys/dev/cxgb/cxgb_main.c
  projects/multi-fibv6/head/sys/dev/cxgb/cxgb_sge.c
  projects/multi-fibv6/head/sys/dev/cxgbe/adapter.h
  projects/multi-fibv6/head/sys/dev/cxgbe/common/t4_hw.c
  projects/multi-fibv6/head/sys/dev/cxgbe/t4_l2t.c
  projects/multi-fibv6/head/sys/dev/cxgbe/t4_l2t.h
  projects/multi-fibv6/head/sys/dev/cxgbe/t4_main.c
  projects/multi-fibv6/head/sys/dev/e1000/if_em.c
  projects/multi-fibv6/head/sys/dev/e1000/if_igb.c
  projects/multi-fibv6/head/sys/dev/e1000/if_lem.c
  projects/multi-fibv6/head/sys/dev/fb/vesa.c
  projects/multi-fibv6/head/sys/dev/fb/vesa.h
  projects/multi-fibv6/head/sys/dev/isci/isci.h   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_io_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_remote_device.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_abort_task_set.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller_state_handlers.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_ready_substates.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_io_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_remote_device.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_io_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_task_request.c   (contents, props changed)
  projects/multi-fibv6/head/sys/dev/iscsi/initiator/isc_sm.c
  projects/multi-fibv6/head/sys/dev/ixgbe/ixgbe.c
  projects/multi-fibv6/head/sys/dev/mps/mps.c
  projects/multi-fibv6/head/sys/dev/mps/mps_pci.c
  projects/multi-fibv6/head/sys/dev/mps/mps_sas.c
  projects/multi-fibv6/head/sys/dev/mps/mps_sas.h
  projects/multi-fibv6/head/sys/dev/mps/mps_sas_lsi.c
  projects/multi-fibv6/head/sys/dev/mps/mps_user.c
  projects/multi-fibv6/head/sys/dev/mps/mpsvar.h
  projects/multi-fibv6/head/sys/dev/mpt/mpilib/mpi_type.h
  projects/multi-fibv6/head/sys/dev/mpt/mpt.c
  projects/multi-fibv6/head/sys/dev/mpt/mpt.h
  projects/multi-fibv6/head/sys/dev/mpt/mpt_cam.c
  projects/multi-fibv6/head/sys/dev/mpt/mpt_pci.c
  projects/multi-fibv6/head/sys/dev/mpt/mpt_reg.h
  projects/multi-fibv6/head/sys/dev/netmap/if_em_netmap.h
  projects/multi-fibv6/head/sys/dev/netmap/if_igb_netmap.h
  projects/multi-fibv6/head/sys/dev/netmap/if_lem_netmap.h
  projects/multi-fibv6/head/sys/dev/netmap/if_re_netmap.h
  projects/multi-fibv6/head/sys/dev/netmap/ixgbe_netmap.h
  projects/multi-fibv6/head/sys/dev/netmap/netmap.c
  projects/multi-fibv6/head/sys/dev/netmap/netmap_kern.h
  projects/multi-fibv6/head/sys/dev/pci/pci.c
  projects/multi-fibv6/head/sys/dev/re/if_re.c
  projects/multi-fibv6/head/sys/dev/sdhci/sdhci.c
  projects/multi-fibv6/head/sys/dev/sdhci/sdhci.h
  projects/multi-fibv6/head/sys/dev/sound/pci/hda/hdacc.c
  projects/multi-fibv6/head/sys/dev/sound/pcm/mixer.c
  projects/multi-fibv6/head/sys/dev/sound/pcm/sound.c
  projects/multi-fibv6/head/sys/dev/usb/serial/u3g.c
  projects/multi-fibv6/head/sys/dev/usb/usb_dev.c
  projects/multi-fibv6/head/sys/dev/usb/usbdevs
  projects/multi-fibv6/head/sys/dev/vge/if_vge.c
  projects/multi-fibv6/head/sys/dev/wtap/if_wtap.c
  projects/multi-fibv6/head/sys/dev/wtap/if_wtap_module.c
  projects/multi-fibv6/head/sys/dev/xen/blkback/blkback.c
  projects/multi-fibv6/head/sys/dev/xen/blkfront/blkfront.c
  projects/multi-fibv6/head/sys/dev/xen/blkfront/block.h
  projects/multi-fibv6/head/sys/fs/devfs/devfs.h
  projects/multi-fibv6/head/sys/fs/devfs/devfs_devs.c
  projects/multi-fibv6/head/sys/fs/devfs/devfs_rule.c
  projects/multi-fibv6/head/sys/fs/devfs/devfs_vfsops.c
  projects/multi-fibv6/head/sys/fs/ext2fs/ext2_dinode.h
  projects/multi-fibv6/head/sys/fs/ext2fs/ext2fs.h
  projects/multi-fibv6/head/sys/fs/ext2fs/inode.h
  projects/multi-fibv6/head/sys/fs/nfs/nfs_commonport.c
  projects/multi-fibv6/head/sys/fs/nfsclient/nfs_clstate.c
  projects/multi-fibv6/head/sys/fs/nfsclient/nfs_clvnops.c
  projects/multi-fibv6/head/sys/fs/nfsserver/nfs_nfsdport.c
  projects/multi-fibv6/head/sys/fs/nullfs/null_vfsops.c
  projects/multi-fibv6/head/sys/fs/nwfs/nwfs_vnops.c
  projects/multi-fibv6/head/sys/fs/smbfs/smbfs_vnops.c
  projects/multi-fibv6/head/sys/fs/tmpfs/tmpfs_vnops.c
  projects/multi-fibv6/head/sys/geom/journal/g_journal.c
  projects/multi-fibv6/head/sys/geom/part/g_part.c
  projects/multi-fibv6/head/sys/geom/part/g_part_apm.c
  projects/multi-fibv6/head/sys/geom/part/g_part_ebr.c
  projects/multi-fibv6/head/sys/geom/part/g_part_mbr.c
  projects/multi-fibv6/head/sys/ia64/ia64/vm_machdep.c
  projects/multi-fibv6/head/sys/kern/kern_conf.c
  projects/multi-fibv6/head/sys/kern/kern_fork.c
  projects/multi-fibv6/head/sys/kern/kern_jail.c
  projects/multi-fibv6/head/sys/kern/kern_kthread.c
  projects/multi-fibv6/head/sys/kern/kern_tc.c
  projects/multi-fibv6/head/sys/kern/subr_mchain.c
  projects/multi-fibv6/head/sys/kern/subr_msgbuf.c
  projects/multi-fibv6/head/sys/kern/subr_syscall.c
  projects/multi-fibv6/head/sys/kern/sys_process.c
  projects/multi-fibv6/head/sys/kern/sysv_shm.c
  projects/multi-fibv6/head/sys/kern/tty.c
  projects/multi-fibv6/head/sys/kern/tty_info.c
  projects/multi-fibv6/head/sys/kern/tty_ttydisc.c
  projects/multi-fibv6/head/sys/kern/vfs_aio.c
  projects/multi-fibv6/head/sys/kern/vfs_cache.c
  projects/multi-fibv6/head/sys/kern/vfs_cluster.c
  projects/multi-fibv6/head/sys/kern/vfs_mount.c
  projects/multi-fibv6/head/sys/kern/vfs_subr.c
  projects/multi-fibv6/head/sys/kern/vfs_syscalls.c
  projects/multi-fibv6/head/sys/mips/include/elf.h
  projects/multi-fibv6/head/sys/mips/include/mips_opcode.h
  projects/multi-fibv6/head/sys/mips/mips/locore.S
  projects/multi-fibv6/head/sys/mips/mips/trap.c
  projects/multi-fibv6/head/sys/mips/mips/vm_machdep.c
  projects/multi-fibv6/head/sys/modules/Makefile
  projects/multi-fibv6/head/sys/modules/acpi/acpi/Makefile
  projects/multi-fibv6/head/sys/modules/drm/Makefile
  projects/multi-fibv6/head/sys/modules/ipdivert/Makefile
  projects/multi-fibv6/head/sys/modules/isci/Makefile   (contents, props changed)
  projects/multi-fibv6/head/sys/modules/kgssapi/Makefile
  projects/multi-fibv6/head/sys/modules/kgssapi_krb5/Makefile
  projects/multi-fibv6/head/sys/modules/sound/driver/Makefile
  projects/multi-fibv6/head/sys/modules/usb/Makefile
  projects/multi-fibv6/head/sys/modules/wi/Makefile
  projects/multi-fibv6/head/sys/modules/wlan/Makefile
  projects/multi-fibv6/head/sys/net/if.c
  projects/multi-fibv6/head/sys/net/if.h
  projects/multi-fibv6/head/sys/net/if_bridge.c
  projects/multi-fibv6/head/sys/net/if_var.h
  projects/multi-fibv6/head/sys/net/netmap.h
  projects/multi-fibv6/head/sys/net/netmap_user.h
  projects/multi-fibv6/head/sys/net/rtsock.c
  projects/multi-fibv6/head/sys/net/zlib.h
  projects/multi-fibv6/head/sys/net80211/ieee80211.h
  projects/multi-fibv6/head/sys/net80211/ieee80211_mesh.c
  projects/multi-fibv6/head/sys/net80211/ieee80211_mesh.h
  projects/multi-fibv6/head/sys/netgraph/netgraph.h
  projects/multi-fibv6/head/sys/netgraph/ng_base.c
  projects/multi-fibv6/head/sys/netgraph/ng_cisco.c
  projects/multi-fibv6/head/sys/netgraph/ng_cisco.h
  projects/multi-fibv6/head/sys/netgraph/ng_device.c
  projects/multi-fibv6/head/sys/netgraph/ng_socket.c
  projects/multi-fibv6/head/sys/netinet/ip_carp.c
  projects/multi-fibv6/head/sys/netinet/ipfw/ip_fw2.c
  projects/multi-fibv6/head/sys/netinet/ipfw/ip_fw_sockopt.c
  projects/multi-fibv6/head/sys/netinet/sctp_output.c
  projects/multi-fibv6/head/sys/netinet/sctp_structs.h
  projects/multi-fibv6/head/sys/netinet/tcp.h
  projects/multi-fibv6/head/sys/netinet/tcp_input.c
  projects/multi-fibv6/head/sys/netinet/tcp_output.c
  projects/multi-fibv6/head/sys/netinet/tcp_seq.h
  projects/multi-fibv6/head/sys/netinet/tcp_syncache.c
  projects/multi-fibv6/head/sys/netinet/tcp_timer.c
  projects/multi-fibv6/head/sys/netinet/tcp_timer.h
  projects/multi-fibv6/head/sys/netinet/tcp_timewait.c
  projects/multi-fibv6/head/sys/netinet/tcp_usrreq.c
  projects/multi-fibv6/head/sys/netinet/tcp_var.h
  projects/multi-fibv6/head/sys/nfsclient/nfs_vnops.c
  projects/multi-fibv6/head/sys/pc98/conf/GENERIC
  projects/multi-fibv6/head/sys/powerpc/aim/swtch64.S
  projects/multi-fibv6/head/sys/powerpc/include/asm.h
  projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pcib_pci.c
  projects/multi-fibv6/head/sys/powerpc/ofw/ofw_syscons.c
  projects/multi-fibv6/head/sys/powerpc/powermac/cpcht.c
  projects/multi-fibv6/head/sys/powerpc/powermac/grackle.c
  projects/multi-fibv6/head/sys/powerpc/powermac/gracklevar.h
  projects/multi-fibv6/head/sys/powerpc/powermac/smusat.c
  projects/multi-fibv6/head/sys/powerpc/powermac/uninorthpci.c
  projects/multi-fibv6/head/sys/powerpc/powermac/uninorthvar.h
  projects/multi-fibv6/head/sys/powerpc/ps3/ps3_syscons.c
  projects/multi-fibv6/head/sys/security/mac_biba/mac_biba.c
  projects/multi-fibv6/head/sys/security/mac_lomac/mac_lomac.c
  projects/multi-fibv6/head/sys/security/mac_mls/mac_mls.c
  projects/multi-fibv6/head/sys/sys/conf.h
  projects/multi-fibv6/head/sys/sys/diskmbr.h
  projects/multi-fibv6/head/sys/sys/elf_common.h
  projects/multi-fibv6/head/sys/sys/jail.h
  projects/multi-fibv6/head/sys/sys/msgbuf.h
  projects/multi-fibv6/head/sys/sys/param.h
  projects/multi-fibv6/head/sys/sys/proc.h
  projects/multi-fibv6/head/sys/sys/ptrace.h
  projects/multi-fibv6/head/sys/sys/socket.h
  projects/multi-fibv6/head/sys/sys/ttycom.h
  projects/multi-fibv6/head/sys/sys/ttydefaults.h
  projects/multi-fibv6/head/sys/sys/vnode.h
  projects/multi-fibv6/head/sys/ufs/ffs/ffs_softdep.c
  projects/multi-fibv6/head/sys/ufs/ffs/ffs_vfsops.c
  projects/multi-fibv6/head/sys/ufs/ffs/ffs_vnops.c
  projects/multi-fibv6/head/sys/ufs/ufs/inode.h
  projects/multi-fibv6/head/sys/ufs/ufs/ufs_acl.c
  projects/multi-fibv6/head/sys/ufs/ufs/ufs_vnops.c
  projects/multi-fibv6/head/sys/vm/swap_pager.c
  projects/multi-fibv6/head/sys/vm/vm_map.c
  projects/multi-fibv6/head/sys/vm/vm_map.h
  projects/multi-fibv6/head/sys/vm/vm_mmap.c
  projects/multi-fibv6/head/sys/xen/interface/io/blkif.h
  projects/multi-fibv6/head/sys/xen/xenbus/xenbusvar.h
  projects/multi-fibv6/head/tools/build/mk/OptionalObsoleteFiles.inc
  projects/multi-fibv6/head/tools/build/options/WITHOUT_UTMPX
  projects/multi-fibv6/head/tools/regression/usr.bin/make/execution/joberr/expected.stdout.1
  projects/multi-fibv6/head/tools/tools/ath/athradar/athradar.c
  projects/multi-fibv6/head/tools/tools/netmap/pkt-gen.c
  projects/multi-fibv6/head/usr.bin/calendar/calendars/calendar.freebsd
  projects/multi-fibv6/head/usr.bin/chpass/util.c
  projects/multi-fibv6/head/usr.bin/clang/Makefile
  projects/multi-fibv6/head/usr.bin/elfdump/elfdump.c
  projects/multi-fibv6/head/usr.bin/fstat/fstat.c
  projects/multi-fibv6/head/usr.bin/gencat/gencat.c
  projects/multi-fibv6/head/usr.bin/login/login_fbtab.c
  projects/multi-fibv6/head/usr.bin/m4/lib/ohash_interval.3
  projects/multi-fibv6/head/usr.bin/make/job.c
  projects/multi-fibv6/head/usr.bin/rpcgen/rpc_main.c
  projects/multi-fibv6/head/usr.bin/rpcgen/rpcgen.1
  projects/multi-fibv6/head/usr.bin/systat/icmp.c
  projects/multi-fibv6/head/usr.bin/systat/ifstat.c
  projects/multi-fibv6/head/usr.bin/systat/iostat.c
  projects/multi-fibv6/head/usr.bin/systat/ip.c
  projects/multi-fibv6/head/usr.bin/systat/netcmds.c
  projects/multi-fibv6/head/usr.bin/systat/netstat.c
  projects/multi-fibv6/head/usr.bin/systat/pigs.c
  projects/multi-fibv6/head/usr.bin/systat/tcp.c
  projects/multi-fibv6/head/usr.bin/touch/touch.1
  projects/multi-fibv6/head/usr.bin/touch/touch.c
  projects/multi-fibv6/head/usr.bin/who/who.1
  projects/multi-fibv6/head/usr.bin/who/who.c
  projects/multi-fibv6/head/usr.bin/write/write.1
  projects/multi-fibv6/head/usr.bin/write/write.c
  projects/multi-fibv6/head/usr.sbin/IPXrouted/tables.c
  projects/multi-fibv6/head/usr.sbin/Makefile
  projects/multi-fibv6/head/usr.sbin/acpi/Makefile.inc
  projects/multi-fibv6/head/usr.sbin/acpi/acpidb/Makefile
  projects/multi-fibv6/head/usr.sbin/acpi/iasl/Makefile
  projects/multi-fibv6/head/usr.sbin/amd/Makefile.inc
  projects/multi-fibv6/head/usr.sbin/boot0cfg/boot0cfg.8
  projects/multi-fibv6/head/usr.sbin/bootparamd/bootparamd/Makefile
  projects/multi-fibv6/head/usr.sbin/bootparamd/callbootd/Makefile
  projects/multi-fibv6/head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3
  projects/multi-fibv6/head/usr.sbin/gssd/Makefile
  projects/multi-fibv6/head/usr.sbin/jail/jail.8
  projects/multi-fibv6/head/usr.sbin/keyserv/Makefile
  projects/multi-fibv6/head/usr.sbin/lpr/lpc/cmds.c
  projects/multi-fibv6/head/usr.sbin/periodic/periodic.sh
  projects/multi-fibv6/head/usr.sbin/pkg_install/create/perform.c
  projects/multi-fibv6/head/usr.sbin/pw/cpdir.c
  projects/multi-fibv6/head/usr.sbin/rpc.lockd/Makefile
  projects/multi-fibv6/head/usr.sbin/rpc.statd/Makefile
  projects/multi-fibv6/head/usr.sbin/rpc.yppasswdd/Makefile
  projects/multi-fibv6/head/usr.sbin/rpc.ypupdated/Makefile
  projects/multi-fibv6/head/usr.sbin/rpc.ypxfrd/Makefile
  projects/multi-fibv6/head/usr.sbin/tzsetup/tzsetup.c
  projects/multi-fibv6/head/usr.sbin/usbdump/usbdump.8
  projects/multi-fibv6/head/usr.sbin/usbdump/usbdump.c
  projects/multi-fibv6/head/usr.sbin/vipw/vipw.8
  projects/multi-fibv6/head/usr.sbin/wpa/hostapd/hostapd.8
  projects/multi-fibv6/head/usr.sbin/yppush/Makefile
  projects/multi-fibv6/head/usr.sbin/ypserv/Makefile
Directory Properties:
  projects/multi-fibv6/head/   (props changed)
  projects/multi-fibv6/head/cddl/contrib/opensolaris/   (props changed)
  projects/multi-fibv6/head/contrib/gcc/   (props changed)
  projects/multi-fibv6/head/contrib/llvm/   (props changed)
  projects/multi-fibv6/head/crypto/openssh/   (props changed)
  projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/   (props changed)
  projects/multi-fibv6/head/lib/libc/   (props changed)
  projects/multi-fibv6/head/lib/libutil/   (props changed)
  projects/multi-fibv6/head/sbin/   (props changed)
  projects/multi-fibv6/head/sbin/ipfw/   (props changed)
  projects/multi-fibv6/head/share/man/man4/   (props changed)
  projects/multi-fibv6/head/sys/   (props changed)
  projects/multi-fibv6/head/sys/boot/   (props changed)
  projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/   (props changed)
  projects/multi-fibv6/head/sys/conf/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/common/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/debugger/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/disassembler/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/dispatcher/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/events/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/executer/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/hardware/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/namespace/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/parser/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/resources/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/tables/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/utilities/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/README   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/environment.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_controller.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_domain.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_interrupt.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_logger.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_oem_parameters.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_sysctl.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_task_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/isci_timer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/sci_environment.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_ata.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_pci.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_sas.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_sat.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_sata.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/intel_scsi.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_abort_task_set.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_atapi.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_atapi.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_callbacks.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_design.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_inquiry.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_inquiry.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_log_sense.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_log_sense.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_lun_reset.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_lun_reset.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_pages.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_pages.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_select.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_select.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_10.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_10.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_6.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_6.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_move.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_move.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_passthrough.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_passthrough.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_buffer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_buffer.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_capacity.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_capacity.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_reassign_blocks.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_reassign_blocks.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_report_luns.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_report_luns.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_request_sense.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_request_sense.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_start_stop_unit.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_start_stop_unit.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_synchronize_cache.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_synchronize_cache.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_test_unit_ready.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_test_unit_ready.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_translator_sequence.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_types.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_unmap.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_unmap.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_util.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_util.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_verify.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_verify.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_and_verify.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_and_verify.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_buffer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_buffer.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_long.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_long.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_abstract_list.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_abstract_list.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_controller.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_domain.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_domain.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_iterator.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_iterator.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_library.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_logger.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list_decorator.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_object.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_object.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_observer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_observer.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_phy.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_phy.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_port.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_port.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_remote_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_logger.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_observer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_observer.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_subject.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_subject.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_controller_constants.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_fast_list.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_iterator.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_memory_descriptor_list.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_memory_descriptor_list_decorator.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_object.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_overview.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_pool.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_simple_list.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_status.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_types.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_util.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/sci_util.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_config_parameters.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_overview.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_phy.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_port.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller_registers.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_library.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_pci.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_pci.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy_registers.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_configuration_agent.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_configuration_agent.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_registers.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_context.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_context.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_table.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_table.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_sgpio.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_remote_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_ssp_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_packet_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_packet_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_pio_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_remote_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_unsolicited_frame_control.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_unsolicited_frame_control.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_sgpio.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_task_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scic_user_callback.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_config_parameters.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_domain.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_overview.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_constants.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller_states.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_design.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain_state_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain_states.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_high_priority_request_queue.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_high_priority_request_queue.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_internal_io_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_internal_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request_state_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request_states.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_library.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_library.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_logger.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_ready_substate_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_starting_substate_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_starting_substates.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_state_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_states.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_sati_binding.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_activity_clear_affiliation.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_phy.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_phy.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_io_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_remote_device.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_remote_device.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_task_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request_state_handlers.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request_states.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_timer.c   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_task_request.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scif_user_callback.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_bios_definitions.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_completion_codes.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_constants.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_event_codes.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_registers.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_remote_node_context.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_task_context.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_unsolicited_frame.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/scil/scu_viit_data.h   (props changed)
  projects/multi-fibv6/head/sys/dev/isci/types.h   (props changed)
  projects/multi-fibv6/head/usr.bin/calendar/   (props changed)

Modified: projects/multi-fibv6/head/Makefile
==============================================================================
--- projects/multi-fibv6/head/Makefile	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/Makefile	Fri Feb 17 00:27:48 2012	(r231846)
@@ -24,7 +24,7 @@
 # check-old-dirs      - List obsolete directories.
 # check-old-files     - List obsolete files.
 # check-old-libs      - List obsolete libraries.
-# delete-old          - Delete obsolete directories/files/libraries.
+# delete-old          - Delete obsolete directories/files.
 # delete-old-dirs     - Delete obsolete directories.
 # delete-old-files    - Delete obsolete files.
 # delete-old-libs     - Delete obsolete libraries.

Modified: projects/multi-fibv6/head/UPDATING
==============================================================================
--- projects/multi-fibv6/head/UPDATING	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/UPDATING	Fri Feb 17 00:27:48 2012	(r231846)
@@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	machines to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20120211:
+	The getifaddrs upgrade path broken with 20111215 has been restored.
+	If you have upgraded in between 20111215 and 20120209 you need to
+	recompile libc again with your kernel.  You still need to recompile
+	world to be able to configure CARP but this restriction already
+	comes from 20111215.
+
 20120114:
 	The set_rcvar() function has been removed from /etc/rc.subr.  All
 	base and ports rc.d scripts have been updated, so if you have a

Modified: projects/multi-fibv6/head/bin/sh/eval.c
==============================================================================
--- projects/multi-fibv6/head/bin/sh/eval.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/eval.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -921,6 +921,15 @@ evalcommand(union node *cmd, int flags, 
 			if (pipe(pip) < 0)
 				error("Pipe call failed: %s", strerror(errno));
 		}
+		if (cmdentry.cmdtype == CMDNORMAL &&
+		    cmd->ncmd.redirect == NULL &&
+		    varlist.list == NULL &&
+		    (mode == FORK_FG || mode == FORK_NOJOB) &&
+		    !disvforkset() && !iflag && !mflag) {
+			vforkexecshell(jp, argv, environment(), path,
+			    cmdentry.u.index, flags & EV_BACKCMD ? pip : NULL);
+			goto parent;
+		}
 		if (forkshell(jp, cmd, mode) != 0)
 			goto parent;	/* at end of routine */
 		if (flags & EV_BACKCMD) {

Modified: projects/multi-fibv6/head/bin/sh/exec.c
==============================================================================
--- projects/multi-fibv6/head/bin/sh/exec.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/exec.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -231,7 +231,9 @@ hashcmd(int argc __unused, char **argv _
 	int verbose;
 	struct cmdentry entry;
 	char *name;
+	int errors;
 
+	errors = 0;
 	verbose = 0;
 	while ((c = nextopt("rv")) != '\0') {
 		if (c == 'r') {
@@ -254,19 +256,21 @@ hashcmd(int argc __unused, char **argv _
 		 && cmdp->cmdtype == CMDNORMAL)
 			delete_cmd_entry();
 		find_command(name, &entry, DO_ERR, pathval());
-		if (verbose) {
-			if (entry.cmdtype != CMDUNKNOWN) {	/* if no error msg */
-				cmdp = cmdlookup(name, 0);
-				if (cmdp != NULL)
-					printentry(cmdp, verbose);
-				else
-					outfmt(out2, "%s: not found\n", name);
+		if (entry.cmdtype == CMDUNKNOWN)
+			errors = 1;
+		else if (verbose) {
+			cmdp = cmdlookup(name, 0);
+			if (cmdp != NULL)
+				printentry(cmdp, verbose);
+			else {
+				outfmt(out2, "%s: not found\n", name);
+				errors = 1;
 			}
 			flushall();
 		}
 		argptr++;
 	}
-	return 0;
+	return errors;
 }
 
 

Modified: projects/multi-fibv6/head/bin/sh/jobs.c
==============================================================================
--- projects/multi-fibv6/head/bin/sh/jobs.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/jobs.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$");
 #undef CEOF			/* syntax.h redefines this */
 #endif
 #include "redir.h"
+#include "exec.h"
 #include "show.h"
 #include "main.h"
 #include "parser.h"
@@ -885,6 +886,54 @@ forkshell(struct job *jp, union node *n,
 }
 
 
+pid_t
+vforkexecshell(struct job *jp, char **argv, char **envp, const char *path, int idx, int pip[2])
+{
+	pid_t pid;
+	struct jmploc jmploc;
+	struct jmploc *savehandler;
+
+	TRACE(("vforkexecshell(%%%td, %p, %d) called\n", jp - jobtab, (void *)n,
+	    mode));
+	INTOFF;
+	flushall();
+	savehandler = handler;
+	pid = vfork();
+	if (pid == -1) {
+		TRACE(("Vfork failed, errno=%d\n", errno));
+		INTON;
+		error("Cannot fork: %s", strerror(errno));
+	}
+	if (pid == 0) {
+		TRACE(("Child shell %d\n", (int)getpid()));
+		if (setjmp(jmploc.loc))
+			_exit(exception == EXEXEC ? exerrno : 2);
+		if (pip != NULL) {
+			close(pip[0]);
+			if (pip[1] != 1) {
+				dup2(pip[1], 1);
+				close(pip[1]);
+			}
+		}
+		handler = &jmploc;
+		shellexec(argv, envp, path, idx);
+	}
+	handler = savehandler;
+	if (jp) {
+		struct procstat *ps = &jp->ps[jp->nprocs++];
+		ps->pid = pid;
+		ps->status = -1;
+		ps->cmd = nullstr;
+		jp->foreground = 1;
+#if JOBS
+		setcurjob(jp);
+#endif
+	}
+	INTON;
+	TRACE(("In parent shell:  child = %d\n", (int)pid));
+	return pid;
+}
+
 
 /*
  * Wait for job to finish.

Modified: projects/multi-fibv6/head/bin/sh/jobs.h
==============================================================================
--- projects/multi-fibv6/head/bin/sh/jobs.h	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/jobs.h	Fri Feb 17 00:27:48 2012	(r231846)
@@ -91,6 +91,7 @@ void setjobctl(int);
 void showjobs(int, int);
 struct job *makejob(union node *, int);
 pid_t forkshell(struct job *, union node *, int);
+pid_t vforkexecshell(struct job *, char **, char **, const char *, int, int []);
 int waitforjob(struct job *, int *);
 int stoppedjobs(void);
 int backgndpidset(void);

Modified: projects/multi-fibv6/head/bin/sh/var.c
==============================================================================
--- projects/multi-fibv6/head/bin/sh/var.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/var.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -94,6 +94,7 @@ struct var vps2;
 struct var vps4;
 struct var vvers;
 static struct var voptind;
+struct var vdisvfork;
 
 int forcelocal;
 
@@ -125,6 +126,8 @@ static const struct varinit varinit[] = 
 #endif
 	{ &voptind,	0,				"OPTIND=1",
 	  getoptsreset },
+	{ &vdisvfork,	VUNSET,				"SH_DISABLE_VFORK=",
+	  NULL },
 	{ NULL,	0,				NULL,
 	  NULL }
 };
@@ -600,7 +603,7 @@ showvarscmd(int argc __unused, char **ar
 		}
 	}
 
-	INTON;
+	INTOFF;
 	vars = ckmalloc(n * sizeof(*vars));
 	i = 0;
 	for (vpp = vartab; vpp < vartab + VTABSIZE; vpp++) {
@@ -625,7 +628,7 @@ showvarscmd(int argc __unused, char **ar
 		out1c('\n');
 	}
 	ckfree(vars);
-	INTOFF;
+	INTON;
 
 	return 0;
 }

Modified: projects/multi-fibv6/head/bin/sh/var.h
==============================================================================
--- projects/multi-fibv6/head/bin/sh/var.h	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/bin/sh/var.h	Fri Feb 17 00:27:48 2012	(r231846)
@@ -79,6 +79,7 @@ extern struct var vppid;
 extern struct var vps1;
 extern struct var vps2;
 extern struct var vps4;
+extern struct var vdisvfork;
 #ifndef NO_HISTORY
 extern struct var vhistsize;
 extern struct var vterm;
@@ -109,6 +110,7 @@ extern int initial_localeisutf8;
 #endif
 
 #define mpathset()	((vmpath.flags & VUNSET) == 0)
+#define disvforkset()	((vdisvfork.flags & VUNSET) == 0)
 
 void initvar(void);
 void setvar(const char *, const char *, int);

Modified: projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
==============================================================================
--- projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -590,7 +590,7 @@ zfs_do_clone(int argc, char **argv)
 	zfs_handle_t *zhp = NULL;
 	boolean_t parents = B_FALSE;
 	nvlist_t *props;
-	int ret;
+	int ret = 0;
 	int c;
 
 	if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0)
@@ -1052,7 +1052,7 @@ destroy_print_cb(zfs_handle_t *zhp, void
 static int
 destroy_print_snapshots(zfs_handle_t *fs_zhp, destroy_cbdata_t *cb)
 {
-	int err;
+	int err = 0;
 	assert(cb->cb_firstsnap == NULL);
 	assert(cb->cb_prevsnap == NULL);
 	err = zfs_iter_snapshots_sorted(fs_zhp, destroy_print_cb, cb);
@@ -1130,7 +1130,7 @@ destroy_clones(destroy_cbdata_t *cb)
 		    ZFS_TYPE_SNAPSHOT);
 		if (zhp != NULL) {
 			boolean_t defer = cb->cb_defer_destroy;
-			int err;
+			int err = 0;
 
 			/*
 			 * We can't defer destroy non-snapshots, so set it to
@@ -1207,7 +1207,7 @@ zfs_do_destroy(int argc, char **argv)
 
 	at = strchr(argv[0], '@');
 	if (at != NULL) {
-		int err;
+		int err = 0;
 
 		/* Build the list of snaps to destroy in cb_nvl. */
 		if (nvlist_alloc(&cb.cb_nvl, NV_UNIQUE_NAME, 0) != 0)
@@ -1474,7 +1474,7 @@ zfs_do_get(int argc, char **argv)
 	zprop_get_cbdata_t cb = { 0 };
 	int i, c, flags = ZFS_ITER_ARGS_CAN_BE_PATHS;
 	char *value, *fields;
-	int ret;
+	int ret = 0;
 	int limit = 0;
 	zprop_list_t fake_name = { 0 };
 
@@ -1711,7 +1711,7 @@ zfs_do_inherit(int argc, char **argv)
 	zfs_prop_t prop;
 	inherit_cbdata_t cb = { 0 };
 	char *propname;
-	int ret;
+	int ret = 0;
 	int flags = 0;
 	boolean_t received = B_FALSE;
 
@@ -1917,7 +1917,7 @@ zfs_do_upgrade(int argc, char **argv)
 {
 	boolean_t all = B_FALSE;
 	boolean_t showversions = B_FALSE;
-	int ret;
+	int ret = 0;
 	upgrade_cbdata_t cb = { 0 };
 	char c;
 	int flags = ZFS_ITER_ARGS_CAN_BE_PATHS;
@@ -2206,7 +2206,7 @@ userspace_cb(void *arg, const char *doma
 		uid_t id;
 		uint64_t classes;
 #ifdef sun
-		int err;
+		int err = 0;
 		directory_error_t e;
 #endif
 
@@ -2562,7 +2562,7 @@ zfs_do_userspace(int argc, char **argv)
 	boolean_t prtnum = B_FALSE;
 	boolean_t parseable = B_FALSE;
 	boolean_t sid2posix = B_FALSE;
-	int error;
+	int error = 0;
 	int c;
 	zfs_sort_column_t *default_sortcol = NULL;
 	zfs_sort_column_t *sortcol = NULL;
@@ -2925,7 +2925,7 @@ zfs_do_list(int argc, char **argv)
 	list_cbdata_t cb = { 0 };
 	char *value;
 	int limit = 0;
-	int ret;
+	int ret = 0;
 	zfs_sort_column_t *sortcol = NULL;
 	int flags = ZFS_ITER_PROP_LISTSNAPS | ZFS_ITER_ARGS_CAN_BE_PATHS;
 
@@ -3062,7 +3062,9 @@ zfs_do_rename(int argc, char **argv)
 {
 	zfs_handle_t *zhp;
 	renameflags_t flags = { 0 };
-	int c, ret, types;
+	int c;
+	int ret = 0;
+	int types;
 	boolean_t parents = B_FALSE;
 
 	/* check options */
@@ -3155,7 +3157,7 @@ static int
 zfs_do_promote(int argc, char **argv)
 {
 	zfs_handle_t *zhp;
-	int ret;
+	int ret = 0;
 
 	/* check options */
 	if (argc > 1 && argv[1][0] == '-') {
@@ -3276,7 +3278,7 @@ rollback_check(zfs_handle_t *zhp, void *
 static int
 zfs_do_rollback(int argc, char **argv)
 {
-	int ret;
+	int ret = 0;
 	int c;
 	boolean_t force = B_FALSE;
 	rollback_cbdata_t cb = { 0 };
@@ -3394,7 +3396,7 @@ static int
 zfs_do_set(int argc, char **argv)
 {
 	set_cbdata_t cb;
-	int ret;
+	int ret = 0;
 
 	/* check for options */
 	if (argc > 1 && argv[1][0] == '-') {
@@ -3448,7 +3450,7 @@ static int
 zfs_do_snapshot(int argc, char **argv)
 {
 	boolean_t recursive = B_FALSE;
-	int ret;
+	int ret = 0;
 	char c;
 	nvlist_t *props;
 
@@ -5286,7 +5288,7 @@ zfs_do_holds(int argc, char **argv)
 	holds_cbdata_t cb = { 0 };
 
 	int limit = 0;
-	int ret;
+	int ret = 0;
 	int flags = 0;
 
 	/* check options */
@@ -5863,7 +5865,7 @@ static int
 unshare_unmount_path(int op, char *path, int flags, boolean_t is_manual)
 {
 	zfs_handle_t *zhp;
-	int ret;
+	int ret = 0;
 	struct stat64 statbuf;
 	struct extmnttab entry;
 	const char *cmdname = (op == OP_SHARE) ? "unshare" : "unmount";
@@ -6331,7 +6333,7 @@ manual_mount(int argc, char **argv)
 	zfs_handle_t *zhp;
 	char mountpoint[ZFS_MAXPROPLEN];
 	char mntopts[MNT_LINE_MAX] = { '\0' };
-	int ret;
+	int ret = 0;
 	int c;
 	int flags = 0;
 	char *dataset, *path;
@@ -6481,7 +6483,7 @@ zfs_do_diff(int argc, char **argv)
 	char *tosnap = NULL;
 	char *fromsnap = NULL;
 	char *atp, *copy;
-	int err;
+	int err = 0;
 	int c;
 
 	while ((c = getopt(argc, argv, "FHt")) != -1) {
@@ -6551,7 +6553,7 @@ zfs_do_diff(int argc, char **argv)
 int
 main(int argc, char **argv)
 {
-	int ret;
+	int ret = 0;
 	int i;
 	char *progname;
 	char *cmdname;

Modified: projects/multi-fibv6/head/contrib/gcc/gcc.c
==============================================================================
--- projects/multi-fibv6/head/contrib/gcc/gcc.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/contrib/gcc/gcc.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -2696,6 +2696,17 @@ find_a_file (const struct path_prefix *p
     return xstrdup (DEFAULT_LINKER);
 #endif
 
+#ifdef FREEBSD_NATIVE
+  if (! strcmp(name, "include"))
+    {
+#ifdef CROSS_INCLUDE_DIR
+      return xstrdup(CROSS_INCLUDE_DIR);
+#else
+      return xstrdup(STANDARD_INCLUDE_DIR);
+#endif
+    }
+#endif
+
   /* Determine the filename to execute (special case for absolute paths).  */
 
   if (IS_ABSOLUTE_PATH (name))

Modified: projects/multi-fibv6/head/crypto/openssh/auth2.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/auth2.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/auth2.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -223,8 +223,8 @@ input_userauth_request(int type, u_int32
 	login_cap_t *lc;
 	const char *from_host, *from_ip;
 
-        from_host = get_canonical_hostname(options.use_dns);
-        from_ip = get_remote_ipaddr();
+	from_host = get_canonical_hostname(options.use_dns);
+	from_ip = get_remote_ipaddr();
 #endif
 
 	if (authctxt == NULL)
@@ -272,23 +272,23 @@ input_userauth_request(int type, u_int32
 	}
 
 #ifdef HAVE_LOGIN_CAP
-        if (authctxt->pw != NULL) {
-                lc = login_getpwclass(authctxt->pw);
-                if (lc == NULL)
-                        lc = login_getclassbyname(NULL, authctxt->pw);
-                if (!auth_hostok(lc, from_host, from_ip)) {
-                        logit("Denied connection for %.200s from %.200s [%.200s].",
-                            authctxt->pw->pw_name, from_host, from_ip);
-                        packet_disconnect("Sorry, you are not allowed to connect.");
-                }
-                if (!auth_timeok(lc, time(NULL))) {
-                        logit("LOGIN %.200s REFUSED (TIME) FROM %.200s",
-                            authctxt->pw->pw_name, from_host);
-                        packet_disconnect("Logins not available right now.");
-                }
-                login_close(lc);
-                lc = NULL;
-        }
+	if (authctxt->pw != NULL) {
+		lc = login_getpwclass(authctxt->pw);
+		if (lc == NULL)
+			lc = login_getclassbyname(NULL, authctxt->pw);
+		if (!auth_hostok(lc, from_host, from_ip)) {
+			logit("Denied connection for %.200s from %.200s [%.200s].",
+			    authctxt->pw->pw_name, from_host, from_ip);
+			packet_disconnect("Sorry, you are not allowed to connect.");
+		}
+		if (!auth_timeok(lc, time(NULL))) {
+			logit("LOGIN %.200s REFUSED (TIME) FROM %.200s",
+			    authctxt->pw->pw_name, from_host);
+			packet_disconnect("Logins not available right now.");
+		}
+		login_close(lc);
+		lc = NULL;
+	}
 #endif  /* HAVE_LOGIN_CAP */
 
 	/* reset state */

Modified: projects/multi-fibv6/head/crypto/openssh/channels.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/channels.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/channels.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -824,7 +824,7 @@ channel_tcpwinsz(void)
 	u_int maxlen;
 
 	/* If we are not on a socket return 128KB. */
-	if (!packet_connection_is_on_socket()) 
+	if (!packet_connection_is_on_socket())
 		return (128 * 1024);
 
 	tcpwinsz = 0;
@@ -854,7 +854,7 @@ channel_pre_open(Channel *c, fd_set *rea
 
 	limit = MIN(compat20 ? c->remote_window : packet_get_maxsize(),
 	    2 * c->tcpwinsz);
-	
+
 	if (c->istate == CHAN_INPUT_OPEN &&
 	    limit > 0 &&
 	    buffer_len(&c->input) < limit &&
@@ -2687,10 +2687,10 @@ channel_set_af(int af)
 	IPv4or6 = af;
 }
 
-void 
+void
 channel_set_hpn(int disabled, u_int buf_size)
 {
-      	hpn_disabled = disabled;
+	hpn_disabled = disabled;
 	buffer_size = buf_size;
 	debug("HPN Disabled: %d, HPN Buffer Size: %d",
 	    hpn_disabled, buffer_size);
@@ -2856,10 +2856,10 @@ channel_setup_fwd_listener(int type, con
 			c = channel_new("port listener", type, sock, sock, -1,
 			    CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT,
 			    0, "port listener", 1);
- 		else
- 			c = channel_new("port listener", type, sock, sock, -1,
- 		    	    buffer_size, CHAN_TCP_PACKET_DEFAULT,
- 		    	    0, "port listener", 1);
+		else
+			c = channel_new("port listener", type, sock, sock, -1,
+			    buffer_size, CHAN_TCP_PACKET_DEFAULT,
+			    0, "port listener", 1);
 		c->path = xstrdup(host);
 		c->host_port = port_to_connect;
 		c->listening_port = listen_port;

Modified: projects/multi-fibv6/head/crypto/openssh/channels.h
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/channels.h	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/channels.h	Fri Feb 17 00:27:48 2012	(r231846)
@@ -126,7 +126,7 @@ struct Channel {
 	u_int	local_window_max;
 	u_int	local_consumed;
 	u_int	local_maxpacket;
-	u_int 	tcpwinsz;	
+	u_int	tcpwinsz;
 	int	dynamic_window;
 	int     extended_usage;
 	int	single_connection;
@@ -165,13 +165,10 @@ struct Channel {
 /* default window/packet sizes for tcp/x11-fwd-channel */
 #define CHAN_SES_PACKET_DEFAULT	(32*1024)
 #define CHAN_SES_WINDOW_DEFAULT	(64*CHAN_SES_PACKET_DEFAULT)
-
 #define CHAN_TCP_PACKET_DEFAULT	(32*1024)
 #define CHAN_TCP_WINDOW_DEFAULT	(64*CHAN_TCP_PACKET_DEFAULT)
-
 #define CHAN_X11_PACKET_DEFAULT	(16*1024)
 #define CHAN_X11_WINDOW_DEFAULT	(4*CHAN_X11_PACKET_DEFAULT)
-
 #define CHAN_HPN_MIN_WINDOW_DEFAULT	(2*1024*1024)
 
 /* possible input states */
@@ -302,6 +299,7 @@ void	 chan_write_failed(Channel *);
 void	 chan_obuf_empty(Channel *);
 
 /* hpn handler */
-void     channel_set_hpn(int, u_int);
+
+void	channel_set_hpn(int, u_int);
 
 #endif

Modified: projects/multi-fibv6/head/crypto/openssh/kex.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/kex.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/kex.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -457,13 +457,13 @@ kex_choose_conf(Kex *kex)
 #ifdef	NONE_CIPHER_ENABLED
 		debug("REQUESTED ENC.NAME is '%s'", newkeys->enc.name);
 		if (strcmp(newkeys->enc.name, "none") == 0) {
-			debug("Requesting NONE. Authflag is %d", auth_flag);			
+			debug("Requesting NONE. Authflag is %d", auth_flag);
 			if (auth_flag == 1)
 				debug("None requested post authentication.");
 			else
 				fatal("Pre-authentication none cipher requests "
 				    "are not allowed.");
-		} 
+		}
 #endif
 		debug("kex: %s %s %s %s",
 		    ctos ? "client->server" : "server->client",

Modified: projects/multi-fibv6/head/crypto/openssh/loginrec.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/loginrec.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/loginrec.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -146,7 +146,6 @@
  */
 
 #include "includes.h"
-__RCSID("$FreeBSD$");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -516,10 +515,6 @@ getlast_entry(struct logininfo *li)
 	return (utmpx_get_entry(li));
 #endif
 
-#if 1
-	return (utmpx_get_entry(li));
-#endif
-
 #if defined(DISABLE_LASTLOG)
 	/* On some systems we shouldn't even try to obtain last login
 	 * time, e.g. AIX */

Modified: projects/multi-fibv6/head/crypto/openssh/readconf.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/readconf.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/readconf.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -264,6 +264,7 @@ static struct {
 	{ "noneswitch", oNoneSwitch },
 #endif
 	{ "versionaddendum", oVersionAddendum },
+
 	{ NULL, oBadOption }
 };
 
@@ -1092,9 +1093,9 @@ parse_int:
 	case oNoneEnabled:
 		intptr = &options->none_enabled;
 		goto parse_flag;
- 
+
 	/*
-         * We check to see if the command comes from the command line or not.
+	 * We check to see if the command comes from the command line or not.
 	 * If it does then enable it otherwise fail.  NONE must never be a
 	 * default configuration.
 	 */
@@ -1110,7 +1111,7 @@ parse_int:
 			    "from the command line", filename);
 			error("Continuing...");
 			return 0;
-	        }
+		}
 #endif
 
 	case oVersionAddendum:
@@ -1458,7 +1459,7 @@ fill_default_options(Options * options)
 	/* options->host_key_alias should not be set by default */
 	/* options->preferred_authentications will be set in ssh */
 	if (options->hpn_disabled == -1)
-	        options->hpn_disabled = 0;
+		options->hpn_disabled = 0;
 	if (options->hpn_buffer_size > -1)
 	{
 		u_int maxlen;
@@ -1478,7 +1479,7 @@ fill_default_options(Options * options)
 	}
 	if (options->tcp_rcv_buf == 0)
 		options->tcp_rcv_buf = 1;
-	if (options->tcp_rcv_buf > -1) 
+	if (options->tcp_rcv_buf > -1)
 		options->tcp_rcv_buf *= 1024;
 	if (options->tcp_rcv_buf_poll == -1)
 		options->tcp_rcv_buf_poll = 1;

Modified: projects/multi-fibv6/head/crypto/openssh/readconf.h
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/readconf.h	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/readconf.h	Fri Feb 17 00:27:48 2012	(r231846)
@@ -133,6 +133,7 @@ typedef struct {
 	int	visual_host_key;
 
 	int	use_roaming;
+
 	int	request_tty;
 
 	int	hpn_disabled;	/* Switch to disable HPN buffer management. */

Modified: projects/multi-fibv6/head/crypto/openssh/servconf.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/servconf.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/servconf.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -166,7 +166,7 @@ fill_default_server_options(ServerOption
 			    _PATH_HOST_KEY_FILE;
 		if (options->protocol & SSH_PROTO_2) {
 			options->host_key_files[options->num_host_key_files++] =
-                            _PATH_HOST_RSA_KEY_FILE;
+			    _PATH_HOST_RSA_KEY_FILE;
 			options->host_key_files[options->num_host_key_files++] =
 			    _PATH_HOST_DSA_KEY_FILE;
 #ifdef OPENSSL_HAS_ECC
@@ -286,7 +286,7 @@ fill_default_server_options(ServerOption
 		options->ip_qos_interactive = IPTOS_LOWDELAY;
 	if (options->ip_qos_bulk == -1)
 		options->ip_qos_bulk = IPTOS_THROUGHPUT;
-	if (options->hpn_disabled == -1) 
+	if (options->hpn_disabled == -1)
 		options->hpn_disabled = 0;
 	if (options->hpn_buffer_size == -1) {
 		/*

Modified: projects/multi-fibv6/head/crypto/openssh/sftp.1
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/sftp.1	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/sftp.1	Fri Feb 17 00:27:48 2012	(r231846)
@@ -246,7 +246,7 @@ diagnostic messages from
 Specify how many requests may be outstanding at any one time.
 Increasing this may slightly improve file transfer speed
 but will increase memory usage.
-The default is 256 outstanding requests providing for 8MB 
+The default is 256 outstanding requests providing for 8MB
 of outstanding data with a 32KB buffer.
 .It Fl r
 Recursively copy entire directories when uploading and downloading.

Modified: projects/multi-fibv6/head/crypto/openssh/ssh.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/ssh.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/ssh.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -1461,6 +1461,7 @@ ssh_session2_open(void)
 		c->dynamic_window = 1;
 		debug("Enabled Dynamic Window Scaling\n");
 	}
+
 	debug3("ssh_session2_open: channel_new: %d", c->self);
 
 	channel_send_open(c->self);

Modified: projects/multi-fibv6/head/crypto/openssh/sshd.c
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/sshd.c	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/sshd.c	Fri Feb 17 00:27:48 2012	(r231846)
@@ -1916,11 +1916,11 @@ main(int ac, char **av)
 #ifdef __FreeBSD__
 	/*
 	 * Initialize the resolver.  This may not happen automatically
-	 * before privsep chroot().                                   
+	 * before privsep chroot().
 	 */
 	if ((_res.options & RES_INIT) == 0) {
-		debug("res_init()");         
-		res_init();         
+		debug("res_init()");
+		res_init();
 	}
 #ifdef GSSAPI
 	/*

Modified: projects/multi-fibv6/head/crypto/openssh/sshd_config.5
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/sshd_config.5	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/sshd_config.5	Fri Feb 17 00:27:48 2012	(r231846)
@@ -499,7 +499,7 @@ or
 .Pp
 .Pa /etc/hosts.equiv
 and
-.Pa /etc/ssh/shosts.equiv 
+.Pa /etc/ssh/shosts.equiv
 are still used.
 The default is
 .Dq yes .

Modified: projects/multi-fibv6/head/crypto/openssh/version.h
==============================================================================
--- projects/multi-fibv6/head/crypto/openssh/version.h	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/crypto/openssh/version.h	Fri Feb 17 00:27:48 2012	(r231846)
@@ -2,11 +2,11 @@
 /* $FreeBSD$ */
 
 #ifndef SSH_VERSION
-#define SSH_VERSION_BASE        "OpenSSH_5.9p1"
-#define SSH_VERSION_ADDENDUM    "FreeBSD-20111001"
+#define SSH_VERSION_BASE	"OpenSSH_5.9p1"
+#define SSH_VERSION_ADDENDUM	"FreeBSD-20111001"
 #define SSH_VERSION_HPN		"_hpn13v11"
 #define SSH_VERSION		SSH_VERSION_BASE SSH_VERSION_HPN " " SSH_VERSION_ADDENDUM
-#define SSH_RELEASE             (ssh_version_get())
+#define SSH_RELEASE		(ssh_version_get())
 
 const char *ssh_version_get(void);
 void ssh_version_set_addendum(const char *);

Modified: projects/multi-fibv6/head/etc/Makefile
==============================================================================
--- projects/multi-fibv6/head/etc/Makefile	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/Makefile	Fri Feb 17 00:27:48 2012	(r231846)
@@ -7,18 +7,48 @@
 SUBDIR=	sendmail
 .endif
 
-BIN1=	auth.conf \
-	crontab devd.conf devfs.conf \
-	ddb.conf dhclient.conf disktab fbtab \
-	ftpusers gettytab group \
-	hosts hosts.allow hosts.equiv \
-	inetd.conf libalias.conf login.access login.conf mac.conf motd \
-	netconfig network.subr networks newsyslog.conf nsswitch.conf \
-	phones profile protocols \
-	rc rc.bsdextended rc.firewall rc.initdiskless \
-	rc.sendmail rc.shutdown \
-	rc.subr remote rpc services shells \
-	sysctl.conf syslog.conf termcap.small
+BIN1=	auth.conf
+BIN1+=	crontab
+BIN1+=	devd.conf
+BIN1+=	devfs.conf
+BIN1+=	ddb.conf
+BIN1+=	dhclient.conf
+BIN1+=	disktab
+BIN1+=	fbtab
+BIN1+=	ftpusers
+BIN1+=	gettytab
+BIN1+=	group
+BIN1+=	hosts
+BIN1+=	hosts.allow
+BIN1+=	hosts.equiv
+BIN1+=	inetd.conf
+BIN1+=	libalias.conf
+BIN1+=	login.access
+BIN1+=	login.conf
+BIN1+=	mac.conf
+BIN1+=	motd
+BIN1+=	netconfig
+BIN1+=	network.subr
+BIN1+=	networks
+BIN1+=	newsyslog.conf
+BIN1+=	nsswitch.conf
+BIN1+=	phones
+BIN1+=	profile
+BIN1+=	protocols
+BIN1+=	rc
+BIN1+=	rc.bsdextended
+BIN1+=	rc.firewall
+BIN1+=	rc.initdiskless
+BIN1+=	rc.sendmail
+BIN1+=	rc.shutdown
+BIN1+=	rc.subr
+BIN1+=	remote
+BIN1+=	rpc
+BIN1+=	services
+BIN1+=	shells
+BIN1+=	sysctl.conf
+BIN1+=	syslog.conf
+BIN1+=	termcap.small
 
 .if exists(${.CURDIR}/etc.${MACHINE}/ttys)
 BIN1+=	etc.${MACHINE}/ttys

Modified: projects/multi-fibv6/head/etc/defaults/periodic.conf
==============================================================================
--- projects/multi-fibv6/head/etc/defaults/periodic.conf	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/defaults/periodic.conf	Fri Feb 17 00:27:48 2012	(r231846)
@@ -96,6 +96,7 @@ daily_status_disks_df_flags="-l -h"		# d
 
 # 404.status-zfs
 daily_status_zfs_enable="NO"				# Check ZFS
+daily_status_zfs_zpool_list_enable="YES"		# List ZFS pools
 
 # 405.status-ata_raid
 daily_status_ata_raid_enable="NO"			# Check ATA raid status

Modified: projects/multi-fibv6/head/etc/defaults/rc.conf
==============================================================================
--- projects/multi-fibv6/head/etc/defaults/rc.conf	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/defaults/rc.conf	Fri Feb 17 00:27:48 2012	(r231846)
@@ -29,6 +29,8 @@ early_late_divider="FILESYSTEMS"	# Scrip
 			# stages of the boot process.  Make sure you know
 			# the ramifications if you change this.
 			# See rc.conf(5) for more details.
+always_force_depends="NO"	# Set to check that indicated dependencies are
+				# running during boot (can increase boot time).
 
 swapfile="NO"		# Set to name of swapfile if aux swapfile desired.
 apm_enable="NO"		# Set to YES to enable APM BIOS functions (or NO).
@@ -648,6 +650,7 @@ devfs_rulesets="/etc/defaults/devfs.rule
 devfs_system_ruleset=""	# The name (NOT number) of a ruleset to apply to /dev
 devfs_set_rulesets=""	# A list of /mount/dev=ruleset_name settings to
 			# apply (must be mounted already, i.e. fstab(5))
+devfs_load_rulesets="NO"	# Enable to always load the default rulesets
 performance_cx_lowest="HIGH"	# Online CPU idle state
 performance_cpu_freq="NONE"	# Online CPU frequency
 economy_cx_lowest="HIGH"	# Offline CPU idle state

Modified: projects/multi-fibv6/head/etc/devd/usb.conf
==============================================================================
--- projects/multi-fibv6/head/etc/devd/usb.conf	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/devd/usb.conf	Fri Feb 17 00:27:48 2012	(r231846)
@@ -157,7 +157,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0403";
-	match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|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|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)";
 	action "kldload uftdi";
 };
 
@@ -293,7 +293,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0411";
-	match "product" "(0x0148|0x0150|0x015d|0x016f)";
+	match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2)";
 	action "kldload if_run";
 };
 
@@ -1021,7 +1021,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x05c6";
-	match "product" "(0x6000|0x6613)";
+	match "product" "(0x1000|0x6000|0x6613)";
 	action "kldload u3g";
 };
 
@@ -1301,7 +1301,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0789";
-	match "product" "(0x0162|0x0163|0x0164)";
+	match "product" "(0x0162|0x0163|0x0164|0x0166)";
 	action "kldload if_run";
 };
 
@@ -2093,7 +2093,7 @@ nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
 	match "vendor" "0x0b95";
-	match "product" "(0x1720|0x1780|0x7720|0x772a|0x772b)";
+	match "product" "(0x1720|0x1780|0x7720|0x772a|0x772b|0x7e2b)";
 	action "kldload if_axe";
 };
 
@@ -4205,6 +4205,15 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "intclass" "0x02";
+	match "intsubclass" "0x02";
+	match "intprotocol" "0xff";
+	action "kldload umodem";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "intclass" "0x03";
 	match "intsubclass" "0x01";
 	match "intprotocol" "0x01";
@@ -4327,5 +4336,5 @@ nomatch 32 {
 	action "kldload umass";
 };
 
-# 1645 USB entries processed
+# 1652 USB entries processed
 

Modified: projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs
==============================================================================
--- projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs	Fri Feb 17 00:27:48 2012	(r231846)
@@ -16,12 +16,21 @@ case "$daily_status_zfs_enable" in
 	echo
 	echo 'Checking status of zfs pools:'
 
-	out=`zpool status -x`
-	echo "$out"
+	case "$daily_status_zfs_zpool_list_enable" in
+	    [Yy][Ee][Ss])
+		lout=`zpool list`
+		echo "$lout"
+		echo
+		;;
+	    *)
+		;;
+	esac
+	sout=`zpool status -x`
+	echo "$sout"
 	# zpool status -x always exits with 0, so we have to interpret its
 	# output to see what's going on.
-	if [ "$out" = "all pools are healthy" \
-	    -o "$out" = "no pools available" ]; then
+	if [ "$sout" = "all pools are healthy" \
+	    -o "$sout" = "no pools available" ]; then
 		rc=0
 	else
 		rc=1

Modified: projects/multi-fibv6/head/etc/rc.d/LOGIN
==============================================================================
--- projects/multi-fibv6/head/etc/rc.d/LOGIN	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/rc.d/LOGIN	Fri Feb 17 00:27:48 2012	(r231846)
@@ -4,7 +4,7 @@
 #
 
 # PROVIDE: LOGIN
-# REQUIRE: DAEMON
+# REQUIRE: DAEMON utx
 
 #	This is a dummy dependency to ensure user services such as xdm,
 #	inetd, cron and kerberos are started after everything else, in case

Modified: projects/multi-fibv6/head/etc/rc.d/Makefile
==============================================================================
--- projects/multi-fibv6/head/etc/rc.d/Makefile	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/rc.d/Makefile	Fri Feb 17 00:27:48 2012	(r231846)
@@ -144,6 +144,7 @@ FILES=	DAEMON \
 	tmp \
 	${_ubthidhci} \
 	ugidfw \
+	${_utx} \
 	var \
 	virecover \
 	watchdogd \
@@ -177,6 +178,10 @@ _nscd=		nscd
 _ubthidhci=	ubthidhci
 .endif
 
+.if ${MK_UTMPX} != "no"
+_utx=		utx
+.endif
+
 FILESDIR=	/etc/rc.d
 FILESMODE=	${BINMODE}
 

Modified: projects/multi-fibv6/head/etc/rc.d/SERVERS
==============================================================================
--- projects/multi-fibv6/head/etc/rc.d/SERVERS	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/rc.d/SERVERS	Fri Feb 17 00:27:48 2012	(r231846)
@@ -4,7 +4,7 @@
 #
 
 # PROVIDE: SERVERS
-# REQUIRE: mountcritremote abi ldconfig savecore
+# REQUIRE: mountcritremote abi ldconfig savecore watchdogd
 
 #	This is a dummy dependency, for early-start servers relying on
 #	some basic configuration.

Modified: projects/multi-fibv6/head/etc/rc.d/addswap
==============================================================================
--- projects/multi-fibv6/head/etc/rc.d/addswap	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/rc.d/addswap	Fri Feb 17 00:27:48 2012	(r231846)
@@ -6,7 +6,7 @@
 #
 
 # PROVIDE: addswap
-# REQUIRE: FILESYSTEMS
+# REQUIRE: FILESYSTEMS kld
 # KEYWORD: nojail
 
 . /etc/rc.subr

Modified: projects/multi-fibv6/head/etc/rc.d/amd
==============================================================================
--- projects/multi-fibv6/head/etc/rc.d/amd	Thu Feb 16 23:05:09 2012	(r231845)
+++ projects/multi-fibv6/head/etc/rc.d/amd	Fri Feb 17 00:27:48 2012	(r231846)
@@ -19,15 +19,8 @@ extra_commands="reload"
 
 amd_precmd()
 {
-	if ! checkyesno nfs_client_enable; then
-		force_depend nfsclient || return 1
-	fi
-
-	if ! checkyesno rpcbind_enable  && \
-	    ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || return 1
-	fi

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

From owner-svn-src-projects@FreeBSD.ORG  Fri Feb 17 03:01:29 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C833D10656E1;
	Fri, 17 Feb 2012 03:01:29 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B6B008FC15;
	Fri, 17 Feb 2012 03:01:29 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1H31TrB046745;
	Fri, 17 Feb 2012 03:01:29 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1H31TaU046744;
	Fri, 17 Feb 2012 03:01:29 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202170301.q1H31TaU046744@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Fri, 17 Feb 2012 03:01:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231853 - in projects/multi-fibv6/head: . contrib/top
	share/mk sys/contrib/dev/acpica sys/i386/conf
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Feb 2012 03:01:29 -0000

Author: bz
Date: Fri Feb 17 03:01:29 2012
New Revision: 231853
URL: http://svn.freebsd.org/changeset/base/231853

Log:
  Record-only the commit of r231852 (--reintegrate commit) blocking it
  from being merged again into the branch with a possible next IFC.
  
  Sponsored by:	Cisco Systems, Inc.

Modified:
Directory Properties:
  projects/multi-fibv6/head/   (props changed)
  projects/multi-fibv6/head/MAINTAINERS   (props changed)
  projects/multi-fibv6/head/cddl/contrib/opensolaris/   (props changed)
  projects/multi-fibv6/head/contrib/bind9/   (props changed)
  projects/multi-fibv6/head/contrib/binutils/   (props changed)
  projects/multi-fibv6/head/contrib/bzip2/   (props changed)
  projects/multi-fibv6/head/contrib/com_err/   (props changed)
  projects/multi-fibv6/head/contrib/compiler-rt/   (props changed)
  projects/multi-fibv6/head/contrib/dialog/   (props changed)
  projects/multi-fibv6/head/contrib/ee/   (props changed)
  projects/multi-fibv6/head/contrib/expat/   (props changed)
  projects/multi-fibv6/head/contrib/file/   (props changed)
  projects/multi-fibv6/head/contrib/gcc/   (props changed)
  projects/multi-fibv6/head/contrib/gdb/   (props changed)
  projects/multi-fibv6/head/contrib/gdtoa/   (props changed)
  projects/multi-fibv6/head/contrib/gnu-sort/   (props changed)
  projects/multi-fibv6/head/contrib/groff/   (props changed)
  projects/multi-fibv6/head/contrib/less/   (props changed)
  projects/multi-fibv6/head/contrib/libarchive/   (props changed)
  projects/multi-fibv6/head/contrib/libarchive/cpio/   (props changed)
  projects/multi-fibv6/head/contrib/libarchive/libarchive/   (props changed)
  projects/multi-fibv6/head/contrib/libarchive/libarchive_fe/   (props changed)
  projects/multi-fibv6/head/contrib/libarchive/tar/   (props changed)
  projects/multi-fibv6/head/contrib/libcxxrt/   (props changed)
  projects/multi-fibv6/head/contrib/libpcap/   (props changed)
  projects/multi-fibv6/head/contrib/libstdc++/   (props changed)
  projects/multi-fibv6/head/contrib/llvm/   (props changed)
  projects/multi-fibv6/head/contrib/llvm/tools/clang/   (props changed)
  projects/multi-fibv6/head/contrib/ncurses/   (props changed)
  projects/multi-fibv6/head/contrib/netcat/   (props changed)
  projects/multi-fibv6/head/contrib/ntp/   (props changed)
  projects/multi-fibv6/head/contrib/one-true-awk/   (props changed)
  projects/multi-fibv6/head/contrib/openbsm/   (props changed)
  projects/multi-fibv6/head/contrib/openpam/   (props changed)
  projects/multi-fibv6/head/contrib/openresolv/   (props changed)
  projects/multi-fibv6/head/contrib/pf/   (props changed)
  projects/multi-fibv6/head/contrib/sendmail/   (props changed)
  projects/multi-fibv6/head/contrib/tcpdump/   (props changed)
  projects/multi-fibv6/head/contrib/tcsh/   (props changed)
  projects/multi-fibv6/head/contrib/tnftp/   (props changed)
  projects/multi-fibv6/head/contrib/top/   (props changed)
  projects/multi-fibv6/head/contrib/top/install-sh   (props changed)
  projects/multi-fibv6/head/contrib/tzcode/stdtime/   (props changed)
  projects/multi-fibv6/head/contrib/tzcode/zic/   (props changed)
  projects/multi-fibv6/head/contrib/tzdata/   (props changed)
  projects/multi-fibv6/head/contrib/wpa/   (props changed)
  projects/multi-fibv6/head/contrib/xz/   (props changed)
  projects/multi-fibv6/head/crypto/heimdal/   (props changed)
  projects/multi-fibv6/head/crypto/openssh/   (props changed)
  projects/multi-fibv6/head/crypto/openssl/   (props changed)
  projects/multi-fibv6/head/gnu/lib/   (props changed)
  projects/multi-fibv6/head/gnu/usr.bin/binutils/   (props changed)
  projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/   (props changed)
  projects/multi-fibv6/head/gnu/usr.bin/gdb/   (props changed)
  projects/multi-fibv6/head/lib/libc/   (props changed)
  projects/multi-fibv6/head/lib/libc/stdtime/   (props changed)
  projects/multi-fibv6/head/lib/libutil/   (props changed)
  projects/multi-fibv6/head/lib/libz/   (props changed)
  projects/multi-fibv6/head/sbin/   (props changed)
  projects/multi-fibv6/head/sbin/ipfw/   (props changed)
  projects/multi-fibv6/head/share/man/man4/   (props changed)
  projects/multi-fibv6/head/share/mk/bsd.arch.inc.mk   (props changed)
  projects/multi-fibv6/head/share/zoneinfo/   (props changed)
  projects/multi-fibv6/head/sys/   (props changed)
  projects/multi-fibv6/head/sys/amd64/include/xen/   (props changed)
  projects/multi-fibv6/head/sys/boot/   (props changed)
  projects/multi-fibv6/head/sys/boot/i386/efi/   (props changed)
  projects/multi-fibv6/head/sys/boot/ia64/efi/   (props changed)
  projects/multi-fibv6/head/sys/boot/ia64/ski/   (props changed)
  projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/multi-fibv6/head/sys/boot/powerpc/ofw/   (props changed)
  projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/   (props changed)
  projects/multi-fibv6/head/sys/conf/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/changes.txt   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/common/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/debugger/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/disassembler/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/dispatcher/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/events/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/executer/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/hardware/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/namespace/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/parser/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/resources/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/tables/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/components/utilities/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/include/   (props changed)
  projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/   (props changed)
  projects/multi-fibv6/head/sys/contrib/octeon-sdk/   (props changed)
  projects/multi-fibv6/head/sys/contrib/pf/   (props changed)
  projects/multi-fibv6/head/sys/contrib/x86emu/   (props changed)
  projects/multi-fibv6/head/sys/i386/conf/XENHVM   (props changed)
  projects/multi-fibv6/head/usr.bin/calendar/   (props changed)
  projects/multi-fibv6/head/usr.bin/csup/   (props changed)
  projects/multi-fibv6/head/usr.bin/procstat/   (props changed)
  projects/multi-fibv6/head/usr.sbin/ndiscvt/   (props changed)
  projects/multi-fibv6/head/usr.sbin/rtadvctl/   (props changed)
  projects/multi-fibv6/head/usr.sbin/rtadvd/   (props changed)
  projects/multi-fibv6/head/usr.sbin/rtsold/   (props changed)
  projects/multi-fibv6/head/usr.sbin/zic/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Fri Feb 17 13:42:52 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 988141065670;
	Fri, 17 Feb 2012 13:42:52 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7CDE28FC1D;
	Fri, 17 Feb 2012 13:42:52 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1HDgqXK080664;
	Fri, 17 Feb 2012 13:42:52 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1HDgpOd080590;
	Fri, 17 Feb 2012 13:42:51 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202171342.q1HDgpOd080590@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Fri, 17 Feb 2012 13:42:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231877 - in projects/multi-fibv6/8: . etc etc/defaults
	etc/periodic/daily etc/rc.d gnu/usr.bin/groff/tmac
	include/rpc include/rpcsvc lib/libc/gen lib/libc/rpc
	lib/libc/yp lib/libelf li...
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Feb 2012 13:42:52 -0000

Author: bz
Date: Fri Feb 17 13:42:50 2012
New Revision: 231877
URL: http://svn.freebsd.org/changeset/base/231877

Log:
  IF8 to 8.3-PRERELEASE.
  
  Adjust multi-FIB relevant changes in startup scripts after the merge
  of r231803.
  
  Sponsored by:	Cisco Systems, Inc.

Added:
  projects/multi-fibv6/8/share/man/man4/isci.4
     - copied unchanged from r231871, stable/8/share/man/man4/isci.4
  projects/multi-fibv6/8/share/man/man4/netmap.4
     - copied unchanged from r231871, stable/8/share/man/man4/netmap.4
  projects/multi-fibv6/8/share/man/man4/xnb.4
     - copied unchanged from r231871, stable/8/share/man/man4/xnb.4
  projects/multi-fibv6/8/sys/dev/isci/
     - copied from r231871, stable/8/sys/dev/isci/
  projects/multi-fibv6/8/sys/dev/netmap/
     - copied from r231871, stable/8/sys/dev/netmap/
  projects/multi-fibv6/8/sys/dev/oce/
     - copied from r231871, stable/8/sys/dev/oce/
  projects/multi-fibv6/8/sys/dev/xen/netback/netback_unit_tests.c
     - copied unchanged from r231871, stable/8/sys/dev/xen/netback/netback_unit_tests.c
  projects/multi-fibv6/8/sys/libkern/strnlen.c
     - copied unchanged from r231871, stable/8/sys/libkern/strnlen.c
  projects/multi-fibv6/8/sys/modules/isci/
     - copied from r231871, stable/8/sys/modules/isci/
  projects/multi-fibv6/8/sys/modules/oce/
     - copied from r231871, stable/8/sys/modules/oce/
  projects/multi-fibv6/8/sys/net/netmap.h
     - copied unchanged from r231871, stable/8/sys/net/netmap.h
  projects/multi-fibv6/8/sys/net/netmap_user.h
     - copied unchanged from r231871, stable/8/sys/net/netmap_user.h
  projects/multi-fibv6/8/tools/tools/netmap/
     - copied from r231871, stable/8/tools/tools/netmap/
     - copied from r231871, stable/8/usr.sbin/rtadvctl/
  projects/multi-fibv6/8/usr.sbin/rtadvd/control.c
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/control.h
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/control_client.c
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_client.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/control_client.h
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_client.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/control_server.c
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_server.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/control_server.h
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_server.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/timer_subr.c
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/timer_subr.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/timer_subr.h
     - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/timer_subr.h
Directory Properties:
  projects/multi-fibv6/8/usr.sbin/rtadvctl/   (props changed)
Deleted:
  projects/multi-fibv6/8/usr.sbin/rtadvd/dump.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/dump.h
Modified:
  projects/multi-fibv6/8/MAINTAINERS   (contents, props changed)
  projects/multi-fibv6/8/etc/defaults/periodic.conf
  projects/multi-fibv6/8/etc/defaults/rc.conf
  projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs
  projects/multi-fibv6/8/etc/rc.d/SERVERS
  projects/multi-fibv6/8/etc/rc.d/accounting
  projects/multi-fibv6/8/etc/rc.d/addswap
  projects/multi-fibv6/8/etc/rc.d/amd
  projects/multi-fibv6/8/etc/rc.d/apm
  projects/multi-fibv6/8/etc/rc.d/apmd
  projects/multi-fibv6/8/etc/rc.d/bootparams
  projects/multi-fibv6/8/etc/rc.d/bsnmpd
  projects/multi-fibv6/8/etc/rc.d/bthidd
  projects/multi-fibv6/8/etc/rc.d/cleanvar
  projects/multi-fibv6/8/etc/rc.d/cleartmp
  projects/multi-fibv6/8/etc/rc.d/cron
  projects/multi-fibv6/8/etc/rc.d/ddb
  projects/multi-fibv6/8/etc/rc.d/devd
  projects/multi-fibv6/8/etc/rc.d/devfs
  projects/multi-fibv6/8/etc/rc.d/dhclient
  projects/multi-fibv6/8/etc/rc.d/dmesg
  projects/multi-fibv6/8/etc/rc.d/ftp-proxy
  projects/multi-fibv6/8/etc/rc.d/ftpd
  projects/multi-fibv6/8/etc/rc.d/gptboot
  projects/multi-fibv6/8/etc/rc.d/hastd
  projects/multi-fibv6/8/etc/rc.d/hcsecd
  projects/multi-fibv6/8/etc/rc.d/hostapd
  projects/multi-fibv6/8/etc/rc.d/inetd
  projects/multi-fibv6/8/etc/rc.d/ip6addrctl
  projects/multi-fibv6/8/etc/rc.d/ipfilter
  projects/multi-fibv6/8/etc/rc.d/ipfs
  projects/multi-fibv6/8/etc/rc.d/ipmon
  projects/multi-fibv6/8/etc/rc.d/ipnat
  projects/multi-fibv6/8/etc/rc.d/ipsec
  projects/multi-fibv6/8/etc/rc.d/ipxrouted
  projects/multi-fibv6/8/etc/rc.d/jail
  projects/multi-fibv6/8/etc/rc.d/keyserv
  projects/multi-fibv6/8/etc/rc.d/lockd
  projects/multi-fibv6/8/etc/rc.d/lpd
  projects/multi-fibv6/8/etc/rc.d/mountd
  projects/multi-fibv6/8/etc/rc.d/moused
  projects/multi-fibv6/8/etc/rc.d/mroute6d
  projects/multi-fibv6/8/etc/rc.d/mrouted
  projects/multi-fibv6/8/etc/rc.d/natd
  projects/multi-fibv6/8/etc/rc.d/netwait
  projects/multi-fibv6/8/etc/rc.d/network_ipv6
  projects/multi-fibv6/8/etc/rc.d/newsyslog
  projects/multi-fibv6/8/etc/rc.d/nfscbd
  projects/multi-fibv6/8/etc/rc.d/nfsd
  projects/multi-fibv6/8/etc/rc.d/nfsuserd
  projects/multi-fibv6/8/etc/rc.d/nscd
  projects/multi-fibv6/8/etc/rc.d/ntpd
  projects/multi-fibv6/8/etc/rc.d/ntpdate
  projects/multi-fibv6/8/etc/rc.d/pf
  projects/multi-fibv6/8/etc/rc.d/pflog
  projects/multi-fibv6/8/etc/rc.d/pfsync
  projects/multi-fibv6/8/etc/rc.d/powerd
  projects/multi-fibv6/8/etc/rc.d/ppp
  projects/multi-fibv6/8/etc/rc.d/pppoed
  projects/multi-fibv6/8/etc/rc.d/quota
  projects/multi-fibv6/8/etc/rc.d/rarpd
  projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server
  projects/multi-fibv6/8/etc/rc.d/route6d
  projects/multi-fibv6/8/etc/rc.d/routed
  projects/multi-fibv6/8/etc/rc.d/routing
  projects/multi-fibv6/8/etc/rc.d/rpcbind
  projects/multi-fibv6/8/etc/rc.d/rtadvd
  projects/multi-fibv6/8/etc/rc.d/rtsold
  projects/multi-fibv6/8/etc/rc.d/rwho
  projects/multi-fibv6/8/etc/rc.d/sdpd
  projects/multi-fibv6/8/etc/rc.d/sendmail
  projects/multi-fibv6/8/etc/rc.d/sshd
  projects/multi-fibv6/8/etc/rc.d/statd
  projects/multi-fibv6/8/etc/rc.d/syslogd
  projects/multi-fibv6/8/etc/rc.d/timed
  projects/multi-fibv6/8/etc/rc.d/ubthidhci
  projects/multi-fibv6/8/etc/rc.d/var
  projects/multi-fibv6/8/etc/rc.d/virecover
  projects/multi-fibv6/8/etc/rc.d/watchdogd
  projects/multi-fibv6/8/etc/rc.d/ypbind
  projects/multi-fibv6/8/etc/rc.d/yppasswdd
  projects/multi-fibv6/8/etc/rc.d/ypserv
  projects/multi-fibv6/8/etc/rc.d/ypset
  projects/multi-fibv6/8/etc/rc.d/ypupdated
  projects/multi-fibv6/8/etc/rc.d/ypxfrd
  projects/multi-fibv6/8/etc/rc.subr
  projects/multi-fibv6/8/gnu/usr.bin/groff/tmac/mdoc.local
  projects/multi-fibv6/8/include/rpc/Makefile
  projects/multi-fibv6/8/include/rpcsvc/Makefile
  projects/multi-fibv6/8/lib/libc/gen/sysctl.3
  projects/multi-fibv6/8/lib/libc/rpc/Makefile.inc
  projects/multi-fibv6/8/lib/libc/yp/Makefile.inc
  projects/multi-fibv6/8/lib/libelf/elf_data.c
  projects/multi-fibv6/8/lib/libelf/elf_getdata.3
  projects/multi-fibv6/8/lib/libipsec/pfkey.c
  projects/multi-fibv6/8/lib/librpcsvc/Makefile
  projects/multi-fibv6/8/lib/libypclnt/Makefile
  projects/multi-fibv6/8/libexec/ypxfr/Makefile
  projects/multi-fibv6/8/release/Makefile
  projects/multi-fibv6/8/release/picobsd/tinyware/passwd/Makefile
  projects/multi-fibv6/8/sbin/hastd/rangelock.c
  projects/multi-fibv6/8/sbin/ifconfig/ifconfig.c
  projects/multi-fibv6/8/share/man/man4/Makefile
  projects/multi-fibv6/8/share/man/man4/ada.4
  projects/multi-fibv6/8/share/man/man4/bge.4
  projects/multi-fibv6/8/share/man/man4/cd.4
  projects/multi-fibv6/8/share/man/man4/da.4
  projects/multi-fibv6/8/share/man/man4/lmc.4
  projects/multi-fibv6/8/share/man/man4/sbp.4
  projects/multi-fibv6/8/share/man/man4/u3g.4
  projects/multi-fibv6/8/share/man/man4/usb_quirk.4
  projects/multi-fibv6/8/share/man/man5/periodic.conf.5
  projects/multi-fibv6/8/share/man/man5/portindex.5
  projects/multi-fibv6/8/share/man/man5/rc.conf.5
  projects/multi-fibv6/8/share/man/man7/security.7
  projects/multi-fibv6/8/share/man/man8/rc.subr.8
  projects/multi-fibv6/8/share/man/man9/DEVICE_PROBE.9
  projects/multi-fibv6/8/sys/amd64/conf/GENERIC
  projects/multi-fibv6/8/sys/amd64/conf/NOTES
  projects/multi-fibv6/8/sys/amd64/conf/XENHVM
  projects/multi-fibv6/8/sys/conf/NOTES
  projects/multi-fibv6/8/sys/conf/files
  projects/multi-fibv6/8/sys/conf/files.amd64
  projects/multi-fibv6/8/sys/conf/files.i386
  projects/multi-fibv6/8/sys/conf/newvers.sh
  projects/multi-fibv6/8/sys/conf/options
  projects/multi-fibv6/8/sys/conf/options.amd64
  projects/multi-fibv6/8/sys/conf/options.i386
  projects/multi-fibv6/8/sys/dev/acpica/acpi.c
  projects/multi-fibv6/8/sys/dev/ata/ata-queue.c
  projects/multi-fibv6/8/sys/dev/bge/if_bge.c
  projects/multi-fibv6/8/sys/dev/bge/if_bgereg.h
  projects/multi-fibv6/8/sys/dev/esp/ncr53c9x.c
  projects/multi-fibv6/8/sys/dev/et/if_et.c
  projects/multi-fibv6/8/sys/dev/mps/mps.c
  projects/multi-fibv6/8/sys/dev/mps/mps_pci.c
  projects/multi-fibv6/8/sys/dev/mps/mps_sas.c
  projects/multi-fibv6/8/sys/dev/mps/mps_sas.h
  projects/multi-fibv6/8/sys/dev/mps/mps_sas_lsi.c
  projects/multi-fibv6/8/sys/dev/mps/mps_user.c
  projects/multi-fibv6/8/sys/dev/mps/mpsvar.h
  projects/multi-fibv6/8/sys/dev/re/if_re.c
  projects/multi-fibv6/8/sys/dev/sound/pcm/sound.c
  projects/multi-fibv6/8/sys/dev/twa/tw_osl.h
  projects/multi-fibv6/8/sys/dev/xen/balloon/balloon.c
  projects/multi-fibv6/8/sys/dev/xen/blkback/blkback.c
  projects/multi-fibv6/8/sys/dev/xen/blkfront/blkfront.c
  projects/multi-fibv6/8/sys/dev/xen/blkfront/block.h
  projects/multi-fibv6/8/sys/dev/xen/console/console.c
  projects/multi-fibv6/8/sys/dev/xen/control/control.c
  projects/multi-fibv6/8/sys/dev/xen/netback/netback.c
  projects/multi-fibv6/8/sys/dev/xen/netfront/netfront.c
  projects/multi-fibv6/8/sys/dev/xen/xenpci/evtchn.c
  projects/multi-fibv6/8/sys/fs/nfsserver/nfs_nfsdport.c
  projects/multi-fibv6/8/sys/fs/tmpfs/tmpfs_vnops.c
  projects/multi-fibv6/8/sys/i386/conf/GENERIC
  projects/multi-fibv6/8/sys/i386/conf/NOTES
  projects/multi-fibv6/8/sys/i386/include/pcpu.h
  projects/multi-fibv6/8/sys/i386/include/pmap.h
  projects/multi-fibv6/8/sys/i386/include/xen/hypercall.h
  projects/multi-fibv6/8/sys/i386/include/xen/xen-os.h
  projects/multi-fibv6/8/sys/i386/include/xen/xenpmap.h
  projects/multi-fibv6/8/sys/i386/include/xen/xenvar.h
  projects/multi-fibv6/8/sys/i386/xen/xen_machdep.c
  projects/multi-fibv6/8/sys/kern/kern_subr.c
  projects/multi-fibv6/8/sys/kern/subr_scanf.c
  projects/multi-fibv6/8/sys/kern/uipc_mbuf.c
  projects/multi-fibv6/8/sys/modules/Makefile
  projects/multi-fibv6/8/sys/modules/kgssapi/Makefile
  projects/multi-fibv6/8/sys/modules/kgssapi_krb5/Makefile
  projects/multi-fibv6/8/sys/net/if.h
  projects/multi-fibv6/8/sys/net/if_var.h
  projects/multi-fibv6/8/sys/net/route.c
  projects/multi-fibv6/8/sys/net/rtsock.c
  projects/multi-fibv6/8/sys/netgraph/netgraph.h
  projects/multi-fibv6/8/sys/netgraph/ng_base.c
  projects/multi-fibv6/8/sys/netgraph/ng_cisco.c
  projects/multi-fibv6/8/sys/netgraph/ng_cisco.h
  projects/multi-fibv6/8/sys/netgraph/ng_socket.c
  projects/multi-fibv6/8/sys/netgraph/ng_socketvar.h
  projects/multi-fibv6/8/sys/netinet/icmp6.h
  projects/multi-fibv6/8/sys/netinet/in.c
  projects/multi-fibv6/8/sys/netinet6/nd6.h
  projects/multi-fibv6/8/sys/netinet6/nd6_rtr.c
  projects/multi-fibv6/8/sys/nfsserver/nfs_serv.c
  projects/multi-fibv6/8/sys/pc98/conf/GENERIC
  projects/multi-fibv6/8/sys/sys/eventhandler.h
  projects/multi-fibv6/8/sys/sys/libkern.h
  projects/multi-fibv6/8/sys/sys/param.h
  projects/multi-fibv6/8/sys/sys/socket.h
  projects/multi-fibv6/8/sys/xen/interface/io/netif.h
  projects/multi-fibv6/8/sys/xen/interface/io/xenbus.h
  projects/multi-fibv6/8/sys/xen/xenbus/xenbus.c
  projects/multi-fibv6/8/sys/xen/xenbus/xenbus_if.m
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusb.c
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusb.h
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_back.c
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_front.c
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_if.m
  projects/multi-fibv6/8/sys/xen/xenbus/xenbusvar.h
  projects/multi-fibv6/8/sys/xen/xenstore/xenstore.c
  projects/multi-fibv6/8/sys/xen/xenstore/xenstorevar.h
  projects/multi-fibv6/8/usr.bin/sockstat/sockstat.1
  projects/multi-fibv6/8/usr.bin/sockstat/sockstat.c
  projects/multi-fibv6/8/usr.sbin/Makefile   (contents, props changed)
  projects/multi-fibv6/8/usr.sbin/amd/Makefile.inc
  projects/multi-fibv6/8/usr.sbin/bootparamd/bootparamd/Makefile
  projects/multi-fibv6/8/usr.sbin/bootparamd/callbootd/Makefile
  projects/multi-fibv6/8/usr.sbin/gssd/Makefile
  projects/multi-fibv6/8/usr.sbin/keyserv/Makefile
  projects/multi-fibv6/8/usr.sbin/rpc.lockd/Makefile
  projects/multi-fibv6/8/usr.sbin/rpc.statd/Makefile
  projects/multi-fibv6/8/usr.sbin/rpc.yppasswdd/Makefile
  projects/multi-fibv6/8/usr.sbin/rpc.ypupdated/Makefile
  projects/multi-fibv6/8/usr.sbin/rpc.ypxfrd/Makefile
  projects/multi-fibv6/8/usr.sbin/rtadvd/Makefile
  projects/multi-fibv6/8/usr.sbin/rtadvd/advcap.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/config.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/config.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/if.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/if.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/pathnames.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/rrenum.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/rrenum.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.8
  projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.conf
  projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.conf.5
  projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.h
  projects/multi-fibv6/8/usr.sbin/rtadvd/timer.c
  projects/multi-fibv6/8/usr.sbin/rtadvd/timer.h
  projects/multi-fibv6/8/usr.sbin/yppush/Makefile
  projects/multi-fibv6/8/usr.sbin/ypserv/Makefile
Directory Properties:
  projects/multi-fibv6/8/   (props changed)
  projects/multi-fibv6/8/etc/   (props changed)
  projects/multi-fibv6/8/gnu/   (props changed)
  projects/multi-fibv6/8/gnu/usr.bin/   (props changed)
  projects/multi-fibv6/8/gnu/usr.bin/groff/   (props changed)
  projects/multi-fibv6/8/include/   (props changed)
  projects/multi-fibv6/8/lib/   (props changed)
  projects/multi-fibv6/8/lib/libc/   (props changed)
  projects/multi-fibv6/8/lib/libelf/   (props changed)
  projects/multi-fibv6/8/lib/libipsec/   (props changed)
  projects/multi-fibv6/8/lib/librpcsvc/   (props changed)
  projects/multi-fibv6/8/lib/libypclnt/   (props changed)
  projects/multi-fibv6/8/libexec/   (props changed)
  projects/multi-fibv6/8/libexec/ypxfr/   (props changed)
  projects/multi-fibv6/8/release/   (props changed)
  projects/multi-fibv6/8/release/picobsd/   (props changed)
  projects/multi-fibv6/8/release/picobsd/tinyware/passwd/   (props changed)
  projects/multi-fibv6/8/sbin/   (props changed)
  projects/multi-fibv6/8/sbin/hastd/   (props changed)
  projects/multi-fibv6/8/sbin/ifconfig/   (props changed)
  projects/multi-fibv6/8/share/   (props changed)
  projects/multi-fibv6/8/share/man/   (props changed)
  projects/multi-fibv6/8/share/man/man4/   (props changed)
  projects/multi-fibv6/8/share/man/man5/   (props changed)
  projects/multi-fibv6/8/share/man/man7/   (props changed)
  projects/multi-fibv6/8/share/man/man8/   (props changed)
  projects/multi-fibv6/8/share/man/man9/   (props changed)
  projects/multi-fibv6/8/sys/   (props changed)
  projects/multi-fibv6/8/sys/amd64/include/xen/   (props changed)
  projects/multi-fibv6/8/sys/boot/   (props changed)
  projects/multi-fibv6/8/sys/cddl/contrib/opensolaris/   (props changed)
  projects/multi-fibv6/8/sys/contrib/dev/acpica/   (props changed)
  projects/multi-fibv6/8/sys/contrib/pf/   (props changed)
  projects/multi-fibv6/8/sys/dev/e1000/   (props changed)
  projects/multi-fibv6/8/tools/   (props changed)
  projects/multi-fibv6/8/tools/tools/   (props changed)
  projects/multi-fibv6/8/usr.bin/   (props changed)
  projects/multi-fibv6/8/usr.bin/sockstat/   (props changed)
  projects/multi-fibv6/8/usr.sbin/   (props changed)
  projects/multi-fibv6/8/usr.sbin/amd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/bootparamd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/gssd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/keyserv/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rpc.lockd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rpc.statd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rpc.yppasswdd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rpc.ypupdated/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rpc.ypxfrd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/rtadvd/   (props changed)
  projects/multi-fibv6/8/usr.sbin/yppush/   (props changed)
  projects/multi-fibv6/8/usr.sbin/ypserv/   (props changed)

Modified: projects/multi-fibv6/8/MAINTAINERS
==============================================================================
--- projects/multi-fibv6/8/MAINTAINERS	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/MAINTAINERS	Fri Feb 17 13:42:50 2012	(r231877)
@@ -124,6 +124,7 @@ usr.bin/bluetooth	emax	Pre-commit review
 usr.sbin/bluetooth	emax	Pre-commit review preferred.
 gnu/usr.bin/send-pr	bugmaster	Pre-commit review requested.
 ncurses		rafan	Heads-up appreciated, try not to break it.
+isci(4)		jimharris	Pre-commit review requested.
 
 Following are the entries from the Makefiles, and a few other sources.
 Please remove stale entries from both their origin, and this file.

Modified: projects/multi-fibv6/8/etc/defaults/periodic.conf
==============================================================================
--- projects/multi-fibv6/8/etc/defaults/periodic.conf	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/defaults/periodic.conf	Fri Feb 17 13:42:50 2012	(r231877)
@@ -96,6 +96,7 @@ daily_status_disks_df_flags="-l -h"		# d
 
 # 404.status-zfs
 daily_status_zfs_enable="NO"				# Check ZFS
+daily_status_zfs_zpool_list_enable="YES"		# List ZFS pools
 
 # 405.status-ata_raid
 daily_status_ata_raid_enable="NO"			# Check ATA raid status

Modified: projects/multi-fibv6/8/etc/defaults/rc.conf
==============================================================================
--- projects/multi-fibv6/8/etc/defaults/rc.conf	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/defaults/rc.conf	Fri Feb 17 13:42:50 2012	(r231877)
@@ -29,6 +29,8 @@ early_late_divider="FILESYSTEMS"	# Scrip
 			# stages of the boot process.  Make sure you know
 			# the ramifications if you change this.
 			# See rc.conf(5) for more details.
+always_force_depends="NO"	# Set to check that indicated dependencies are
+				# running during boot (can increase boot time).
 
 swapfile="NO"		# Set to name of swapfile if aux swapfile desired.
 apm_enable="NO"		# Set to YES to enable APM BIOS functions (or NO).
@@ -634,6 +636,7 @@ devfs_rulesets="/etc/defaults/devfs.rule
 devfs_system_ruleset=""	# The name (NOT number) of a ruleset to apply to /dev
 devfs_set_rulesets=""	# A list of /mount/dev=ruleset_name settings to
 			# apply (must be mounted already, i.e. fstab(5))
+devfs_load_rulesets="NO"	# Enable to always load the default rulesets
 performance_cx_lowest="HIGH"	# Online CPU idle state
 performance_cpu_freq="NONE"	# Online CPU frequency
 economy_cx_lowest="HIGH"	# Offline CPU idle state

Modified: projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs
==============================================================================
--- projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs	Fri Feb 17 13:42:50 2012	(r231877)
@@ -16,12 +16,21 @@ case "$daily_status_zfs_enable" in
 	echo
 	echo 'Checking status of zfs pools:'
 
-	out=`zpool status -x`
-	echo "$out"
+	case "$daily_status_zfs_zpool_list_enable" in
+	    [Yy][Ee][Ss])
+		lout=`zpool list`
+		echo "$lout"
+		echo
+		;;
+	    *)
+		;;
+	esac
+	sout=`zpool status -x`
+	echo "$sout"
 	# zpool status -x always exits with 0, so we have to interpret its
 	# output to see what's going on.
-	if [ "$out" = "all pools are healthy" \
-	    -o "$out" = "no pools available" ]; then
+	if [ "$sout" = "all pools are healthy" \
+	    -o "$sout" = "no pools available" ]; then
 		rc=0
 	else
 		rc=1

Modified: projects/multi-fibv6/8/etc/rc.d/SERVERS
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/SERVERS	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/SERVERS	Fri Feb 17 13:42:50 2012	(r231877)
@@ -4,7 +4,7 @@
 #
 
 # PROVIDE: SERVERS
-# REQUIRE: mountcritremote abi ldconfig savecore
+# REQUIRE: mountcritremote abi ldconfig savecore watchdogd
 
 #	This is a dummy dependency, for early-start servers relying on
 #	some basic configuration.

Modified: projects/multi-fibv6/8/etc/rc.d/accounting
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/accounting	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/accounting	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="accounting"
-rcvar=`set_rcvar`
+rcvar="accounting_enable"
 accounting_command="/usr/sbin/accton"
 accounting_file="/var/account/acct"
 

Modified: projects/multi-fibv6/8/etc/rc.d/addswap
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/addswap	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/addswap	Fri Feb 17 13:42:50 2012	(r231877)
@@ -6,7 +6,7 @@
 #
 
 # PROVIDE: addswap
-# REQUIRE: FILESYSTEMS
+# REQUIRE: FILESYSTEMS kld
 # KEYWORD: nojail
 
 . /etc/rc.subr

Modified: projects/multi-fibv6/8/etc/rc.d/amd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/amd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/amd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="amd"
-rcvar=`set_rcvar`
+rcvar="amd_enable"
 command="/usr/sbin/${name}"
 start_precmd="amd_precmd"
 command_args="&"
@@ -19,15 +19,8 @@ extra_commands="reload"
 
 amd_precmd()
 {
-	if ! checkyesno nfs_client_enable; then
-		force_depend nfsclient || return 1
-	fi
-
-	if ! checkyesno rpcbind_enable  && \
-	    ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || return 1
-	fi
+	force_depend nfsclient nfs_client || return 1
+	force_depend rpcbind || return 1
 
 	case ${amd_map_program} in
 	[Nn][Oo] | '')
@@ -49,7 +42,6 @@ amd_precmd()
 		command_args="> /var/run/amd.pid 2> /dev/null"
 		;;
 	esac
-	return 0
 }
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/apm
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/apm	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/apm	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="apm"
-rcvar=`set_rcvar`
+rcvar="apm_enable"
 start_precmd="apm_precmd"
 command="/usr/sbin/${name}"
 start_cmd="${command} -e enable"

Modified: projects/multi-fibv6/8/etc/rc.d/apmd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/apmd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/apmd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="apmd"
-rcvar=`set_rcvar`
+rcvar="apmd_enable"
 command="/usr/sbin/${name}"
 start_precmd="apmd_prestart"
 
@@ -19,24 +19,18 @@ apmd_prestart()
 {
 	case `${SYSCTL_N} hw.machine_arch` in
 	i386)
-		# Enable apm if it is not already enabled
-		if ! checkyesno apm_enable  && \
-		    ! /etc/rc.d/apm forcestatus 1>/dev/null 2>&1
-		then
-			force_depend apm || return 1
-		fi
+		force_depend apm || return 1
 
 		# Warn user about acpi apm compatibility support which
 		# does not work with apmd.
 		if [ ! -e /dev/apmctl ]; then
-		    warn "/dev/apmctl not found; kernel is missing apm(4)"
+			warn "/dev/apmctl not found; kernel is missing apm(4)"
 		fi
 		;;
 	*)
 		return 1
 		;;
 	esac
-	return 0
 }
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/bootparams
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/bootparams	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/bootparams	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="bootparamd"
-rcvar=`set_rcvar`
+rcvar="bootparamd_enable"
 required_files="/etc/bootparams"
 command="/usr/sbin/${name}"
 

Modified: projects/multi-fibv6/8/etc/rc.d/bsnmpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/bsnmpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/bsnmpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="bsnmpd"
-rcvar=`set_rcvar`
+rcvar="bsnmpd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/snmpd.pid"
 

Modified: projects/multi-fibv6/8/etc/rc.d/bthidd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/bthidd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/bthidd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,9 +11,9 @@
 . /etc/rc.subr
 
 name="bthidd"
+rcvar="bthidd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
-rcvar=`set_rcvar`
 start_precmd="bthidd_prestart"
 
 bthidd_prestart()

Modified: projects/multi-fibv6/8/etc/rc.d/cleanvar
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/cleanvar	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/cleanvar	Fri Feb 17 13:42:50 2012	(r231877)
@@ -9,7 +9,7 @@
 . /etc/rc.subr
 
 name="cleanvar"
-rcvar=`set_rcvar`
+rcvar="cleanvar_enable"
 
 start_precmd="${name}_prestart"
 start_cmd="${name}_start"

Modified: projects/multi-fibv6/8/etc/rc.d/cleartmp
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/cleartmp	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/cleartmp	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 
 name="cleartmp"
 # Disguise rcvar for the start method to run irrespective of its setting.
-rcvar1=`set_rcvar clear_tmp`
+rcvar1="clear_tmp_enable"
 start_cmd="${name}_start"
 stop_cmd=":"
 

Modified: projects/multi-fibv6/8/etc/rc.d/cron
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/cron	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/cron	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="cron"
-rcvar="`set_rcvar`"
+rcvar="cron_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 

Modified: projects/multi-fibv6/8/etc/rc.d/ddb
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ddb	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ddb	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ddb"
-rcvar=`set_rcvar`
+rcvar="ddb_enable"
 command="/sbin/${name}"
 start_precmd="ddb_prestart"
 stop_cmd=":"

Modified: projects/multi-fibv6/8/etc/rc.d/devd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/devd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/devd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="devd"
-rcvar=`set_rcvar`
+rcvar="devd_enable"
 command="/sbin/${name}"
 
 start_precmd=${name}_prestart

Modified: projects/multi-fibv6/8/etc/rc.d/devfs
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/devfs	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/devfs	Fri Feb 17 13:42:50 2012	(r231877)
@@ -16,7 +16,8 @@ stop_cmd=':'
 
 devfs_start()
 {
-	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then
+	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] ||
+	    checkyesno devfs_load_rulesets; then
 		devfs_init_rulesets
 		if [ -n "$devfs_system_ruleset" ]; then
 			devfs_set_ruleset $devfs_system_ruleset /dev

Modified: projects/multi-fibv6/8/etc/rc.d/dhclient
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/dhclient	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/dhclient	Fri Feb 17 13:42:50 2012	(r231877)
@@ -22,7 +22,14 @@ stop_precmd="dhclient_pre_check"
 dhclient_pre_check()
 {
 	if [ -z "${rc_force}" ] && ! dhcpif $ifn; then
-		err 1 "'$ifn' is not a DHCP-enabled interface"
+		local msg
+		msg="'$ifn' is not a DHCP-enabled interface"
+		if [ -z "${rc_quiet}" ]; then
+			echo "$msg"
+		else
+			debug "$msg"
+		fi
+			exit 1
 	fi
 }
 

Modified: projects/multi-fibv6/8/etc/rc.d/dmesg
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/dmesg	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/dmesg	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="dmesg"
-rcvar=`set_rcvar`
+rcvar="dmesg_enable"
 dmesg_file="/var/run/dmesg.boot"
 start_cmd="do_dmesg"
 stop_cmd=":"

Modified: projects/multi-fibv6/8/etc/rc.d/ftp-proxy
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ftp-proxy	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ftp-proxy	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ftpproxy"
-rcvar=`set_rcvar`
+rcvar="ftpproxy_enable"
 command="/usr/sbin/ftp-proxy"
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/ftpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ftpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ftpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ftpd"
-rcvar=`set_rcvar`
+rcvar="ftpd_enable"
 command="/usr/libexec/${name}"
 pidfile="/var/run/${name}.pid"
 start_precmd=ftpd_prestart

Modified: projects/multi-fibv6/8/etc/rc.d/gptboot
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/gptboot	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/gptboot	Fri Feb 17 13:42:50 2012	(r231877)
@@ -34,7 +34,7 @@
 . /etc/rc.subr
 
 name="gptboot"
-rcvar=`set_rcvar`
+rcvar="gptboot_enable"
 start_cmd="gptboot_report"
 
 gptboot_report()

Modified: projects/multi-fibv6/8/etc/rc.d/hastd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/hastd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/hastd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="hastd"
-rcvar=`set_rcvar`
+rcvar="hastd_enable"
 pidfile="/var/run/${name}.pid"
 command="/sbin/${name}"
 hastctl="/sbin/hastctl"

Modified: projects/multi-fibv6/8/etc/rc.d/hcsecd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/hcsecd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/hcsecd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,9 +11,9 @@
 . /etc/rc.subr
 
 name="hcsecd"
+rcvar="hcsecd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
-rcvar=`set_rcvar`
 required_modules="ng_btsocket"
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/hostapd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/hostapd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/hostapd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,8 +10,8 @@
 . /etc/rc.subr
 
 name="hostapd"
+rcvar="hostapd_enable"
 command="/usr/sbin/${name}"
-rcvar=`set_rcvar`
 
 conf_file="/etc/${name}.conf"
 pidfile="/var/run/${name}.pid"

Modified: projects/multi-fibv6/8/etc/rc.d/inetd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/inetd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/inetd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="inetd"
-rcvar=`set_rcvar`
+rcvar="inetd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 required_files="/etc/${name}.conf"

Modified: projects/multi-fibv6/8/etc/rc.d/ip6addrctl
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ip6addrctl	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ip6addrctl	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ip6addrctl"
-rcvar=`set_rcvar`
+rcvar="ip6addrctl_enable"
 start_cmd="ip6addrctl_start"
 stop_cmd="ip6addrctl_stop"
 extra_commands="status prefer_ipv6 prefer_ipv4"

Modified: projects/multi-fibv6/8/etc/rc.d/ipfilter
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipfilter	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipfilter	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ipfilter"
-rcvar=`set_rcvar`
+rcvar="ipfilter_enable"
 load_rc_config $name
 stop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}"
 

Modified: projects/multi-fibv6/8/etc/rc.d/ipfs
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipfs	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipfs	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ipfs"
-rcvar=`set_rcvar`
+rcvar="ipfs_enable"
 start_cmd="ipfs_start"
 stop_cmd="ipfs_stop"
 start_precmd="ipfs_prestart"

Modified: projects/multi-fibv6/8/etc/rc.d/ipmon
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipmon	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipmon	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ipmon"
-rcvar=`set_rcvar`
+rcvar="ipmon_enable"
 command="/sbin/${name}"
 start_precmd="ipmon_precmd"
 

Modified: projects/multi-fibv6/8/etc/rc.d/ipnat
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipnat	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipnat	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ipnat"
-rcvar=`set_rcvar`
+rcvar="ipnat_enable"
 load_rc_config $name
 start_cmd="ipnat_start"
 stop_cmd="${ipnat_program} -F -C"

Modified: projects/multi-fibv6/8/etc/rc.d/ipsec
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipsec	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipsec	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ipsec"
-rcvar=`set_rcvar`
+rcvar="ipsec_enable"
 start_precmd="ipsec_prestart"
 start_cmd="ipsec_start"
 stop_precmd="test -f $ipsec_file"

Modified: projects/multi-fibv6/8/etc/rc.d/ipxrouted
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ipxrouted	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ipxrouted	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ipxrouted"
-rcvar=`set_rcvar`
+rcvar="ipxrouted_enable"
 command="/usr/sbin/IPXrouted"
 command_args="> /dev/null 2>&1"
 

Modified: projects/multi-fibv6/8/etc/rc.d/jail
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/jail	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/jail	Fri Feb 17 13:42:50 2012	(r231877)
@@ -17,7 +17,7 @@
 . /etc/rc.subr
 
 name="jail"
-rcvar=`set_rcvar`
+rcvar="jail_enable"
 start_cmd="jail_start"
 stop_cmd="jail_stop"
 

Modified: projects/multi-fibv6/8/etc/rc.d/keyserv
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/keyserv	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/keyserv	Fri Feb 17 13:42:50 2012	(r231877)
@@ -13,19 +13,13 @@
 . /etc/rc.subr
 
 name="keyserv"
-rcvar=`set_rcvar`
+rcvar="keyserv_enable"
 command="/usr/sbin/${name}"
 start_precmd="keyserv_prestart"
 
 keyserv_prestart()
 {
-	if ! checkyesno rpcbind_enable  && \
-		! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || return 1
-	fi
-
-	return 0
+	force_depend rpcbind || return 1
 }
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/lockd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/lockd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/lockd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -15,28 +15,16 @@ name="lockd"
 rcvar=rpc_lockd_enable
 command="/usr/sbin/rpc.${name}"
 start_precmd='lockd_precmd'
-stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable'
-status_precmd=$stop_precmd
 
 # Make sure that we are either an NFS client or server, and that we get
 # the correct flags from rc.conf(5).
 #
 lockd_precmd()
 {
-	local ret
-	ret=0
-
-	if ! checkyesno nfs_server_enable && ! checkyesno nfs_client_enable
-	then
-		ret=1
-	fi
-	if ! checkyesno rpcbind_enable && \
-	    ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || ret=1
-	fi
+	force_depend rpcbind || return 1
+	force_depend statd rpc_statd || return 1
+	
 	rc_flags=${rpc_lockd_flags}
-	return ${ret}
 }
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/lpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/lpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/lpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="lpd"
-rcvar=`set_rcvar`
+rcvar="lpd_enable"
 command="/usr/sbin/${name}"
 required_files="/etc/printcap"
 start_precmd="chkprintcap"

Modified: projects/multi-fibv6/8/etc/rc.d/mountd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/mountd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/mountd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="mountd"
-rcvar=`set_rcvar`
+rcvar="mountd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 required_files="/etc/exports"
@@ -19,11 +19,7 @@ extra_commands="reload"
 
 mountd_precmd()
 {
-	if ! checkyesno rpcbind_enable  && \
-	    ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || return 1
-	fi
+	force_depend rpcbind || return 1
 
 	# mountd flags will differ depending on rc.conf settings
 	#
@@ -49,8 +45,8 @@ mountd_precmd()
 	fi
 
 	rm -f /var/db/mountdtab
-	( umask 022 ; > /var/db/mountdtab )
-	return 0
+	( umask 022 ; > /var/db/mountdtab ) ||
+	    err 1 'Cannot create /var/db/mountdtab'
 }
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/moused
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/moused	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/moused	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="moused"
-rcvar=`set_rcvar`
+rcvar="moused_enable"
 command="/usr/sbin/${name}"
 start_cmd="moused_start"
 pidprefix="/var/run/moused"
@@ -23,7 +23,7 @@ load_rc_config $name
 #
 if [ -n "$2" ]; then
 	eval moused_$2_enable=\${moused_$2_enable-${moused_nondefault_enable}}
-	rcvar=`set_rcvar moused_$2`
+	rcvar="moused_${2}_enable"
 	pidfile="${pidprefix}.$2.pid"
 	pidarg="-I $pidfile"
 fi

Modified: projects/multi-fibv6/8/etc/rc.d/mroute6d
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/mroute6d	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/mroute6d	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="mroute6d"
-rcvar=`set_rcvar`
+rcvar="mroute6d_enable"
 command="/usr/local/sbin/pim6dd"
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/mrouted
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/mrouted	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/mrouted	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="mrouted"
-rcvar=`set_rcvar`
+rcvar="mrouted_enable"
 command="/usr/local/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 required_files="/etc/${name}.conf"

Modified: projects/multi-fibv6/8/etc/rc.d/natd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/natd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/natd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/network.subr
 
 name="natd"
-rcvar=`set_rcvar`
+rcvar="natd_enable"
 command="/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 start_precmd="natd_precmd"

Modified: projects/multi-fibv6/8/etc/rc.d/netwait
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/netwait	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/netwait	Fri Feb 17 13:42:50 2012	(r231877)
@@ -14,7 +14,7 @@
 . /etc/rc.subr
 
 name="netwait"
-rcvar=`set_rcvar`
+rcvar="netwait_enable"
 
 start_cmd="${name}_start"
 stop_cmd=":"

Modified: projects/multi-fibv6/8/etc/rc.d/network_ipv6
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/network_ipv6	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/network_ipv6	Fri Feb 17 13:42:50 2012	(r231877)
@@ -36,26 +36,11 @@
 . /etc/network.subr
 
 name="network_ipv6"
-rcvar=`set_rcvar ipv6`
+rcvar="ipv6_enable"
 start_cmd="network_ipv6_start"
 
 network_ipv6_start()
 {
-	local fibs i
-
-	# Get the number of FIBs supported.
-	fibs=`sysctl -n net.fibs`
-	: ${fibs:=1}
-
-  	# disallow "internal" addresses to appear on the wire
-	i=0
-	while test ${i} -lt ${fibs}; do
-		setfib -F ${i} route add -inet6 \
-		   ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
-		setfib -F ${i} route add -inet6 \
-		  ::0.0.0.0 -prefixlen 96 ::1 -reject
-		i=$((i + 1))
-	done
 
 	case ${ipv6_network_interfaces} in
 	[Aa][Uu][Tt][Oo])

Modified: projects/multi-fibv6/8/etc/rc.d/newsyslog
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/newsyslog	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/newsyslog	Fri Feb 17 13:42:50 2012	(r231877)
@@ -9,7 +9,7 @@
 . /etc/rc.subr
 
 name="newsyslog"
-rcvar=`set_rcvar`
+rcvar="newsyslog_enable"
 required_files="/etc/newsyslog.conf"
 command="/usr/sbin/${name}"
 start_cmd="newsyslog_start"

Modified: projects/multi-fibv6/8/etc/rc.d/nfscbd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/nfscbd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/nfscbd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="nfscbd"
-rcvar=`set_rcvar`
+rcvar="nfscbd_enable"
 command="/usr/sbin/${name}"
 sig_stop="USR1"
 

Modified: projects/multi-fibv6/8/etc/rc.d/nfsd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/nfsd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/nfsd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="nfsd"
-rcvar=`set_rcvar nfs_server`
+rcvar="nfs_server_enable"
 command="/usr/sbin/${name}"
 
 load_rc_config $name
@@ -43,18 +43,8 @@ nfsd_precmd()
 		fi
 	fi
 
-	if ! checkyesno rpcbind_enable  && \
-	    ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1
-	then
-		force_depend rpcbind || return 1
-	fi
-
-	if ! checkyesno mountd_enable  && \
-	    ! /etc/rc.d/mountd forcestatus 1>/dev/null 2>&1
-	then
-		force_depend mountd || return 1
-	fi
-	return 0
+	force_depend rpcbind || return 1
+	force_depend mountd || return 1
 }
 
 run_rc_command "$1"

Modified: projects/multi-fibv6/8/etc/rc.d/nfsuserd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/nfsuserd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/nfsuserd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="nfsuserd"
-rcvar=`set_rcvar`
+rcvar="nfsuserd_enable"
 command="/usr/sbin/${name}"
 sig_stop="USR1"
 

Modified: projects/multi-fibv6/8/etc/rc.d/nscd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/nscd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/nscd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -19,7 +19,7 @@
 . /etc/rc.subr
 
 name="nscd"
-rcvar=`set_rcvar`
+rcvar="nscd_enable"
 
 command=/usr/sbin/nscd
 extra_commands="flush"

Modified: projects/multi-fibv6/8/etc/rc.d/ntpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ntpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ntpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="ntpd"
-rcvar=`set_rcvar`
+rcvar="ntpd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 start_precmd="ntpd_precmd"

Modified: projects/multi-fibv6/8/etc/rc.d/ntpdate
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ntpdate	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ntpdate	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ntpdate"
-rcvar=`set_rcvar`
+rcvar="ntpdate_enable"
 stop_cmd=":"
 start_cmd="ntpdate_start"
 

Modified: projects/multi-fibv6/8/etc/rc.d/pf
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/pf	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/pf	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="pf"
-rcvar=`set_rcvar`
+rcvar="pf_enable"
 load_rc_config $name
 start_cmd="pf_start"
 stop_cmd="pf_stop"

Modified: projects/multi-fibv6/8/etc/rc.d/pflog
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/pflog	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/pflog	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="pflog"
-rcvar=`set_rcvar`
+rcvar="pflog_enable"
 command="/sbin/pflogd"
 pidfile="/var/run/pflogd.pid"
 start_precmd="pflog_prestart"

Modified: projects/multi-fibv6/8/etc/rc.d/pfsync
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/pfsync	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/pfsync	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="pfsync"
-rcvar=`set_rcvar`
+rcvar="pfsync_enable"
 start_precmd="pfsync_prestart"
 start_cmd="pfsync_start"
 stop_cmd="pfsync_stop"

Modified: projects/multi-fibv6/8/etc/rc.d/powerd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/powerd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/powerd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="powerd"
-rcvar=`set_rcvar`
+rcvar="powerd_enable"
 command="/usr/sbin/${name}"
 stop_postcmd=powerd_poststop
 

Modified: projects/multi-fibv6/8/etc/rc.d/ppp
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/ppp	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/ppp	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="ppp"
-rcvar=`set_rcvar`
+rcvar="ppp_enable"
 command="/usr/sbin/${name}"
 start_cmd="ppp_start"
 stop_cmd="ppp_stop"

Modified: projects/multi-fibv6/8/etc/rc.d/pppoed
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/pppoed	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/pppoed	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="pppoed"
-rcvar="`set_rcvar`"
+rcvar="pppoed_enable"
 start_cmd="pppoed_start"
 # XXX stop_cmd will not be straightforward
 stop_cmd=":"

Modified: projects/multi-fibv6/8/etc/rc.d/quota
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/quota	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/quota	Fri Feb 17 13:42:50 2012	(r231877)
@@ -13,7 +13,7 @@
 . /etc/rc.subr
 
 name="quota"
-rcvar=`set_rcvar`
+rcvar="quota_enable"
 load_rc_config $name
 start_cmd="quota_start"
 stop_cmd="/usr/sbin/quotaoff ${quotaoff_flags}"

Modified: projects/multi-fibv6/8/etc/rc.d/rarpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rarpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rarpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="rarpd"
-rcvar=`set_rcvar`
+rcvar="rarpd_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 required_files="/etc/ethers"

Modified: projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="rfcomm_pppd_server"
-rcvar=`set_rcvar`
+rcvar="rfcomm_pppd_server_enable"
 command="/usr/sbin/rfcomm_pppd"
 start_cmd="rfcomm_pppd_server_start"
 stop_cmd="rfcomm_pppd_server_stop"

Modified: projects/multi-fibv6/8/etc/rc.d/route6d
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/route6d	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/route6d	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,6 +10,7 @@
 . /etc/rc.subr
 
 name="route6d"
+rcvar="ipv6_router_enable"
 
 # XXX - Executable may be in a different location. The $name variable
 #       is different from the variable in rc.conf(5) so the
@@ -18,7 +19,6 @@ name="route6d"
 #
 load_rc_config $name
 
-rcvar="ipv6_router_enable"
 command="${ipv6_router:-/usr/sbin/${name}}"
 eval ${name}_flags=\"${ipv6_router_flags}\"
 

Modified: projects/multi-fibv6/8/etc/rc.d/routed
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/routed	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/routed	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,13 +10,13 @@
 . /etc/rc.subr
 
 name="routed"
+rcvar="router_enable"
 
 # XXX - Executable may be in a different location. The $name variable
 #       is different from the variable in rc.conf(5) so the
 #       subroutines in rc.subr won't catch it.
 #
 load_rc_config $name
-rcvar="router_enable"
 command="${router:-/sbin/${name}}"
 eval ${name}_flags=\"${router_flags}\"
 run_rc_command "$1"

Modified: projects/multi-fibv6/8/etc/rc.d/routing
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/routing	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/routing	Fri Feb 17 13:42:50 2012	(r231877)
@@ -57,6 +57,26 @@ static_start()
 			atmconfig natm add ${route_args}
 		done
 	fi
+
+	# Disallow "internal" addresses to appear on the wire if inet6
+	# is enabled.
+	if afexists inet6; then
+		local fibs i
+
+		# Get the number of FIBs supported.
+		fibs=`sysctl -n net.fibs`
+		: ${fibs:=1}
+
+		# disallow "internal" addresses to appear on the wire
+		i=0
+		while test ${i} -lt ${fibs}; do
+			setfib -F ${i} route add -inet6 \
+			    ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject
+			setfib -F ${i} route add -inet6 \
+			    ::0.0.0.0 -prefixlen 96 ::1 -reject
+			i=$((i + 1))
+		done
+	fi
 }
 
 _ropts_initdone=

Modified: projects/multi-fibv6/8/etc/rc.d/rpcbind
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rpcbind	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rpcbind	Fri Feb 17 13:42:50 2012	(r231877)
@@ -10,7 +10,7 @@
 . /etc/rc.subr
 
 name="rpcbind"
-rcvar=`set_rcvar`
+rcvar="rpcbind_enable"
 command="/usr/sbin/${name}"
 
 stop_postcmd='/bin/rm -f /var/run/rpcbind.*'

Modified: projects/multi-fibv6/8/etc/rc.d/rtadvd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rtadvd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rtadvd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="rtadvd"
-rcvar=`set_rcvar`
+rcvar="rtadvd_enable"
 command="/usr/sbin/${name}"
 start_precmd="rtadvd_precmd"
 

Modified: projects/multi-fibv6/8/etc/rc.d/rtsold
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rtsold	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rtsold	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="rtsold"
-rcvar=`set_rcvar`
+rcvar="rtsold_enable"
 command="/usr/sbin/${name}"
 pidfile="/var/run/${name}.pid"
 start_postcmd="rtsold_poststart"

Modified: projects/multi-fibv6/8/etc/rc.d/rwho
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/rwho	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/rwho	Fri Feb 17 13:42:50 2012	(r231877)
@@ -11,7 +11,7 @@
 . /etc/rc.subr
 
 name="rwhod"
-rcvar="`set_rcvar`"
+rcvar="rwhod_enable"
 command="/usr/sbin/${name}"
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/sdpd
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/sdpd	Fri Feb 17 13:26:29 2012	(r231876)
+++ projects/multi-fibv6/8/etc/rc.d/sdpd	Fri Feb 17 13:42:50 2012	(r231877)
@@ -12,7 +12,7 @@
 
 name="sdpd"
 command="/usr/sbin/${name}"
-rcvar=`set_rcvar`
+rcvar="sdpd_enable"
 required_modules="ng_btsocket"
 
 load_rc_config $name

Modified: projects/multi-fibv6/8/etc/rc.d/sendmail
==============================================================================
--- projects/multi-fibv6/8/etc/rc.d/sendmail	Fri Feb 17 13:26:29 2012	(r231876)

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

From owner-svn-src-projects@FreeBSD.ORG  Fri Feb 17 13:45:34 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id DC8741065672;
	Fri, 17 Feb 2012 13:45:34 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AFCD18FC12;
	Fri, 17 Feb 2012 13:45:34 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1HDjYxV080805;
	Fri, 17 Feb 2012 13:45:34 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1HDjYCa080804;
	Fri, 17 Feb 2012 13:45:34 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201202171345.q1HDjYCa080804@svn.freebsd.org>
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Fri, 17 Feb 2012 13:45:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231878 - projects/multi-fibv6/7
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 17 Feb 2012 13:45:34 -0000

Author: bz
Date: Fri Feb 17 13:45:34 2012
New Revision: 231878
URL: http://svn.freebsd.org/changeset/base/231878

Log:
  Create a working branch to prepare the merge of multi-FIB IPv6 support
  to stable/7.
  
  Sponsored by:	Cisco Systems, Inc.

Added:
     - copied from r231877, stable/7/
Directory Properties:
  projects/multi-fibv6/7/   (props changed)

From owner-svn-src-projects@FreeBSD.ORG  Sat Feb 18 00:35:24 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 535DA10657D0;
	Sat, 18 Feb 2012 00:35:24 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4293B8FC14;
	Sat, 18 Feb 2012 00:35:24 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0ZORQ003190;
	Sat, 18 Feb 2012 00:35:24 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0ZO5b003188;
	Sat, 18 Feb 2012 00:35:24 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202180035.q1I0ZO5b003188@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sat, 18 Feb 2012 00:35:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231886 - projects/armv6/sys/arm/ti/omap4
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Feb 2012 00:35:24 -0000

Author: gonzo
Date: Sat Feb 18 00:35:23 2012
New Revision: 231886
URL: http://svn.freebsd.org/changeset/base/231886

Log:
  - Reorder check for clok details to be NULL so they actually work
  - Add I2C timers

Modified:
  projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c

Modified: projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c	Fri Feb 17 23:47:16 2012	(r231885)
+++ projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c	Sat Feb 18 00:35:23 2012	(r231886)
@@ -325,6 +325,12 @@ struct omap_clock_dev omap_clk_devmap[] 
 	/* sDMA */
 	OMAP4_GENERIC_CLOCK_DEV(SDMA_CLK),	
 
+	/* I2C */
+	OMAP4_GENERIC_CLOCK_DEV(I2C1_CLK),
+	OMAP4_GENERIC_CLOCK_DEV(I2C2_CLK),
+	OMAP4_GENERIC_CLOCK_DEV(I2C3_CLK),
+	OMAP4_GENERIC_CLOCK_DEV(I2C4_CLK),
+
 	{  INVALID_CLK_IDENT, NULL, NULL, NULL, NULL }
 };
 
@@ -420,7 +426,17 @@ static struct omap4_clk_details g_omap4_
 	/* sDMA block */
 	OMAP4_GENERIC_CLOCK_DETAILS(SDMA_CLK, -1, CM2_INSTANCE_MEM_REGION,
 		(CORE_CM2_OFFSET + 0x320), CLKCTRL_MODULEMODE_AUTO),
-	
+
+	/* I2C modules */
+	OMAP4_GENERIC_CLOCK_DETAILS(I2C1_CLK, -1, CM2_INSTANCE_MEM_REGION,
+		(L4PER_CM2_OFFSET + 0x0A0), CLKCTRL_MODULEMODE_ENABLE),
+	OMAP4_GENERIC_CLOCK_DETAILS(I2C2_CLK, -1, CM2_INSTANCE_MEM_REGION,
+		(L4PER_CM2_OFFSET + 0x0A8), CLKCTRL_MODULEMODE_ENABLE),
+	OMAP4_GENERIC_CLOCK_DETAILS(I2C3_CLK, -1, CM2_INSTANCE_MEM_REGION,
+		(L4PER_CM2_OFFSET + 0x0B0), CLKCTRL_MODULEMODE_ENABLE),
+	OMAP4_GENERIC_CLOCK_DETAILS(I2C4_CLK, -1, CM2_INSTANCE_MEM_REGION,
+		(L4PER_CM2_OFFSET + 0x0B8), CLKCTRL_MODULEMODE_ENABLE),
+
 	{ INVALID_CLK_IDENT, 0, 0, 0, 0 },
 };
 
@@ -487,11 +503,12 @@ omap4_clk_generic_activate(struct omap_c
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
 
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	
@@ -550,11 +567,12 @@ omap4_clk_generic_deactivate(struct omap
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
 
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	
@@ -617,10 +635,12 @@ omap4_clk_generic_accessible(struct omap
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
+
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	
@@ -691,10 +711,12 @@ omap4_clk_gptimer_set_source(struct omap
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
+
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	
@@ -732,10 +754,12 @@ omap4_clk_gptimer_get_source_freq(struct
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
+
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	
@@ -778,10 +802,12 @@ omap4_clk_hsmmc_set_source(struct omap_c
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
+
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 		
@@ -836,10 +862,12 @@ omap4_clk_hsmmc_get_source_freq(struct o
 		return ENXIO;
 
 	clk_details = omap4_clk_details(clkdev->id);
-	clk_mem_res = sc->sc_res[clk_details->mem_region];
 
 	if (clk_details == NULL)
 		return (ENXIO);
+
+	clk_mem_res = sc->sc_res[clk_details->mem_region];
+
 	if (clk_mem_res == NULL)
 		return (EINVAL);
 	

From owner-svn-src-projects@FreeBSD.ORG  Sat Feb 18 00:54:30 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 6F917106566C;
	Sat, 18 Feb 2012 00:54:30 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 5DC7F8FC23;
	Sat, 18 Feb 2012 00:54:30 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0sU1Q003979;
	Sat, 18 Feb 2012 00:54:30 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0sUQE003974;
	Sat, 18 Feb 2012 00:54:30 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202180054.q1I0sUQE003974@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sat, 18 Feb 2012 00:54:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231890 - in projects/armv6/sys/arm: conf ti ti/omap4
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Feb 2012 00:54:30 -0000

Author: gonzo
Date: Sat Feb 18 00:54:30 2012
New Revision: 231890
URL: http://svn.freebsd.org/changeset/base/231890

Log:
  Add I2C controller driver slightly modified by me. Changes include:
  
  - Dropping support for OMAP3. It looks like revision detectin logic is
      incomplete/wrong and I do not have omap3 device for tests so I just
      dropped it to avoid imprssion thap omap3 code works. Possible fix
      points are marked with XXXOMAP3 markers
  - FDT support
  - Minor clean-up

Added:
  projects/armv6/sys/arm/ti/omap_i2c.c
  projects/armv6/sys/arm/ti/omap_i2c.h
Modified:
  projects/armv6/sys/arm/conf/PANDABOARD
  projects/armv6/sys/arm/ti/omap4/files.omap4

Modified: projects/armv6/sys/arm/conf/PANDABOARD
==============================================================================
--- projects/armv6/sys/arm/conf/PANDABOARD	Sat Feb 18 00:49:09 2012	(r231889)
+++ projects/armv6/sys/arm/conf/PANDABOARD	Sat Feb 18 00:54:30 2012	(r231890)
@@ -75,9 +75,9 @@ device		mmc				# mmc/sd bus
 device		mmcsd			# mmc/sd flash cards
 
 # I2C support
-#device		iicbus
-#device		iic
-#device		omap3_i2c
+device		iicbus
+device		iic
+device		omap_i2c
 
 device		loop
 device		ether

Modified: projects/armv6/sys/arm/ti/omap4/files.omap4
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/files.omap4	Sat Feb 18 00:49:09 2012	(r231889)
+++ projects/armv6/sys/arm/ti/omap4/files.omap4	Sat Feb 18 00:54:30 2012	(r231890)
@@ -21,6 +21,7 @@ arm/ti/ti_machdep.c				standard
 
 arm/ti/omap_gpio.c				optional	gpio
 arm/ti/usb/omap_ehci.c				optional	usb ehci
+arm/ti/omap_i2c.c				optional	omap_i2c
 
 arm/ti/omap4/omap4_prcm_clks.c			standard
 arm/ti/omap4/omap4_scm_padconf.c		standard

Added: projects/armv6/sys/arm/ti/omap_i2c.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/omap_i2c.c	Sat Feb 18 00:54:30 2012	(r231890)
@@ -0,0 +1,1139 @@
+/*-
+ * Copyright (c) 2011
+ *	Ben Gray <ben.r.gray@gmail.com>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/**
+ * Driver for the I2C module on the TI OMAP SoC.
+ *
+ * This driver is heavily based on the TWI driver for the AT91 (at91_twi.c).
+ *
+ * CAUTION: The I2Ci registers are limited to 16 bit and 8 bit data accesses,
+ * 32 bit data access is not allowed and can corrupt register content.
+ *
+ * This driver currently doesn't use DMA for the transfer, although I hope to
+ * incorporate that sometime in the future.  The idea being that for transaction
+ * larger than a certain size the DMA engine is used, for anything less the
+ * normal interrupt/fifo driven option is used.
+ *
+ *
+ * WARNING: This driver uses mtx_sleep and interrupts to perform transactions,
+ * which means you can't do a transaction during startup before the interrupts
+ * have been enabled.  Hint - the freebsd function config_intrhook_establish().
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/mbuf.h>
+#include <sys/malloc.h>
+#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/rman.h>
+#include <machine/bus.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <arm/ti/omap_prcm.h>
+#include <arm/ti/omap_i2c.h>
+
+#include <dev/iicbus/iiconf.h>
+#include <dev/iicbus/iicbus.h>
+
+#include "iicbus_if.h"
+
+/**
+ *	I2C device driver context, a pointer to this is stored in the device
+ *	driver structure.
+ */
+struct omap_i2c_softc
+{
+	device_t		sc_dev;
+	struct resource*	sc_irq_res;
+	struct resource*	sc_mem_res;
+	device_t		sc_iicbus;
+
+	void*			sc_irq_h;
+
+	struct mtx		sc_mtx;
+
+	volatile uint16_t	sc_stat_flags;	/* contains the status flags last IRQ */
+
+	uint16_t		sc_i2c_addr;
+	uint16_t		sc_rev;
+};
+
+#define OMAP_I2C_REV1  0x003C      /* OMAP3 */
+#define OMAP_I2C_REV2  0x000A      /* OMAP4 */
+
+/**
+ *	Locking macros used throughout the driver
+ */
+#define OMAP_I2C_LOCK(_sc)             mtx_lock(&(_sc)->sc_mtx)
+#define	OMAP_I2C_UNLOCK(_sc)           mtx_unlock(&(_sc)->sc_mtx)
+#define OMAP_I2C_LOCK_INIT(_sc) \
+	mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->sc_dev), \
+	         "omap_i2c", MTX_DEF)
+#define OMAP_I2C_LOCK_DESTROY(_sc)      mtx_destroy(&_sc->sc_mtx);
+#define OMAP_I2C_ASSERT_LOCKED(_sc)     mtx_assert(&_sc->sc_mtx, MA_OWNED);
+#define OMAP_I2C_ASSERT_UNLOCKED(_sc)   mtx_assert(&_sc->sc_mtx, MA_NOTOWNED);
+
+#ifdef DEBUG
+#define omap_i2c_dbg(_sc, fmt, args...) \
+    device_printf((_sc)->sc_dev, fmt, ##args)
+#else
+#define omap_i2c_dbg(_sc, fmt, args...)
+#endif
+
+static devclass_t omap_i2c_devclass;
+
+/* bus entry points */
+
+static int omap_i2c_probe(device_t dev);
+static int omap_i2c_attach(device_t dev);
+static int omap_i2c_detach(device_t dev);
+static void omap_i2c_intr(void *);
+
+/* helper routines */
+static int omap_i2c_activate(device_t dev);
+static void omap_i2c_deactivate(device_t dev);
+
+/**
+ *	omap_i2c_read_2 - reads a 16-bit value from one of the I2C registers
+ *	@sc: I2C device context
+ *	@off: the byte offset within the register bank to read from.
+ *
+ *
+ *	LOCKING:
+ *	No locking required
+ *
+ *	RETURNS:
+ *	16-bit value read from the register.
+ */
+static inline uint16_t
+omap_i2c_read_2(struct omap_i2c_softc *sc, bus_size_t off)
+{
+	return bus_read_2(sc->sc_mem_res, off);
+}
+
+/**
+ *	omap_i2c_write_2 - writes a 16-bit value to one of the I2C registers
+ *	@sc: I2C device context
+ *	@off: the byte offset within the register bank to read from.
+ *	@val: the value to write into the register
+ *
+ *	LOCKING:
+ *	No locking required
+ *
+ *	RETURNS:
+ *	16-bit value read from the register.
+ */
+static inline void
+omap_i2c_write_2(struct omap_i2c_softc *sc, bus_size_t off, uint16_t val)
+{
+	bus_write_2(sc->sc_mem_res, off, val);
+}
+
+/**
+ *	omap_i2c_read_reg - reads a 16-bit value from one of the I2C registers
+ *	    take into account revision-dependent register offset
+ *	@sc: I2C device context
+ *	@off: the byte offset within the register bank to read from.
+ *
+ *
+ *	LOCKING:
+ *	No locking required
+ *
+ *	RETURNS:
+ *	16-bit value read from the register.
+ */
+static inline uint16_t
+omap_i2c_read_reg(struct omap_i2c_softc *sc, bus_size_t off)
+{
+	/* XXXOMAP3: FIXME add registers mapping here */
+	return bus_read_2(sc->sc_mem_res, off);
+}
+
+/**
+ *	omap_i2c_write_reg - writes a 16-bit value to one of the I2C registers
+ *	    take into account revision-dependent register offset
+ *	@sc: I2C device context
+ *	@off: the byte offset within the register bank to read from.
+ *	@val: the value to write into the register
+ *
+ *	LOCKING:
+ *	No locking required
+ *
+ *	RETURNS:
+ *	16-bit value read from the register.
+ */
+static inline void
+omap_i2c_write_reg(struct omap_i2c_softc *sc, bus_size_t off, uint16_t val)
+{
+	/* XXXOMAP3: FIXME add registers mapping here */
+	bus_write_2(sc->sc_mem_res, off, val);
+}
+
+/**
+ *	omap_i2c_set_intr_enable - writes the interrupt enable register
+ *	@sc: I2C device context
+ *	@ie: bitmask of the interrupts to enable
+ *
+ *	This function is needed as writing the I2C_IE register on the OMAP4 devices
+ *	doesn't seem to actually enable the interrupt, rather you have to write
+ *	through the I2C_IRQENABLE_CLR and I2C_IRQENABLE_SET registers.
+ *
+ *	LOCKING:
+ *	No locking required
+ *
+ *	RETURNS:
+ *	Nothing.
+ */
+static inline void
+omap_i2c_set_intr_enable(struct omap_i2c_softc *sc, uint16_t ie)
+{
+	/* XXXOMAP3: FIXME */
+	omap_i2c_write_2(sc, I2C_REG_IRQENABLE_CLR, 0xffff);
+	if (ie)
+		omap_i2c_write_2(sc, I2C_REG_IRQENABLE_SET, ie);
+}
+
+/**
+ *	omap_i2c_reset - attach function for the driver
+ *	@dev: i2c device handle
+ *
+ *
+ *
+ *	LOCKING:
+ *	Called from timer context
+ *
+ *	RETURNS:
+ *	EH_HANDLED or EH_NOT_HANDLED
+ */
+static int
+omap_i2c_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr)
+{
+	struct omap_i2c_softc *sc = device_get_softc(dev);
+	uint16_t psc_reg, scll_reg, sclh_reg, con_reg;
+
+	OMAP_I2C_LOCK(sc);
+
+	if (oldaddr)
+		*oldaddr = sc->sc_i2c_addr;
+	sc->sc_i2c_addr = addr;
+
+	/* The header file doesn't actual tell you what speeds should be used for
+	 * the 3 possible settings, so I'm going to go with the usual:
+	 *
+	 *    IIC_SLOW    => 100kbps
+	 *    IIC_FAST    => 400kbps
+	 *    IIC_FASTEST => 3.4Mbps
+	 *
+	 * I2Ci_INTERNAL_CLK = I2Ci_FCLK / (PSC + 1)
+	 * I2Ci_INTERNAL_CLK = 96MHZ / (PSC + 1)
+	 */
+	switch (speed) {
+		case IIC_FASTEST:
+			psc_reg = 0x0004;
+			scll_reg = 0x0811;
+			sclh_reg = 0x0a13;
+			break;
+
+		case IIC_FAST:
+			psc_reg = 0x0009;
+			scll_reg = 0x0005;
+			sclh_reg = 0x0007;
+			break;
+
+		case IIC_SLOW:
+		case IIC_UNKNOWN:
+		default:
+			psc_reg = 0x0017;
+			scll_reg = 0x000D;
+			sclh_reg = 0x000F;
+			break;
+	}
+
+	/* First disable the controller while changing the clocks */
+	con_reg = omap_i2c_read_reg(sc, I2C_REG_CON);
+	omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000);
+
+	/* Program the prescaler */
+	omap_i2c_write_reg(sc, I2C_REG_PSC, psc_reg);
+
+	/* Set the bitrate */
+	omap_i2c_write_reg(sc, I2C_REG_SCLL, scll_reg);
+	omap_i2c_write_reg(sc, I2C_REG_SCLH, sclh_reg);
+
+	/* Set the remote slave address */
+	omap_i2c_write_reg(sc, I2C_REG_SA, addr);
+
+	/* Enable the I2C module again */
+	con_reg  = I2C_CON_I2C_EN;
+	con_reg |= (speed == IIC_FASTEST) ? I2C_CON_OPMODE_HS : I2C_CON_OPMODE_STD;
+	omap_i2c_write_reg(sc, I2C_REG_CON, con_reg);
+
+	OMAP_I2C_UNLOCK(sc);
+
+	return 0;
+}
+
+/**
+ *	omap_i2c_intr - interrupt handler for the I2C module
+ *	@dev: i2c device handle
+ *
+ *
+ *
+ *	LOCKING:
+ *	Called from timer context
+ *
+ *	RETURNS:
+ *	EH_HANDLED or EH_NOT_HANDLED
+ */
+static void
+omap_i2c_intr(void *arg)
+{
+	struct omap_i2c_softc *sc = (struct omap_i2c_softc*) arg;
+	uint16_t status;
+
+	status = omap_i2c_read_reg(sc, I2C_REG_STAT);
+	if (status == 0)
+		return;
+
+	OMAP_I2C_LOCK(sc);
+
+	/* save the flags */
+	sc->sc_stat_flags |= status;
+
+	/* clear the status flags */
+	omap_i2c_write_reg(sc, I2C_REG_STAT, status);
+
+	/* wakeup the process the started the transaction */
+	wakeup(sc);
+
+	OMAP_I2C_UNLOCK(sc);
+
+	return;
+}
+
+/**
+ *	omap_i2c_wait - waits for the specific event to occur
+ *	@sc: i2c driver context
+ *	@flags: the event(s) to wait on, this is a bitmask of the I2C_STAT_??? flags
+ *	@statp: if not null will contain the status flags upon return
+ *	@timo: the number of ticks to wait
+ *
+ *
+ *
+ *	LOCKING:
+ *	The driver context must be locked before calling this function. Internally
+ *	the function sleeps, releasing the lock as it does so, however the lock is
+ *	always retaken before this function returns.
+ *
+ *	RETURNS:
+ *	0 if the event(s) were tripped within timeout period
+ *	EBUSY if timedout waiting for the events
+ *	ENXIO if a NACK event was received
+ */
+static int
+omap_i2c_wait(struct omap_i2c_softc *sc, uint16_t flags, uint16_t *statp, int timo)
+{
+	int waittime = timo;
+	int start_ticks = ticks;
+	int rc;
+
+	OMAP_I2C_ASSERT_LOCKED(sc);
+
+	/* check if the condition has already occured, the interrupt routine will
+	 * clear the status flags.
+	 */
+	if ((sc->sc_stat_flags & flags) == 0) {
+
+		/* condition(s) haven't occured so sleep on the IRQ */
+		while (waittime > 0) {
+
+			rc = mtx_sleep(sc, &sc->sc_mtx, 0, "I2Cwait", waittime);
+			if (rc == EWOULDBLOCK) {
+				/* timed-out, simply break out of the loop */
+				break;
+			} else {
+				/* IRQ has been tripped, but need to sanity check we have the
+				 * right events in the status flag.
+				 */
+				if ((sc->sc_stat_flags & flags) != 0)
+					break;
+
+				/* event hasn't been tripped so wait some more */
+				waittime -= (ticks - start_ticks);
+				start_ticks = ticks;
+			}
+		}
+	}
+
+	/* copy the actual status bits */
+	if (statp != NULL)
+		*statp = sc->sc_stat_flags;
+
+	/* return the status found */
+	if ((sc->sc_stat_flags & flags) != 0)
+		rc = 0;
+	else
+		rc = EBUSY;
+
+	/* clear the flags set by the interrupt handler */
+	sc->sc_stat_flags = 0;
+
+	return (rc);
+}
+
+/**
+ *	omap_i2c_wait_for_free_bus - waits for the bus to become free
+ *	@sc: i2c driver context
+ *	@timo: the time to wait for the bus to become free
+ *
+ *
+ *
+ *	LOCKING:
+ *	The driver context must be locked before calling this function. Internally
+ *	the function sleeps, releasing the lock as it does so, however the lock is
+ *	always taken before this function returns.
+ *
+ *	RETURNS:
+ *	0 if the event(s) were tripped within timeout period
+ *	EBUSY if timedout waiting for the events
+ *	ENXIO if a NACK event was received
+ */
+static int
+omap_i2c_wait_for_free_bus(struct omap_i2c_softc *sc, int timo)
+{
+	/* check if the bus is free, BB bit = 0 */
+	if ((omap_i2c_read_reg(sc, I2C_REG_STAT) & I2C_STAT_BB) == 0)
+		return 0;
+
+	/* enable bus free interrupts */
+	omap_i2c_set_intr_enable(sc, I2C_IE_BF);
+
+	/* wait for the bus free interrupt to be tripped */
+	return omap_i2c_wait(sc, I2C_STAT_BF, NULL, timo);
+}
+
+/**
+ *	omap_i2c_read_bytes - attempts to perform a read operation
+ *	@sc: i2c driver context
+ *	@buf: buffer to hold the received bytes
+ *	@len: the number of bytes to read
+ *
+ *	This function assumes the slave address is already set
+ *
+ *	LOCKING:
+ *	The context lock should be held before calling this function
+ *
+ *	RETURNS:
+ *	0 on function succeeded
+ *	EINVAL if invalid message is passed as an arg
+ */
+static int
+omap_i2c_read_bytes(struct omap_i2c_softc *sc, uint8_t *buf, uint16_t len)
+{
+	int      timo = (hz / 4);
+	int      err = 0;
+	uint16_t con_reg;
+	uint16_t events;
+	uint16_t status;
+	uint32_t amount = 0;
+	uint32_t sofar = 0;
+	uint32_t i;
+
+	/* wait for the bus to become free */
+	err = omap_i2c_wait_for_free_bus(sc, timo);
+	if (err != 0) {
+		device_printf(sc->sc_dev, "bus never freed\n");
+		return (err);
+	}
+
+	/* set the events to wait for */
+	events = I2C_IE_RDR |   /* Receive draining interrupt */
+	         I2C_IE_RRDY |  /* Receive Data Ready interrupt */
+	         I2C_IE_ARDY |  /* Register Access Ready interrupt */
+	         I2C_IE_NACK |  /* No Acknowledgment interrupt */
+	         I2C_IE_AL;
+
+	/* enable interrupts for the events we want */
+	omap_i2c_set_intr_enable(sc, events);
+
+	/* write the number of bytes to read */
+	omap_i2c_write_reg(sc, I2C_REG_CNT, len);
+
+	/* clear the write bit and initiate the read transaction. Setting the STT
+	 * (start) bit initiates the transfer.
+	 */
+	con_reg = omap_i2c_read_reg(sc, I2C_REG_CON);
+	con_reg &= ~I2C_CON_TRX;
+	con_reg |=  I2C_CON_MST | I2C_CON_STT | I2C_CON_STP;
+	omap_i2c_write_reg(sc, I2C_REG_CON, con_reg);
+
+	/* reading loop */
+	while (1) {
+
+		/* wait for an event */
+		err = omap_i2c_wait(sc, events, &status, timo);
+		if (err != 0) {
+			break;
+		}
+
+		/* check for the error conditions */
+		if (status & I2C_STAT_NACK) {
+			/* no ACK from slave */
+			omap_i2c_dbg(sc, "NACK\n");
+			err = ENXIO;
+			break;
+		}
+		if (status & I2C_STAT_AL) {
+			/* arbitration lost */
+			omap_i2c_dbg(sc, "Arbitration lost\n");
+			err = ENXIO;
+			break;
+		}
+
+		/* check if we have finished */
+		if (status & I2C_STAT_ARDY) {
+			/* register access ready - transaction complete basically */
+			omap_i2c_dbg(sc, "ARDY transaction complete\n");
+			err = 0;
+			break;
+		}
+
+		/* read some data */
+		if (status & I2C_STAT_RDR) {
+			/* Receive draining interrupt - last data received */
+			omap_i2c_dbg(sc, "Receive draining interrupt\n");
+
+			/* get the number of bytes in the FIFO */
+			amount = omap_i2c_read_reg(sc, I2C_REG_BUFSTAT);
+			amount >>= 8;
+			amount &= 0x3f;
+		}
+		else if (status & I2C_STAT_RRDY) {
+			/* Receive data ready interrupt - enough data received */
+			omap_i2c_dbg(sc, "Receive data ready interrupt\n");
+
+			/* get the number of bytes in the FIFO */
+			amount = omap_i2c_read_reg(sc, I2C_REG_BUF);
+			amount >>= 8;
+			amount &= 0x3f;
+			amount += 1;
+		}
+
+		/* sanity check we haven't overwritten the array */
+		if ((sofar + amount) > len) {
+			omap_i2c_dbg(sc, "to many bytes to read\n");
+			amount = (len - sofar);
+		}
+
+		/* read the bytes from the fifo */
+		for (i = 0; i < amount; i++) {
+			buf[sofar++] = (uint8_t)(omap_i2c_read_reg(sc, I2C_REG_DATA) & 0xff);
+		}
+
+		/* attempt to clear the receive ready bits */
+		omap_i2c_write_reg(sc, I2C_REG_STAT, I2C_STAT_RDR | I2C_STAT_RRDY);
+	}
+
+	/* reset the registers regardless if there was an error or not */
+	omap_i2c_set_intr_enable(sc, 0x0000);
+	omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_MST | I2C_CON_STP);
+
+	return (err);
+}
+
+/**
+ *	omap_i2c_write_bytes - attempts to perform a read operation
+ *	@sc: i2c driver context
+ *	@buf: buffer containing the bytes to write
+ *	@len: the number of bytes to write
+ *
+ *	This function assumes the slave address is already set
+ *
+ *	LOCKING:
+ *	The context lock should be held before calling this function
+ *
+ *	RETURNS:
+ *	0 on function succeeded
+ *	EINVAL if invalid message is passed as an arg
+ */
+static int
+omap_i2c_write_bytes(struct omap_i2c_softc *sc, const uint8_t *buf, uint16_t len)
+{
+	int      timo = (hz / 4);
+	int      err = 0;
+	uint16_t con_reg;
+	uint16_t events;
+	uint16_t status;
+	uint32_t amount = 0;
+	uint32_t sofar = 0;
+	uint32_t i;
+
+	/* wait for the bus to become free */
+	err = omap_i2c_wait_for_free_bus(sc, timo);
+	if (err != 0)
+		return (err);
+
+	/* set the events to wait for */
+	events = I2C_IE_XDR |   /* Transmit draining interrupt */
+	         I2C_IE_XRDY |  /* Transmit Data Ready interrupt */
+	         I2C_IE_ARDY |  /* Register Access Ready interrupt */
+	         I2C_IE_NACK |  /* No Acknowledgment interrupt */
+	         I2C_IE_AL;
+
+	/* enable interrupts for the events we want*/
+	omap_i2c_set_intr_enable(sc, events);
+
+	/* write the number of bytes to write */
+	omap_i2c_write_reg(sc, I2C_REG_CNT, len);
+
+	/* set the write bit and initiate the write transaction. Setting the STT
+	 * (start) bit initiates the transfer.
+	 */
+	con_reg = omap_i2c_read_reg(sc, I2C_REG_CON);
+	con_reg |= I2C_CON_TRX | I2C_CON_MST | I2C_CON_STT | I2C_CON_STP;
+	omap_i2c_write_reg(sc, I2C_REG_CON, con_reg);
+
+	/* writing loop */
+	while (1) {
+
+		/* wait for an event */
+		err = omap_i2c_wait(sc, events, &status, timo);
+		if (err != 0) {
+			break;
+		}
+
+		/* check for the error conditions */
+		if (status & I2C_STAT_NACK) {
+			/* no ACK from slave */
+			omap_i2c_dbg(sc, "NACK\n");
+			err = ENXIO;
+			break;
+		}
+		if (status & I2C_STAT_AL) {
+			/* arbitration lost */
+			omap_i2c_dbg(sc, "Arbitration lost\n");
+			err = ENXIO;
+			break;
+		}
+
+		/* check if we have finished */
+		if (status & I2C_STAT_ARDY) {
+			/* register access ready - transaction complete basically */
+			omap_i2c_dbg(sc, "ARDY transaction complete\n");
+			err = 0;
+			break;
+		}
+
+		/* read some data */
+		if (status & I2C_STAT_XDR) {
+			/* Receive draining interrupt - last data received */
+			omap_i2c_dbg(sc, "Transmit draining interrupt\n");
+
+			/* get the number of bytes in the FIFO */
+			amount = omap_i2c_read_reg(sc, I2C_REG_BUFSTAT);
+			amount &= 0x3f;
+		}
+		else if (status & I2C_STAT_XRDY) {
+			/* Receive data ready interrupt - enough data received */
+			omap_i2c_dbg(sc, "Transmit data ready interrupt\n");
+
+			/* get the number of bytes in the FIFO */
+			amount = omap_i2c_read_reg(sc, I2C_REG_BUF);
+			amount &= 0x3f;
+			amount += 1;
+		}
+
+		/* sanity check we haven't overwritten the array */
+		if ((sofar + amount) > len) {
+			omap_i2c_dbg(sc, "to many bytes to write\n");
+			amount = (len - sofar);
+		}
+
+		/* write the bytes from the fifo */
+		for (i = 0; i < amount; i++) {
+			omap_i2c_write_reg(sc, I2C_REG_DATA, buf[sofar++]);
+		}
+
+		/* attempt to clear the transmit ready bits */
+		omap_i2c_write_reg(sc, I2C_REG_STAT, I2C_STAT_XDR | I2C_STAT_XRDY);
+	}
+
+	/* reset the registers regardless if there was an error or not */
+	omap_i2c_set_intr_enable(sc, 0x0000);
+	omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_MST | I2C_CON_STP);
+
+	return (err);
+}
+
+/**
+ *	omap_i2c_transfer - called to perform the transfer
+ *	@dev: i2c device handle
+ *	@msgs: the messages to send/receive
+ *	@nmsgs: the number of messages in the msgs array
+ *
+ *
+ *	LOCKING:
+ *	Internally locked
+ *
+ *	RETURNS:
+ *	0 on function succeeded
+ *	EINVAL if invalid message is passed as an arg
+ */
+static int
+omap_i2c_transfer(device_t dev, struct iic_msg *msgs, uint32_t nmsgs)
+{
+	struct omap_i2c_softc *sc = device_get_softc(dev);
+	int err = 0;
+	uint32_t i;
+	uint16_t len;
+	uint8_t *buf;
+
+	OMAP_I2C_LOCK(sc);
+
+	for (i = 0; i < nmsgs; i++) {
+
+		len = msgs[i].len;
+		buf = msgs[i].buf;
+
+		/* zero byte transfers aren't allowed */
+		if (len == 0 || buf == NULL) {
+			err = EINVAL;
+			goto out;
+		}
+
+		/* set the slave address */
+		omap_i2c_write_reg(sc, I2C_REG_SA, msgs[i].slave);
+
+		/* perform the read or write */
+		if (msgs[i].flags & IIC_M_RD) {
+			err = omap_i2c_read_bytes(sc, buf, len);
+		} else {
+			err = omap_i2c_write_bytes(sc, buf, len);
+		}
+
+	}
+
+out:
+	OMAP_I2C_UNLOCK(sc);
+
+	return (err);
+}
+
+/**
+ *	omap_i2c_callback - not sure about this one
+ *	@dev: i2c device handle
+ *
+ *
+ *
+ *	LOCKING:
+ *	Called from timer context
+ *
+ *	RETURNS:
+ *	EH_HANDLED or EH_NOT_HANDLED
+ */
+static int
+omap_i2c_callback(device_t dev, int index, caddr_t data)
+{
+	int error = 0;
+
+	switch (index) {
+		case IIC_REQUEST_BUS:
+			break;
+
+		case IIC_RELEASE_BUS:
+			break;
+
+		default:
+			error = EINVAL;
+	}
+
+	return (error);
+}
+
+/**
+ *	omap_i2c_activate - initialises and activates an I2C bus
+ *	@dev: i2c device handle
+ *	@num: the number of the I2C controller to activate; 1, 2 or 3
+ *
+ *
+ *	LOCKING:
+ *	Assumed called in an atomic context.
+ *
+ *	RETURNS:
+ *	nothing
+ */
+static int
+omap_i2c_activate(device_t dev)
+{
+	struct omap_i2c_softc *sc = (struct omap_i2c_softc*) device_get_softc(dev);
+	unsigned int timeout = 0;
+	uint16_t con_reg;
+	int err;
+	clk_ident_t clk;
+
+	/*
+	 * The following sequence is taken from the OMAP3530 technical reference
+	 *
+	 * 1. Enable the functional and interface clocks (see Section 18.3.1.1.1).
+	 */
+	clk = I2C1_CLK + device_get_unit(dev);
+	err = omap_prcm_clk_enable(clk);
+	if (err)
+		return (err);
+
+	/* There seems to be a bug in the I2C reset mechanism, for some reason you
+	 * need to disable the I2C module before issuing the reset and then enable
+	 * it again after to detect the reset done.
+	 *
+	 * I found this out by looking at the Linux driver implementation, thanks
+	 * linux guys!
+	 */
+
+	/* Disable the I2C controller */
+	omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000);
+
+	/* Issue a softreset to the controller */
+	/* XXXOMAP3: FIXME */
+	bus_write_2(sc->sc_mem_res, I2C_REG_SYSC, 0x0002);
+
+	/* Re-enable the module and then check for the reset done */
+	omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN);
+
+	while ((omap_i2c_read_reg(sc, I2C_REG_SYSS) & 0x01) == 0x00) {
+		if (timeout++ > 100) {
+			return (EBUSY);
+		}
+		DELAY(100);
+	}
+
+	/* Disable the I2C controller once again, now that the reset has finished */
+	omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000);
+
+	/* 2. Program the prescaler to obtain an approximately 12-MHz internal
+	 *    sampling clock (I2Ci_INTERNAL_CLK) by programming the corresponding
+	 *    value in the I2Ci.I2C_PSC[3:0] PSC field.
+	 *    This value depends on the frequency of the functional clock (I2Ci_FCLK).
+	 *    Because this frequency is 96MHz, the I2Ci.I2C_PSC[7:0] PSC field value
+	 *    is 0x7.
+	 */
+
+	/* Program the prescaler to obtain an approximately 12-MHz internal
+	 * sampling clock.
+	 */
+	omap_i2c_write_reg(sc, I2C_REG_PSC, 0x0017);
+
+	/* 3. Program the I2Ci.I2C_SCLL[7:0] SCLL and I2Ci.I2C_SCLH[7:0] SCLH fields
+	 *    to obtain a bit rate of 100K bps or 400K bps. These values depend on
+	 *    the internal sampling clock frequency (see Table 18-12).
+	 */
+
+	/* Set the bitrate to 100kbps */
+	omap_i2c_write_reg(sc, I2C_REG_SCLL, 0x000d);
+	omap_i2c_write_reg(sc, I2C_REG_SCLH, 0x000f);
+
+	/* 4. (Optional) Program the I2Ci.I2C_SCLL[15:8] HSSCLL and
+	 *    I2Ci.I2C_SCLH[15:8] HSSCLH fields to obtain a bit rate of 400K bps or
+	 *    3.4M bps (for the second phase of HS mode). These values depend on the
+	 *    internal sampling clock frequency (see Table 18-12).
+	 *
+	 * 5. (Optional) If a bit rate of 3.4M bps is used and the bus line
+	 *    capacitance exceeds 45 pF, program the CONTROL.CONTROL_DEVCONF1[12]
+	 *    I2C1HSMASTER bit for I2C1, the CONTROL.CONTROL_DEVCONF1[13]
+	 *    I2C2HSMASTER bit for I2C2, or the CONTROL.CONTROL_DEVCONF1[14]
+	 *    I2C3HSMASTER bit for I2C3.
+	 */
+
+	/* 6. Configure the Own Address of the I2C controller by storing it in the
+	 *    I2Ci.I2C_OA0 register. Up to four Own Addresses can be programmed in
+	 *    the I2Ci.I2C_OAi registers (with I = 0, 1, 2, 3) for each I2C
+	 *    controller.
+	 *
+	 * Note: For a 10-bit address, set the corresponding expand Own Address bit
+	 * in the I2Ci.I2C_CON register.
+	 */
+
+	/* Driver currently always in single master mode so ignore this step */
+
+	/* 7. Set the TX threshold (in transmitter mode) and the RX threshold (in
+	 *    receiver mode) by setting the I2Ci.I2C_BUF[5:0]XTRSH field to (TX
+	 *    threshold - 1) and the I2Ci.I2C_BUF[13:8]RTRSH field to (RX threshold
+	 *    - 1), where the TX and RX thresholds are greater than or equal to 1.
+	 */
+
+	/* Set the FIFO buffer threshold, note I2C1 & I2C2 have 8 byte FIFO, whereas
+	 * I2C3 has 64 bytes.  Threshold set to 5 for now.
+	 */
+	omap_i2c_write_reg(sc, I2C_REG_BUF, 0x0404);
+
+	/*
+	 * 8. Take the I2C controller out of reset by setting the I2Ci.I2C_CON[15]
+	 *    I2C_EN bit to 1.
+	 */
+	omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_OPMODE_STD);
+
+	/*
+	 * To initialize the I2C controller, perform the following steps:
+	 *
+	 * 1. Configure the I2Ci.I2C_CON register:
+	 *    · For master or slave mode, set the I2Ci.I2C_CON[10] MST bit (0: slave,
+	 *      1: master).
+	 *    · For transmitter or receiver mode, set the I2Ci.I2C_CON[9] TRX bit
+	 *      (0: receiver, 1: transmitter).
+	 */
+	con_reg = omap_i2c_read_reg(sc, I2C_REG_CON);
+	con_reg |= I2C_CON_MST;
+	omap_i2c_write_reg(sc, I2C_REG_CON, con_reg);
+
+	/* 2. If using an interrupt to transmit/receive data, set to 1 the
+	 *    corresponding bit in the I2Ci.I2C_IE register (the I2Ci.I2C_IE[4]
+	 *    XRDY_IE bit for the transmit interrupt, the I2Ci.I2C_IE[3] RRDY bit
+	 *    for the receive interrupt).
+	 */
+	omap_i2c_set_intr_enable(sc, I2C_IE_XRDY | I2C_IE_RRDY);
+
+	/* 3. If using DMA to receive/transmit data, set to 1 the corresponding bit
+	 *    in the I2Ci.I2C_BUF register (the I2Ci.I2C_BUF[15] RDMA_EN bit for the
+	 *    receive DMA channel, the I2Ci.I2C_BUF[7] XDMA_EN bit for the transmit
+	 *    DMA channel).
+	 */
+
+	/* not using DMA for now, so ignore this */
+
+	return (0);
+}
+
+/**
+ *	omap_i2c_deactivate - deactivates the controller and releases resources
+ *	@dev: i2c device handle
+ *
+ *
+ *
+ *	LOCKING:
+ *	Assumed called in an atomic context.
+ *
+ *	RETURNS:
+ *	nothing
+ */
+static void
+omap_i2c_deactivate(device_t dev)
+{
+	struct omap_i2c_softc *sc = device_get_softc(dev);
+	clk_ident_t clk;
+
+	/* Disable the controller - cancel all transactions */
+	omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000);
+
+	/* Release the interrupt handler */
+	if (sc->sc_irq_h) {
+		bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_h);
+		sc->sc_irq_h = 0;
+	}
+
+	bus_generic_detach(sc->sc_dev);
+
+	/* Unmap the I2C controller registers */
+	if (sc->sc_mem_res != 0) {
+		bus_release_resource(dev, SYS_RES_MEMORY, rman_get_rid(sc->sc_irq_res),

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

From owner-svn-src-projects@FreeBSD.ORG  Sat Feb 18 00:57:11 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 648FF106566C;
	Sat, 18 Feb 2012 00:57:11 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 547768FC18;
	Sat, 18 Feb 2012 00:57:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0vBss004150;
	Sat, 18 Feb 2012 00:57:11 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0vBLh004148;
	Sat, 18 Feb 2012 00:57:11 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201202180057.q1I0vBLh004148@svn.freebsd.org>
From: Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Date: Sat, 18 Feb 2012 00:57:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231892 - projects/armv6/sys/boot/fdt/dts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Feb 2012 00:57:11 -0000

Author: gonzo
Date: Sat Feb 18 00:57:11 2012
New Revision: 231892
URL: http://svn.freebsd.org/changeset/base/231892

Log:
  Add I2C1 device

Modified:
  projects/armv6/sys/boot/fdt/dts/pandaboard.dts

Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts
==============================================================================
--- projects/armv6/sys/boot/fdt/dts/pandaboard.dts	Sat Feb 18 00:55:54 2012	(r231891)
+++ projects/armv6/sys/boot/fdt/dts/pandaboard.dts	Sat Feb 18 00:57:11 2012	(r231892)
@@ -145,6 +145,14 @@
 			interrupts = <109>;
 			interrupt-parent = <&GIC>;
 		};
+
+		I2C1: i2c@x48070000 {
+			compatible = "ti,omap_i2c";
+			reg =<	0x48070000 0x100 >;
+			interrupts = <88>;
+			interrupt-parent = <&GIC>;
+
+		};
 	};
 
 	chosen {

From owner-svn-src-projects@FreeBSD.ORG  Sat Feb 18 12:19:15 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C1F341065670;
	Sat, 18 Feb 2012 12:19:15 +0000 (UTC)
	(envelope-from dmarion@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A9E608FC18;
	Sat, 18 Feb 2012 12:19:15 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1ICJFYI030037;
	Sat, 18 Feb 2012 12:19:15 GMT (envelope-from dmarion@svn.freebsd.org)
Received: (from dmarion@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1ICJFWr030031;
	Sat, 18 Feb 2012 12:19:15 GMT (envelope-from dmarion@svn.freebsd.org)
Message-Id: <201202181219.q1ICJFWr030031@svn.freebsd.org>
From: Damjan Marion <dmarion@FreeBSD.org>
Date: Sat, 18 Feb 2012 12:19:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231894 - in projects/armv6/sys: arm/ti arm/ti/am335x
	arm/ti/omap4 arm/ti/usb boot/fdt/dts
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 18 Feb 2012 12:19:15 -0000

Author: dmarion
Date: Sat Feb 18 12:19:15 2012
New Revision: 231894
URL: http://svn.freebsd.org/changeset/base/231894

Log:
  Reorganize SCM and GPIO driver so it can be reused
  by other TI SoCs and add AM335x support.
  
  Approved by:	cognet (mentor)

Added:
  projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
  projects/armv6/sys/arm/ti/ti_scm.c
  projects/armv6/sys/arm/ti/ti_scm.h
Deleted:
  projects/armv6/sys/arm/ti/omap_scm.c
  projects/armv6/sys/arm/ti/omap_scm.h
Modified:
  projects/armv6/sys/arm/ti/am335x/files.am335x
  projects/armv6/sys/arm/ti/omap4/files.omap4
  projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c
  projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c
  projects/armv6/sys/arm/ti/omap_gpio.c
  projects/armv6/sys/arm/ti/usb/omap_ehci.c
  projects/armv6/sys/boot/fdt/dts/beaglebone.dts
  projects/armv6/sys/boot/fdt/dts/pandaboard.dts

Added: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c	Sat Feb 18 12:19:15 2012	(r231894)
@@ -0,0 +1,317 @@
+/*-
+ * Copyright (c) 2012 Damjan Marion <dmarion@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <sys/resource.h>
+#include <sys/rman.h>
+#include <sys/lock.h>
+#include <sys/malloc.h>
+
+#include <machine/bus.h>
+#include <machine/cpu.h>
+#include <machine/cpufunc.h>
+#include <machine/frame.h>
+#include <machine/resource.h>
+#include <machine/intr.h>
+
+#include <arm/ti/tivar.h>
+#include <arm/ti/ti_scm.h>
+
+#define _PIN(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \
+	{	.reg_off = r, \
+		.gpio_pin = gp, \
+		.gpio_mode = gm, \
+		.ballname = b, \
+		.muxmodes[0] = m0, \
+		.muxmodes[1] = m1, \
+		.muxmodes[2] = m2, \
+		.muxmodes[3] = m3, \
+		.muxmodes[4] = m4, \
+		.muxmodes[5] = m5, \
+		.muxmodes[6] = m6, \
+		.muxmodes[7] = m7, \
+	}
+
+#define RXACTIVE	(0x01 << 5) /* Input enable value for the Pad */
+#define PULLTYPESEL	(0x01 << 4) /* Pad pullup/pulldown type selection */
+#define PULLUDEN	(0x01 << 3) /* Pullup/pulldown enabled */
+
+const struct ti_scm_padstate ti_padstate_devmap[] = {
+	{"output",		0 },
+	{"output_pullup",	PULLTYPESEL },
+	{"input",		RXACTIVE },
+	{"input_pulldown",	RXACTIVE | PULLUDEN },
+	{"input_pullup",	RXACTIVE | PULLUDEN | PULLTYPESEL },
+	{"input_pullup_inact",	RXACTIVE | PULLTYPESEL },
+	{ .state = NULL }
+};
+
+const struct ti_scm_padconf ti_padconf_devmap[] = {
+	_PIN(0x800, "GPMC_AD0",		 32, 7,"gpmc_ad0", "mmc1_dat0", NULL, NULL, NULL, NULL, NULL, "gpio1_0"),
+	_PIN(0x804, "GPMC_AD1",		 33, 7,"gpmc_ad1", "mmc1_dat1", NULL, NULL, NULL, NULL, NULL, "gpio1_1"),
+	_PIN(0x808, "GPMC_AD2",		 34, 7,"gpmc_ad2", "mmc1_dat2", NULL, NULL, NULL, NULL, NULL, "gpio1_2"),
+	_PIN(0x80C, "GPMC_AD3",		 35, 7,"gpmc_ad3", "mmc1_dat3", NULL, NULL, NULL, NULL, NULL, "gpio1_3"),
+	_PIN(0x810, "GPMC_AD4",		 36, 7,"gpmc_ad4", "mmc1_dat4", NULL, NULL, NULL, NULL, NULL, "gpio1_4"),
+	_PIN(0x814, "GPMC_AD5",		 37, 7,"gpmc_ad5", "mmc1_dat5", NULL, NULL, NULL, NULL, NULL, "gpio1_5"),
+	_PIN(0x818, "GPMC_AD6",		 38, 7,"gpmc_ad6", "mmc1_dat6", NULL, NULL, NULL, NULL, NULL, "gpio1_6"),
+	_PIN(0x81C, "GPMC_AD7",		 39, 7,"gpmc_ad7", "mmc1_dat7", NULL, NULL, NULL, NULL, NULL, "gpio1_7"),
+#if 0 /* Incomplete Entries - fill with data from table 2-7 in datasheet */
+	_PIN(0x820, "gpmc_ad8",		0, 0, "gpmc_ad8", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x824, "gpmc_ad9",		0, 0, "gpmc_ad9", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x828, "gpmc_ad10",	0, 0, "gpmc_ad10", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x82C, "gpmc_ad11",	0, 0, "gpmc_ad11", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x830, "gpmc_ad12",	0, 0, "gpmc_ad12", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x834, "gpmc_ad13",	0, 0, "gpmc_ad13", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x838, "gpmc_ad14",	0, 0, "gpmc_ad14", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x83C, "gpmc_ad15",	0, 0, "gpmc_ad15", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x840, "gpmc_a0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x844, "gpmc_a1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x848, "gpmc_a2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x84C, "gpmc_a3",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x850, "gpmc_a4",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x854, "gpmc_a5",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x858, "gpmc_a6",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x85C, "gpmc_a7",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x860, "gpmc_a8",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x864, "gpmc_a9",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x868, "gpmc_a10",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x86C, "gpmc_a11",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x870, "gpmc_wait0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x874, "gpmc_wpn",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x878, "gpmc_be1n",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x87c, "gpmc_csn0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x880, "gpmc_csn1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x884, "gpmc_csn2",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x888, "gpmc_csn3",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x88c, "gpmc_clk",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x890, "gpmc_advn_ale",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x894, "gpmc_oen_ren",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x898, "gpmc_wen",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x89c, "gpmc_be0n_cle",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8a0, "lcd_data0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8a4, "lcd_data1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8a8, "lcd_data2",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8ac, "lcd_data3",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8b0, "lcd_data4",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8b4, "lcd_data5",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8b8, "lcd_data6",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8bc, "lcd_data7",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8c0, "lcd_data8",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8c4, "lcd_data9",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8c8, "lcd_data10",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8cc, "lcd_data11",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8d0, "lcd_data12",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8d4, "lcd_data13",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8d8, "lcd_data14",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8dc, "lcd_data15",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8e0, "lcd_vsync",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8e4, "lcd_hsync",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8e8, "lcd_pclk",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8ec, "lcd_ac_bias_en",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8f0, "mmc0_dat3",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8f4, "mmc0_dat2",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8f8, "mmc0_dat1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x8fc, "mmc0_dat0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x900, "mmc0_clk",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x904, "mmc0_cmd",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+#endif
+	_PIN(0x908, "MII1_COL",		 96, 7, "gmii1_col", "rmii2_refclk", "spi1_sclk", "uart5_rxd", "mcasp1_axr2", "mmc2_dat3", "mcasp0_axr2", "gpio3_0"),
+	_PIN(0x90c, "MII1_CRS",		 97, 7, "gmii1_crs", "rmii1_crs_dv", "spi1_d0", "I2C1_SDA", "mcasp1_aclkx", "uart5_ctsn", "uart2_rxd", "gpio3_1"),
+	_PIN(0x910, "MII1_RX_ER",	 98, 7, "gmii1_rxerr", "rmii1_rxerr", "spi1_d1", "I2C1_SCL", "mcasp1_fsx", "uart5_rtsn", "uart2_txd", "gpio3_2"),
+	_PIN(0x914, "MII1_TX_EN",	 99, 7, "gmii1_txen", "rmii1_txen", "rgmii1_tctl", "timer4", "mcasp1_axr0", "eQEP0_index", "mmc2_cmd", "gpio3_3"),
+	_PIN(0x918, "MII1_RX_DV",	100, 7, "gmii1_rxdv", "cd_memory_clk", "rgmii1_rctl", "uart5_txd", "mcasp1_aclkx", "mmc2_dat0", "mcasp0_aclkr", "gpio3_4"),
+	_PIN(0x91c, "MII1_TXD3",	 16, 7, "gmii1_txd3", "dcan0_tx", "rgmii1_td3", "uart4_rxd", "mcasp1_fsx", "mmc2_dat1", "mcasp0_fsr", "gpio0_16"),
+	_PIN(0x920, "MII1_TXD2",	 17, 7, "gmii1_txd2", "dcan0_rx", "rgmii1_td2", "uart4_txd", "mcasp1_axr0", "mmc2_dat2", "mcasp0_ahclkx", "gpio0_17"),
+	_PIN(0x924, "MII1_TXD1",	 21, 7, "gmii1_txd1", "rmii1_txd1", "rgmii1_td1", "mcasp1_fsr", "mcasp1_axr1", "eQEP0A_in", "mmc1_cmd", "gpio0_21"),
+	_PIN(0x928, "MII1_TXD0",	 28, 7, "gmii1_txd0", "rmii1_txd0", "rgmii1_td0", "mcasp1_axr2", "mcasp1_aclkr", "eQEP0B_in", "mmc1_clk", "gpio0_28"),
+	_PIN(0x92c, "MII1_TX_CLK",	105, 7, "gmii1_txclk", "uart2_rxd", "rgmii1_tclk", "mmc0_dat7", "mmc1_dat0", "uart1_dcdn", "mcasp0_aclkx", "gpio3_9"),
+	_PIN(0x930, "MII1_RX_CLK",	106, 7, "gmii1_rxclk", "uart2_txd", "rgmii1_rclk", "mmc0_dat6", "mmc1_dat1", "uart1_dsrn", "mcasp0_fsx", "gpio3_10"),
+	_PIN(0x934, "MII1_RXD3",	 82, 7, "gmii1_rxd3", "uart3_rxd", "rgmii1_rd3", "mmc0_dat5", "mmc1_dat2", "uart1_dtrn", "mcasp0_axr0", "gpio2_18"),
+	_PIN(0x938, "MII1_RXD2",	 83, 7, "gmii1_rxd2", "uart3_txd", "rgmii1_rd2", "mmc0_dat4", "mmc1_dat3", "uart1_rin", "mcasp0_axr1", "gpio2_19"),
+	_PIN(0x93c, "MII1_RXD1",	 84, 7, "gmii1_rxd1", "rmii1_rxd1", "rgmii1_rd1", "mcasp1_axr3", "mcasp1_fsr", "eQEP0_strobe", "mmc2_clk", "gpio2_20"),
+	_PIN(0x940, "MII1_RXD0",	 85, 7, "gmii1_rxd0", "rmii1_rxd0", "rgmii1_rd0", "mcasp1_ahclkx", "mcasp1_ahclkr", "mcasp1_aclkr", "mcasp0_axr3", "gpio2_21"),
+	_PIN(0x944, "RMII1_REF_CLK",	 29, 7, "rmii1_refclk", "xdma_event_intr2", "spi1_cs0", "uart5_txd", "mcasp1_axr3", "mmc0_pow", "mcasp1_ahclkx", "gpio0_29"),
+	_PIN(0x948, "MDIO",		  0, 7, "mdio_data", "timer6", "uart5_rxd", "uart3_ctsn", "mmc0_sdcd","mmc1_cmd", "mmc2_cmd","gpio0_0"),
+	_PIN(0x94c, "MDC",		  1, 7, "mdio_clk", "timer5", "uart5_txd", "uart3_rtsn", "mmc0_sdwp", "mmc1_clk", "mmc2_clk", "gpio0_1"),
+#if 0 /* Incomplete Entries - fill with data from table 2-7 in datasheet */
+	_PIN(0x950, "spi0_sclk",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x954, "spi0_d0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x958, "spi0_d1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x95c, "spi0_cs0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x960, "spi0_cs1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x964, "ecap0_in_pwm0_out",0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x968, "uart0_ctsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x96c, "uart0_rtsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x970, "uart0_rxd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x974, "uart0_txd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x978, "uart1_ctsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x97c, "uart1_rtsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x980, "uart1_rxd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x984, "uart1_txd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x988, "i2c0_sda",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x98c, "i2c0_scl",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x990, "mcasp0_aclkx",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x994, "mcasp0_fsx",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x998, "mcasp0_axr0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x99c, "mcasp0_ahclkr",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9a0, "mcasp0_aclkr",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9a4, "mcasp0_fsr",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9a8, "mcasp0_axr1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9ac, "mcasp0_ahclkx",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9b0, "xdma_event_intr0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9b4, "xdma_event_intr1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9b8, "nresetin_out",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9bc, "porz",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9c0, "nnmi",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9c4, "osc0_in",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9c8, "osc0_out",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9cc, "osc0_vss",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9d0, "tms",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9d4, "tdi",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9d8, "tdo",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9dc, "tck",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9e0, "ntrst",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9e4, "emu0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9e8, "emu1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9ec, "osc1_in",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9f0, "osc1_out",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9f4, "osc1_vss",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9f8, "rtc_porz",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0x9fc, "pmic_power_en",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa00, "ext_wakeup",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa04, "enz_kaldo_1p8v",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa08, "usb0_dm",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa0c, "usb0_dp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa10, "usb0_ce",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa14, "usb0_id",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa18, "usb0_vbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa1c, "usb0_drvvbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa20, "usb1_dm",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa24, "usb1_dp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa28, "usb1_ce",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa2c, "usb1_id",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa30, "usb1_vbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa34, "usb1_drvvbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa38, "ddr_resetn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa3c, "ddr_csn0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa40, "ddr_cke",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa44, "ddr_ck",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa48, "ddr_nck",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa4c, "ddr_casn",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa50, "ddr_rasn",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa54, "ddr_wen",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa58, "ddr_ba0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa5c, "ddr_ba1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa60, "ddr_ba2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa64, "ddr_a0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa68, "ddr_a1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa6c, "ddr_a2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa70, "ddr_a3",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa74, "ddr_a4",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa78, "ddr_a5",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa7c, "ddr_a6",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa80, "ddr_a7",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa84, "ddr_a8",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa88, "ddr_a9",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa8c, "ddr_a10",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa90, "ddr_a11",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa94, "ddr_a12",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa98, "ddr_a13",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa9c, "ddr_a14",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaa0, "ddr_a15",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaa4, "ddr_odt",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaa8, "ddr_d0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaac, "ddr_d1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xab0, "ddr_d2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xab4, "ddr_d3",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xab8, "ddr_d4",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xabc, "ddr_d5",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xac0, "ddr_d6",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xac4, "ddr_d7",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xac8, "ddr_d8",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xacc, "ddr_d9",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xad0, "ddr_d10",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xad4, "ddr_d11",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xad8, "ddr_d12",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xadc, "ddr_d13",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xae0, "ddr_d14",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xae4, "ddr_d15",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xae8, "ddr_dqm0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaec, "ddr_dqm1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaf0, "ddr_dqs0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaf4, "ddr_dqsn0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xaf8, "ddr_dqs1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xafc, "ddr_dqsn1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb00, "ddr_vref",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb04, "ddr_vtp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb08, "ddr_strben0",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb0c, "ddr_strben1",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb2c, "ain0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb28, "ain1",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb24, "ain2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb20, "ain3",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb1c, "ain4",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb18, "ain5",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb14, "ain6",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb10, "ain7",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb30, "vrefp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb34, "vrefn",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb38, "avdd",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb3c, "avss",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb40, "iforce",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb44, "vsense",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xb48, "testout",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+#endif
+	{  .ballname = NULL  },
+};
+
+const struct ti_scm_device ti_scm_dev = {
+	.padconf_muxmode_mask	= 0x7,
+	.padconf_sate_mask	= 0x78,
+	.padstate		= (struct ti_scm_padstate *) &ti_padstate_devmap,
+	.padconf		= (struct ti_scm_padconf *) &ti_padconf_devmap,
+};
+
+int
+ti_scm_padconf_set_gpioflags(uint32_t gpio, uint32_t flags)
+{
+	/* TODO */
+	return (EINVAL);
+}
+
+void
+ti_scm_padconf_get_gpioflags(uint32_t gpio, uint32_t *flags)
+{
+	/* TODO */
+}
+

Modified: projects/armv6/sys/arm/ti/am335x/files.am335x
==============================================================================
--- projects/armv6/sys/arm/ti/am335x/files.am335x	Sat Feb 18 09:18:06 2012	(r231893)
+++ projects/armv6/sys/arm/ti/am335x/files.am335x	Sat Feb 18 12:19:15 2012	(r231894)
@@ -12,9 +12,11 @@ arm/arm/irq_dispatch.S				standard
 
 arm/ti/ti_machdep.c				standard
 arm/ti/aintc.c					standard
+arm/ti/ti_scm.c					standard
 
 arm/ti/am335x/am335x_prcm.c			standard
 arm/ti/am335x/am335x_dmtimer.c			standard
 arm/ti/am335x/if_cpsw.c				standard
+arm/ti/am335x/am335x_scm_padconf.c		standard
 
 dev/uart/uart_dev_ns8250.c			optional	uart

Modified: projects/armv6/sys/arm/ti/omap4/files.omap4
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/files.omap4	Sat Feb 18 09:18:06 2012	(r231893)
+++ projects/armv6/sys/arm/ti/omap4/files.omap4	Sat Feb 18 12:19:15 2012	(r231894)
@@ -15,7 +15,7 @@ arm/ti/common.c					standard
 arm/ti/gic.c					standard
 arm/ti/mp_timer.c				standard
 arm/ti/omap_prcm.c				standard
-arm/ti/omap_scm.c				standard
+arm/ti/ti_scm.c					standard
 arm/ti/ti_cpuid.c				standard
 arm/ti/ti_machdep.c				standard
 

Modified: projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c	Sat Feb 18 09:18:06 2012	(r231893)
+++ projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c	Sat Feb 18 12:19:15 2012	(r231894)
@@ -175,7 +175,7 @@ __FBSDID("$FreeBSD$");
 #define CLKCTRL_IDLEST_IDLE           0x00020000UL
 #define CLKCTRL_IDLEST_DISABLED       0x00030000UL
 
-static struct resource_spec omap_scm_res_spec[] = {
+static struct resource_spec omap4_scm_res_spec[] = {
 	{ SYS_RES_MEMORY,	0,	RF_ACTIVE },	/* Control memory window */
 	{ SYS_RES_MEMORY,	1,	RF_ACTIVE },	/* Control memory window */
 	{ SYS_RES_MEMORY,	2,	RF_ACTIVE },	/* Control memory window */
@@ -1388,7 +1388,7 @@ omap4_prcm_attach(device_t dev)
 {
 	struct omap4_prcm_softc *sc = device_get_softc(dev);
 
-	if (bus_alloc_resources(dev, omap_scm_res_spec, sc->sc_res)) {
+	if (bus_alloc_resources(dev, omap4_scm_res_spec, sc->sc_res)) {
 		device_printf(dev, "could not allocate resources\n");
 		return (ENXIO);
 	}

Modified: projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c
==============================================================================
--- projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c	Sat Feb 18 09:18:06 2012	(r231893)
+++ projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c	Sat Feb 18 12:19:15 2012	(r231894)
@@ -45,9 +45,10 @@ __FBSDID("$FreeBSD$");
 #include <machine/frame.h>
 #include <machine/resource.h>
 #include <machine/intr.h>
+#include <sys/gpio.h>
 
 #include <arm/ti/tivar.h>
-#include <arm/ti/omap_scm.h>
+#include <arm/ti/ti_scm.h>
 #include <arm/ti/omap4/omap4var.h>
 #include <arm/ti/omap4/omap4_reg.h>
 
@@ -58,7 +59,7 @@ __FBSDID("$FreeBSD$");
  *
  *	How This is Suppose to Work
  *	===========================
- *	- There is a top level omap_scm module (System Control Module) that is
+ *	- There is a top level ti_scm module (System Control Module) that is
  *	the interface for all omap drivers, which can use it to change the mux
  *	settings for individual pins.  (That said, typically the pin mux settings
  *	are set to defaults by the 'hints' and then not altered by the driver).
@@ -69,7 +70,54 @@ __FBSDID("$FreeBSD$");
  *
  */
 
-#define _OMAP_PINDEF(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \
+#define CONTROL_PADCONF_WAKEUP_EVENT     (1UL << 15)
+#define CONTROL_PADCONF_WAKEUP_ENABLE    (1UL << 14)
+#define CONTROL_PADCONF_OFF_PULL_UP      (1UL << 13)
+#define CONTROL_PADCONF_OFF_PULL_ENABLE  (1UL << 12)
+#define CONTROL_PADCONF_OFF_OUT_HIGH     (1UL << 11)
+#define CONTROL_PADCONF_OFF_OUT_ENABLE   (1UL << 10)
+#define CONTROL_PADCONF_OFF_ENABLE       (1UL << 9)
+#define CONTROL_PADCONF_INPUT_ENABLE     (1UL << 8)
+#define CONTROL_PADCONF_PULL_UP          (1UL << 4)
+#define CONTROL_PADCONF_PULL_ENABLE      (1UL << 3)
+#define CONTROL_PADCONF_MUXMODE_MASK     (0x7)
+
+#define CONTROL_PADCONF_SATE_MASK        ( CONTROL_PADCONF_WAKEUP_EVENT \
+                                         | CONTROL_PADCONF_WAKEUP_ENABLE \
+                                         | CONTROL_PADCONF_OFF_PULL_UP \
+                                         | CONTROL_PADCONF_OFF_PULL_ENABLE \
+                                         | CONTROL_PADCONF_OFF_OUT_HIGH \
+                                         | CONTROL_PADCONF_OFF_OUT_ENABLE \
+                                         | CONTROL_PADCONF_OFF_ENABLE \
+                                         | CONTROL_PADCONF_INPUT_ENABLE \
+                                         | CONTROL_PADCONF_PULL_UP \
+                                         | CONTROL_PADCONF_PULL_ENABLE )
+
+/* Active pin states */
+#define PADCONF_PIN_OUTPUT              0
+#define PADCONF_PIN_INPUT               CONTROL_PADCONF_INPUT_ENABLE
+#define PADCONF_PIN_INPUT_PULLUP        ( CONTROL_PADCONF_INPUT_ENABLE \
+                                        | CONTROL_PADCONF_PULL_ENABLE \
+                                        | CONTROL_PADCONF_PULL_UP)
+#define PADCONF_PIN_INPUT_PULLDOWN      ( CONTROL_PADCONF_INPUT_ENABLE \
+                                        | CONTROL_PADCONF_PULL_ENABLE )
+
+/* Off mode states */
+#define PADCONF_PIN_OFF_NONE            0
+#define PADCONF_PIN_OFF_OUTPUT_HIGH	    ( CONTROL_PADCONF_OFF_ENABLE \
+                                        | CONTROL_PADCONF_OFF_OUT_ENABLE \
+                                        | CONTROL_PADCONF_OFF_OUT_HIGH)
+#define PADCONF_PIN_OFF_OUTPUT_LOW      ( CONTROL_PADCONF_OFF_ENABLE \
+                                        | CONTROL_PADCONF_OFF_OUT_ENABLE)
+#define PADCONF_PIN_OFF_INPUT_PULLUP    ( CONTROL_PADCONF_OFF_ENABLE \
+                                        | CONTROL_PADCONF_OFF_PULL_ENABLE \
+                                        | CONTROL_PADCONF_OFF_PULL_UP)
+#define PADCONF_PIN_OFF_INPUT_PULLDOWN  ( CONTROL_PADCONF_OFF_ENABLE \
+                                        | CONTROL_PADCONF_OFF_PULL_ENABLE)
+#define PADCONF_PIN_OFF_WAKEUPENABLE	CONTROL_PADCONF_WAKEUP_ENABLE
+
+
+#define _PINDEF(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \
 	{	.reg_off = r, \
 		.gpio_pin = gp, \
 		.gpio_mode = gm, \
@@ -84,212 +132,274 @@ __FBSDID("$FreeBSD$");
 		.muxmodes[7] = m7, \
 	}
 
+const struct ti_scm_padstate ti_padstate_devmap[] = {
+	{"output",		PADCONF_PIN_OUTPUT},
+	{"input",		PADCONF_PIN_INPUT},
+	{"input_pullup",	PADCONF_PIN_INPUT_PULLUP},
+	{"input_pulldown",	PADCONF_PIN_INPUT_PULLDOWN},
+	{ .state = NULL }
+};
+
 /*
  * Table 18-10, p. 3470
  */
-const struct omap_scm_padconf omap_padconf_devmap[] = {
-	_OMAP_PINDEF(0x0040,  "c12",   0, 0, "gpmc_ad0", "sdmmc2_dat0", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0042,  "d12",   0, 0, "gpmc_ad1", "sdmmc2_dat1", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0044,  "c13",   0, 0, "gpmc_ad2", "sdmmc2_dat2", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0046,  "d13",   0, 0, "gpmc_ad3", "sdmmc2_dat3", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0048,  "c15",   0, 0, "gpmc_ad4", "sdmmc2_dat4", "sdmmc2_dir_dat0", NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x004a,  "d15",   0, 0, "gpmc_ad5", "sdmmc2_dat5", "sdmmc2_dir_dat1", NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x004c,  "a16",   0, 0, "gpmc_ad6", "sdmmc2_dat6", "sdmmc2_dir_cmd", NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x004e,  "b16",   0, 0, "gpmc_ad7", "sdmmc2_dat7", "sdmmc2_clk_fdbk", NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0050,  "c16",  32, 3, "gpmc_ad8", "kpd_row0", "c2c_data15", "gpio_32", NULL, "sdmmc1_dat0", NULL, NULL),
-	_OMAP_PINDEF(0x0052,  "d16",  33, 3, "gpmc_ad9", "kpd_row1", "c2c_data14", "gpio_33", NULL, "sdmmc1_dat1", NULL, NULL),
-	_OMAP_PINDEF(0x0054,  "c17",  34, 3, "gpmc_ad10", "kpd_row2", "c2c_data13", "gpio_34", NULL, "sdmmc1_dat2", NULL, NULL),
-	_OMAP_PINDEF(0x0056,  "d17",  35, 3, "gpmc_ad11", "kpd_row3", "c2c_data12", "gpio_35", NULL, "sdmmc1_dat3", NULL, NULL),
-	_OMAP_PINDEF(0x0058,  "c18",  36, 3, "gpmc_ad12", "kpd_col0", "c2c_data11", "gpio_36", NULL, "sdmmc1_dat4", NULL, NULL),
-	_OMAP_PINDEF(0x005a,  "d18",  37, 3, "gpmc_ad13", "kpd_col1", "c2c_data10", "gpio_37", NULL, "sdmmc1_dat5", NULL, NULL),
-	_OMAP_PINDEF(0x005c,  "c19",  38, 3, "gpmc_ad14", "kpd_col2", "c2c_data9", "gpio_38", NULL, "sdmmc1_dat6", NULL, NULL),
-	_OMAP_PINDEF(0x005e,  "d19",  39, 3, "gpmc_ad15", "kpd_col3", "c2c_data8", "gpio_39", NULL, "sdmmc1_dat7", NULL, NULL),
-	_OMAP_PINDEF(0x0060,  "b17",  40, 3, "gpmc_a16", "kpd_row4", "c2c_datain0", "gpio_40", "venc_656_data0", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0062,  "a18",  41, 3, "gpmc_a17", "kpd_row5", "c2c_datain1", "gpio_41", "venc_656_data1", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0064,  "b18",  42, 3, "gpmc_a18", "kpd_row6", "c2c_datain2", "gpio_42", "venc_656_data2", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0066,  "a19",  43, 3, "gpmc_a19", "kpd_row7", "c2c_datain3", "gpio_43", "venc_656_data3", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0068,  "b19",  44, 3, "gpmc_a20", "kpd_col4", "c2c_datain4", "gpio_44", "venc_656_data4", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x006a,  "b20",  45, 3, "gpmc_a21", "kpd_col5", "c2c_datain5", "gpio_45", "venc_656_data5", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x006c,  "a21",  46, 3, "gpmc_a22", "kpd_col6", "c2c_datain6", "gpio_46", "venc_656_data6", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x006e,  "b21",  47, 3, "gpmc_a23", "kpd_col7", "c2c_datain7", "gpio_47", "venc_656_data7", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0070,  "c20",  48, 3, "gpmc_a24", "kpd_col8", "c2c_clkout0", "gpio_48", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0072,  "d20",  49, 3, "gpmc_a25", NULL, "c2c_clkout1", "gpio_49", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0074,  "b25",  50, 3, "gpmc_ncs0", NULL, NULL, "gpio_50", "sys_ndmareq0", NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0076,  "c21",  51, 3, "gpmc_ncs1", NULL, "c2c_dataout6", "gpio_51", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0078,  "d21",  52, 3, "gpmc_ncs2", "kpd_row8", "c2c_dataout7", "gpio_52", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x007a,  "c22",  53, 3, "gpmc_ncs3", "gpmc_dir", "c2c_dataout4", "gpio_53", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x007c,  "c25",  54, 3, "gpmc_nwp", "dsi1_te0", NULL, "gpio_54", "sys_ndmareq1", NULL, NULL, NULL),
-	_OMAP_PINDEF(0x007e,  "b22",  55, 3, "gpmc_clk", NULL, NULL, "gpio_55", "sys_ndmareq2", "sdmmc1_cmd", NULL, NULL),
-	_OMAP_PINDEF(0x0080,  "d25",  56, 3, "gpmc_nadv_ale", "dsi1_te1", NULL, "gpio_56", "sys_ndmareq3", "sdmmc1_clk", NULL, NULL),
-	_OMAP_PINDEF(0x0082,  "b11",   0, 0, "gpmc_noe", "sdmmc2_clk", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0084,  "b12",   0, 0, "gpmc_nwe", "sdmmc2_cmd", NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0086,  "c23",  59, 3, "gpmc_nbe0_cle", "dsi2_te0", NULL, "gpio_59", NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0088,  "d22",  60, 3, "gpmc_nbe1", NULL, "c2c_dataout5", "gpio_60", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x008a,  "b26",  61, 3, "gpmc_wait0", "dsi2_te1", NULL, "gpio_61", NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x008c,  "b23",  62, 3, "gpmc_wait1", NULL, "c2c_dataout2", "gpio_62", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x008e,  "d23", 100, 3, "gpmc_wait2", "usbc1_icusb_txen", "c2c_dataout3", "gpio_100", "sys_ndmareq0", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0090,  "a24", 101, 3, "gpmc_ncs4", "dsi1_te0", "c2c_clkin0", "gpio_101", "sys_ndmareq1", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0092,  "b24", 102, 3, "gpmc_ncs5", "dsi1_te1", "c2c_clkin1", "gpio_102", "sys_ndmareq2", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0094,  "c24", 103, 3, "gpmc_ncs6", "dsi2_te0", "c2c_dataout0", "gpio_103", "sys_ndmareq3", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0096,  "d24", 104, 3, "gpmc_ncs7", "dsi2_te1", "c2c_dataout1", "gpio_104", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0098,   "b9",  63, 3, "hdmi_hpd", NULL, NULL, "gpio_63", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x009a,  "b10",  64, 3, "hdmi_cec", NULL, NULL, "gpio_64", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x009c,   "a8",  65, 3, "hdmi_ddc_scl", NULL, NULL, "gpio_65", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x009e,   "b8",  66, 3, "hdmi_ddc_sda", NULL, NULL, "gpio_66", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00a0,  "r26",   0, 0, "csi21_dx0", NULL, NULL, "gpi_67", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00a2,  "r25",   0, 0, "csi21_dy0", NULL, NULL, "gpi_68", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00a4,  "t26",   0, 0, "csi21_dx1", NULL, NULL, "gpi_69", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00a6,  "t25",   0, 0, "csi21_dy1", NULL, NULL, "gpi_70", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00a8,  "u26",   0, 0, "csi21_dx2", NULL, NULL, "gpi_71", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00aa,  "u25",   0, 0, "csi21_dy2", NULL, NULL, "gpi_72", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ac,  "v26",   0, 0, "csi21_dx3", NULL, NULL, "gpi_73", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ae,  "v25",   0, 0, "csi21_dy3", NULL, NULL, "gpi_74", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00b0,  "w26",   0, 0, "csi21_dx4", NULL, NULL, "gpi_75", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00b2,  "w25",   0, 0, "csi21_dy4", NULL, NULL, "gpi_76", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00b4,  "m26",   0, 0, "csi22_dx0", NULL, NULL, "gpi_77", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00b6,  "m25",   0, 0, "csi22_dy0", NULL, NULL, "gpi_78", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00b8,  "n26",   0, 0, "csi22_dx1", NULL, NULL, "gpi_79", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ba,  "n25",   0, 0, "csi22_dy1", NULL, NULL, "gpi_80", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00bc,  "t27",  81, 3, "cam_shutter", NULL, NULL, "gpio_81", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00be,  "u27",  82, 3, "cam_strobe", NULL, NULL, "gpio_82", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00c0,  "v27",  83, 3, "cam_globalreset", NULL, NULL, "gpio_83", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00c2, "ae18",  84, 3, "usbb1_ulpitll_clk", "hsi1_cawake", NULL, "gpio_84", "usbb1_ulpiphy_clk", NULL, "hw_dbg20", "safe_mode"),
-	_OMAP_PINDEF(0x00c4, "ag19",  85, 3, "usbb1_ulpitll_stp", "hsi1_cadata", "mcbsp4_clkr", "gpio_85", "usbb1_ulpiphy_stp", "usbb1_mm_rxdp", "hw_dbg21", "safe_mode"),
-	_OMAP_PINDEF(0x00c6, "af19",  86, 3, "usbb1_ulpitll_dir", "hsi1_caflag", "mcbsp4_fsr", "gpio_86", "usbb1_ulpiphy_dir", NULL, "hw_dbg22", "safe_mode"),
-	_OMAP_PINDEF(0x00c8, "ae19",  87, 3, "usbb1_ulpitll_nxt", "hsi1_acready", "mcbsp4_fsx", "gpio_87", "usbb1_ulpiphy_nxt", "usbb1_mm_rxdm", "hw_dbg23", "safe_mode"),
-	_OMAP_PINDEF(0x00ca, "af18",  88, 3, "usbb1_ulpitll_dat0", "hsi1_acwake", "mcbsp4_clkx", "gpio_88", "usbb1_ulpiphy_dat0", "usbb1_mm_txen", "hw_dbg24", "safe_mode"),
-	_OMAP_PINDEF(0x00cc, "ag18",  89, 3, "usbb1_ulpitll_dat1", "hsi1_acdata", "mcbsp4_dx", "gpio_89", "usbb1_ulpiphy_dat1", "usbb1_mm_txdat", "hw_dbg25", "safe_mode"),
-	_OMAP_PINDEF(0x00ce, "ae17",  90, 3, "usbb1_ulpitll_dat2", "hsi1_acflag", "mcbsp4_dr", "gpio_90", "usbb1_ulpiphy_dat2", "usbb1_mm_txse0", "hw_dbg26", "safe_mode"),
-	_OMAP_PINDEF(0x00d0, "af17",  91, 3, "usbb1_ulpitll_dat3", "hsi1_caready", NULL, "gpio_91", "usbb1_ulpiphy_dat3", "usbb1_mm_rxrcv", "hw_dbg27", "safe_mode"),
-	_OMAP_PINDEF(0x00d2, "ah17",  92, 3, "usbb1_ulpitll_dat4", "dmtimer8_pwm_evt", "abe_mcbsp3_dr", "gpio_92", "usbb1_ulpiphy_dat4", NULL, "hw_dbg28", "safe_mode"),
-	_OMAP_PINDEF(0x00d4, "ae16",  93, 3, "usbb1_ulpitll_dat5", "dmtimer9_pwm_evt", "abe_mcbsp3_dx", "gpio_93", "usbb1_ulpiphy_dat5", NULL, "hw_dbg29", "safe_mode"),
-	_OMAP_PINDEF(0x00d6, "af16",  94, 3, "usbb1_ulpitll_dat6", "dmtimer10_pwm_evt", "abe_mcbsp3_clkx", "gpio_94", "usbb1_ulpiphy_dat6", "abe_dmic_din3", "hw_dbg30", "safe_mode"),
-	_OMAP_PINDEF(0x00d8, "ag16",  95, 3, "usbb1_ulpitll_dat7", "dmtimer11_pwm_evt", "abe_mcbsp3_fsx", "gpio_95", "usbb1_ulpiphy_dat7", "abe_dmic_clk3", "hw_dbg31", "safe_mode"),
-	_OMAP_PINDEF(0x00da, "af14",  96, 3, "usbb1_hsic_data", NULL, NULL, "gpio_96", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00dc, "ae14",  97, 3, "usbb1_hsic_strobe", NULL, NULL, "gpio_97", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00de,   "h2",  98, 3, "usbc1_icusb_dp", NULL, NULL, "gpio_98", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00e0,   "h3",  99, 3, "usbc1_icusb_dm", NULL, NULL, "gpio_99", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00e2,   "d2", 100, 3, "sdmmc1_clk", NULL, "dpm_emu19", "gpio_100", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00e4,   "e3", 101, 3, "sdmmc1_cmd", NULL, "uart1_rx", "gpio_101", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00e6,   "e4", 102, 3, "sdmmc1_dat0", NULL, "dpm_emu18", "gpio_102", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00e8,   "e2", 103, 3, "sdmmc1_dat1", NULL, "dpm_emu17", "gpio_103", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ea,   "e1", 104, 3, "sdmmc1_dat2", NULL, "dpm_emu16", "gpio_104", "jtag_tms_tmsc", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ec,   "f4", 105, 3, "sdmmc1_dat3", NULL, "dpm_emu15", "gpio_105", "jtag_tck", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00ee,   "f3", 106, 3, "sdmmc1_dat4", NULL, NULL, "gpio_106", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00f0,   "f1", 107, 3, "sdmmc1_dat5", NULL, NULL, "gpio_107", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00f2,   "g4", 108, 3, "sdmmc1_dat6", NULL, NULL, "gpio_108", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00f4,   "g3", 109, 3, "sdmmc1_dat7", NULL, NULL, "gpio_109", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00f6, "ad27", 110, 3, "abe_mcbsp2_clkx", "mcspi2_clk", "abe_mcasp_ahclkx", "gpio_110", "usbb2_mm_rxdm", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00f8, "ad26", 111, 3, "abe_mcbsp2_dr", "mcspi2_somi", "abe_mcasp_axr", "gpio_111", "usbb2_mm_rxdp", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00fa, "ad25", 112, 3, "abe_mcbsp2_dx", "mcspi2_simo", "abe_mcasp_amute", "gpio_112", "usbb2_mm_rxrcv", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00fc, "ac28", 113, 3, "abe_mcbsp2_fsx", "mcspi2_cs0", "abe_mcasp_afsx", "gpio_113", "usbb2_mm_txen", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x00fe, "ac26", 114, 3, "abe_mcbsp1_clkx", "abe_slimbus1_clock", NULL, "gpio_114", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0100, "ac25", 115, 3, "abe_mcbsp1_dr", "abe_slimbus1_data", NULL, "gpio_115", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0102, "ab25", 116, 3, "abe_mcbsp1_dx", "sdmmc3_dat2", "abe_mcasp_aclkx", "gpio_116", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0104, "ac27", 117, 3, "abe_mcbsp1_fsx", "sdmmc3_dat3", "abe_mcasp_amutein", "gpio_117", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0106, "ag25",   0, 0, "abe_pdm_ul_data", "abe_mcbsp3_dr", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0108, "af25",   0, 0, "abe_pdm_dl_data", "abe_mcbsp3_dx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x010a, "ae25",   0, 0, "abe_pdm_frame", "abe_mcbsp3_clkx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x010c, "af26",   0, 0, "abe_pdm_lb_clk", "abe_mcbsp3_fsx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x010e, "ah26", 118, 3, "abe_clks", NULL, NULL, "gpio_118", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0110, "ae24", 119, 3, "abe_dmic_clk1", NULL, NULL, "gpio_119", "usbb2_mm_txse0", "uart4_cts", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0112, "af24", 120, 3, "abe_dmic_din1", NULL, NULL, "gpio_120", "usbb2_mm_txdat", "uart4_rts", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0114, "ag24", 121, 3, "abe_dmic_din2", "slimbus2_clock", "abe_mcasp_axr", "gpio_121", NULL, "dmtimer11_pwm_evt", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0116, "ah24", 122, 3, "abe_dmic_din3", "slimbus2_data", "abe_dmic_clk2", "gpio_122", NULL, "dmtimer9_pwm_evt", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0118, "ab26", 123, 3, "uart2_cts", "sdmmc3_clk", NULL, "gpio_123", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x011a, "ab27", 124, 3, "uart2_rts", "sdmmc3_cmd", NULL, "gpio_124", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x011c, "aa25", 125, 3, "uart2_rx", "sdmmc3_dat0", NULL, "gpio_125", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x011e, "aa26", 126, 3, "uart2_tx", "sdmmc3_dat1", NULL, "gpio_126", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0120, "aa27", 127, 3, "hdq_sio", "i2c3_sccb", "i2c2_sccb", "gpio_127", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0122, "ae28",   0, 0, "i2c1_scl", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0124, "ae26",   0, 0, "i2c1_sda", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0126,  "c26", 128, 3, "i2c2_scl", "uart1_rx", NULL, "gpio_128", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0128,  "d26", 129, 3, "i2c2_sda", "uart1_tx", NULL, "gpio_129", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x012a,  "w27", 130, 3, "i2c3_scl", NULL, NULL, "gpio_130", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x012c,  "y27", 131, 3, "i2c3_sda", NULL, NULL, "gpio_131", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x012e, "ag21", 132, 3, "i2c4_scl", NULL, NULL, "gpio_132", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0130, "ah22", 133, 3, "i2c4_sda", NULL, NULL, "gpio_133", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0132, "af22", 134, 3, "mcspi1_clk", NULL, NULL, "gpio_134", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0134, "ae22", 135, 3, "mcspi1_somi", NULL, NULL, "gpio_135", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0136, "ag22", 136, 3, "mcspi1_simo", NULL, NULL, "gpio_136", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0138, "ae23", 137, 3, "mcspi1_cs0", NULL, NULL, "gpio_137", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x013a, "af23", 138, 3, "mcspi1_cs1", "uart1_rx", NULL, "gpio_138", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x013c, "ag23", 139, 3, "mcspi1_cs2", "uart1_cts", "slimbus2_clock", "gpio_139", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x013e, "ah23", 140, 3, "mcspi1_cs3", "uart1_rts", "slimbus2_data", "gpio_140", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0140,  "f27", 141, 3, "uart3_cts_rctx", "uart1_tx", NULL, "gpio_141", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0142,  "f28", 142, 3, "uart3_rts_sd", NULL, NULL, "gpio_142", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0144,  "g27", 143, 3, "uart3_rx_irrx", "dmtimer8_pwm_evt", NULL, "gpio_143", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0146,  "g28", 144, 3, "uart3_tx_irtx", "dmtimer9_pwm_evt", NULL, "gpio_144", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0148,  "ae5", 145, 3, "sdmmc5_clk", "mcspi2_clk", "usbc1_icusb_dp", "gpio_145", NULL, "sdmmc2_clk", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x014a,  "af5", 146, 3, "sdmmc5_cmd", "mcspi2_simo", "usbc1_icusb_dm", "gpio_146", NULL, "sdmmc2_cmd", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x014c,  "ae4", 147, 3, "sdmmc5_dat0", "mcspi2_somi", "usbc1_icusb_rcv", "gpio_147", NULL, "sdmmc2_dat0", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x014e,  "af4", 148, 3, "sdmmc5_dat1", NULL, "usbc1_icusb_txen", "gpio_148", NULL, "sdmmc2_dat1", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0150,  "ag3", 149, 3, "sdmmc5_dat2", "mcspi2_cs1", NULL, "gpio_149", NULL, "sdmmc2_dat2", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0152,  "af3", 150, 3, "sdmmc5_dat3", "mcspi2_cs0", NULL, "gpio_150", NULL, "sdmmc2_dat3", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0154, "ae21", 151, 3, "mcspi4_clk", "sdmmc4_clk", "kpd_col6", "gpio_151", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0156, "af20", 152, 3, "mcspi4_simo", "sdmmc4_cmd", "kpd_col7", "gpio_152", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0158, "af21", 153, 3, "mcspi4_somi", "sdmmc4_dat0", "kpd_row6", "gpio_153", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x015a, "ae20", 154, 3, "mcspi4_cs0", "sdmmc4_dat3", "kpd_row7", "gpio_154", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x015c, "ag20", 155, 3, "uart4_rx", "sdmmc4_dat2", "kpd_row8", "gpio_155", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x015e, "ah19", 156, 3, "uart4_tx", "sdmmc4_dat1", "kpd_col8", "gpio_156", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0160, "ag12", 157, 3, "usbb2_ulpitll_clk", "usbb2_ulpiphy_clk", "sdmmc4_cmd", "gpio_157", "hsi2_cawake", NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0162, "af12", 158, 3, "usbb2_ulpitll_stp", "usbb2_ulpiphy_stp", "sdmmc4_clk", "gpio_158", "hsi2_cadata", "dispc2_data23", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0164, "ae12", 159, 3, "usbb2_ulpitll_dir", "usbb2_ulpiphy_dir", "sdmmc4_dat0", "gpio_159", "hsi2_caflag", "dispc2_data22", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0166, "ag13", 160, 3, "usbb2_ulpitll_nxt", "usbb2_ulpiphy_nxt", "sdmmc4_dat1", "gpio_160", "hsi2_acready", "dispc2_data21", NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0168, "ae11", 161, 3, "usbb2_ulpitll_dat0", "usbb2_ulpiphy_dat0", "sdmmc4_dat2", "gpio_161", "hsi2_acwake", "dispc2_data20", "usbb2_mm_txen", "safe_mode"),
-	_OMAP_PINDEF(0x016a, "af11", 162, 3, "usbb2_ulpitll_dat1", "usbb2_ulpiphy_dat1", "sdmmc4_dat3", "gpio_162", "hsi2_acdata", "dispc2_data19", "usbb2_mm_txdat", "safe_mode"),
-	_OMAP_PINDEF(0x016c, "ag11", 163, 3, "usbb2_ulpitll_dat2", "usbb2_ulpiphy_dat2", "sdmmc3_dat2", "gpio_163", "hsi2_acflag", "dispc2_data18", "usbb2_mm_txse0", "safe_mode"),
-	_OMAP_PINDEF(0x016e, "ah11", 164, 3, "usbb2_ulpitll_dat3", "usbb2_ulpiphy_dat3", "sdmmc3_dat1", "gpio_164", "hsi2_caready", "dispc2_data15", "rfbi_data15", "safe_mode"),
-	_OMAP_PINDEF(0x0170, "ae10", 165, 3, "usbb2_ulpitll_dat4", "usbb2_ulpiphy_dat4", "sdmmc3_dat0", "gpio_165", "mcspi3_somi", "dispc2_data14", "rfbi_data14", "safe_mode"),
-	_OMAP_PINDEF(0x0172, "af10", 166, 3, "usbb2_ulpitll_dat5", "usbb2_ulpiphy_dat5", "sdmmc3_dat3", "gpio_166", "mcspi3_cs0", "dispc2_data13", "rfbi_data13", "safe_mode"),
-	_OMAP_PINDEF(0x0174, "ag10", 167, 3, "usbb2_ulpitll_dat6", "usbb2_ulpiphy_dat6", "sdmmc3_cmd", "gpio_167", "mcspi3_simo", "dispc2_data12", "rfbi_data12", "safe_mode"),
-	_OMAP_PINDEF(0x0176,  "ae9", 168, 3, "usbb2_ulpitll_dat7", "usbb2_ulpiphy_dat7", "sdmmc3_clk", "gpio_168", "mcspi3_clk", "dispc2_data11", "rfbi_data11", "safe_mode"),
-	_OMAP_PINDEF(0x0178, "af13", 169, 3, "usbb2_hsic_data", NULL, NULL, "gpio_169", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x017a, "ae13", 170, 3, "usbb2_hsic_strobe", NULL, NULL, "gpio_170", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x017c,  "g26", 171, 3, "kpd_col3", "kpd_col0", NULL, "gpio_171", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x017e,  "g25", 172, 3, "kpd_col4", "kpd_col1", NULL, "gpio_172", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0180,  "h26", 173, 3, "kpd_col5", "kpd_col2", NULL, "gpio_173", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0182,  "h25", 174, 3, "kpd_col0", "kpd_col3", NULL, "gpio_174", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0184,  "j27",   0, 0, "kpd_col1", "kpd_col4", NULL, "gpio_0", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0186,  "h27",   1, 3, "kpd_col2", "kpd_col5", NULL, "gpio_1", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0188,  "j26", 175, 3, "kpd_row3", "kpd_row0", NULL, "gpio_175", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x018a,  "j25", 176, 3, "kpd_row4", "kpd_row1", NULL, "gpio_176", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x018c,  "k26", 177, 3, "kpd_row5", "kpd_row2", NULL, "gpio_177", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x018e,  "k25", 178, 3, "kpd_row0", "kpd_row3", NULL, "gpio_178", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0190,  "l27",   2, 3, "kpd_row1", "kpd_row4", NULL, "gpio_2", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0192,  "k27",   3, 3, "kpd_row2", "kpd_row5", NULL, "gpio_3", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0194,   "c3",   0, 0, "usba0_otg_ce", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_OMAP_PINDEF(0x0196,   "b5",   0, 0, "usba0_otg_dp", "uart3_rx_irrx", "uart2_rx", NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x0198,   "b4",   0, 0, "usba0_otg_dm", "uart3_tx_irtx", "uart2_tx", NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x019a, "aa28", 181, 3, "fref_clk1_out", NULL, NULL, "gpio_181", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x019c,  "y28", 182, 3, "fref_clk2_out", NULL, NULL, "gpio_182", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x019e,  "ae6",   0, 0, "sys_nirq1", NULL, NULL, NULL, NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01a0,  "af6", 183, 3, "sys_nirq2", NULL, NULL, "gpio_183", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01a2,  "f26", 184, 3, "sys_boot0", NULL, NULL, "gpio_184", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01a4,  "e27", 185, 3, "sys_boot1", NULL, NULL, "gpio_185", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01a6,  "e26", 186, 3, "sys_boot2", NULL, NULL, "gpio_186", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01a8,  "e25", 187, 3, "sys_boot3", NULL, NULL, "gpio_187", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01aa,  "d28", 188, 3, "sys_boot4", NULL, NULL, "gpio_188", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01ac,  "d27", 189, 3, "sys_boot5", NULL, NULL, "gpio_189", NULL, NULL, NULL, "safe_mode"),
-	_OMAP_PINDEF(0x01ae,   "m2",  11, 3, "dpm_emu0", NULL, NULL, "gpio_11", NULL, NULL, "hw_dbg0", "safe_mode"),
-	_OMAP_PINDEF(0x01b0,   "n2",  12, 3, "dpm_emu1", NULL, NULL, "gpio_12", NULL, NULL, "hw_dbg1", "safe_mode"),
-	_OMAP_PINDEF(0x01b2,   "p2",  13, 3, "dpm_emu2", "usba0_ulpiphy_clk", NULL, "gpio_13", NULL, "dispc2_fid", "hw_dbg2", "safe_mode"),
-	_OMAP_PINDEF(0x01b4,   "v1",  14, 3, "dpm_emu3", "usba0_ulpiphy_stp", NULL, "gpio_14", "rfbi_data10", "dispc2_data10", "hw_dbg3", "safe_mode"),
-	_OMAP_PINDEF(0x01b6,   "v2",  15, 3, "dpm_emu4", "usba0_ulpiphy_dir", NULL, "gpio_15", "rfbi_data9", "dispc2_data9", "hw_dbg4", "safe_mode"),
-	_OMAP_PINDEF(0x01b8,   "w1",  16, 3, "dpm_emu5", "usba0_ulpiphy_nxt", NULL, "gpio_16", "rfbi_te_vsync0", "dispc2_data16", "hw_dbg5", "safe_mode"),
-	_OMAP_PINDEF(0x01ba,   "w2",  17, 3, "dpm_emu6", "usba0_ulpiphy_dat0", "uart3_tx_irtx", "gpio_17", "rfbi_hsync0", "dispc2_data17", "hw_dbg6", "safe_mode"),
-	_OMAP_PINDEF(0x01bc,   "w3",  18, 3, "dpm_emu7", "usba0_ulpiphy_dat1", "uart3_rx_irrx", "gpio_18", "rfbi_cs0", "dispc2_hsync", "hw_dbg7", "safe_mode"),
-	_OMAP_PINDEF(0x01be,   "w4",  19, 3, "dpm_emu8", "usba0_ulpiphy_dat2", "uart3_rts_sd", "gpio_19", "rfbi_re", "dispc2_pclk", "hw_dbg8", "safe_mode"),
-	_OMAP_PINDEF(0x01c0,   "y2",  20, 3, "dpm_emu9", "usba0_ulpiphy_dat3", "uart3_cts_rctx", "gpio_20", "rfbi_we", "dispc2_vsync", "hw_dbg9", "safe_mode"),
-	_OMAP_PINDEF(0x01c2,   "y3",  21, 3, "dpm_emu10", "usba0_ulpiphy_dat4", NULL, "gpio_21", "rfbi_a0", "dispc2_de", "hw_dbg10", "safe_mode"),
-	_OMAP_PINDEF(0x01c4,   "y4",  22, 3, "dpm_emu11", "usba0_ulpiphy_dat5", NULL, "gpio_22", "rfbi_data8", "dispc2_data8", "hw_dbg11", "safe_mode"),
-	_OMAP_PINDEF(0x01c6,  "aa1",  23, 3, "dpm_emu12", "usba0_ulpiphy_dat6", NULL, "gpio_23", "rfbi_data7", "dispc2_data7", "hw_dbg12", "safe_mode"),
-	_OMAP_PINDEF(0x01c8,  "aa2",  24, 3, "dpm_emu13", "usba0_ulpiphy_dat7", NULL, "gpio_24", "rfbi_data6", "dispc2_data6", "hw_dbg13", "safe_mode"),
-	_OMAP_PINDEF(0x01ca,  "aa3",  25, 3, "dpm_emu14", "sys_drm_msecure", "uart1_rx", "gpio_25", "rfbi_data5", "dispc2_data5", "hw_dbg14", "safe_mode"),
-	_OMAP_PINDEF(0x01cc,  "aa4",  26, 3, "dpm_emu15", "sys_secure_indicator", NULL, "gpio_26", "rfbi_data4", "dispc2_data4", "hw_dbg15", "safe_mode"),
-	_OMAP_PINDEF(0x01ce,  "ab2",  27, 3, "dpm_emu16", "dmtimer8_pwm_evt", "dsi1_te0", "gpio_27", "rfbi_data3", "dispc2_data3", "hw_dbg16", "safe_mode"),
-	_OMAP_PINDEF(0x01d0,  "ab3",  28, 3, "dpm_emu17", "dmtimer9_pwm_evt", "dsi1_te1", "gpio_28", "rfbi_data2", "dispc2_data2", "hw_dbg17", "safe_mode"),
-	_OMAP_PINDEF(0x01d2,  "ab4", 190, 3, "dpm_emu18", "dmtimer10_pwm_evt", "dsi2_te0", "gpio_190", "rfbi_data1", "dispc2_data1", "hw_dbg18", "safe_mode"),
-	_OMAP_PINDEF(0x01d4,  "ac4", 191, 3, "dpm_emu19", "dmtimer11_pwm_evt", "dsi2_te1", "gpio_191", "rfbi_data0", "dispc2_data0", "hw_dbg19", "safe_mode"),
+const struct ti_scm_padconf ti_padconf_devmap[] = {
+	_PINDEF(0x0040,  "c12",   0, 0, "gpmc_ad0", "sdmmc2_dat0", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0042,  "d12",   0, 0, "gpmc_ad1", "sdmmc2_dat1", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0044,  "c13",   0, 0, "gpmc_ad2", "sdmmc2_dat2", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0046,  "d13",   0, 0, "gpmc_ad3", "sdmmc2_dat3", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0048,  "c15",   0, 0, "gpmc_ad4", "sdmmc2_dat4", "sdmmc2_dir_dat0", NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x004a,  "d15",   0, 0, "gpmc_ad5", "sdmmc2_dat5", "sdmmc2_dir_dat1", NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x004c,  "a16",   0, 0, "gpmc_ad6", "sdmmc2_dat6", "sdmmc2_dir_cmd", NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x004e,  "b16",   0, 0, "gpmc_ad7", "sdmmc2_dat7", "sdmmc2_clk_fdbk", NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0050,  "c16",  32, 3, "gpmc_ad8", "kpd_row0", "c2c_data15", "gpio_32", NULL, "sdmmc1_dat0", NULL, NULL),
+	_PINDEF(0x0052,  "d16",  33, 3, "gpmc_ad9", "kpd_row1", "c2c_data14", "gpio_33", NULL, "sdmmc1_dat1", NULL, NULL),
+	_PINDEF(0x0054,  "c17",  34, 3, "gpmc_ad10", "kpd_row2", "c2c_data13", "gpio_34", NULL, "sdmmc1_dat2", NULL, NULL),
+	_PINDEF(0x0056,  "d17",  35, 3, "gpmc_ad11", "kpd_row3", "c2c_data12", "gpio_35", NULL, "sdmmc1_dat3", NULL, NULL),
+	_PINDEF(0x0058,  "c18",  36, 3, "gpmc_ad12", "kpd_col0", "c2c_data11", "gpio_36", NULL, "sdmmc1_dat4", NULL, NULL),
+	_PINDEF(0x005a,  "d18",  37, 3, "gpmc_ad13", "kpd_col1", "c2c_data10", "gpio_37", NULL, "sdmmc1_dat5", NULL, NULL),
+	_PINDEF(0x005c,  "c19",  38, 3, "gpmc_ad14", "kpd_col2", "c2c_data9", "gpio_38", NULL, "sdmmc1_dat6", NULL, NULL),
+	_PINDEF(0x005e,  "d19",  39, 3, "gpmc_ad15", "kpd_col3", "c2c_data8", "gpio_39", NULL, "sdmmc1_dat7", NULL, NULL),
+	_PINDEF(0x0060,  "b17",  40, 3, "gpmc_a16", "kpd_row4", "c2c_datain0", "gpio_40", "venc_656_data0", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0062,  "a18",  41, 3, "gpmc_a17", "kpd_row5", "c2c_datain1", "gpio_41", "venc_656_data1", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0064,  "b18",  42, 3, "gpmc_a18", "kpd_row6", "c2c_datain2", "gpio_42", "venc_656_data2", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0066,  "a19",  43, 3, "gpmc_a19", "kpd_row7", "c2c_datain3", "gpio_43", "venc_656_data3", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0068,  "b19",  44, 3, "gpmc_a20", "kpd_col4", "c2c_datain4", "gpio_44", "venc_656_data4", NULL, NULL, "safe_mode"),
+	_PINDEF(0x006a,  "b20",  45, 3, "gpmc_a21", "kpd_col5", "c2c_datain5", "gpio_45", "venc_656_data5", NULL, NULL, "safe_mode"),
+	_PINDEF(0x006c,  "a21",  46, 3, "gpmc_a22", "kpd_col6", "c2c_datain6", "gpio_46", "venc_656_data6", NULL, NULL, "safe_mode"),
+	_PINDEF(0x006e,  "b21",  47, 3, "gpmc_a23", "kpd_col7", "c2c_datain7", "gpio_47", "venc_656_data7", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0070,  "c20",  48, 3, "gpmc_a24", "kpd_col8", "c2c_clkout0", "gpio_48", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0072,  "d20",  49, 3, "gpmc_a25", NULL, "c2c_clkout1", "gpio_49", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0074,  "b25",  50, 3, "gpmc_ncs0", NULL, NULL, "gpio_50", "sys_ndmareq0", NULL, NULL, NULL),
+	_PINDEF(0x0076,  "c21",  51, 3, "gpmc_ncs1", NULL, "c2c_dataout6", "gpio_51", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0078,  "d21",  52, 3, "gpmc_ncs2", "kpd_row8", "c2c_dataout7", "gpio_52", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x007a,  "c22",  53, 3, "gpmc_ncs3", "gpmc_dir", "c2c_dataout4", "gpio_53", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x007c,  "c25",  54, 3, "gpmc_nwp", "dsi1_te0", NULL, "gpio_54", "sys_ndmareq1", NULL, NULL, NULL),
+	_PINDEF(0x007e,  "b22",  55, 3, "gpmc_clk", NULL, NULL, "gpio_55", "sys_ndmareq2", "sdmmc1_cmd", NULL, NULL),
+	_PINDEF(0x0080,  "d25",  56, 3, "gpmc_nadv_ale", "dsi1_te1", NULL, "gpio_56", "sys_ndmareq3", "sdmmc1_clk", NULL, NULL),
+	_PINDEF(0x0082,  "b11",   0, 0, "gpmc_noe", "sdmmc2_clk", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0084,  "b12",   0, 0, "gpmc_nwe", "sdmmc2_cmd", NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0086,  "c23",  59, 3, "gpmc_nbe0_cle", "dsi2_te0", NULL, "gpio_59", NULL, NULL, NULL, NULL),
+	_PINDEF(0x0088,  "d22",  60, 3, "gpmc_nbe1", NULL, "c2c_dataout5", "gpio_60", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x008a,  "b26",  61, 3, "gpmc_wait0", "dsi2_te1", NULL, "gpio_61", NULL, NULL, NULL, NULL),
+	_PINDEF(0x008c,  "b23",  62, 3, "gpmc_wait1", NULL, "c2c_dataout2", "gpio_62", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x008e,  "d23", 100, 3, "gpmc_wait2", "usbc1_icusb_txen", "c2c_dataout3", "gpio_100", "sys_ndmareq0", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0090,  "a24", 101, 3, "gpmc_ncs4", "dsi1_te0", "c2c_clkin0", "gpio_101", "sys_ndmareq1", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0092,  "b24", 102, 3, "gpmc_ncs5", "dsi1_te1", "c2c_clkin1", "gpio_102", "sys_ndmareq2", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0094,  "c24", 103, 3, "gpmc_ncs6", "dsi2_te0", "c2c_dataout0", "gpio_103", "sys_ndmareq3", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0096,  "d24", 104, 3, "gpmc_ncs7", "dsi2_te1", "c2c_dataout1", "gpio_104", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0098,   "b9",  63, 3, "hdmi_hpd", NULL, NULL, "gpio_63", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x009a,  "b10",  64, 3, "hdmi_cec", NULL, NULL, "gpio_64", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x009c,   "a8",  65, 3, "hdmi_ddc_scl", NULL, NULL, "gpio_65", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x009e,   "b8",  66, 3, "hdmi_ddc_sda", NULL, NULL, "gpio_66", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00a0,  "r26",   0, 0, "csi21_dx0", NULL, NULL, "gpi_67", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00a2,  "r25",   0, 0, "csi21_dy0", NULL, NULL, "gpi_68", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00a4,  "t26",   0, 0, "csi21_dx1", NULL, NULL, "gpi_69", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00a6,  "t25",   0, 0, "csi21_dy1", NULL, NULL, "gpi_70", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00a8,  "u26",   0, 0, "csi21_dx2", NULL, NULL, "gpi_71", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00aa,  "u25",   0, 0, "csi21_dy2", NULL, NULL, "gpi_72", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ac,  "v26",   0, 0, "csi21_dx3", NULL, NULL, "gpi_73", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ae,  "v25",   0, 0, "csi21_dy3", NULL, NULL, "gpi_74", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00b0,  "w26",   0, 0, "csi21_dx4", NULL, NULL, "gpi_75", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00b2,  "w25",   0, 0, "csi21_dy4", NULL, NULL, "gpi_76", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00b4,  "m26",   0, 0, "csi22_dx0", NULL, NULL, "gpi_77", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00b6,  "m25",   0, 0, "csi22_dy0", NULL, NULL, "gpi_78", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00b8,  "n26",   0, 0, "csi22_dx1", NULL, NULL, "gpi_79", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ba,  "n25",   0, 0, "csi22_dy1", NULL, NULL, "gpi_80", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00bc,  "t27",  81, 3, "cam_shutter", NULL, NULL, "gpio_81", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00be,  "u27",  82, 3, "cam_strobe", NULL, NULL, "gpio_82", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00c0,  "v27",  83, 3, "cam_globalreset", NULL, NULL, "gpio_83", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00c2, "ae18",  84, 3, "usbb1_ulpitll_clk", "hsi1_cawake", NULL, "gpio_84", "usbb1_ulpiphy_clk", NULL, "hw_dbg20", "safe_mode"),
+	_PINDEF(0x00c4, "ag19",  85, 3, "usbb1_ulpitll_stp", "hsi1_cadata", "mcbsp4_clkr", "gpio_85", "usbb1_ulpiphy_stp", "usbb1_mm_rxdp", "hw_dbg21", "safe_mode"),
+	_PINDEF(0x00c6, "af19",  86, 3, "usbb1_ulpitll_dir", "hsi1_caflag", "mcbsp4_fsr", "gpio_86", "usbb1_ulpiphy_dir", NULL, "hw_dbg22", "safe_mode"),
+	_PINDEF(0x00c8, "ae19",  87, 3, "usbb1_ulpitll_nxt", "hsi1_acready", "mcbsp4_fsx", "gpio_87", "usbb1_ulpiphy_nxt", "usbb1_mm_rxdm", "hw_dbg23", "safe_mode"),
+	_PINDEF(0x00ca, "af18",  88, 3, "usbb1_ulpitll_dat0", "hsi1_acwake", "mcbsp4_clkx", "gpio_88", "usbb1_ulpiphy_dat0", "usbb1_mm_txen", "hw_dbg24", "safe_mode"),
+	_PINDEF(0x00cc, "ag18",  89, 3, "usbb1_ulpitll_dat1", "hsi1_acdata", "mcbsp4_dx", "gpio_89", "usbb1_ulpiphy_dat1", "usbb1_mm_txdat", "hw_dbg25", "safe_mode"),
+	_PINDEF(0x00ce, "ae17",  90, 3, "usbb1_ulpitll_dat2", "hsi1_acflag", "mcbsp4_dr", "gpio_90", "usbb1_ulpiphy_dat2", "usbb1_mm_txse0", "hw_dbg26", "safe_mode"),
+	_PINDEF(0x00d0, "af17",  91, 3, "usbb1_ulpitll_dat3", "hsi1_caready", NULL, "gpio_91", "usbb1_ulpiphy_dat3", "usbb1_mm_rxrcv", "hw_dbg27", "safe_mode"),
+	_PINDEF(0x00d2, "ah17",  92, 3, "usbb1_ulpitll_dat4", "dmtimer8_pwm_evt", "abe_mcbsp3_dr", "gpio_92", "usbb1_ulpiphy_dat4", NULL, "hw_dbg28", "safe_mode"),
+	_PINDEF(0x00d4, "ae16",  93, 3, "usbb1_ulpitll_dat5", "dmtimer9_pwm_evt", "abe_mcbsp3_dx", "gpio_93", "usbb1_ulpiphy_dat5", NULL, "hw_dbg29", "safe_mode"),
+	_PINDEF(0x00d6, "af16",  94, 3, "usbb1_ulpitll_dat6", "dmtimer10_pwm_evt", "abe_mcbsp3_clkx", "gpio_94", "usbb1_ulpiphy_dat6", "abe_dmic_din3", "hw_dbg30", "safe_mode"),
+	_PINDEF(0x00d8, "ag16",  95, 3, "usbb1_ulpitll_dat7", "dmtimer11_pwm_evt", "abe_mcbsp3_fsx", "gpio_95", "usbb1_ulpiphy_dat7", "abe_dmic_clk3", "hw_dbg31", "safe_mode"),
+	_PINDEF(0x00da, "af14",  96, 3, "usbb1_hsic_data", NULL, NULL, "gpio_96", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00dc, "ae14",  97, 3, "usbb1_hsic_strobe", NULL, NULL, "gpio_97", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00de,   "h2",  98, 3, "usbc1_icusb_dp", NULL, NULL, "gpio_98", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00e0,   "h3",  99, 3, "usbc1_icusb_dm", NULL, NULL, "gpio_99", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00e2,   "d2", 100, 3, "sdmmc1_clk", NULL, "dpm_emu19", "gpio_100", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00e4,   "e3", 101, 3, "sdmmc1_cmd", NULL, "uart1_rx", "gpio_101", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00e6,   "e4", 102, 3, "sdmmc1_dat0", NULL, "dpm_emu18", "gpio_102", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00e8,   "e2", 103, 3, "sdmmc1_dat1", NULL, "dpm_emu17", "gpio_103", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ea,   "e1", 104, 3, "sdmmc1_dat2", NULL, "dpm_emu16", "gpio_104", "jtag_tms_tmsc", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ec,   "f4", 105, 3, "sdmmc1_dat3", NULL, "dpm_emu15", "gpio_105", "jtag_tck", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00ee,   "f3", 106, 3, "sdmmc1_dat4", NULL, NULL, "gpio_106", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00f0,   "f1", 107, 3, "sdmmc1_dat5", NULL, NULL, "gpio_107", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00f2,   "g4", 108, 3, "sdmmc1_dat6", NULL, NULL, "gpio_108", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00f4,   "g3", 109, 3, "sdmmc1_dat7", NULL, NULL, "gpio_109", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x00f6, "ad27", 110, 3, "abe_mcbsp2_clkx", "mcspi2_clk", "abe_mcasp_ahclkx", "gpio_110", "usbb2_mm_rxdm", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00f8, "ad26", 111, 3, "abe_mcbsp2_dr", "mcspi2_somi", "abe_mcasp_axr", "gpio_111", "usbb2_mm_rxdp", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00fa, "ad25", 112, 3, "abe_mcbsp2_dx", "mcspi2_simo", "abe_mcasp_amute", "gpio_112", "usbb2_mm_rxrcv", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00fc, "ac28", 113, 3, "abe_mcbsp2_fsx", "mcspi2_cs0", "abe_mcasp_afsx", "gpio_113", "usbb2_mm_txen", NULL, NULL, "safe_mode"),
+	_PINDEF(0x00fe, "ac26", 114, 3, "abe_mcbsp1_clkx", "abe_slimbus1_clock", NULL, "gpio_114", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0100, "ac25", 115, 3, "abe_mcbsp1_dr", "abe_slimbus1_data", NULL, "gpio_115", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0102, "ab25", 116, 3, "abe_mcbsp1_dx", "sdmmc3_dat2", "abe_mcasp_aclkx", "gpio_116", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0104, "ac27", 117, 3, "abe_mcbsp1_fsx", "sdmmc3_dat3", "abe_mcasp_amutein", "gpio_117", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0106, "ag25",   0, 0, "abe_pdm_ul_data", "abe_mcbsp3_dr", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0108, "af25",   0, 0, "abe_pdm_dl_data", "abe_mcbsp3_dx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x010a, "ae25",   0, 0, "abe_pdm_frame", "abe_mcbsp3_clkx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x010c, "af26",   0, 0, "abe_pdm_lb_clk", "abe_mcbsp3_fsx", NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x010e, "ah26", 118, 3, "abe_clks", NULL, NULL, "gpio_118", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0110, "ae24", 119, 3, "abe_dmic_clk1", NULL, NULL, "gpio_119", "usbb2_mm_txse0", "uart4_cts", NULL, "safe_mode"),
+	_PINDEF(0x0112, "af24", 120, 3, "abe_dmic_din1", NULL, NULL, "gpio_120", "usbb2_mm_txdat", "uart4_rts", NULL, "safe_mode"),
+	_PINDEF(0x0114, "ag24", 121, 3, "abe_dmic_din2", "slimbus2_clock", "abe_mcasp_axr", "gpio_121", NULL, "dmtimer11_pwm_evt", NULL, "safe_mode"),
+	_PINDEF(0x0116, "ah24", 122, 3, "abe_dmic_din3", "slimbus2_data", "abe_dmic_clk2", "gpio_122", NULL, "dmtimer9_pwm_evt", NULL, "safe_mode"),
+	_PINDEF(0x0118, "ab26", 123, 3, "uart2_cts", "sdmmc3_clk", NULL, "gpio_123", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x011a, "ab27", 124, 3, "uart2_rts", "sdmmc3_cmd", NULL, "gpio_124", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x011c, "aa25", 125, 3, "uart2_rx", "sdmmc3_dat0", NULL, "gpio_125", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x011e, "aa26", 126, 3, "uart2_tx", "sdmmc3_dat1", NULL, "gpio_126", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0120, "aa27", 127, 3, "hdq_sio", "i2c3_sccb", "i2c2_sccb", "gpio_127", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0122, "ae28",   0, 0, "i2c1_scl", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0124, "ae26",   0, 0, "i2c1_sda", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0126,  "c26", 128, 3, "i2c2_scl", "uart1_rx", NULL, "gpio_128", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0128,  "d26", 129, 3, "i2c2_sda", "uart1_tx", NULL, "gpio_129", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x012a,  "w27", 130, 3, "i2c3_scl", NULL, NULL, "gpio_130", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x012c,  "y27", 131, 3, "i2c3_sda", NULL, NULL, "gpio_131", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x012e, "ag21", 132, 3, "i2c4_scl", NULL, NULL, "gpio_132", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0130, "ah22", 133, 3, "i2c4_sda", NULL, NULL, "gpio_133", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0132, "af22", 134, 3, "mcspi1_clk", NULL, NULL, "gpio_134", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0134, "ae22", 135, 3, "mcspi1_somi", NULL, NULL, "gpio_135", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0136, "ag22", 136, 3, "mcspi1_simo", NULL, NULL, "gpio_136", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0138, "ae23", 137, 3, "mcspi1_cs0", NULL, NULL, "gpio_137", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x013a, "af23", 138, 3, "mcspi1_cs1", "uart1_rx", NULL, "gpio_138", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x013c, "ag23", 139, 3, "mcspi1_cs2", "uart1_cts", "slimbus2_clock", "gpio_139", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x013e, "ah23", 140, 3, "mcspi1_cs3", "uart1_rts", "slimbus2_data", "gpio_140", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0140,  "f27", 141, 3, "uart3_cts_rctx", "uart1_tx", NULL, "gpio_141", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0142,  "f28", 142, 3, "uart3_rts_sd", NULL, NULL, "gpio_142", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0144,  "g27", 143, 3, "uart3_rx_irrx", "dmtimer8_pwm_evt", NULL, "gpio_143", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0146,  "g28", 144, 3, "uart3_tx_irtx", "dmtimer9_pwm_evt", NULL, "gpio_144", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0148,  "ae5", 145, 3, "sdmmc5_clk", "mcspi2_clk", "usbc1_icusb_dp", "gpio_145", NULL, "sdmmc2_clk", NULL, "safe_mode"),
+	_PINDEF(0x014a,  "af5", 146, 3, "sdmmc5_cmd", "mcspi2_simo", "usbc1_icusb_dm", "gpio_146", NULL, "sdmmc2_cmd", NULL, "safe_mode"),
+	_PINDEF(0x014c,  "ae4", 147, 3, "sdmmc5_dat0", "mcspi2_somi", "usbc1_icusb_rcv", "gpio_147", NULL, "sdmmc2_dat0", NULL, "safe_mode"),
+	_PINDEF(0x014e,  "af4", 148, 3, "sdmmc5_dat1", NULL, "usbc1_icusb_txen", "gpio_148", NULL, "sdmmc2_dat1", NULL, "safe_mode"),
+	_PINDEF(0x0150,  "ag3", 149, 3, "sdmmc5_dat2", "mcspi2_cs1", NULL, "gpio_149", NULL, "sdmmc2_dat2", NULL, "safe_mode"),
+	_PINDEF(0x0152,  "af3", 150, 3, "sdmmc5_dat3", "mcspi2_cs0", NULL, "gpio_150", NULL, "sdmmc2_dat3", NULL, "safe_mode"),
+	_PINDEF(0x0154, "ae21", 151, 3, "mcspi4_clk", "sdmmc4_clk", "kpd_col6", "gpio_151", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0156, "af20", 152, 3, "mcspi4_simo", "sdmmc4_cmd", "kpd_col7", "gpio_152", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0158, "af21", 153, 3, "mcspi4_somi", "sdmmc4_dat0", "kpd_row6", "gpio_153", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x015a, "ae20", 154, 3, "mcspi4_cs0", "sdmmc4_dat3", "kpd_row7", "gpio_154", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x015c, "ag20", 155, 3, "uart4_rx", "sdmmc4_dat2", "kpd_row8", "gpio_155", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x015e, "ah19", 156, 3, "uart4_tx", "sdmmc4_dat1", "kpd_col8", "gpio_156", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0160, "ag12", 157, 3, "usbb2_ulpitll_clk", "usbb2_ulpiphy_clk", "sdmmc4_cmd", "gpio_157", "hsi2_cawake", NULL, NULL, "safe_mode"),
+	_PINDEF(0x0162, "af12", 158, 3, "usbb2_ulpitll_stp", "usbb2_ulpiphy_stp", "sdmmc4_clk", "gpio_158", "hsi2_cadata", "dispc2_data23", NULL, "safe_mode"),
+	_PINDEF(0x0164, "ae12", 159, 3, "usbb2_ulpitll_dir", "usbb2_ulpiphy_dir", "sdmmc4_dat0", "gpio_159", "hsi2_caflag", "dispc2_data22", NULL, "safe_mode"),
+	_PINDEF(0x0166, "ag13", 160, 3, "usbb2_ulpitll_nxt", "usbb2_ulpiphy_nxt", "sdmmc4_dat1", "gpio_160", "hsi2_acready", "dispc2_data21", NULL, "safe_mode"),
+	_PINDEF(0x0168, "ae11", 161, 3, "usbb2_ulpitll_dat0", "usbb2_ulpiphy_dat0", "sdmmc4_dat2", "gpio_161", "hsi2_acwake", "dispc2_data20", "usbb2_mm_txen", "safe_mode"),
+	_PINDEF(0x016a, "af11", 162, 3, "usbb2_ulpitll_dat1", "usbb2_ulpiphy_dat1", "sdmmc4_dat3", "gpio_162", "hsi2_acdata", "dispc2_data19", "usbb2_mm_txdat", "safe_mode"),
+	_PINDEF(0x016c, "ag11", 163, 3, "usbb2_ulpitll_dat2", "usbb2_ulpiphy_dat2", "sdmmc3_dat2", "gpio_163", "hsi2_acflag", "dispc2_data18", "usbb2_mm_txse0", "safe_mode"),
+	_PINDEF(0x016e, "ah11", 164, 3, "usbb2_ulpitll_dat3", "usbb2_ulpiphy_dat3", "sdmmc3_dat1", "gpio_164", "hsi2_caready", "dispc2_data15", "rfbi_data15", "safe_mode"),
+	_PINDEF(0x0170, "ae10", 165, 3, "usbb2_ulpitll_dat4", "usbb2_ulpiphy_dat4", "sdmmc3_dat0", "gpio_165", "mcspi3_somi", "dispc2_data14", "rfbi_data14", "safe_mode"),
+	_PINDEF(0x0172, "af10", 166, 3, "usbb2_ulpitll_dat5", "usbb2_ulpiphy_dat5", "sdmmc3_dat3", "gpio_166", "mcspi3_cs0", "dispc2_data13", "rfbi_data13", "safe_mode"),
+	_PINDEF(0x0174, "ag10", 167, 3, "usbb2_ulpitll_dat6", "usbb2_ulpiphy_dat6", "sdmmc3_cmd", "gpio_167", "mcspi3_simo", "dispc2_data12", "rfbi_data12", "safe_mode"),
+	_PINDEF(0x0176,  "ae9", 168, 3, "usbb2_ulpitll_dat7", "usbb2_ulpiphy_dat7", "sdmmc3_clk", "gpio_168", "mcspi3_clk", "dispc2_data11", "rfbi_data11", "safe_mode"),
+	_PINDEF(0x0178, "af13", 169, 3, "usbb2_hsic_data", NULL, NULL, "gpio_169", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x017a, "ae13", 170, 3, "usbb2_hsic_strobe", NULL, NULL, "gpio_170", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x017c,  "g26", 171, 3, "kpd_col3", "kpd_col0", NULL, "gpio_171", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x017e,  "g25", 172, 3, "kpd_col4", "kpd_col1", NULL, "gpio_172", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0180,  "h26", 173, 3, "kpd_col5", "kpd_col2", NULL, "gpio_173", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0182,  "h25", 174, 3, "kpd_col0", "kpd_col3", NULL, "gpio_174", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0184,  "j27",   0, 0, "kpd_col1", "kpd_col4", NULL, "gpio_0", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0186,  "h27",   1, 3, "kpd_col2", "kpd_col5", NULL, "gpio_1", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0188,  "j26", 175, 3, "kpd_row3", "kpd_row0", NULL, "gpio_175", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x018a,  "j25", 176, 3, "kpd_row4", "kpd_row1", NULL, "gpio_176", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x018c,  "k26", 177, 3, "kpd_row5", "kpd_row2", NULL, "gpio_177", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x018e,  "k25", 178, 3, "kpd_row0", "kpd_row3", NULL, "gpio_178", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0190,  "l27",   2, 3, "kpd_row1", "kpd_row4", NULL, "gpio_2", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0192,  "k27",   3, 3, "kpd_row2", "kpd_row5", NULL, "gpio_3", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0194,   "c3",   0, 0, "usba0_otg_ce", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PINDEF(0x0196,   "b5",   0, 0, "usba0_otg_dp", "uart3_rx_irrx", "uart2_rx", NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x0198,   "b4",   0, 0, "usba0_otg_dm", "uart3_tx_irtx", "uart2_tx", NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x019a, "aa28", 181, 3, "fref_clk1_out", NULL, NULL, "gpio_181", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x019c,  "y28", 182, 3, "fref_clk2_out", NULL, NULL, "gpio_182", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x019e,  "ae6",   0, 0, "sys_nirq1", NULL, NULL, NULL, NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01a0,  "af6", 183, 3, "sys_nirq2", NULL, NULL, "gpio_183", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01a2,  "f26", 184, 3, "sys_boot0", NULL, NULL, "gpio_184", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01a4,  "e27", 185, 3, "sys_boot1", NULL, NULL, "gpio_185", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01a6,  "e26", 186, 3, "sys_boot2", NULL, NULL, "gpio_186", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01a8,  "e25", 187, 3, "sys_boot3", NULL, NULL, "gpio_187", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01aa,  "d28", 188, 3, "sys_boot4", NULL, NULL, "gpio_188", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01ac,  "d27", 189, 3, "sys_boot5", NULL, NULL, "gpio_189", NULL, NULL, NULL, "safe_mode"),
+	_PINDEF(0x01ae,   "m2",  11, 3, "dpm_emu0", NULL, NULL, "gpio_11", NULL, NULL, "hw_dbg0", "safe_mode"),
+	_PINDEF(0x01b0,   "n2",  12, 3, "dpm_emu1", NULL, NULL, "gpio_12", NULL, NULL, "hw_dbg1", "safe_mode"),
+	_PINDEF(0x01b2,   "p2",  13, 3, "dpm_emu2", "usba0_ulpiphy_clk", NULL, "gpio_13", NULL, "dispc2_fid", "hw_dbg2", "safe_mode"),
+	_PINDEF(0x01b4,   "v1",  14, 3, "dpm_emu3", "usba0_ulpiphy_stp", NULL, "gpio_14", "rfbi_data10", "dispc2_data10", "hw_dbg3", "safe_mode"),
+	_PINDEF(0x01b6,   "v2",  15, 3, "dpm_emu4", "usba0_ulpiphy_dir", NULL, "gpio_15", "rfbi_data9", "dispc2_data9", "hw_dbg4", "safe_mode"),
+	_PINDEF(0x01b8,   "w1",  16, 3, "dpm_emu5", "usba0_ulpiphy_nxt", NULL, "gpio_16", "rfbi_te_vsync0", "dispc2_data16", "hw_dbg5", "safe_mode"),
+	_PINDEF(0x01ba,   "w2",  17, 3, "dpm_emu6", "usba0_ulpiphy_dat0", "uart3_tx_irtx", "gpio_17", "rfbi_hsync0", "dispc2_data17", "hw_dbg6", "safe_mode"),
+	_PINDEF(0x01bc,   "w3",  18, 3, "dpm_emu7", "usba0_ulpiphy_dat1", "uart3_rx_irrx", "gpio_18", "rfbi_cs0", "dispc2_hsync", "hw_dbg7", "safe_mode"),
+	_PINDEF(0x01be,   "w4",  19, 3, "dpm_emu8", "usba0_ulpiphy_dat2", "uart3_rts_sd", "gpio_19", "rfbi_re", "dispc2_pclk", "hw_dbg8", "safe_mode"),
+	_PINDEF(0x01c0,   "y2",  20, 3, "dpm_emu9", "usba0_ulpiphy_dat3", "uart3_cts_rctx", "gpio_20", "rfbi_we", "dispc2_vsync", "hw_dbg9", "safe_mode"),
+	_PINDEF(0x01c2,   "y3",  21, 3, "dpm_emu10", "usba0_ulpiphy_dat4", NULL, "gpio_21", "rfbi_a0", "dispc2_de", "hw_dbg10", "safe_mode"),
+	_PINDEF(0x01c4,   "y4",  22, 3, "dpm_emu11", "usba0_ulpiphy_dat5", NULL, "gpio_22", "rfbi_data8", "dispc2_data8", "hw_dbg11", "safe_mode"),
+	_PINDEF(0x01c6,  "aa1",  23, 3, "dpm_emu12", "usba0_ulpiphy_dat6", NULL, "gpio_23", "rfbi_data7", "dispc2_data7", "hw_dbg12", "safe_mode"),
+	_PINDEF(0x01c8,  "aa2",  24, 3, "dpm_emu13", "usba0_ulpiphy_dat7", NULL, "gpio_24", "rfbi_data6", "dispc2_data6", "hw_dbg13", "safe_mode"),
+	_PINDEF(0x01ca,  "aa3",  25, 3, "dpm_emu14", "sys_drm_msecure", "uart1_rx", "gpio_25", "rfbi_data5", "dispc2_data5", "hw_dbg14", "safe_mode"),
+	_PINDEF(0x01cc,  "aa4",  26, 3, "dpm_emu15", "sys_secure_indicator", NULL, "gpio_26", "rfbi_data4", "dispc2_data4", "hw_dbg15", "safe_mode"),
+	_PINDEF(0x01ce,  "ab2",  27, 3, "dpm_emu16", "dmtimer8_pwm_evt", "dsi1_te0", "gpio_27", "rfbi_data3", "dispc2_data3", "hw_dbg16", "safe_mode"),
+	_PINDEF(0x01d0,  "ab3",  28, 3, "dpm_emu17", "dmtimer9_pwm_evt", "dsi1_te1", "gpio_28", "rfbi_data2", "dispc2_data2", "hw_dbg17", "safe_mode"),
+	_PINDEF(0x01d2,  "ab4", 190, 3, "dpm_emu18", "dmtimer10_pwm_evt", "dsi2_te0", "gpio_190", "rfbi_data1", "dispc2_data1", "hw_dbg18", "safe_mode"),
+	_PINDEF(0x01d4,  "ac4", 191, 3, "dpm_emu19", "dmtimer11_pwm_evt", "dsi2_te1", "gpio_191", "rfbi_data0", "dispc2_data0", "hw_dbg19", "safe_mode"),
 	{  .ballname = NULL  },
 };
+
+const struct ti_scm_device ti_scm_dev = {
+	.padconf_muxmode_mask	= CONTROL_PADCONF_MUXMODE_MASK,
+	.padconf_sate_mask	= CONTROL_PADCONF_SATE_MASK,
+	.padstate		= (struct ti_scm_padstate *) &ti_padstate_devmap,
+	.padconf		= (struct ti_scm_padconf *) &ti_padconf_devmap,
+};
+
+int
+ti_scm_padconf_set_gpioflags(uint32_t gpio, uint32_t flags)
+{
+	unsigned int state = 0;
+	/* First the SCM driver needs to be told to put the pad into GPIO mode */
+	if (flags & GPIO_PIN_OUTPUT)
+		state = PADCONF_PIN_OUTPUT;
+	else if (flags & GPIO_PIN_INPUT) {
+		if (flags & GPIO_PIN_PULLUP)
+			state = PADCONF_PIN_INPUT_PULLUP;
+		else if (flags & GPIO_PIN_PULLDOWN)
+			state = PADCONF_PIN_INPUT_PULLDOWN;
+		else
+			state = PADCONF_PIN_INPUT;
+	}
+	return ti_scm_padconf_set_gpiomode(gpio, state);
+}
+
+void
+ti_scm_padconf_get_gpioflags(uint32_t gpio, uint32_t *flags)
+{
+	unsigned int state;
+	/* Get the current pin state */
+	if (ti_scm_padconf_get_gpiomode(gpio, &state) != 0)
+		*flags = 0;
+	else {
+		switch (state) {
+			case PADCONF_PIN_OUTPUT:
+				*flags = GPIO_PIN_OUTPUT;
+				break;
+			case PADCONF_PIN_INPUT:
+				*flags = GPIO_PIN_INPUT;
+				break;
+			case PADCONF_PIN_INPUT_PULLUP:
+				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLUP;
+				break;
+			case PADCONF_PIN_INPUT_PULLDOWN:
+				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLDOWN;
+				break;
+			default:
+				*flags = 0;
+				break;
+		}
+	}
+}
+

Modified: projects/armv6/sys/arm/ti/omap_gpio.c
==============================================================================
--- projects/armv6/sys/arm/ti/omap_gpio.c	Sat Feb 18 09:18:06 2012	(r231893)
+++ projects/armv6/sys/arm/ti/omap_gpio.c	Sat Feb 18 12:19:15 2012	(r231894)
@@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <machine/bus.h>
 #include <machine/resource.h>
 
-#include <arm/ti/omap_scm.h>
+#include <arm/ti/ti_scm.h>
 #include <arm/ti/omap_prcm.h>
 
 #include <dev/fdt/fdt_common.h>
@@ -356,7 +356,6 @@ omap_gpio_pin_getflags(device_t dev, uin
 {
 	struct omap_gpio_softc *sc = device_get_softc(dev);
 	uint32_t bank = (pin / PINS_PER_BANK);
-	unsigned int state;
 
 	OMAP_GPIO_LOCK(sc);
 
@@ -367,30 +366,10 @@ omap_gpio_pin_getflags(device_t dev, uin
 	}
 
 	/* Get the current pin state */
-	if (omap_scm_padconf_get_gpiomode(pin, &state) != 0)
-		*flags = 0;
-	else {
-		switch (state) {
-			case PADCONF_PIN_OUTPUT:
-				*flags = GPIO_PIN_OUTPUT;
-				break;
-			case PADCONF_PIN_INPUT:
-				*flags = GPIO_PIN_INPUT;
-				break;
-			case PADCONF_PIN_INPUT_PULLUP:
-				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLUP;
-				break;
-			case PADCONF_PIN_INPUT_PULLDOWN:
-				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLDOWN;
-				break;
-			default:
-				*flags = 0;
-				break;
-		}
-	}
+	ti_scm_padconf_get_gpioflags(pin, flags);
 
 	OMAP_GPIO_UNLOCK(sc);
-	
+
 	return (0);
 }
 
@@ -455,7 +434,6 @@ static int
 omap_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags)
 {
 	struct omap_gpio_softc *sc = device_get_softc(dev);
-	unsigned int state = 0;
 	uint32_t bank = (pin / PINS_PER_BANK);
 	uint32_t mask = (1UL << (pin % PINS_PER_BANK));
 	uint32_t reg_off;
@@ -480,25 +458,12 @@ omap_gpio_pin_setflags(device_t dev, uin
 		return (EINVAL);
 	}
 
-	/* First the SCM driver needs to be told to put the pad into GPIO mode */
-	if (flags & GPIO_PIN_OUTPUT)
-		state = PADCONF_PIN_OUTPUT;
-	else if (flags & GPIO_PIN_INPUT) {
-		if (flags & GPIO_PIN_PULLUP)
-			state = PADCONF_PIN_INPUT_PULLUP;
-		else if (flags & GPIO_PIN_PULLDOWN)
-			state = PADCONF_PIN_INPUT_PULLDOWN;
-		else
-			state = PADCONF_PIN_INPUT;
-	}
-
 	/* Set the GPIO mode and state */

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