From owner-svn-src-projects@FreeBSD.ORG Sun Feb 26 02:24:41 2012 Return-Path: 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 63B14106566B; Sun, 26 Feb 2012 02:24:41 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E4ED8FC08; Sun, 26 Feb 2012 02:24:41 +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 q1Q2OfdI043683; Sun, 26 Feb 2012 02:24:41 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1Q2OfRs043680; Sun, 26 Feb 2012 02:24:41 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201202260224.q1Q2OfRs043680@svn.freebsd.org> From: Andrew Turner Date: Sun, 26 Feb 2012 02:24:41 +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: r232169 - projects/arm_eabi/gnu/usr.bin/binutils/ld X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2012 02:24:41 -0000 Author: andrew Date: Sun Feb 26 02:24:40 2012 New Revision: 232169 URL: http://svn.freebsd.org/changeset/base/232169 Log: Allow us to build ARM EABI C++ libraries. The TARGET2 relocation type is platform specific. Set it to be the same as in the upstream GCC. Modified: projects/arm_eabi/gnu/usr.bin/binutils/ld/armelf_fbsd.sh projects/arm_eabi/gnu/usr.bin/binutils/ld/armelfb_fbsd.sh Modified: projects/arm_eabi/gnu/usr.bin/binutils/ld/armelf_fbsd.sh ============================================================================== --- projects/arm_eabi/gnu/usr.bin/binutils/ld/armelf_fbsd.sh Sun Feb 26 00:54:13 2012 (r232168) +++ projects/arm_eabi/gnu/usr.bin/binutils/ld/armelf_fbsd.sh Sun Feb 26 02:24:40 2012 (r232169) @@ -1,6 +1,7 @@ # $FreeBSD$ . ${srcdir}/emulparams/armelf.sh . ${srcdir}/emulparams/elf_fbsd.sh +TARGET2_TYPE=got-rel MAXPAGESIZE=0x8000 GENERATE_PIE_SCRIPT=yes Modified: projects/arm_eabi/gnu/usr.bin/binutils/ld/armelfb_fbsd.sh ============================================================================== --- projects/arm_eabi/gnu/usr.bin/binutils/ld/armelfb_fbsd.sh Sun Feb 26 00:54:13 2012 (r232168) +++ projects/arm_eabi/gnu/usr.bin/binutils/ld/armelfb_fbsd.sh Sun Feb 26 02:24:40 2012 (r232169) @@ -5,6 +5,7 @@ #OUTPUT_FORMAT="elf32-bigarm" . ${srcdir}/emulparams/armelf.sh . ${srcdir}/emulparams/elf_fbsd.sh +TARGET2_TYPE=got-rel MAXPAGESIZE=0x8000 GENERATE_PIE_SCRIPT=yes From owner-svn-src-projects@FreeBSD.ORG Sun Feb 26 10:52:58 2012 Return-Path: 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 15605106566C; Sun, 26 Feb 2012 10:52:58 +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 04FA08FC08; Sun, 26 Feb 2012 10:52:58 +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 q1QAqvY9061753; Sun, 26 Feb 2012 10:52:57 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1QAqvAF061751; Sun, 26 Feb 2012 10:52:57 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202261052.q1QAqvAF061751@svn.freebsd.org> From: Damjan Marion Date: Sun, 26 Feb 2012 10:52:57 +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: r232173 - 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2012 10:52:58 -0000 Author: dmarion Date: Sun Feb 26 10:52:57 2012 New Revision: 232173 URL: http://svn.freebsd.org/changeset/base/232173 Log: Reset AINTC during attach. Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/aintc.c Modified: projects/armv6/sys/arm/ti/aintc.c ============================================================================== --- projects/armv6/sys/arm/ti/aintc.c Sun Feb 26 10:20:55 2012 (r232172) +++ projects/armv6/sys/arm/ti/aintc.c Sun Feb 26 10:52:57 2012 (r232173) @@ -110,6 +110,16 @@ ti_aintc_attach(device_t dev) x = aintc_read_4(INTC_REVISION); device_printf(dev, "Revision %u.%u\n",(x >> 4) & 0xF, x & 0xF); + + /* SoftReset */ + aintc_write_4(INTC_SYSCONFIG, 2); + + /* Wait for reset to complete */ + while(!(aintc_read_4(INTC_SYSSTATUS) & 1)); + + /*Set Priority Threshold */ + aintc_write_4(INTC_THRESHOLD, 0xFF); + return (0); } From owner-svn-src-projects@FreeBSD.ORG Sun Feb 26 20:05:36 2012 Return-Path: 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 09FF71065673; Sun, 26 Feb 2012 20:05:36 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E943D8FC16; Sun, 26 Feb 2012 20:05: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 q1QK5ZfY081113; Sun, 26 Feb 2012 20:05:35 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1QK5ZTM081111; Sun, 26 Feb 2012 20:05:35 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201202262005.q1QK5ZTM081111@svn.freebsd.org> From: Olivier Houchard Date: Sun, 26 Feb 2012 20:05: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: r232195 - 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2012 20:05:36 -0000 Author: cognet Date: Sun Feb 26 20:05:35 2012 New Revision: 232195 URL: http://svn.freebsd.org/changeset/base/232195 Log: This is really a spin lock, so use mtx_lock_spin. Modified: projects/armv6/sys/arm/ti/omap_dma.c Modified: projects/armv6/sys/arm/ti/omap_dma.c ============================================================================== --- projects/armv6/sys/arm/ti/omap_dma.c Sun Feb 26 19:25:42 2012 (r232194) +++ projects/armv6/sys/arm/ti/omap_dma.c Sun Feb 26 20:05:35 2012 (r232195) @@ -133,8 +133,8 @@ static struct omap_dma_softc *omap_dma_s /** * Macros for driver mutex locking */ -#define OMAP_DMA_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) -#define OMAP_DMA_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) +#define OMAP_DMA_LOCK(_sc) mtx_lock_spin(&(_sc)->sc_mtx) +#define OMAP_DMA_UNLOCK(_sc) mtx_unlock_spin(&(_sc)->sc_mtx) #define OMAP_DMA_LOCK_INIT(_sc) \ mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->sc_dev), \ "omap_dma", MTX_SPIN) From owner-svn-src-projects@FreeBSD.ORG Sun Feb 26 20:30:22 2012 Return-Path: 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 69250106564A; Sun, 26 Feb 2012 20:30:22 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 52D358FC0A; Sun, 26 Feb 2012 20:30:22 +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 q1QKUMDr081931; Sun, 26 Feb 2012 20:30:22 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1QKUM6m081928; Sun, 26 Feb 2012 20:30:22 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201202262030.q1QKUM6m081928@svn.freebsd.org> From: Olivier Houchard Date: Sun, 26 Feb 2012 20:30:22 +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: r232196 - projects/armv6/sys/arm/ti/twl X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2012 20:30:22 -0000 Author: cognet Date: Sun Feb 26 20:30:21 2012 New Revision: 232196 URL: http://svn.freebsd.org/changeset/base/232196 Log: Completely butcherize the locking, it's completely wrong, but so is calling malloc() or the iicbus stuff while holding locks, this requires careful review, and eventually rewriting. Modified: projects/armv6/sys/arm/ti/twl/twl.c projects/armv6/sys/arm/ti/twl/twl_vreg.c Modified: projects/armv6/sys/arm/ti/twl/twl.c ============================================================================== --- projects/armv6/sys/arm/ti/twl/twl.c Sun Feb 26 20:05:35 2012 (r232195) +++ projects/armv6/sys/arm/ti/twl/twl.c Sun Feb 26 20:30:21 2012 (r232196) @@ -156,13 +156,13 @@ twl_read(device_t dev, uint8_t nsub, uin msg[1].flags = IIC_M_RD; msg[1].len = cnt; msg[1].buf = buf; + TWL_UNLOCK(sc); - rc = iicbus_transfer(sc->sc_dev, msg, 2); + rc = iicbus_transfer(dev, msg, 2); - TWL_UNLOCK(sc); if (rc != 0) { - device_printf(sc->sc_dev, "iicbus read failed (adr:0x%02x, reg:0x%02x)\n", + device_printf(dev, "iicbus read failed (adr:0x%02x, reg:0x%02x)\n", addr, reg); return (EIO); } @@ -217,10 +217,10 @@ twl_write(device_t dev, uint8_t nsub, ui msg.flags = IIC_M_WR; msg.len = cnt + 1; msg.buf = tmp_buf; + TWL_UNLOCK(sc); - rc = iicbus_transfer(sc->sc_dev, &msg, 1); + rc = iicbus_transfer(dev, &msg, 1); - TWL_UNLOCK(sc); if (rc != 0) { device_printf(sc->sc_dev, "iicbus write failed (adr:0x%02x, reg:0x%02x)\n", @@ -251,8 +251,6 @@ twl_test_present(struct twl_softc *sc, u struct iic_msg msg; uint8_t tmp; - TWL_ASSERT_LOCKED(sc); - /* Set the address to read from */ msg.slave = addr; msg.flags = IIC_M_RD; @@ -283,8 +281,6 @@ twl_scan(void *dev) sc = device_get_softc((device_t)dev); - TWL_LOCK(sc); - memset(sc->sc_subaddr_map, TWL_INVALID_CHIP_ID, TWL_MAX_SUBADDRS); /* Try each of the addresses (0x48, 0x49, 0x4a & 0x4b) to determine which @@ -297,8 +293,6 @@ twl_scan(void *dev) } } - TWL_UNLOCK(sc); - /* Finished with the interrupt hook */ config_intrhook_disestablish(&sc->sc_scan_hook); } Modified: projects/armv6/sys/arm/ti/twl/twl_vreg.c ============================================================================== --- projects/armv6/sys/arm/ti/twl/twl_vreg.c Sun Feb 26 20:05:35 2012 (r232195) +++ projects/armv6/sys/arm/ti/twl/twl_vreg.c Sun Feb 26 20:30:21 2012 (r232196) @@ -81,6 +81,11 @@ __FBSDID("$FreeBSD$"); */ /* + * XXX cognet: the locking is plain wrong, but we can't just keep locks while + * calling functions that can sleep, such as malloc() or iicbus_transfer + */ + +/* * Power Groups bits for the 4030 and 6030 devices */ #define TWL4030_P3_GRP 0x80 /* Peripherals, power group */ @@ -427,8 +432,6 @@ twl_vreg_is_regulator_enabled(struct twl uint8_t grp; uint8_t state; - TWL_VREG_ASSERT_LOCKED(sc); - /* The status reading is different for the different devices */ if (twl_is_4030(sc->sc_dev)) { @@ -481,8 +484,6 @@ twl_vreg_disable_regulator(struct twl_vr int err = 0; uint8_t grp; - TWL_VREG_ASSERT_LOCKED(sc); - if (twl_is_4030(sc->sc_dev)) { /* Read the regulator CFG_GRP register */ @@ -531,8 +532,6 @@ twl_vreg_enable_regulator(struct twl_vre int err; uint8_t grp; - TWL_VREG_ASSERT_LOCKED(sc); - /* Read the regulator CFG_GRP register */ err = twl_vreg_read_1(sc, regulator, TWL_VREG_GRP, &grp); if (err) @@ -586,8 +585,6 @@ twl_vreg_write_regulator_voltage(struct int err; int vsel; - TWL_VREG_ASSERT_LOCKED(sc); - /* If millivolts is zero then we simply disable the output */ if (millivolts == 0) return (twl_vreg_disable_regulator(sc, regulator)); @@ -641,8 +638,6 @@ twl_vreg_read_regulator_voltage(struct t int ret; uint8_t vsel; - TWL_VREG_ASSERT_LOCKED(sc); - /* Check if the regulator is currently enabled */ if ((ret = twl_vreg_is_regulator_enabled(sc, regulator)) < 0) return (ret); @@ -707,7 +702,6 @@ twl_vreg_get_voltage(device_t dev, const /* Get the device context, take the lock and find the matching regulator */ sc = device_get_softc(dev); - TWL_VREG_LOCK(sc); /* Find the regulator with the matching name */ LIST_FOREACH(regulator, &sc->sc_vreg_list, entries) { @@ -721,8 +715,6 @@ twl_vreg_get_voltage(device_t dev, const if (found) err = twl_vreg_read_regulator_voltage(sc, regulator, millivolts); - TWL_VREG_UNLOCK(sc); - return (err); } @@ -751,8 +743,6 @@ twl_vreg_set_voltage(device_t dev, const /* Get the device context, take the lock and find the matching regulator */ sc = device_get_softc(dev); - TWL_VREG_LOCK(sc); - /* Find the regulator with the matching name */ LIST_FOREACH(regulator, &sc->sc_vreg_list, entries) { if (strcmp(regulator->name, name) == 0) { @@ -765,8 +755,6 @@ twl_vreg_set_voltage(device_t dev, const if (found) err = twl_vreg_write_regulator_voltage(sc, regulator, millivolts); - TWL_VREG_UNLOCK(sc); - return (err); } @@ -835,14 +823,28 @@ twl_vreg_add_regulator(struct twl_vreg_s { struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(sc->sc_dev); struct sysctl_oid *tree = device_get_sysctl_tree(sc->sc_dev); - struct twl_regulator_entry *new; + struct twl_regulator_entry *new, *tmp; TWL_VREG_ASSERT_LOCKED(sc); + TWL_VREG_UNLOCK(sc); new = malloc(sizeof(struct twl_regulator_entry), M_DEVBUF, M_NOWAIT | M_ZERO); + TWL_VREG_LOCK(sc); if (new == NULL) return (NULL); + /* + * We had to drop the lock while calling malloc(), maybe + * the regulator got added in the meanwhile. + */ + + LIST_FOREACH(tmp, &sc->sc_vreg_list, entries) { + if (!strncmp(new->name, name, strlen(new->name)) && + new->sub_dev == nsub && new->reg_off == regbase) { + free(new, M_DEVBUF); + return (NULL); + } + } /* Copy over the name and register details */ strncpy(new->name, name, TWL_VREG_MAX_NAMELEN); new->name[TWL_VREG_MAX_NAMELEN - 1] = '\0'; @@ -855,10 +857,17 @@ twl_vreg_add_regulator(struct twl_vreg_s new->supp_voltages = voltages; new->num_supp_voltages = num_voltages; + /* + * We're in the list now, so we should be protected against double + * inclusion. + */ + + TWL_VREG_UNLOCK(sc); /* Add a sysctl entry for the voltage */ new->oid = SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, name, CTLTYPE_INT | CTLFLAG_RD, sc, 0, twl_vreg_sysctl_voltage, "I", "voltage regulator"); + TWL_VREG_LOCK(sc); /* Finally add the regulator to list of supported regulators */ LIST_INSERT_HEAD(&sc->sc_vreg_list, new, entries); @@ -907,7 +916,9 @@ twl_vreg_add_regulators(struct twl_vreg_ /* TODO: set voltage from FDT if required */ /* Read the current voltage and print the info */ + TWL_VREG_UNLOCK(sc); twl_vreg_read_regulator_voltage(sc, entry, &millivolts); + TWL_VREG_LOCK(sc); if (debug) device_printf(sc->sc_dev, "%s : %d mV\n", walker->name, millivolts); From owner-svn-src-projects@FreeBSD.ORG Mon Feb 27 15:14:37 2012 Return-Path: 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 595EE106564A; Mon, 27 Feb 2012 15:14:37 +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 48C7E8FC12; Mon, 27 Feb 2012 15:14:37 +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 q1RFEbcO023600; Mon, 27 Feb 2012 15:14:37 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1RFEbou023598; Mon, 27 Feb 2012 15:14:37 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202271514.q1RFEbou023598@svn.freebsd.org> From: Damjan Marion Date: Mon, 27 Feb 2012 15:14:37 +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: r232213 - 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2012 15:14:37 -0000 Author: dmarion Date: Mon Feb 27 15:14:36 2012 New Revision: 232213 URL: http://svn.freebsd.org/changeset/base/232213 Log: ti_i2c: allow different clock configuration on different SoCs Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/ti_i2c.c Modified: projects/armv6/sys/arm/ti/ti_i2c.c ============================================================================== --- projects/armv6/sys/arm/ti/ti_i2c.c Mon Feb 27 14:12:49 2012 (r232212) +++ projects/armv6/sys/arm/ti/ti_i2c.c Mon Feb 27 15:14:36 2012 (r232213) @@ -95,6 +95,34 @@ struct ti_i2c_softc uint16_t sc_rev; }; +struct ti_i2c_clock_config +{ + int speed; + int bitrate; + uint8_t psc; /* Fast/Standard mode prescale divider */ + uint8_t scll; /* Fast/Standard mode SCL low time */ + uint8_t sclh; /* Fast/Standard mode SCL high time */ + uint8_t hsscll; /* High Speed mode SCL low time */ + uint8_t hssclh; /* High Speed mode SCL high time */ +}; + +static struct ti_i2c_clock_config ti_i2c_clock_configs[] = { + +#if defined(SOC_OMAP4) + { IIC_SLOW, 100000, 23, 13, 15, 0, 0}, + { IIC_FAST, 400000, 9, 5, 7, 0, 0}, + { IIC_FASTEST, 3310000, 1, 113, 115, 7, 10}, +#elif defined(SOC_TI_AM335X) + { IIC_SLOW, 100000, 3, 53, 55, 0, 0}, + { IIC_FAST, 400000, 3, 8, 10, 0, 0}, + { IIC_FASTEST, 400000, 3, 8, 10, 0, 0}, /* This might be higher */ +#else +#error "TI I2C driver is not supported on this SoC" +#endif + { -1, 0 } +}; + + #define TI_I2C_REV1 0x003C /* OMAP3 */ #define TI_I2C_REV2 0x000A /* OMAP4 */ @@ -246,7 +274,20 @@ static int ti_i2c_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr) { struct ti_i2c_softc *sc = device_get_softc(dev); - uint16_t psc_reg, scll_reg, sclh_reg, con_reg; + struct ti_i2c_clock_config *clkcfg; + uint16_t con_reg; + + clkcfg = ti_i2c_clock_configs; + while (clkcfg->speed != -1) { + if (clkcfg->speed == speed) + break; + /* take slow if speed is unknown */ + if ((speed == IIC_UNKNOWN) && (clkcfg->speed == IIC_SLOW)) + break; + clkcfg++; + } + if (clkcfg->speed == -1) + return (EINVAL); TI_I2C_LOCK(sc); @@ -254,56 +295,28 @@ ti_i2c_reset(device_t dev, u_char speed, *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 = ti_i2c_read_reg(sc, I2C_REG_CON); ti_i2c_write_reg(sc, I2C_REG_CON, 0x0000); /* Program the prescaler */ - ti_i2c_write_reg(sc, I2C_REG_PSC, psc_reg); + ti_i2c_write_reg(sc, I2C_REG_PSC, clkcfg->psc); /* Set the bitrate */ - ti_i2c_write_reg(sc, I2C_REG_SCLL, scll_reg); - ti_i2c_write_reg(sc, I2C_REG_SCLH, sclh_reg); + ti_i2c_write_reg(sc, I2C_REG_SCLL, clkcfg->scll | (clkcfg->hsscll<<8)); + ti_i2c_write_reg(sc, I2C_REG_SCLH, clkcfg->sclh | (clkcfg->hssclh<<8)); /* Set the remote slave address */ ti_i2c_write_reg(sc, I2C_REG_SA, addr); + /* Check if we are dealing with high speed mode */ + if ((clkcfg->hsscll + clkcfg->hssclh) > 0) + con_reg = I2C_CON_OPMODE_HS; + else + con_reg = I2C_CON_OPMODE_STD; + /* Enable the I2C module again */ - con_reg = I2C_CON_I2C_EN; - con_reg |= (speed == IIC_FASTEST) ? I2C_CON_OPMODE_HS : I2C_CON_OPMODE_STD; - ti_i2c_write_reg(sc, I2C_REG_CON, con_reg); + ti_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | con_reg); TI_I2C_UNLOCK(sc); From owner-svn-src-projects@FreeBSD.ORG Mon Feb 27 15:42:48 2012 Return-Path: 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 704921065674; Mon, 27 Feb 2012 15:42:48 +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 54B068FC19; Mon, 27 Feb 2012 15:42:48 +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 q1RFgmiH024622; Mon, 27 Feb 2012 15:42:48 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1RFgmsq024615; Mon, 27 Feb 2012 15:42:48 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202271542.q1RFgmsq024615@svn.freebsd.org> From: Damjan Marion Date: Mon, 27 Feb 2012 15:42:48 +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: r232214 - in projects/armv6/sys: arm/conf arm/ti/am335x 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2012 15:42:48 -0000 Author: dmarion Date: Mon Feb 27 15:42:47 2012 New Revision: 232214 URL: http://svn.freebsd.org/changeset/base/232214 Log: Add support for AM335x power management IC. So far it only detects power source but later should be extended to provide some sysctls. Approved by: cognet (mentor) Added: projects/armv6/sys/arm/ti/am335x/am335x_pmic.c projects/armv6/sys/arm/ti/am335x/files.beaglebone Modified: projects/armv6/sys/arm/conf/BEAGLEBONE projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c projects/armv6/sys/arm/ti/am335x/std.beaglebone projects/armv6/sys/boot/fdt/dts/beaglebone.dts Modified: projects/armv6/sys/arm/conf/BEAGLEBONE ============================================================================== --- projects/armv6/sys/arm/conf/BEAGLEBONE Mon Feb 27 15:14:36 2012 (r232213) +++ projects/armv6/sys/arm/conf/BEAGLEBONE Mon Feb 27 15:42:47 2012 (r232214) @@ -79,7 +79,7 @@ device mmcsd # mmc/sd flash cards device iicbus device iic device ti_i2c - +device am335x_pmic # AM335x Power Management IC (TPC65217) device loop device ether Added: projects/armv6/sys/arm/ti/am335x/am335x_pmic.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/am335x_pmic.c Mon Feb 27 15:42:47 2012 (r232214) @@ -0,0 +1,162 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * 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 +__FBSDID("$FreeBSD$"); +/* +* TPS65217 PMIC companion chip for AM335x SoC sitting on I2C bus +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "iicbus_if.h" + +#define TPS65217A 0x7 +#define TPS65217B 0xF + +#define TPS65217_IIC_ADDR 0x24 + +/* TPS65217 Reisters */ +#define TPS65217_CHIPID_REG 0x00 +#define TPS65217_STATUS_REG 0x0A + +struct am335x_pmic_softc { + device_t sc_dev; + uint32_t sc_addr; + struct intr_config_hook enum_hook; +}; + +static int +am335x_pmic_read(device_t dev, uint8_t addr, uint8_t *data, uint8_t size) +{ + struct iic_msg msg[] = { + { TPS65217_IIC_ADDR, IIC_M_WR, 1, &addr }, + { TPS65217_IIC_ADDR, IIC_M_RD, size, data }, + }; + return (iicbus_transfer(dev, msg, 2)); +} + +static void +am335x_pmic_identify(driver_t *driver, device_t parent) +{ + BUS_ADD_CHILD(parent, 0, "am335x_pmic", 0); +} + +static int +am335x_pmic_probe(device_t dev) +{ + struct am335x_pmic_softc *sc; + int error; + const char *name, *compatible; + + name = ofw_bus_get_name(dev); + compatible = ofw_bus_get_compat(dev); + + sc = device_get_softc(dev); + sc->sc_dev = dev; + sc->sc_addr = iicbus_get_addr(dev); + + device_set_desc(dev, "TI TPS65217 Power Management IC"); + + return (BUS_PROBE_NOWILDCARD); +} + +static void +am335x_pmic_start(void *xdev) +{ + struct am335x_pmic_softc *sc; + device_t dev = (device_t)xdev; + uint8_t reg; + char name[16]; + char pwr[4][11] = {"Unknown", "USB", "AC", "USB and AC"}; + + sc = device_get_softc(dev); + + am335x_pmic_read(dev, TPS65217_CHIPID_REG, ®, 1); + switch (reg>>4) { + case TPS65217A: + sprintf(name, "TPS65217A ver 1.%u", reg & 0xF); + break; + case TPS65217B: + sprintf(name, "TPS65217B ver 1.%u", reg & 0xF); + break; + default: + sprintf(name, "Unknown PMIC"); + } + + am335x_pmic_read(dev, TPS65217_STATUS_REG, ®, 1); + device_printf(dev, "%s powered by %s\n", name, pwr[(reg>>2)&0x03]); + + config_intrhook_disestablish(&sc->enum_hook); +} + +static int +am335x_pmic_attach(device_t dev) +{ + struct am335x_pmic_softc *sc; + + sc = device_get_softc(dev); + + sc->enum_hook.ich_func = am335x_pmic_start; + sc->enum_hook.ich_arg = dev; + + if (config_intrhook_establish(&sc->enum_hook) != 0) + return (ENOMEM); + + return (0); +} + +static device_method_t am335x_pmic_methods[] = { + DEVMETHOD(device_identify, am335x_pmic_identify), + DEVMETHOD(device_probe, am335x_pmic_probe), + DEVMETHOD(device_attach, am335x_pmic_attach), + {0, 0}, +}; + +static driver_t am335x_pmic_driver = { + "am335x_pmic", + am335x_pmic_methods, + sizeof(struct am335x_pmic_softc), +}; + +static devclass_t am335x_pmic_devclass; + +DRIVER_MODULE(am335x_pmic, iicbus, am335x_pmic_driver, am335x_pmic_devclass, 0, 0); +MODULE_VERSION(am335x_pmic, 1); +MODULE_DEPEND(am335x_pmic, iicbus, 1, 1, 1); Modified: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c ============================================================================== --- projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c Mon Feb 27 15:14:36 2012 (r232213) +++ projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c Mon Feb 27 15:42:47 2012 (r232214) @@ -62,17 +62,19 @@ __FBSDID("$FreeBSD$"); .muxmodes[7] = m7, \ } +#define SLEWCTRL (0x01 << 6) /* faster(0) or slower(1) slew rate. */ #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 }, + {"output", 0 }, + {"output_pullup", PULLTYPESEL }, + {"input", RXACTIVE }, + {"input_pulldown", RXACTIVE | PULLUDEN }, + {"input_pullup", RXACTIVE | PULLUDEN | PULLTYPESEL }, + {"input_pullup_inact", RXACTIVE | PULLTYPESEL }, + {"input_pullup_inact_slow", RXACTIVE | PULLTYPESEL | SLEWCTRL }, { .state = NULL } }; @@ -166,8 +168,10 @@ const struct ti_scm_padconf ti_padconf_d #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), +#endif + _PIN(0x958, "spi0_d1", 4, 7, "spi0_d1", "mmc1_sdwp", "I2C1_SDA", "ehrpwm0_tripzone_input", "pr1_uart0_rxd", "pr1_edio_data_in0", "pr1_edio_data_out0", "gpio0_4"), + _PIN(0x95c, "spi0_cs0", 5, 7, "spi0_cs0", "mmc2_sdwp", "I2C1_SCL", "ehrpwm0_synci", "pr1_uart0_txd", "pr1_edio_data_in1", "pr1_edio_data_out1", "gpio0_5"), +#if 0 _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), @@ -178,8 +182,10 @@ const struct ti_scm_padconf ti_padconf_d _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), +#endif + _PIN(0x988, "I2C0_SDA", 101, 7, "I2C0_SDA", "timer4", "uart2_ctsn", "eCAP2_in_PWM2_out", NULL, NULL, NULL, "gpio3_5"), + _PIN(0x98c, "I2C0_SCL", 102, 7, "I2C0_SCL", "timer7", "uart2_rtsn", "eCAP1_in_PWM1_out", NULL, NULL, NULL, "gpio3_6"), +#if 0 _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), Added: projects/armv6/sys/arm/ti/am335x/files.beaglebone ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/files.beaglebone Mon Feb 27 15:42:47 2012 (r232214) @@ -0,0 +1,3 @@ +#$FreeBSD$ + +arm/ti/am335x/am335x_pmic.c optional am335x_pmic Modified: projects/armv6/sys/arm/ti/am335x/std.beaglebone ============================================================================== --- projects/armv6/sys/arm/ti/am335x/std.beaglebone Mon Feb 27 15:14:36 2012 (r232213) +++ projects/armv6/sys/arm/ti/am335x/std.beaglebone Mon Feb 27 15:42:47 2012 (r232214) @@ -1,3 +1,4 @@ # $FreeBSD$ -include "../ti/am335x/std.am335x" +files "../ti/am335x/files.beaglebone" +include "../ti/am335x/std.am335x" Modified: projects/armv6/sys/boot/fdt/dts/beaglebone.dts ============================================================================== --- projects/armv6/sys/boot/fdt/dts/beaglebone.dts Mon Feb 27 15:14:36 2012 (r232213) +++ projects/armv6/sys/boot/fdt/dts/beaglebone.dts Mon Feb 27 15:42:47 2012 (r232214) @@ -64,6 +64,9 @@ reg = < 0x44e10000 0x2000 >; /* Set of triplets < padname, muxname, padstate> */ scm-pad-config = + /* I2C0 */ + "I2C0_SDA", "I2C0_SDA","input_pullup_inact_slow", + "I2C0_SCL", "I2C0_SCL","input_pullup_inact_slow", /* Ethernet */ "MII1_RX_ER", "gmii1_rxerr", "input", "MII1_TX_EN", "gmii1_txen", "output", @@ -133,27 +136,17 @@ }; i2c0: i2c@44e0b000 { + #address-cells = <1>; + #size-cells = <0>; compatible = "ti,i2c"; reg =< 0x44e0b000 0x1000 >; interrupts = <70>; interrupt-parent = <&AINTC>; i2c-device-id = <0>; - }; - - i2c1: i2c@4802a000 { - compatible = "ti,i2c"; - reg =< 0x4802a000 0x1000 >; - interrupts = <71>; - interrupt-parent = <&AINTC>; - i2c-device-id = <1>; - }; - - i2c2: i2c@4819c000 { - compatible = "ti,i2c"; - reg =< 0x4819c000 0x1000 >; - interrupts = <30>; - interrupt-parent = <&AINTC>; - i2c-device-id = <2>; + pmic@24 { + compatible = "ti,am335x-pmic"; + reg = <0x24>; + }; }; }; From owner-svn-src-projects@FreeBSD.ORG Mon Feb 27 15:47:41 2012 Return-Path: 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 7B8F81065676; Mon, 27 Feb 2012 15:47:41 +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 51CE18FC08; Mon, 27 Feb 2012 15:47:41 +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 q1RFlfTm024846; Mon, 27 Feb 2012 15:47:41 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1RFlfIn024844; Mon, 27 Feb 2012 15:47:41 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202271547.q1RFlfIn024844@svn.freebsd.org> From: Damjan Marion Date: Mon, 27 Feb 2012 15:47:41 +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: r232215 - projects/armv6/sys/arm/ti/am335x X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2012 15:47:41 -0000 Author: dmarion Date: Mon Feb 27 15:47:41 2012 New Revision: 232215 URL: http://svn.freebsd.org/changeset/base/232215 Log: Few more register macros inside am335x_prcm.c Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/am335x/am335x_prcm.c Modified: projects/armv6/sys/arm/ti/am335x/am335x_prcm.c ============================================================================== --- projects/armv6/sys/arm/ti/am335x/am335x_prcm.c Mon Feb 27 15:42:47 2012 (r232214) +++ projects/armv6/sys/arm/ti/am335x/am335x_prcm.c Mon Feb 27 15:47:41 2012 (r232215) @@ -56,6 +56,8 @@ __FBSDID("$FreeBSD$"); #define CM_PER 0 #define CM_PER_L4LS_CLKSTCTRL (CM_PER + 0x000) +#define CM_PER_L3S_CLKSTCTRL (CM_PER + 0x004) +#define CM_PER_L3_CLKSTCTRL (CM_PER + 0x00C) #define CM_PER_CPGMAC0_CLKCTRL (CM_PER + 0x014) #define CM_PER_I2C2_CLKCTRL (CM_PER + 0x044) #define CM_PER_I2C1_CLKCTRL (CM_PER + 0x048) @@ -63,12 +65,19 @@ __FBSDID("$FreeBSD$"); #define CM_PER_TIMER2_CLKCTRL (CM_PER + 0x080) #define CM_PER_TIMER3_CLKCTRL (CM_PER + 0x084) #define CM_PER_TIMER4_CLKCTRL (CM_PER + 0x088) +#define CM_PER_L3_INSTR_CLKCTRL (CM_PER + 0x0DC) +#define CM_PER_L3_CLKCTRL (CM_PER + 0x0E0) #define CM_PER_TIMER5_CLKCTRL (CM_PER + 0x0EC) #define CM_PER_TIMER6_CLKCTRL (CM_PER + 0x0F0) +#define CM_PER_OCPWP_L3_CLKSTCTRL (CM_PER + 0x12C) +#define CM_PER_OCPWP_CLKCTRL (CM_PER + 0x130) #define CM_PER_CPSW_CLKSTCTRL (CM_PER + 0x144) #define CM_WKUP 0x400 -#define CM_CLKSEL_DPLL_MPU (CM_WKUP + 0x02C) +#define CM_WKUP_CLKSTCTRL (CM_WKUP + 0x000) +#define CM_WKUP_CONTROL_CLKCTRL (CM_WKUP + 0x004) +#define CM_WKUP_CM_L3_AON_CLKSTCTRL (CM_WKUP + 0x01C) +#define CM_WKUP_CM_CLKSEL_DPLL_MPU (CM_WKUP + 0x02C) #define CM_WKUP_I2C0_CLKCTRL (CM_WKUP + 0x0B8) #define CM_DPLL 0x500 @@ -386,7 +395,7 @@ am335x_clk_get_arm_fclk_freq(struct ti_c #define DPLL_DIV(reg) ((reg & 0x7f)+1) #define DPLL_MULT(reg) ((reg>>8) & 0x7FF) - reg = prcm_read_4(CM_CLKSEL_DPLL_MPU); + reg = prcm_read_4(CM_WKUP_CM_CLKSEL_DPLL_MPU); /*Check if we are running in bypass */ if (DPLL_BYP_CLKSEL(reg)) From owner-svn-src-projects@FreeBSD.ORG Mon Feb 27 22:28:39 2012 Return-Path: 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 26FA4106564A; Mon, 27 Feb 2012 22:28:39 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1247C8FC0C; Mon, 27 Feb 2012 22:28: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 q1RMScYJ039652; Mon, 27 Feb 2012 22:28:38 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1RMSc85039650; Mon, 27 Feb 2012 22:28:38 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201202272228.q1RMSc85039650@svn.freebsd.org> From: Jamie Gritton Date: Mon, 27 Feb 2012 22:28:38 +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: r232241 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2012 22:28:39 -0000 Author: jamie Date: Mon Feb 27 22:28:38 2012 New Revision: 232241 URL: http://svn.freebsd.org/changeset/base/232241 Log: From r224286: Document the potential for jail escape. From r224615: Always disable mount and unmount for jails with enforce_statfs==2. From r231267: A new jail(8) option "devfs_ruleset" defines the ruleset enforcement for mounting devfs inside jails. A value of -1 disables mounting devfs in jails, a value of zero means no restrictions. Nested jails can only have mounting devfs disabled or inherit parent's enforcement as jails are not allowed to view or manipulate devfs(8) rules. From r232059: To improve control over the use of mount(8) inside a jail(8), introduce a new jail parameter node with the following parameters: allow.mount.devfs: allow mounting the devfs filesystem inside a jail allow.mount.nullfs: allow mounting the nullfs filesystem inside a jail From r232186: allow.mount.zfs: allow mounting the zfs filesystem inside a jail Modified: projects/jailconf/usr.sbin/jail/jail.8 Modified: projects/jailconf/usr.sbin/jail/jail.8 ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.8 Mon Feb 27 21:10:10 2012 (r232240) +++ projects/jailconf/usr.sbin/jail/jail.8 Mon Feb 27 22:28:38 2012 (r232241) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 20, 2010 +.Dd February 26, 2012 .Dt JAIL 8 .Os .Sh NAME @@ -396,6 +396,18 @@ A jail never has a lower securelevel tha setting this parameter it may have a higher one. If the system securelevel is changed, any jail securelevels will be at least as secure. +.It Va devfs_ruleset +The number of the devfs ruleset that is enforced for mounting devfs in +this jail. A value of zero (default) means no ruleset is enforced. Descendant +jails inherit the parent jail's devfs ruleset enforcement. Mounting devfs +inside a jail is possible only if the +.Va allow.mount +and +.Va allow.mount.devfs +permissions are effective and +.Va enforce_statfs +is set to a value lower than 2. +Devfs rules and rulesets cannot be viewed or modified from inside a jail. .It Va children.max The number of child jails allowed to be created by this jail (or by other jails under this jail). @@ -491,6 +503,39 @@ The .Xr lsvfs 1 command can be used to find file system types available for mount from within a jail. +This permission is effective only if +.Va enforce_statfs +is set to a value lower than 2. +.It Va allow.mount.devfs +privileged users inside the jail will be able to mount and unmount the +devfs file system. +This permission is effective only together with +.Va allow.mount +and if +.Va enforce_statfs +is set to a value lower than 2. Please consider restricting the devfs ruleset +with the +.Va devfs_ruleset +option. +.It Va allow.mount.nullfs +privileged users inside the jail will be able to mount and unmount the +nullfs file system. +This permission is effective only together with +.Va allow.mount +and if +.Va enforce_statfs +is set to a value lower than 2. +.It Va allow.mount.zfs +privileged users inside the jail will be able to mount and unmount the +ZFS file system. +This permission is effective only together with +.Va allow.mount +and if +.Va enforce_statfs +is set to a value lower than 2. See +.Xr zfs 8 +for information on how to configure the ZFS filesystem to operate from +within a jail. .It Va allow.quotas The prison root may administer quotas on the jail's filesystem(s). This includes filesystems that the jail may share with other jails or @@ -997,9 +1042,11 @@ It is not possible to or .Xr umount 8 any file system inside a jail unless the file system is marked -jail-friendly and the jail's +jail-friendly, the jail's .Va allow.mount -parameter is set. +parameter is set and the jail's +.Va enforce_statfs +parameter is lower than 2. .Pp Multiple jails sharing the same file system can influence each other. For example a user in one jail can fill the file system also @@ -1154,3 +1201,10 @@ Currently, the simplest answer is to min offered on the host, possibly limiting it to services offered from .Xr inetd 8 which is easily configurable. +.Sh NOTES +Great care should be taken when managing directories visible within the jail. +For example, if a jailed process has its current working directory set to a +directory that is moved out of the jail's chroot, then the process may gain +access to the file space outside of the jail. +It is recommended that directories always be copied, rather than moved, out +of a jail. From owner-svn-src-projects@FreeBSD.ORG Mon Feb 27 22:37:35 2012 Return-Path: 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 C4CE31065672; Mon, 27 Feb 2012 22:37:35 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A4E098FC08; Mon, 27 Feb 2012 22:37: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 q1RMbZpt039986; Mon, 27 Feb 2012 22:37:35 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1RMbZPv039981; Mon, 27 Feb 2012 22:37:35 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201202272237.q1RMbZPv039981@svn.freebsd.org> From: Jamie Gritton Date: Mon, 27 Feb 2012 22:37: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: r232242 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2012 22:37:35 -0000 Author: jamie Date: Mon Feb 27 22:37:35 2012 New Revision: 232242 URL: http://svn.freebsd.org/changeset/base/232242 Log: Use the defvs_ruleset paramater when mounting a jail's /dev, instead of a mount.devfs.ruleset pseudo-parameter. Modified: projects/jailconf/usr.sbin/jail/command.c projects/jailconf/usr.sbin/jail/config.c projects/jailconf/usr.sbin/jail/jail.8 projects/jailconf/usr.sbin/jail/jailp.h Modified: projects/jailconf/usr.sbin/jail/command.c ============================================================================== --- projects/jailconf/usr.sbin/jail/command.c Mon Feb 27 22:28:38 2012 (r232241) +++ projects/jailconf/usr.sbin/jail/command.c Mon Feb 27 22:37:35 2012 (r232242) @@ -417,6 +417,7 @@ run_command(struct cfjail *j) break; case IP_MOUNT_DEVFS: + argv = alloca(7 * sizeof(char *)); path = string_param(j->intparams[KP_PATH]); if (path == NULL) { jail_warnx(j, "mount.devfs: no path"); @@ -428,22 +429,21 @@ run_command(struct cfjail *j) down ? "devfs" : NULL) < 0) return -1; if (down) { - argv = alloca(3 * sizeof(char *)); *(const char **)&argv[0] = "/sbin/umount"; argv[1] = devpath; argv[2] = NULL; } else { - argv = alloca(4 * sizeof(char *)); - *(const char **)&argv[0] = _PATH_BSHELL; - *(const char **)&argv[1] = "-c"; - ruleset = string_param(j->intparams - [IP_MOUNT_DEVFS_RULESET]); - argv[2] = alloca(strlen(path) + - (ruleset ? strlen(ruleset) + 1 : 0) + 56); - sprintf(argv[2], ". /etc/rc.subr; load_rc_config .; " - "devfs_mount_jail %s/dev%s%s", path, - ruleset ? " " : "", ruleset ? ruleset : ""); - argv[3] = NULL; + *(const char **)&argv[0] = _PATH_MOUNT; + *(const char **)&argv[1] = "-t"; + *(const char **)&argv[2] = "devfs"; + ruleset = string_param(j->intparams[KP_DEVFS_RULESET]); + if (!ruleset) + ruleset = "4"; /* devfsrules_jail */ + argv[3] = alloca(11 + strlen(ruleset)); + sprintf(argv[3], "-oruleset=%s", ruleset); + *(const char **)&argv[4] = "."; + argv[5] = devpath; + argv[6] = NULL; } break; Modified: projects/jailconf/usr.sbin/jail/config.c ============================================================================== --- projects/jailconf/usr.sbin/jail/config.c Mon Feb 27 22:28:38 2012 (r232241) +++ projects/jailconf/usr.sbin/jail/config.c Mon Feb 27 22:37:35 2012 (r232242) @@ -81,7 +81,6 @@ static const struct ipspec intparams[] = #endif [IP_MOUNT] = {"mount", PF_INTERNAL}, [IP_MOUNT_DEVFS] = {"mount.devfs", PF_INTERNAL | PF_BOOL}, - [IP_MOUNT_DEVFS_RULESET]= {"mount.devfs.ruleset", PF_INTERNAL}, [IP_MOUNT_FSTAB] = {"mount.fstab", PF_INTERNAL}, [IP_STOP_TIMEOUT] = {"stop.timeout", PF_INTERNAL | PF_INT}, [IP_VNET_INTERFACE] = {"vnet.interface", PF_INTERNAL}, @@ -99,6 +98,7 @@ static const struct ipspec intparams[] = [KP_ALLOW_SET_HOSTNAME]= {"allow.set_hostname", 0}, [KP_ALLOW_SOCKET_AF] = {"allow.socket_af", 0}, [KP_ALLOW_SYSVIPC] = {"allow.sysvipc", 0}, + [KP_DEVFS_RULESET] = {"devfs_ruleset", 0}, [KP_ENFORCE_STATFS] = {"enforce_statfs", 0}, [KP_HOST_HOSTNAME] = {"host.hostname", 0}, #ifdef INET Modified: projects/jailconf/usr.sbin/jail/jail.8 ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.8 Mon Feb 27 22:28:38 2012 (r232241) +++ projects/jailconf/usr.sbin/jail/jail.8 Mon Feb 27 22:37:35 2012 (r232242) @@ -693,15 +693,10 @@ format file containing filesystems to mo .It Va mount.devfs Mount a .Xr devfs - filesystem on the chrooted /dev directory, and run -.Xr devfs 8 +filesystem on the chrooted /dev directory, and apply the ruleset in the +.Va devfs_ruleset +parameter (or a default of ruleset 4: devfsrules_jail) to restrict the devices visible inside the prison. -.It Va mount.devfs.ruleset -The ruleset from -.Xr devfs.rules 5 -to use when mounting a devfs filesystem. -The default ruleset is -.Dq devfsrules_jail . .It Va allow.dying Allow making changes to a .Va dying Modified: projects/jailconf/usr.sbin/jail/jailp.h ============================================================================== --- projects/jailconf/usr.sbin/jail/jailp.h Mon Feb 27 22:28:38 2012 (r232241) +++ projects/jailconf/usr.sbin/jail/jailp.h Mon Feb 27 22:37:35 2012 (r232242) @@ -93,7 +93,6 @@ enum intparam { #endif IP_MOUNT, /* Mount points in fstab(5) form */ IP_MOUNT_DEVFS, /* Mount /dev under prison root */ - IP_MOUNT_DEVFS_RULESET, /* Ruleset for the devfs mount */ IP_MOUNT_FSTAB, /* A standard fstab(5) file */ IP_STOP_TIMEOUT, /* Time to wait after sending SIGTERM */ IP_VNET_INTERFACE, /* Assign interface(s) to vnet jail */ @@ -111,6 +110,7 @@ enum intparam { KP_ALLOW_SET_HOSTNAME, KP_ALLOW_SOCKET_AF, KP_ALLOW_SYSVIPC, + KP_DEVFS_RULESET, KP_ENFORCE_STATFS, KP_HOST_HOSTNAME, #ifdef INET From owner-svn-src-projects@FreeBSD.ORG Tue Feb 28 08:36:39 2012 Return-Path: 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 0C5B4106564A; Tue, 28 Feb 2012 08:36:39 +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 EBDBB8FC08; Tue, 28 Feb 2012 08:36:38 +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 q1S8acTq060113; Tue, 28 Feb 2012 08:36:38 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1S8acnY060112; Tue, 28 Feb 2012 08:36:38 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201202280836.q1S8acnY060112@svn.freebsd.org> From: Peter Holm Date: Tue, 28 Feb 2012 08:36:38 +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: r232248 - 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Feb 2012 08:36:39 -0000 Author: pho Date: Tue Feb 28 08:36:38 2012 New Revision: 232248 URL: http://svn.freebsd.org/changeset/base/232248 Log: New nullfs scenario added. PR: kern/164261 Added: projects/stress2/misc/nullfs8.sh (contents, props changed) Added: projects/stress2/misc/nullfs8.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/stress2/misc/nullfs8.sh Tue Feb 28 08:36:38 2012 (r232248) @@ -0,0 +1,66 @@ +#!/bin/sh + +# +# Copyright (c) 2012 Peter Holm +# 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$ +# + +# Based on scenario by rea@, kern/164261. Different panic. +# insmntque: mp-safe fs and non-locked vp: 0xcb413984 is not exclusive +# locked but should be + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +opt="-o nfsv3,rw,udp,rdirplus,noauto" + +mount | grep -wq $mntpoint && umount $mntpoint +mount -t nullfs /tmp $mntpoint + +mntpoint2=${mntpoint}2 +mntpoint3=${mntpoint}3 +for m in $mntpoint2 $mntpoint3; do + [ -d $m ] || mkdir $m + mount | grep -wq $m && umount $m + mount -t nfs $opt 127.0.0.1:$mntpoint $m +done + +for i in `jot 50` ; do + su $testuser -c "cp -r /usr/include $mntpoint2/nullfs8-2 2>/dev/null" & + su $testuser -c "cp -r /usr/include $mntpoint3/nullfs8-2 2>/dev/null" & + wait;wait + su $testuser -c "find $mntpoint2 > /dev/null 2>&1" & + su $testuser -c "find $mntpoint3 > /dev/null 2>&1" & + wait;wait + rm -rf /tmp/nullfs8-2 +done + +for m in $mntpoint3 $mntpoint2 $mntpoint; do + while mount | grep -wq $m; do + umount $m || sleep 1 + done +done From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 01:04:39 2012 Return-Path: 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 C8ED41065678; Wed, 29 Feb 2012 01:04:39 +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 AF8B78FC16; Wed, 29 Feb 2012 01:04: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 q1T14dS9000304; Wed, 29 Feb 2012 01:04:39 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T14cfo000243; Wed, 29 Feb 2012 01:04:38 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202290104.q1T14cfo000243@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 29 Feb 2012 01:04:38 +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: r232280 - in projects/multi-fibv6/9: . bin/sh cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libzfs/common cddl/contrib/opensolaris/lib/libzpool/common/sys contrib/llvm/t... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 01:04:39 -0000 Author: bz Date: Wed Feb 29 01:04:37 2012 New Revision: 232280 URL: http://svn.freebsd.org/changeset/base/232280 Log: IF stable/9 @r232279 Sponsored by: Cisco Systems, Inc. Added: projects/multi-fibv6/9/contrib/llvm/tools/bugpoint/ - copied from r232279, stable/9/contrib/llvm/tools/bugpoint/ projects/multi-fibv6/9/contrib/llvm/tools/llc/ - copied from r232279, stable/9/contrib/llvm/tools/llc/ projects/multi-fibv6/9/contrib/llvm/tools/lli/ - copied from r232279, stable/9/contrib/llvm/tools/lli/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-ar/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-ar/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-as/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-as/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-bcanalyzer/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-bcanalyzer/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-diff/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-diff/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-dis/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-dis/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-extract/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-extract/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-ld/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-ld/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-link/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-link/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-mc/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-mc/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-nm/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-nm/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-objdump/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-objdump/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-prof/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-prof/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-ranlib/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-ranlib/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-rtdyld/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-rtdyld/ projects/multi-fibv6/9/contrib/llvm/tools/llvm-stub/ - copied from r232279, stable/9/contrib/llvm/tools/llvm-stub/ projects/multi-fibv6/9/contrib/llvm/tools/macho-dump/ - copied from r232279, stable/9/contrib/llvm/tools/macho-dump/ projects/multi-fibv6/9/contrib/llvm/tools/opt/ - copied from r232279, stable/9/contrib/llvm/tools/opt/ projects/multi-fibv6/9/lib/clang/libllvmarchive/ - copied from r232279, stable/9/lib/clang/libllvmarchive/ projects/multi-fibv6/9/lib/clang/libllvmdebuginfo/ - copied from r232279, stable/9/lib/clang/libllvmdebuginfo/ projects/multi-fibv6/9/lib/clang/libllvmexecutionengine/ - copied from r232279, stable/9/lib/clang/libllvmexecutionengine/ projects/multi-fibv6/9/lib/clang/libllvminterpreter/ - copied from r232279, stable/9/lib/clang/libllvminterpreter/ projects/multi-fibv6/9/lib/clang/libllvmjit/ - copied from r232279, stable/9/lib/clang/libllvmjit/ projects/multi-fibv6/9/lib/clang/libllvmlinker/ - copied from r232279, stable/9/lib/clang/libllvmlinker/ projects/multi-fibv6/9/lib/clang/libllvmmcdisassembler/ - copied from r232279, stable/9/lib/clang/libllvmmcdisassembler/ projects/multi-fibv6/9/lib/clang/libllvmmcjit/ - copied from r232279, stable/9/lib/clang/libllvmmcjit/ projects/multi-fibv6/9/lib/clang/libllvmobject/ - copied from r232279, stable/9/lib/clang/libllvmobject/ projects/multi-fibv6/9/lib/clang/libllvmruntimedyld/ - copied from r232279, stable/9/lib/clang/libllvmruntimedyld/ projects/multi-fibv6/9/lib/libc/amd64/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/amd64/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/arm/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/arm/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/i386/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/i386/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/ia64/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/ia64/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/mips/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/mips/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/powerpc/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/powerpc/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/powerpc64/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/powerpc64/gen/getcontextx.c projects/multi-fibv6/9/lib/libc/sparc64/gen/getcontextx.c - copied unchanged from r232279, stable/9/lib/libc/sparc64/gen/getcontextx.c projects/multi-fibv6/9/share/man/man4/isci.4 - copied unchanged from r232279, stable/9/share/man/man4/isci.4 projects/multi-fibv6/9/share/man/man4/netmap.4 - copied unchanged from r232279, stable/9/share/man/man4/netmap.4 projects/multi-fibv6/9/share/man/man4/oce.4 - copied unchanged from r232279, stable/9/share/man/man4/oce.4 projects/multi-fibv6/9/share/man/man4/xnb.4 - copied unchanged from r232279, stable/9/share/man/man4/xnb.4 projects/multi-fibv6/9/sys/amd64/amd64/ptrace_machdep.c - copied unchanged from r232279, stable/9/sys/amd64/amd64/ptrace_machdep.c projects/multi-fibv6/9/sys/cam/ctl/ - copied from r232279, stable/9/sys/cam/ctl/ projects/multi-fibv6/9/sys/conf/WITHOUT_SOURCELESS - copied unchanged from r232279, stable/9/sys/conf/WITHOUT_SOURCELESS projects/multi-fibv6/9/sys/conf/WITHOUT_SOURCELESS_HOST - copied unchanged from r232279, stable/9/sys/conf/WITHOUT_SOURCELESS_HOST projects/multi-fibv6/9/sys/conf/WITHOUT_SOURCELESS_UCODE - copied unchanged from r232279, stable/9/sys/conf/WITHOUT_SOURCELESS_UCODE projects/multi-fibv6/9/sys/dev/isci/ - copied from r232279, stable/9/sys/dev/isci/ projects/multi-fibv6/9/sys/dev/netmap/ - copied from r232279, stable/9/sys/dev/netmap/ projects/multi-fibv6/9/sys/dev/oce/ - copied from r232279, stable/9/sys/dev/oce/ projects/multi-fibv6/9/sys/dev/xen/netback/netback_unit_tests.c - copied unchanged from r232279, stable/9/sys/dev/xen/netback/netback_unit_tests.c - copied unchanged from r232279, stable/9/sys/i386/conf/XENHVM projects/multi-fibv6/9/sys/modules/isci/ - copied from r232279, stable/9/sys/modules/isci/ projects/multi-fibv6/9/sys/modules/oce/ - copied from r232279, stable/9/sys/modules/oce/ projects/multi-fibv6/9/sys/net/netmap.h - copied unchanged from r232279, stable/9/sys/net/netmap.h projects/multi-fibv6/9/sys/net/netmap_user.h - copied unchanged from r232279, stable/9/sys/net/netmap_user.h projects/multi-fibv6/9/tools/build/options/WITHOUT_SOURCELESS - copied unchanged from r232279, stable/9/tools/build/options/WITHOUT_SOURCELESS projects/multi-fibv6/9/tools/build/options/WITHOUT_SOURCELESS_HOST - copied unchanged from r232279, stable/9/tools/build/options/WITHOUT_SOURCELESS_HOST projects/multi-fibv6/9/tools/build/options/WITHOUT_SOURCELESS_UCODE - copied unchanged from r232279, stable/9/tools/build/options/WITHOUT_SOURCELESS_UCODE projects/multi-fibv6/9/tools/build/options/WITH_CLANG_EXTRAS - copied unchanged from r232279, stable/9/tools/build/options/WITH_CLANG_EXTRAS projects/multi-fibv6/9/tools/test/ptrace/ - copied from r232279, stable/9/tools/test/ptrace/ projects/multi-fibv6/9/tools/tools/netmap/ - copied from r232279, stable/9/tools/tools/netmap/ projects/multi-fibv6/9/usr.bin/clang/bugpoint/ - copied from r232279, stable/9/usr.bin/clang/bugpoint/ projects/multi-fibv6/9/usr.bin/clang/llc/ - copied from r232279, stable/9/usr.bin/clang/llc/ projects/multi-fibv6/9/usr.bin/clang/lli/ - copied from r232279, stable/9/usr.bin/clang/lli/ projects/multi-fibv6/9/usr.bin/clang/llvm-ar/ - copied from r232279, stable/9/usr.bin/clang/llvm-ar/ projects/multi-fibv6/9/usr.bin/clang/llvm-as/ - copied from r232279, stable/9/usr.bin/clang/llvm-as/ projects/multi-fibv6/9/usr.bin/clang/llvm-bcanalyzer/ - copied from r232279, stable/9/usr.bin/clang/llvm-bcanalyzer/ projects/multi-fibv6/9/usr.bin/clang/llvm-diff/ - copied from r232279, stable/9/usr.bin/clang/llvm-diff/ projects/multi-fibv6/9/usr.bin/clang/llvm-dis/ - copied from r232279, stable/9/usr.bin/clang/llvm-dis/ projects/multi-fibv6/9/usr.bin/clang/llvm-extract/ - copied from r232279, stable/9/usr.bin/clang/llvm-extract/ projects/multi-fibv6/9/usr.bin/clang/llvm-ld/ - copied from r232279, stable/9/usr.bin/clang/llvm-ld/ projects/multi-fibv6/9/usr.bin/clang/llvm-link/ - copied from r232279, stable/9/usr.bin/clang/llvm-link/ projects/multi-fibv6/9/usr.bin/clang/llvm-mc/ - copied from r232279, stable/9/usr.bin/clang/llvm-mc/ projects/multi-fibv6/9/usr.bin/clang/llvm-nm/ - copied from r232279, stable/9/usr.bin/clang/llvm-nm/ projects/multi-fibv6/9/usr.bin/clang/llvm-objdump/ - copied from r232279, stable/9/usr.bin/clang/llvm-objdump/ projects/multi-fibv6/9/usr.bin/clang/llvm-prof/ - copied from r232279, stable/9/usr.bin/clang/llvm-prof/ projects/multi-fibv6/9/usr.bin/clang/llvm-ranlib/ - copied from r232279, stable/9/usr.bin/clang/llvm-ranlib/ projects/multi-fibv6/9/usr.bin/clang/llvm-rtdyld/ - copied from r232279, stable/9/usr.bin/clang/llvm-rtdyld/ projects/multi-fibv6/9/usr.bin/clang/llvm-stub/ - copied from r232279, stable/9/usr.bin/clang/llvm-stub/ projects/multi-fibv6/9/usr.bin/clang/macho-dump/ - copied from r232279, stable/9/usr.bin/clang/macho-dump/ projects/multi-fibv6/9/usr.bin/clang/opt/ - copied from r232279, stable/9/usr.bin/clang/opt/ - copied from r232279, stable/9/usr.bin/ctlstat/ projects/multi-fibv6/9/usr.sbin/ctladm/ - copied from r232279, stable/9/usr.sbin/ctladm/ Directory Properties: projects/multi-fibv6/9/sys/i386/conf/XENHVM (props changed) projects/multi-fibv6/9/usr.bin/ctlstat/ (props changed) Modified: projects/multi-fibv6/9/MAINTAINERS (contents, props changed) projects/multi-fibv6/9/Makefile (contents, props changed) projects/multi-fibv6/9/bin/sh/exec.c projects/multi-fibv6/9/bin/sh/exec.h projects/multi-fibv6/9/bin/sh/expand.c projects/multi-fibv6/9/bin/sh/expand.h projects/multi-fibv6/9/bin/sh/histedit.c projects/multi-fibv6/9/bin/sh/input.c projects/multi-fibv6/9/bin/sh/input.h projects/multi-fibv6/9/bin/sh/main.c projects/multi-fibv6/9/bin/sh/main.h projects/multi-fibv6/9/bin/sh/myhistedit.h projects/multi-fibv6/9/bin/sh/mystring.c projects/multi-fibv6/9/bin/sh/mystring.h projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.h projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/multi-fibv6/9/etc/defaults/periodic.conf projects/multi-fibv6/9/etc/defaults/rc.conf projects/multi-fibv6/9/etc/periodic/daily/404.status-zfs projects/multi-fibv6/9/etc/rc.d/SERVERS projects/multi-fibv6/9/etc/rc.d/accounting projects/multi-fibv6/9/etc/rc.d/addswap projects/multi-fibv6/9/etc/rc.d/amd projects/multi-fibv6/9/etc/rc.d/apm projects/multi-fibv6/9/etc/rc.d/apmd projects/multi-fibv6/9/etc/rc.d/bootparams projects/multi-fibv6/9/etc/rc.d/bsnmpd projects/multi-fibv6/9/etc/rc.d/bthidd projects/multi-fibv6/9/etc/rc.d/cleanvar projects/multi-fibv6/9/etc/rc.d/cleartmp projects/multi-fibv6/9/etc/rc.d/cron projects/multi-fibv6/9/etc/rc.d/ddb projects/multi-fibv6/9/etc/rc.d/devd projects/multi-fibv6/9/etc/rc.d/devfs projects/multi-fibv6/9/etc/rc.d/dhclient projects/multi-fibv6/9/etc/rc.d/dmesg projects/multi-fibv6/9/etc/rc.d/ftp-proxy projects/multi-fibv6/9/etc/rc.d/ftpd projects/multi-fibv6/9/etc/rc.d/gptboot projects/multi-fibv6/9/etc/rc.d/hastd projects/multi-fibv6/9/etc/rc.d/hcsecd projects/multi-fibv6/9/etc/rc.d/hostapd projects/multi-fibv6/9/etc/rc.d/inetd projects/multi-fibv6/9/etc/rc.d/ip6addrctl projects/multi-fibv6/9/etc/rc.d/ipfilter projects/multi-fibv6/9/etc/rc.d/ipfs projects/multi-fibv6/9/etc/rc.d/ipmon projects/multi-fibv6/9/etc/rc.d/ipnat projects/multi-fibv6/9/etc/rc.d/ipsec projects/multi-fibv6/9/etc/rc.d/ipxrouted projects/multi-fibv6/9/etc/rc.d/jail projects/multi-fibv6/9/etc/rc.d/keyserv projects/multi-fibv6/9/etc/rc.d/lockd projects/multi-fibv6/9/etc/rc.d/lpd projects/multi-fibv6/9/etc/rc.d/mountd projects/multi-fibv6/9/etc/rc.d/moused projects/multi-fibv6/9/etc/rc.d/mroute6d projects/multi-fibv6/9/etc/rc.d/mrouted projects/multi-fibv6/9/etc/rc.d/natd projects/multi-fibv6/9/etc/rc.d/netwait projects/multi-fibv6/9/etc/rc.d/newsyslog projects/multi-fibv6/9/etc/rc.d/nfscbd projects/multi-fibv6/9/etc/rc.d/nfsd projects/multi-fibv6/9/etc/rc.d/nfsuserd projects/multi-fibv6/9/etc/rc.d/nscd projects/multi-fibv6/9/etc/rc.d/ntpd projects/multi-fibv6/9/etc/rc.d/ntpdate projects/multi-fibv6/9/etc/rc.d/pf projects/multi-fibv6/9/etc/rc.d/pflog projects/multi-fibv6/9/etc/rc.d/pfsync projects/multi-fibv6/9/etc/rc.d/powerd projects/multi-fibv6/9/etc/rc.d/ppp projects/multi-fibv6/9/etc/rc.d/pppoed projects/multi-fibv6/9/etc/rc.d/quota projects/multi-fibv6/9/etc/rc.d/rarpd projects/multi-fibv6/9/etc/rc.d/rfcomm_pppd_server projects/multi-fibv6/9/etc/rc.d/route6d projects/multi-fibv6/9/etc/rc.d/routed projects/multi-fibv6/9/etc/rc.d/rpcbind projects/multi-fibv6/9/etc/rc.d/rtadvd projects/multi-fibv6/9/etc/rc.d/rtsold projects/multi-fibv6/9/etc/rc.d/rwho projects/multi-fibv6/9/etc/rc.d/sdpd projects/multi-fibv6/9/etc/rc.d/sendmail projects/multi-fibv6/9/etc/rc.d/sshd projects/multi-fibv6/9/etc/rc.d/statd projects/multi-fibv6/9/etc/rc.d/syslogd projects/multi-fibv6/9/etc/rc.d/timed projects/multi-fibv6/9/etc/rc.d/ubthidhci projects/multi-fibv6/9/etc/rc.d/var projects/multi-fibv6/9/etc/rc.d/virecover projects/multi-fibv6/9/etc/rc.d/watchdogd projects/multi-fibv6/9/etc/rc.d/ypbind projects/multi-fibv6/9/etc/rc.d/yppasswdd projects/multi-fibv6/9/etc/rc.d/ypserv projects/multi-fibv6/9/etc/rc.d/ypset projects/multi-fibv6/9/etc/rc.d/ypupdated projects/multi-fibv6/9/etc/rc.d/ypxfrd projects/multi-fibv6/9/etc/rc.resume projects/multi-fibv6/9/etc/rc.subr projects/multi-fibv6/9/etc/rc.suspend projects/multi-fibv6/9/gnu/usr.bin/gdb/kgdb/trgt_amd64.c projects/multi-fibv6/9/include/rpc/Makefile projects/multi-fibv6/9/include/rpcsvc/Makefile projects/multi-fibv6/9/include/stdio.h projects/multi-fibv6/9/lib/clang/Makefile projects/multi-fibv6/9/lib/clang/libllvmanalysis/Makefile projects/multi-fibv6/9/lib/clang/libllvmipa/Makefile projects/multi-fibv6/9/lib/clang/libllvmipo/Makefile projects/multi-fibv6/9/lib/clang/libllvmmc/Makefile projects/multi-fibv6/9/lib/clang/libllvmscalaropts/Makefile projects/multi-fibv6/9/lib/clang/libllvmsupport/Makefile projects/multi-fibv6/9/lib/clang/libllvmtransformutils/Makefile projects/multi-fibv6/9/lib/clang/libllvmx86disassembler/Makefile projects/multi-fibv6/9/lib/libc/amd64/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/arm/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/gen/Symbol.map projects/multi-fibv6/9/lib/libc/gen/directory.3 projects/multi-fibv6/9/lib/libc/gen/getcontext.3 projects/multi-fibv6/9/lib/libc/gen/sysctl.3 projects/multi-fibv6/9/lib/libc/gen/ucontext.3 projects/multi-fibv6/9/lib/libc/i386/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/ia64/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/locale/btowc.3 projects/multi-fibv6/9/lib/libc/mips/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/powerpc/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/powerpc64/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/powerpc64/sys/cerror.S projects/multi-fibv6/9/lib/libc/rpc/Makefile.inc projects/multi-fibv6/9/lib/libc/sparc64/gen/Makefile.inc projects/multi-fibv6/9/lib/libc/sys/jail.2 projects/multi-fibv6/9/lib/libc/sys/ptrace.2 projects/multi-fibv6/9/lib/libc/yp/Makefile.inc projects/multi-fibv6/9/lib/libipsec/pfkey.c projects/multi-fibv6/9/lib/libpmc/pmc.3 projects/multi-fibv6/9/lib/libpmc/pmc.atom.3 projects/multi-fibv6/9/lib/libpmc/pmc.core.3 projects/multi-fibv6/9/lib/libpmc/pmc.core2.3 projects/multi-fibv6/9/lib/libpmc/pmc.corei7.3 projects/multi-fibv6/9/lib/libpmc/pmc.corei7uc.3 projects/multi-fibv6/9/lib/libpmc/pmc.iaf.3 projects/multi-fibv6/9/lib/libpmc/pmc.k7.3 projects/multi-fibv6/9/lib/libpmc/pmc.k8.3 projects/multi-fibv6/9/lib/libpmc/pmc.mips.3 projects/multi-fibv6/9/lib/libpmc/pmc.p4.3 projects/multi-fibv6/9/lib/libpmc/pmc.p5.3 projects/multi-fibv6/9/lib/libpmc/pmc.p6.3 projects/multi-fibv6/9/lib/libpmc/pmc.tsc.3 projects/multi-fibv6/9/lib/libpmc/pmc.ucf.3 projects/multi-fibv6/9/lib/libpmc/pmc.westmere.3 projects/multi-fibv6/9/lib/libpmc/pmc.westmereuc.3 projects/multi-fibv6/9/lib/libpmc/pmc.xscale.3 projects/multi-fibv6/9/lib/libpmc/pmc_allocate.3 projects/multi-fibv6/9/lib/libpmc/pmc_attach.3 projects/multi-fibv6/9/lib/libpmc/pmc_capabilities.3 projects/multi-fibv6/9/lib/libpmc/pmc_configure_logfile.3 projects/multi-fibv6/9/lib/libpmc/pmc_disable.3 projects/multi-fibv6/9/lib/libpmc/pmc_event_names_of_class.3 projects/multi-fibv6/9/lib/libpmc/pmc_get_driver_stats.3 projects/multi-fibv6/9/lib/libpmc/pmc_get_msr.3 projects/multi-fibv6/9/lib/libpmc/pmc_init.3 projects/multi-fibv6/9/lib/libpmc/pmc_name_of_capability.3 projects/multi-fibv6/9/lib/libpmc/pmc_read.3 projects/multi-fibv6/9/lib/libpmc/pmc_set.3 projects/multi-fibv6/9/lib/libpmc/pmc_start.3 projects/multi-fibv6/9/lib/libpmc/pmclog.3 projects/multi-fibv6/9/lib/librpcsvc/Makefile projects/multi-fibv6/9/lib/libthr/thread/thr_sig.c projects/multi-fibv6/9/lib/libthr/thread/thr_umtx.c projects/multi-fibv6/9/lib/libypclnt/Makefile projects/multi-fibv6/9/libexec/rtld-elf/rtld.c projects/multi-fibv6/9/libexec/tftpd/tftp-io.c projects/multi-fibv6/9/libexec/ypxfr/Makefile projects/multi-fibv6/9/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/multi-fibv6/9/release/doc/share/misc/dev.archlist.txt projects/multi-fibv6/9/release/picobsd/tinyware/passwd/Makefile projects/multi-fibv6/9/release/rc.local projects/multi-fibv6/9/sbin/camcontrol/camcontrol.c projects/multi-fibv6/9/sbin/camcontrol/modeedit.c projects/multi-fibv6/9/sbin/fsck_ffs/gjournal.c projects/multi-fibv6/9/sbin/fsirand/fsirand.c projects/multi-fibv6/9/sbin/gvinum/gvinum.c projects/multi-fibv6/9/sbin/hastd/rangelock.c projects/multi-fibv6/9/sbin/ifconfig/ifieee80211.c projects/multi-fibv6/9/sbin/newfs/mkfs.c projects/multi-fibv6/9/sbin/ping6/ping6.c projects/multi-fibv6/9/sbin/tunefs/tunefs.c projects/multi-fibv6/9/share/examples/scsi_target/scsi_cmds.c projects/multi-fibv6/9/share/man/man4/Makefile projects/multi-fibv6/9/share/man/man4/ada.4 projects/multi-fibv6/9/share/man/man4/bge.4 projects/multi-fibv6/9/share/man/man4/cd.4 projects/multi-fibv6/9/share/man/man4/da.4 projects/multi-fibv6/9/share/man/man4/ed.4 projects/multi-fibv6/9/share/man/man4/lagg.4 projects/multi-fibv6/9/share/man/man4/lmc.4 projects/multi-fibv6/9/share/man/man4/sbp.4 projects/multi-fibv6/9/share/man/man4/sfxge.4 projects/multi-fibv6/9/share/man/man4/u3g.4 projects/multi-fibv6/9/share/man/man4/usb_quirk.4 projects/multi-fibv6/9/share/man/man4/wlan.4 projects/multi-fibv6/9/share/man/man5/periodic.conf.5 projects/multi-fibv6/9/share/man/man5/portindex.5 projects/multi-fibv6/9/share/man/man5/rc.conf.5 projects/multi-fibv6/9/share/man/man5/src.conf.5 projects/multi-fibv6/9/share/man/man7/security.7 projects/multi-fibv6/9/share/man/man8/rc.subr.8 projects/multi-fibv6/9/share/man/man9/DEVICE_PROBE.9 projects/multi-fibv6/9/share/mk/bsd.own.mk projects/multi-fibv6/9/sys/amd64/acpica/acpi_switch.S projects/multi-fibv6/9/sys/amd64/acpica/acpi_wakecode.S projects/multi-fibv6/9/sys/amd64/acpica/acpi_wakeup.c projects/multi-fibv6/9/sys/amd64/amd64/apic_vector.S projects/multi-fibv6/9/sys/amd64/amd64/cpu_switch.S projects/multi-fibv6/9/sys/amd64/amd64/fpu.c projects/multi-fibv6/9/sys/amd64/amd64/genassym.c projects/multi-fibv6/9/sys/amd64/amd64/initcpu.c projects/multi-fibv6/9/sys/amd64/amd64/machdep.c projects/multi-fibv6/9/sys/amd64/amd64/minidump_machdep.c projects/multi-fibv6/9/sys/amd64/amd64/mp_machdep.c projects/multi-fibv6/9/sys/amd64/amd64/sys_machdep.c projects/multi-fibv6/9/sys/amd64/amd64/trap.c projects/multi-fibv6/9/sys/amd64/amd64/uma_machdep.c projects/multi-fibv6/9/sys/amd64/amd64/vm_machdep.c projects/multi-fibv6/9/sys/amd64/conf/GENERIC projects/multi-fibv6/9/sys/amd64/conf/NOTES projects/multi-fibv6/9/sys/amd64/ia32/ia32_reg.c projects/multi-fibv6/9/sys/amd64/ia32/ia32_signal.c projects/multi-fibv6/9/sys/amd64/include/cpufunc.h projects/multi-fibv6/9/sys/amd64/include/fpu.h projects/multi-fibv6/9/sys/amd64/include/frame.h projects/multi-fibv6/9/sys/amd64/include/md_var.h projects/multi-fibv6/9/sys/amd64/include/pcb.h projects/multi-fibv6/9/sys/amd64/include/ptrace.h projects/multi-fibv6/9/sys/amd64/include/signal.h projects/multi-fibv6/9/sys/amd64/include/sysarch.h projects/multi-fibv6/9/sys/amd64/include/ucontext.h projects/multi-fibv6/9/sys/cam/scsi/scsi_all.c projects/multi-fibv6/9/sys/cam/scsi/scsi_all.h projects/multi-fibv6/9/sys/cam/scsi/scsi_da.h projects/multi-fibv6/9/sys/cam/scsi/scsi_targ_bh.c projects/multi-fibv6/9/sys/cam/scsi/scsi_xpt.c projects/multi-fibv6/9/sys/cddl/compat/opensolaris/sys/kmem.h projects/multi-fibv6/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/multi-fibv6/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/multi-fibv6/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/multi-fibv6/9/sys/compat/ia32/ia32_signal.h projects/multi-fibv6/9/sys/conf/NOTES projects/multi-fibv6/9/sys/conf/files projects/multi-fibv6/9/sys/conf/files.amd64 projects/multi-fibv6/9/sys/conf/files.i386 projects/multi-fibv6/9/sys/conf/ldscript.powerpc64 projects/multi-fibv6/9/sys/conf/options projects/multi-fibv6/9/sys/conf/options.amd64 projects/multi-fibv6/9/sys/conf/options.i386 projects/multi-fibv6/9/sys/crypto/aesni/aesni.c projects/multi-fibv6/9/sys/crypto/aesni/aesni.h projects/multi-fibv6/9/sys/crypto/aesni/aesni_wrap.c projects/multi-fibv6/9/sys/crypto/via/padlock.c projects/multi-fibv6/9/sys/crypto/via/padlock.h projects/multi-fibv6/9/sys/crypto/via/padlock_cipher.c projects/multi-fibv6/9/sys/crypto/via/padlock_hash.c projects/multi-fibv6/9/sys/dev/acpica/Osd/OsdSynch.c projects/multi-fibv6/9/sys/dev/acpica/acpi.c projects/multi-fibv6/9/sys/dev/acpica/acpi_ec.c projects/multi-fibv6/9/sys/dev/acpica/acpi_hpet.c projects/multi-fibv6/9/sys/dev/acpica/acpi_timer.c projects/multi-fibv6/9/sys/dev/acpica/acpivar.h projects/multi-fibv6/9/sys/dev/ata/ata-queue.c projects/multi-fibv6/9/sys/dev/ata/atapi-cam.c projects/multi-fibv6/9/sys/dev/bge/if_bge.c projects/multi-fibv6/9/sys/dev/bge/if_bgereg.h projects/multi-fibv6/9/sys/dev/ciss/ciss.c projects/multi-fibv6/9/sys/dev/et/if_et.c projects/multi-fibv6/9/sys/dev/fb/vesa.c projects/multi-fibv6/9/sys/dev/fb/vesa.h projects/multi-fibv6/9/sys/dev/isp/isp_freebsd.h projects/multi-fibv6/9/sys/dev/mii/brgphy.c projects/multi-fibv6/9/sys/dev/mii/miidevs projects/multi-fibv6/9/sys/dev/mii/nsphyter.c projects/multi-fibv6/9/sys/dev/mps/mps.c projects/multi-fibv6/9/sys/dev/mps/mps_pci.c projects/multi-fibv6/9/sys/dev/mps/mps_sas.c projects/multi-fibv6/9/sys/dev/mps/mps_sas.h projects/multi-fibv6/9/sys/dev/mps/mps_sas_lsi.c projects/multi-fibv6/9/sys/dev/mps/mps_user.c projects/multi-fibv6/9/sys/dev/mps/mpsvar.h projects/multi-fibv6/9/sys/dev/pci/pci.c projects/multi-fibv6/9/sys/dev/random/nehemiah.c projects/multi-fibv6/9/sys/dev/random/probe.c projects/multi-fibv6/9/sys/dev/re/if_re.c projects/multi-fibv6/9/sys/dev/sound/pcm/sound.c projects/multi-fibv6/9/sys/dev/sound/usb/uaudio.c projects/multi-fibv6/9/sys/dev/usb/serial/u3g.c projects/multi-fibv6/9/sys/dev/usb/serial/usb_serial.c projects/multi-fibv6/9/sys/dev/usb/serial/usb_serial.h projects/multi-fibv6/9/sys/dev/usb/usbdevs projects/multi-fibv6/9/sys/dev/xen/blkback/blkback.c projects/multi-fibv6/9/sys/dev/xen/blkfront/blkfront.c projects/multi-fibv6/9/sys/dev/xen/blkfront/block.h projects/multi-fibv6/9/sys/dev/xen/netback/netback.c projects/multi-fibv6/9/sys/dev/xen/xenpci/evtchn.c projects/multi-fibv6/9/sys/fs/ext2fs/inode.h projects/multi-fibv6/9/sys/fs/nfs/nfs_commonport.c projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvnops.c projects/multi-fibv6/9/sys/fs/nfsserver/nfs_nfsdcache.c projects/multi-fibv6/9/sys/fs/nfsserver/nfs_nfsdport.c projects/multi-fibv6/9/sys/fs/tmpfs/tmpfs_vnops.c projects/multi-fibv6/9/sys/geom/journal/g_journal.c projects/multi-fibv6/9/sys/i386/conf/GENERIC projects/multi-fibv6/9/sys/i386/conf/NOTES projects/multi-fibv6/9/sys/i386/conf/PAE projects/multi-fibv6/9/sys/i386/i386/machdep.c projects/multi-fibv6/9/sys/i386/include/npx.h projects/multi-fibv6/9/sys/i386/include/ptrace.h projects/multi-fibv6/9/sys/i386/include/signal.h projects/multi-fibv6/9/sys/i386/include/sysarch.h projects/multi-fibv6/9/sys/i386/include/ucontext.h projects/multi-fibv6/9/sys/i386/include/xen/xenpmap.h projects/multi-fibv6/9/sys/i386/include/xen/xenvar.h projects/multi-fibv6/9/sys/i386/isa/npx.c projects/multi-fibv6/9/sys/ia64/conf/GENERIC projects/multi-fibv6/9/sys/kern/kern_fork.c projects/multi-fibv6/9/sys/kern/kern_jail.c projects/multi-fibv6/9/sys/kern/subr_scanf.c projects/multi-fibv6/9/sys/kern/subr_syscall.c projects/multi-fibv6/9/sys/kern/sys_process.c projects/multi-fibv6/9/sys/kern/sysv_shm.c projects/multi-fibv6/9/sys/kern/uipc_mbuf.c projects/multi-fibv6/9/sys/kern/vfs_cache.c projects/multi-fibv6/9/sys/kern/vfs_cluster.c projects/multi-fibv6/9/sys/kern/vfs_mount.c projects/multi-fibv6/9/sys/kern/vfs_subr.c projects/multi-fibv6/9/sys/kern/vfs_syscalls.c projects/multi-fibv6/9/sys/modules/Makefile projects/multi-fibv6/9/sys/modules/drm/Makefile projects/multi-fibv6/9/sys/modules/kgssapi/Makefile projects/multi-fibv6/9/sys/modules/kgssapi_krb5/Makefile projects/multi-fibv6/9/sys/modules/random/Makefile projects/multi-fibv6/9/sys/modules/sound/driver/Makefile projects/multi-fibv6/9/sys/modules/usb/Makefile projects/multi-fibv6/9/sys/net/flowtable.c projects/multi-fibv6/9/sys/net/ieee8023ad_lacp.c projects/multi-fibv6/9/sys/net/if.h projects/multi-fibv6/9/sys/net/if_lagg.c projects/multi-fibv6/9/sys/net/if_lagg.h projects/multi-fibv6/9/sys/net/if_llatbl.c projects/multi-fibv6/9/sys/net/rtsock.c projects/multi-fibv6/9/sys/netgraph/ng_cisco.c projects/multi-fibv6/9/sys/netgraph/ng_cisco.h projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw_nat.c projects/multi-fibv6/9/sys/netinet/sctp_output.c projects/multi-fibv6/9/sys/netinet6/nd6.h projects/multi-fibv6/9/sys/netinet6/nd6_rtr.c projects/multi-fibv6/9/sys/nfsclient/nfs_vnops.c projects/multi-fibv6/9/sys/pc98/conf/GENERIC projects/multi-fibv6/9/sys/pc98/pc98/machdep.c projects/multi-fibv6/9/sys/powerpc/aim/locore64.S projects/multi-fibv6/9/sys/powerpc/aim/swtch64.S projects/multi-fibv6/9/sys/powerpc/aim/trap_subr64.S projects/multi-fibv6/9/sys/powerpc/include/asm.h projects/multi-fibv6/9/sys/powerpc/include/profile.h projects/multi-fibv6/9/sys/powerpc/ofw/ofwcall64.S projects/multi-fibv6/9/sys/powerpc/powerpc/atomic.S projects/multi-fibv6/9/sys/powerpc/powerpc/setjmp.S projects/multi-fibv6/9/sys/sparc64/conf/GENERIC projects/multi-fibv6/9/sys/sys/malloc.h projects/multi-fibv6/9/sys/sys/param.h projects/multi-fibv6/9/sys/sys/proc.h projects/multi-fibv6/9/sys/sys/ptrace.h projects/multi-fibv6/9/sys/sys/socket.h projects/multi-fibv6/9/sys/sys/ucontext.h projects/multi-fibv6/9/sys/sys/vnode.h projects/multi-fibv6/9/sys/ufs/ffs/ffs_softdep.c projects/multi-fibv6/9/sys/ufs/ffs/ffs_vfsops.c projects/multi-fibv6/9/sys/ufs/ffs/ffs_vnops.c projects/multi-fibv6/9/sys/ufs/ufs/inode.h projects/multi-fibv6/9/sys/ufs/ufs/ufs_acl.c projects/multi-fibv6/9/sys/ufs/ufs/ufs_vnops.c projects/multi-fibv6/9/sys/vm/uma.h projects/multi-fibv6/9/sys/vm/uma_core.c projects/multi-fibv6/9/sys/vm/vm_kern.c projects/multi-fibv6/9/sys/vm/vm_map.c projects/multi-fibv6/9/sys/vm/vm_map.h projects/multi-fibv6/9/sys/vm/vm_mmap.c projects/multi-fibv6/9/sys/vm/vm_page.c projects/multi-fibv6/9/sys/vm/vm_page.h projects/multi-fibv6/9/sys/vm/vnode_pager.h projects/multi-fibv6/9/sys/xen/interface/io/blkif.h projects/multi-fibv6/9/sys/xen/interface/io/netif.h projects/multi-fibv6/9/sys/xen/xenbus/xenbusvar.h projects/multi-fibv6/9/tools/build/mk/OptionalObsoleteFiles.inc projects/multi-fibv6/9/tools/regression/bin/sh/builtins/getopts1.0 projects/multi-fibv6/9/tools/regression/bin/test/regress.sh projects/multi-fibv6/9/tools/regression/doat/doat.c projects/multi-fibv6/9/tools/regression/pipe/pipe-fstatbug.c projects/multi-fibv6/9/tools/regression/pipe/pipe-reverse.c projects/multi-fibv6/9/tools/regression/pipe/pipe-wraparound.c projects/multi-fibv6/9/usr.bin/Makefile projects/multi-fibv6/9/usr.bin/brandelf/brandelf.c projects/multi-fibv6/9/usr.bin/bsdiff/bsdiff/bsdiff.c projects/multi-fibv6/9/usr.bin/clang/Makefile projects/multi-fibv6/9/usr.bin/ncplist/ncplist.c projects/multi-fibv6/9/usr.bin/netstat/if.c projects/multi-fibv6/9/usr.bin/sockstat/sockstat.1 projects/multi-fibv6/9/usr.bin/sockstat/sockstat.c projects/multi-fibv6/9/usr.bin/split/split.c projects/multi-fibv6/9/usr.sbin/Makefile projects/multi-fibv6/9/usr.sbin/amd/Makefile.inc projects/multi-fibv6/9/usr.sbin/bootparamd/bootparamd/Makefile projects/multi-fibv6/9/usr.sbin/bootparamd/callbootd/Makefile projects/multi-fibv6/9/usr.sbin/gssd/Makefile projects/multi-fibv6/9/usr.sbin/keyserv/Makefile projects/multi-fibv6/9/usr.sbin/makefs/cd9660.c projects/multi-fibv6/9/usr.sbin/makefs/cd9660.h projects/multi-fibv6/9/usr.sbin/makefs/cd9660/cd9660_write.c projects/multi-fibv6/9/usr.sbin/makefs/ffs.c projects/multi-fibv6/9/usr.sbin/makefs/makefs.8 projects/multi-fibv6/9/usr.sbin/makefs/makefs.c projects/multi-fibv6/9/usr.sbin/makefs/makefs.h projects/multi-fibv6/9/usr.sbin/makefs/walk.c projects/multi-fibv6/9/usr.sbin/mlxcontrol/interface.c projects/multi-fibv6/9/usr.sbin/rpc.lockd/Makefile projects/multi-fibv6/9/usr.sbin/rpc.statd/Makefile projects/multi-fibv6/9/usr.sbin/rpc.yppasswdd/Makefile projects/multi-fibv6/9/usr.sbin/rpc.ypupdated/Makefile projects/multi-fibv6/9/usr.sbin/rpc.ypxfrd/Makefile projects/multi-fibv6/9/usr.sbin/usbdump/usbdump.8 projects/multi-fibv6/9/usr.sbin/usbdump/usbdump.c projects/multi-fibv6/9/usr.sbin/yppush/Makefile projects/multi-fibv6/9/usr.sbin/ypserv/Makefile Directory Properties: projects/multi-fibv6/9/ (props changed) projects/multi-fibv6/9/bin/sh/ (props changed) projects/multi-fibv6/9/cddl/ (props changed) projects/multi-fibv6/9/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/9/contrib/llvm/ (props changed) projects/multi-fibv6/9/etc/ (props changed) projects/multi-fibv6/9/gnu/usr.bin/gdb/ (props changed) projects/multi-fibv6/9/gnu/usr.bin/gdb/kgdb/ (props changed) projects/multi-fibv6/9/include/ (props changed) projects/multi-fibv6/9/lib/ (props changed) projects/multi-fibv6/9/lib/clang/ (props changed) projects/multi-fibv6/9/lib/libc/ (props changed) projects/multi-fibv6/9/lib/libc/sys/ (props changed) projects/multi-fibv6/9/lib/libipsec/ (props changed) projects/multi-fibv6/9/lib/libpmc/ (props changed) projects/multi-fibv6/9/lib/librpcsvc/ (props changed) projects/multi-fibv6/9/lib/libthr/ (props changed) projects/multi-fibv6/9/lib/libypclnt/ (props changed) projects/multi-fibv6/9/libexec/rtld-elf/ (props changed) projects/multi-fibv6/9/libexec/tftpd/ (props changed) projects/multi-fibv6/9/libexec/ypxfr/ (props changed) projects/multi-fibv6/9/release/ (props changed) projects/multi-fibv6/9/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/multi-fibv6/9/release/picobsd/tinyware/passwd/ (props changed) projects/multi-fibv6/9/sbin/ (props changed) projects/multi-fibv6/9/sbin/camcontrol/ (props changed) projects/multi-fibv6/9/sbin/fsck_ffs/ (props changed) projects/multi-fibv6/9/sbin/fsirand/ (props changed) projects/multi-fibv6/9/sbin/geom/ (props changed) projects/multi-fibv6/9/sbin/gvinum/ (props changed) projects/multi-fibv6/9/sbin/hastd/ (props changed) projects/multi-fibv6/9/sbin/ifconfig/ (props changed) projects/multi-fibv6/9/sbin/newfs/ (props changed) projects/multi-fibv6/9/sbin/ping6/ (props changed) projects/multi-fibv6/9/sbin/tunefs/ (props changed) projects/multi-fibv6/9/share/ (props changed) projects/multi-fibv6/9/share/examples/ (props changed) projects/multi-fibv6/9/share/examples/diskless/ (props changed) projects/multi-fibv6/9/share/examples/ppp/ (props changed) projects/multi-fibv6/9/share/examples/printing/ (props changed) projects/multi-fibv6/9/share/man/ (props changed) projects/multi-fibv6/9/share/man/man4/ (props changed) projects/multi-fibv6/9/share/man/man5/ (props changed) projects/multi-fibv6/9/share/man/man7/ (props changed) projects/multi-fibv6/9/share/man/man9/ (props changed) projects/multi-fibv6/9/share/mk/ (props changed) projects/multi-fibv6/9/share/mk/bsd.arch.inc.mk (props changed) projects/multi-fibv6/9/sys/ (props changed) projects/multi-fibv6/9/sys/amd64/include/xen/ (props changed) projects/multi-fibv6/9/sys/boot/ (props changed) projects/multi-fibv6/9/sys/boot/i386/efi/ (props changed) projects/multi-fibv6/9/sys/boot/ia64/efi/ (props changed) projects/multi-fibv6/9/sys/boot/ia64/ski/ (props changed) projects/multi-fibv6/9/sys/boot/powerpc/boot1.chrp/ (props changed) projects/multi-fibv6/9/sys/boot/powerpc/ofw/ (props changed) projects/multi-fibv6/9/sys/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/9/sys/conf/ (props changed) projects/multi-fibv6/9/sys/contrib/dev/acpica/ (props changed) projects/multi-fibv6/9/sys/contrib/octeon-sdk/ (props changed) projects/multi-fibv6/9/sys/contrib/pf/ (props changed) projects/multi-fibv6/9/sys/contrib/x86emu/ (props changed) projects/multi-fibv6/9/tools/ (props changed) projects/multi-fibv6/9/tools/build/options/ (props changed) projects/multi-fibv6/9/tools/regression/bin/sh/ (props changed) projects/multi-fibv6/9/tools/regression/bin/test/ (props changed) projects/multi-fibv6/9/tools/regression/doat/ (props changed) projects/multi-fibv6/9/tools/regression/pipe/ (props changed) projects/multi-fibv6/9/tools/test/ (props changed) projects/multi-fibv6/9/tools/tools/ (props changed) projects/multi-fibv6/9/usr.bin/ (props changed) projects/multi-fibv6/9/usr.bin/brandelf/ (props changed) projects/multi-fibv6/9/usr.bin/bsdiff/ (props changed) projects/multi-fibv6/9/usr.bin/clang/ (props changed) projects/multi-fibv6/9/usr.bin/ncplist/ (props changed) projects/multi-fibv6/9/usr.bin/netstat/ (props changed) projects/multi-fibv6/9/usr.bin/sockstat/ (props changed) projects/multi-fibv6/9/usr.bin/split/ (props changed) projects/multi-fibv6/9/usr.sbin/amd/ (props changed) projects/multi-fibv6/9/usr.sbin/bootparamd/ (props changed) projects/multi-fibv6/9/usr.sbin/gssd/ (props changed) projects/multi-fibv6/9/usr.sbin/keyserv/ (props changed) projects/multi-fibv6/9/usr.sbin/makefs/ (props changed) projects/multi-fibv6/9/usr.sbin/rpc.lockd/ (props changed) projects/multi-fibv6/9/usr.sbin/rpc.statd/ (props changed) projects/multi-fibv6/9/usr.sbin/rpc.yppasswdd/ (props changed) projects/multi-fibv6/9/usr.sbin/rpc.ypupdated/ (props changed) projects/multi-fibv6/9/usr.sbin/rpc.ypxfrd/ (props changed) projects/multi-fibv6/9/usr.sbin/usbdump/ (props changed) projects/multi-fibv6/9/usr.sbin/yppush/ (props changed) projects/multi-fibv6/9/usr.sbin/ypserv/ (props changed) Modified: projects/multi-fibv6/9/MAINTAINERS ============================================================================== --- projects/multi-fibv6/9/MAINTAINERS Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/MAINTAINERS Wed Feb 29 01:04:37 2012 (r232280) @@ -126,6 +126,7 @@ lib/libc/stdtime edwin Heads-up apprec sysinstall randi Please contact about any major changes so that they can be co-ordinated. sbin/routed bms Pre-commit review; notify vendor at rhyolite.com +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/9/Makefile ============================================================================== --- projects/multi-fibv6/9/Makefile Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/Makefile Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/bin/sh/exec.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/exec.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/exec.c Wed Feb 29 01:04:37 2012 (r232280) @@ -100,6 +100,7 @@ static void tryexec(char *, char **, cha static void printentry(struct tblentry *, int); static struct tblentry *cmdlookup(const char *, int); static void delete_cmd_entry(void); +static void addcmdentry(const char *, struct cmdentry *); @@ -593,7 +594,7 @@ delete_cmd_entry(void) * the same name. */ -void +static void addcmdentry(const char *name, struct cmdentry *entry) { struct tblentry *cmdp; Modified: projects/multi-fibv6/9/bin/sh/exec.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/exec.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/exec.h Wed Feb 29 01:04:37 2012 (r232280) @@ -70,7 +70,6 @@ void find_command(const char *, struct c int find_builtin(const char *, int *); void hashcd(void); void changepath(const char *); -void addcmdentry(const char *, struct cmdentry *); void defun(const char *, union node *); int unsetfunc(const char *); int typecmd_impl(int, char **, int, const char *); Modified: projects/multi-fibv6/9/bin/sh/expand.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/expand.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/expand.c Wed Feb 29 01:04:37 2012 (r232280) @@ -113,6 +113,7 @@ static void expmeta(char *, char *); static void addfname(char *); static struct strlist *expsort(struct strlist *); static struct strlist *msort(struct strlist *, int); +static int patmatch(const char *, const char *, int); static char *cvtnum(int, char *); static int collate_range_cmp(wchar_t, wchar_t); @@ -1435,7 +1436,7 @@ match_charclass(const char *p, wchar_t c * Returns true if the pattern matches the string. */ -int +static int patmatch(const char *pattern, const char *string, int squoted) { const char *p, *q, *end; Modified: projects/multi-fibv6/9/bin/sh/expand.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/expand.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/expand.h Wed Feb 29 01:04:37 2012 (r232280) @@ -60,6 +60,5 @@ union node; void expandhere(union node *, int); void expandarg(union node *, struct arglist *, int); void expari(int); -int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); Modified: projects/multi-fibv6/9/bin/sh/histedit.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/histedit.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/histedit.c Wed Feb 29 01:04:37 2012 (r232280) @@ -70,6 +70,8 @@ int displayhist; static FILE *el_in, *el_out, *el_err; static char *fc_replace(const char *, char *, char *); +static int not_fcnumber(const char *); +static int str_to_event(const char *, int); /* * Set history and editing status. Called whenever the status may @@ -425,7 +427,7 @@ fc_replace(const char *s, char *p, char return (dest); } -int +static int not_fcnumber(const char *s) { if (s == NULL) @@ -435,7 +437,7 @@ not_fcnumber(const char *s) return (!is_number(s)); } -int +static int str_to_event(const char *str, int last) { HistEvent he; Modified: projects/multi-fibv6/9/bin/sh/input.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/input.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/input.c Wed Feb 29 01:04:37 2012 (r232280) @@ -106,6 +106,7 @@ EditLine *el; /* cookie for editline p static void pushfile(void); static int preadfd(void); +static void popstring(void); #ifdef mkinit INCLUDE "input.h" @@ -372,7 +373,7 @@ pushstring(char *s, int len, void *ap) INTON; } -void +static void popstring(void) { struct strpush *sp = parsefile->strpush; Modified: projects/multi-fibv6/9/bin/sh/input.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/input.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/input.h Wed Feb 29 01:04:37 2012 (r232280) @@ -53,7 +53,6 @@ int preadbuffer(void); int preadateof(void); void pungetc(void); void pushstring(char *, int, void *); -void popstring(void); void setinputfile(const char *, int); void setinputfd(int, int); void setinputstring(char *, int); Modified: projects/multi-fibv6/9/bin/sh/main.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/main.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/main.c Wed Feb 29 01:04:37 2012 (r232280) @@ -79,6 +79,7 @@ int rootshell; struct jmploc main_handler; int localeisutf8, initial_localeisutf8; +static void cmdloop(int); static void read_profile(char *); static char *find_dot_file(char *); @@ -184,7 +185,7 @@ state4: /* XXX ??? - why isn't this befo * loop; it turns on prompting if the shell is interactive. */ -void +static void cmdloop(int top) { union node *n; Modified: projects/multi-fibv6/9/bin/sh/main.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/main.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/main.h Wed Feb 29 01:04:37 2012 (r232280) @@ -38,4 +38,3 @@ extern int rootshell; /* true if we aren extern struct jmploc main_handler; /* top level exception handler */ void readcmdfile(const char *); -void cmdloop(int); Modified: projects/multi-fibv6/9/bin/sh/myhistedit.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/myhistedit.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/myhistedit.h Wed Feb 29 01:04:37 2012 (r232280) @@ -39,6 +39,4 @@ extern int displayhist; void histedit(void); void sethistsize(const char *); void setterm(const char *); -int not_fcnumber(const char *); -int str_to_event(const char *, int); Modified: projects/multi-fibv6/9/bin/sh/mystring.c ============================================================================== --- projects/multi-fibv6/9/bin/sh/mystring.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/mystring.c Wed Feb 29 01:04:37 2012 (r232280) @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); * * equal(s1, s2) Return true if strings are equal. * scopy(from, to) Copy a string. - * scopyn(from, to, n) Like scopy, but checks for overflow. * number(s) Convert a string of digits to an integer. * is_number(s) Return true if s is a string of digits. */ @@ -67,24 +66,6 @@ char nullstr[1]; /* zero length string /* - * scopyn - copy a string from "from" to "to", truncating the string - * if necessary. "To" is always nul terminated, even if - * truncation is performed. "Size" is the size of "to". - */ - -void -scopyn(const char *from, char *to, int size) -{ - - while (--size > 0) { - if ((*to++ = *from++) == '\0') - return; - } - *to = '\0'; -} - - -/* * prefix -- see if pfx is a prefix of string. */ Modified: projects/multi-fibv6/9/bin/sh/mystring.h ============================================================================== --- projects/multi-fibv6/9/bin/sh/mystring.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/bin/sh/mystring.h Wed Feb 29 01:04:37 2012 (r232280) @@ -35,7 +35,6 @@ #include -void scopyn(const char *, char *, int); int prefix(const char *, const char *); int number(const char *); int is_number(const char *); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c Wed Feb 29 01:04:37 2012 (r232280) @@ -20,6 +20,8 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 Pawel Jakub Dawidek . + * All rights reserved. */ #include @@ -129,8 +131,11 @@ zfs_callback(zfs_handle_t *zhp, void *da cb->cb_depth++; if (zfs_get_type(zhp) == ZFS_TYPE_FILESYSTEM) (void) zfs_iter_filesystems(zhp, zfs_callback, data); - if ((zfs_get_type(zhp) != ZFS_TYPE_SNAPSHOT) && include_snaps) - (void) zfs_iter_snapshots(zhp, zfs_callback, data); + if ((zfs_get_type(zhp) != ZFS_TYPE_SNAPSHOT) && include_snaps) { + (void) zfs_iter_snapshots(zhp, + (cb->cb_flags & ZFS_ITER_SIMPLE) != 0, zfs_callback, + data); + } cb->cb_depth--; } @@ -184,6 +189,14 @@ zfs_free_sort_columns(zfs_sort_column_t } } +boolean_t +zfs_sort_only_by_name(const zfs_sort_column_t *sc) +{ + + return (sc != NULL && sc->sc_next == NULL && + sc->sc_prop == ZFS_PROP_NAME); +} + /* ARGSUSED */ static int zfs_compare(const void *larg, const void *rarg, void *unused) @@ -224,7 +237,13 @@ zfs_compare(const void *larg, const void lcreate = zfs_prop_get_int(l, ZFS_PROP_CREATETXG); rcreate = zfs_prop_get_int(r, ZFS_PROP_CREATETXG); - if (lcreate < rcreate) + /* + * Both lcreate and rcreate being 0 means we don't have + * properties and we should compare full name. + */ + if (lcreate == 0 && rcreate == 0) + ret = strcmp(lat + 1, rat + 1); + else if (lcreate < rcreate) ret = -1; else if (lcreate > rcreate) ret = 1; @@ -290,7 +309,14 @@ zfs_sort(const void *larg, const void *r if (rvalid) verify(nvlist_lookup_string(rval, ZPROP_VALUE, &rstr) == 0); + } else if (psc->sc_prop == ZFS_PROP_NAME) { + lvalid = rvalid = B_TRUE; + + (void) strlcpy(lbuf, zfs_get_name(l), sizeof(lbuf)); + (void) strlcpy(rbuf, zfs_get_name(r), sizeof(rbuf)); + lstr = lbuf; + rstr = rbuf; } else if (zfs_prop_is_string(psc->sc_prop)) { lvalid = (zfs_prop_get(l, psc->sc_prop, lbuf, sizeof (lbuf), NULL, NULL, 0, B_TRUE) == 0); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.h ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.h Wed Feb 29 01:04:37 2012 (r232280) @@ -43,11 +43,13 @@ typedef struct zfs_sort_column { #define ZFS_ITER_PROP_LISTSNAPS (1 << 2) #define ZFS_ITER_DEPTH_LIMIT (1 << 3) #define ZFS_ITER_RECVD_PROPS (1 << 4) +#define ZFS_ITER_SIMPLE (1 << 5) int zfs_for_each(int, char **, int options, zfs_type_t, zfs_sort_column_t *, zprop_list_t **, int, zfs_iter_f, void *); int zfs_add_sort_column(zfs_sort_column_t **, const char *, boolean_t); void zfs_free_sort_columns(zfs_sort_column_t *); +boolean_t zfs_sort_only_by_name(const zfs_sort_column_t *); #ifdef __cplusplus } Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Wed Feb 29 01:04:37 2012 (r232280) @@ -23,7 +23,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. - * Copyright (c) 2011 Pawel Jakub Dawidek . + * Copyright (c) 2011-2012 Pawel Jakub Dawidek . * All rights reserved. * Copyright (c) 2011 Martin Matuska . All rights reserved. */ @@ -2838,7 +2838,12 @@ print_dataset(zfs_handle_t *zhp, zprop_l first = B_FALSE; } - if (pl->pl_prop != ZPROP_INVAL) { + if (pl->pl_prop == ZFS_PROP_NAME) { + (void) strlcpy(property, zfs_get_name(zhp), + sizeof(property)); + propstr = property; + right_justify = zfs_prop_align_right(pl->pl_prop); + } else if (pl->pl_prop != ZPROP_INVAL) { if (zfs_prop_get(zhp, pl->pl_prop, property, sizeof (property), NULL, NULL, 0, B_FALSE) != 0) propstr = "-"; @@ -3005,6 +3010,13 @@ zfs_do_list(int argc, char **argv) fields = default_fields; /* + * If we are only going to list snapshot names and sort by name, + * then we can use faster version. + */ + if (strcmp(fields, "name") == 0 && zfs_sort_only_by_name(sortcol)) + flags |= ZFS_ITER_SIMPLE; + + /* * If "-o space" and no types were specified, don't display snapshots. */ if (strcmp(fields, "space") == 0 && types_specified == B_FALSE) Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Wed Feb 29 01:04:37 2012 (r232280) @@ -507,7 +507,7 @@ extern int zfs_iter_root(libzfs_handle_t extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *); extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *); -extern int zfs_iter_snapshots(zfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *); extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Wed Feb 29 01:04:37 2012 (r232280) @@ -23,7 +23,7 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2010 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. - * Copyright (c) 2011 Pawel Jakub Dawidek . + * Copyright (c) 2011-2012 Pawel Jakub Dawidek . * All rights reserved. */ @@ -514,6 +514,22 @@ make_dataset_handle_zc(libzfs_handle_t * } zfs_handle_t * +make_dataset_simple_handle_zc(zfs_handle_t *pzhp, zfs_cmd_t *zc) +{ + zfs_handle_t *zhp = calloc(sizeof (zfs_handle_t), 1); + + if (zhp == NULL) + return (NULL); + + zhp->zfs_hdl = pzhp->zfs_hdl; + (void) strlcpy(zhp->zfs_name, zc->zc_name, sizeof (zhp->zfs_name)); + zhp->zfs_head_type = pzhp->zfs_type; + zhp->zfs_type = ZFS_TYPE_SNAPSHOT; + zhp->zpool_hdl = zpool_handle(zhp); + return (zhp); +} + +zfs_handle_t * zfs_handle_dup(zfs_handle_t *zhp_orig) { zfs_handle_t *zhp = calloc(sizeof (zfs_handle_t), 1); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_impl.h Wed Feb 29 01:04:37 2012 (r232280) @@ -150,7 +150,7 @@ int zpool_standard_error_fmt(libzfs_hand int get_dependents(libzfs_handle_t *, boolean_t, const char *, char ***, size_t *); zfs_handle_t *make_dataset_handle_zc(libzfs_handle_t *, zfs_cmd_t *); - +zfs_handle_t *make_dataset_simple_handle_zc(zfs_handle_t *, zfs_cmd_t *); int zprop_parse_value(libzfs_handle_t *, nvpair_t *, int, zfs_type_t, nvlist_t *, char **, uint64_t *, const char *); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Wed Feb 29 01:04:37 2012 (r232280) @@ -23,6 +23,8 @@ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2010 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 Pawel Jakub Dawidek . + * All rights reserved. */ #include @@ -137,7 +139,8 @@ zfs_iter_filesystems(zfs_handle_t *zhp, * Iterate over all snapshots */ int -zfs_iter_snapshots(zfs_handle_t *zhp, zfs_iter_f func, void *data) +zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, + void *data) { zfs_cmd_t zc = { 0 }; zfs_handle_t *nzhp; @@ -146,15 +149,19 @@ zfs_iter_snapshots(zfs_handle_t *zhp, zf if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) return (0); + zc.zc_simple = simple; + if (zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0) return (-1); while ((ret = zfs_do_list_ioctl(zhp, ZFS_IOC_SNAPSHOT_LIST_NEXT, &zc)) == 0) { - if ((nzhp = make_dataset_handle_zc(zhp->zfs_hdl, - &zc)) == NULL) { + if (simple) + nzhp = make_dataset_simple_handle_zc(zhp, &zc); + else + nzhp = make_dataset_handle_zc(zhp->zfs_hdl, &zc); + if (nzhp == NULL) continue; - } if ((ret = func(nzhp, data)) != 0) { zcmd_free_nvlists(&zc); @@ -234,7 +241,7 @@ zfs_iter_snapshots_sorted(zfs_handle_t * avl_create(&avl, zfs_snapshot_compare, sizeof (zfs_node_t), offsetof(zfs_node_t, zn_avlnode)); - ret = zfs_iter_snapshots(zhp, zfs_sort_snaps, &avl); + ret = zfs_iter_snapshots(zhp, B_FALSE, zfs_sort_snaps, &avl); for (node = avl_first(&avl); node != NULL; node = AVL_NEXT(&avl, node)) ret |= callback(node->zn_handle, data); @@ -378,7 +385,7 @@ zfs_iter_children(zfs_handle_t *zhp, zfs if ((ret = zfs_iter_filesystems(zhp, func, data)) != 0) return (ret); - return (zfs_iter_snapshots(zhp, func, data)); + return (zfs_iter_snapshots(zhp, B_FALSE, func, data)); } @@ -439,8 +446,10 @@ iter_dependents_cb(zfs_handle_t *zhp, vo isf.next = ida->stack; ida->stack = &isf; err = zfs_iter_filesystems(zhp, iter_dependents_cb, ida); - if (err == 0) - err = zfs_iter_snapshots(zhp, iter_dependents_cb, ida); + if (err == 0) { + err = zfs_iter_snapshots(zhp, B_FALSE, + iter_dependents_cb, ida); + } ida->stack = isf.next; } if (!first && err == 0) Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c Wed Feb 29 01:04:37 2012 (r232280) @@ -22,6 +22,8 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 Pawel Jakub Dawidek . + * All rights reserved. */ #include @@ -717,7 +719,7 @@ send_iterate_fs(zfs_handle_t *zhp, void sd->parent_fromsnap_guid = 0; VERIFY(0 == nvlist_alloc(&sd->parent_snaps, NV_UNIQUE_NAME, 0)); VERIFY(0 == nvlist_alloc(&sd->snapprops, NV_UNIQUE_NAME, 0)); - (void) zfs_iter_snapshots(zhp, send_iterate_snap, sd); + (void) zfs_iter_snapshots(zhp, B_FALSE, send_iterate_snap, sd); VERIFY(0 == nvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps)); VERIFY(0 == nvlist_add_nvlist(nvfs, "snapprops", sd->snapprops)); nvlist_free(sd->parent_snaps); Modified: projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Wed Feb 29 01:04:37 2012 (r232280) @@ -329,6 +329,7 @@ extern void cv_broadcast(kcondvar_t *cv) #define KM_SLEEP UMEM_NOFAIL #define KM_PUSHPAGE KM_SLEEP #define KM_NOSLEEP UMEM_DEFAULT +#define KM_NODEBUG 0 #define KMC_NODEBUG UMC_NODEBUG #define KMC_NOTOUCH 0 /* not needed for userland caches */ #define kmem_alloc(_s, _f) umem_alloc(_s, _f) Modified: projects/multi-fibv6/9/etc/defaults/periodic.conf ============================================================================== --- projects/multi-fibv6/9/etc/defaults/periodic.conf Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/defaults/periodic.conf Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/defaults/rc.conf ============================================================================== --- projects/multi-fibv6/9/etc/defaults/rc.conf Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/defaults/rc.conf Wed Feb 29 01:04:37 2012 (r232280) @@ -24,11 +24,13 @@ rc_debug="NO" # Set to YES to enable debugging output from rc.d rc_info="NO" # Enables display of informational messages at boot. rc_startmsgs="YES" # Show "Starting foo:" messages at boot -rcshutdown_timeout="30" # Seconds to wait before terminating rc.shutdown +rcshutdown_timeout="90" # Seconds to wait before terminating rc.shutdown early_late_divider="FILESYSTEMS" # Script that separates early/late # 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/9/etc/periodic/daily/404.status-zfs ============================================================================== --- projects/multi-fibv6/9/etc/periodic/daily/404.status-zfs Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/periodic/daily/404.status-zfs Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/SERVERS ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/SERVERS Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/SERVERS Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/accounting ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/accounting Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/accounting Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/addswap ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/addswap Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/addswap Wed Feb 29 01:04:37 2012 (r232280) @@ -6,7 +6,7 @@ # # PROVIDE: addswap -# REQUIRE: FILESYSTEMS +# REQUIRE: FILESYSTEMS kld # KEYWORD: nojail . /etc/rc.subr Modified: projects/multi-fibv6/9/etc/rc.d/amd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/amd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/amd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/apm ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/apm Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/apm Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/apmd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/apmd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/apmd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/bootparams ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/bootparams Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/bootparams Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/bsnmpd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/bsnmpd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/bsnmpd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/bthidd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/bthidd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/bthidd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/cleanvar ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/cleanvar Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/cleanvar Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/cleartmp ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/cleartmp Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/cleartmp Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/cron ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/cron Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/cron Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ddb ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ddb Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ddb Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/devd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/devd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/devd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/devfs ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/devfs Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/devfs Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/dhclient ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/dhclient Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/dhclient Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/dmesg ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/dmesg Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/dmesg Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ftp-proxy ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ftp-proxy Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ftp-proxy Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ftpd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ftpd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ftpd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/gptboot ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/gptboot Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/gptboot Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/hastd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/hastd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/hastd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/hcsecd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/hcsecd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/hcsecd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/hostapd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/hostapd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/hostapd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/inetd ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/inetd Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/inetd Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ip6addrctl ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ip6addrctl Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ip6addrctl Wed Feb 29 01:04:37 2012 (r232280) @@ -12,7 +12,7 @@ . /etc/network.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/9/etc/rc.d/ipfilter ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipfilter Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipfilter Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ipfs ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipfs Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipfs Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ipmon ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipmon Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipmon Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ipnat ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipnat Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipnat Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ipsec ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipsec Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipsec Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/ipxrouted ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/ipxrouted Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/ipxrouted Wed Feb 29 01:04:37 2012 (r232280) @@ -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/9/etc/rc.d/jail ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/jail Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/jail Wed Feb 29 01:04:37 2012 (r232280) @@ -17,7 +17,7 @@ . /etc/rc.subr name="jail" -rcvar=`set_rcvar` +rcvar="jail_enable" start_precmd="jail_prestart" start_cmd="jail_start" Modified: projects/multi-fibv6/9/etc/rc.d/keyserv ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/keyserv Wed Feb 29 00:52:56 2012 (r232279) +++ projects/multi-fibv6/9/etc/rc.d/keyserv Wed Feb 29 01:04:37 2012 (r232280) @@ -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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 01:32:10 2012 Return-Path: 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 992F31065670; Wed, 29 Feb 2012 01:32:10 +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 849878FC19; Wed, 29 Feb 2012 01:32:10 +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 q1T1WAnE001174; Wed, 29 Feb 2012 01:32:10 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T1WA25001172; Wed, 29 Feb 2012 01:32:10 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202290132.q1T1WA25001172@svn.freebsd.org> From: Damjan Marion Date: Wed, 29 Feb 2012 01:32:10 +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: r232281 - projects/armv6/sys/dev/ofw X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 01:32:10 -0000 Author: dmarion Date: Wed Feb 29 01:32:09 2012 New Revision: 232281 URL: http://svn.freebsd.org/changeset/base/232281 Log: Fix byte order. Approved by: cognet (mentor) Modified: projects/armv6/sys/dev/ofw/ofw_iicbus.c Modified: projects/armv6/sys/dev/ofw/ofw_iicbus.c ============================================================================== --- projects/armv6/sys/dev/ofw/ofw_iicbus.c Wed Feb 29 01:04:37 2012 (r232280) +++ projects/armv6/sys/dev/ofw/ofw_iicbus.c Wed Feb 29 01:32:09 2012 (r232281) @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -101,6 +102,7 @@ ofw_iicbus_attach(device_t dev) struct iicbus_softc *sc = IICBUS_SOFTC(dev); struct ofw_iicbus_devinfo *dinfo; phandle_t child; + pcell_t paddr; device_t childdev; uint32_t addr; @@ -121,10 +123,11 @@ ofw_iicbus_attach(device_t dev) * property, then try the reg property. It moves around * on different systems. */ - if (OF_getprop(child, "i2c-address", &addr, sizeof(addr)) == -1) - if (OF_getprop(child, "reg", &addr, sizeof(addr)) == -1) + if (OF_getprop(child, "i2c-address", &paddr, sizeof(paddr)) == -1) + if (OF_getprop(child, "reg", &paddr, sizeof(paddr)) == -1) continue; + addr = fdt32_to_cpu(paddr); /* * Now set up the I2C and OFW bus layer devinfo and add it * to the bus. From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 01:35:22 2012 Return-Path: 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 1D6271065697; Wed, 29 Feb 2012 01:35:22 +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 E39D98FC0C; Wed, 29 Feb 2012 01:35:21 +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 q1T1ZLPN001314; Wed, 29 Feb 2012 01:35:21 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T1ZLjX001311; Wed, 29 Feb 2012 01:35:21 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202290135.q1T1ZLjX001311@svn.freebsd.org> From: Damjan Marion Date: Wed, 29 Feb 2012 01:35:21 +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: r232282 - in projects/armv6/sys/arm/ti: . am335x X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 01:35:22 -0000 Author: dmarion Date: Wed Feb 29 01:35:21 2012 New Revision: 232282 URL: http://svn.freebsd.org/changeset/base/232282 Log: Probe i2c devices based on FDT data. Patch provided by gonzo. Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/am335x/files.am335x projects/armv6/sys/arm/ti/ti_i2c.c Modified: projects/armv6/sys/arm/ti/am335x/files.am335x ============================================================================== --- projects/armv6/sys/arm/ti/am335x/files.am335x Wed Feb 29 01:32:09 2012 (r232281) +++ projects/armv6/sys/arm/ti/am335x/files.am335x Wed Feb 29 01:35:21 2012 (r232282) @@ -23,4 +23,6 @@ arm/ti/am335x/am335x_dmtimer.c standard arm/ti/am335x/if_cpsw.c standard arm/ti/am335x/am335x_scm_padconf.c standard +dev/ofw/ofw_iicbus.c optional iicbus + dev/uart/uart_dev_ns8250.c optional uart Modified: projects/armv6/sys/arm/ti/ti_i2c.c ============================================================================== --- projects/armv6/sys/arm/ti/ti_i2c.c Wed Feb 29 01:32:09 2012 (r232281) +++ projects/armv6/sys/arm/ti/ti_i2c.c Wed Feb 29 01:35:21 2012 (r232282) @@ -154,6 +154,9 @@ static int ti_i2c_attach(device_t dev); static int ti_i2c_detach(device_t dev); static void ti_i2c_intr(void *); +/* OFW routine */ +static phandle_t ti_i2c_get_node(device_t bus, device_t dev); + /* helper routines */ static int ti_i2c_activate(device_t dev); static void ti_i2c_deactivate(device_t dev); @@ -1137,12 +1140,25 @@ ti_i2c_detach(device_t dev) return (0); } + +static phandle_t +ti_i2c_get_node(device_t bus, device_t dev) +{ + /* + * Share controller node with iibus device + */ + return ofw_bus_get_node(bus); +} + static device_method_t ti_i2c_methods[] = { /* Device interface */ DEVMETHOD(device_probe, ti_i2c_probe), DEVMETHOD(device_attach, ti_i2c_attach), DEVMETHOD(device_detach, ti_i2c_detach), + /* OFW methods */ + DEVMETHOD(ofw_bus_get_node, ti_i2c_get_node), + /* iicbus interface */ DEVMETHOD(iicbus_callback, ti_i2c_callback), DEVMETHOD(iicbus_reset, ti_i2c_reset), @@ -1151,7 +1167,7 @@ static device_method_t ti_i2c_methods[] }; static driver_t ti_i2c_driver = { - "ti_iic", + "iichb", ti_i2c_methods, sizeof(struct ti_i2c_softc), }; From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 01:38:37 2012 Return-Path: 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 695AC1065670; Wed, 29 Feb 2012 01:38:37 +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 49E5B8FC1B; Wed, 29 Feb 2012 01:38:37 +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 q1T1cb8O001496; Wed, 29 Feb 2012 01:38:37 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T1cb6F001494; Wed, 29 Feb 2012 01:38:37 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202290138.q1T1cb6F001494@svn.freebsd.org> From: Damjan Marion Date: Wed, 29 Feb 2012 01:38:37 +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: r232284 - projects/armv6/sys/arm/ti/am335x X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 01:38:37 -0000 Author: dmarion Date: Wed Feb 29 01:38:36 2012 New Revision: 232284 URL: http://svn.freebsd.org/changeset/base/232284 Log: am335x_pmic driver should be probed based on FDT data. Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/am335x/am335x_pmic.c Modified: projects/armv6/sys/arm/ti/am335x/am335x_pmic.c ============================================================================== --- projects/armv6/sys/arm/ti/am335x/am335x_pmic.c Wed Feb 29 01:36:00 2012 (r232283) +++ projects/armv6/sys/arm/ti/am335x/am335x_pmic.c Wed Feb 29 01:38:36 2012 (r232284) @@ -44,18 +44,20 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include "iicbus_if.h" #define TPS65217A 0x7 #define TPS65217B 0xF -#define TPS65217_IIC_ADDR 0x24 - /* TPS65217 Reisters */ #define TPS65217_CHIPID_REG 0x00 #define TPS65217_STATUS_REG 0x0A +#define MAX_IIC_DATA_SIZE 2 + + struct am335x_pmic_softc { device_t sc_dev; uint32_t sc_addr; @@ -65,28 +67,39 @@ struct am335x_pmic_softc { static int am335x_pmic_read(device_t dev, uint8_t addr, uint8_t *data, uint8_t size) { + struct am335x_pmic_softc *sc = device_get_softc(dev); struct iic_msg msg[] = { - { TPS65217_IIC_ADDR, IIC_M_WR, 1, &addr }, - { TPS65217_IIC_ADDR, IIC_M_RD, size, data }, + { sc->sc_addr, IIC_M_WR, 1, &addr }, + { sc->sc_addr, IIC_M_RD, size, data }, }; return (iicbus_transfer(dev, msg, 2)); } -static void -am335x_pmic_identify(driver_t *driver, device_t parent) +static int +am335x_pmic_write(device_t dev, uint8_t address, uint8_t *data, uint8_t size) { - BUS_ADD_CHILD(parent, 0, "am335x_pmic", 0); + uint8_t buffer[MAX_IIC_DATA_SIZE + 1]; + struct am335x_pmic_softc *sc = device_get_softc(dev); + struct iic_msg msg[] = { + { sc->sc_addr, IIC_M_WR, size + 1, buffer }, + }; + + if (size > MAX_IIC_DATA_SIZE) + return (ENOMEM); + + buffer[0] = address; + memcpy(buffer + 1, data, size); + + return (iicbus_transfer(dev, msg, 1)); } static int am335x_pmic_probe(device_t dev) { struct am335x_pmic_softc *sc; - int error; - const char *name, *compatible; - name = ofw_bus_get_name(dev); - compatible = ofw_bus_get_compat(dev); + if (!ofw_bus_is_compatible(dev, "ti,am335x-pmic")) + return (ENXIO); sc = device_get_softc(dev); sc->sc_dev = dev; @@ -94,7 +107,7 @@ am335x_pmic_probe(device_t dev) device_set_desc(dev, "TI TPS65217 Power Management IC"); - return (BUS_PROBE_NOWILDCARD); + return (0); } static void @@ -103,7 +116,7 @@ am335x_pmic_start(void *xdev) struct am335x_pmic_softc *sc; device_t dev = (device_t)xdev; uint8_t reg; - char name[16]; + char name[20]; char pwr[4][11] = {"Unknown", "USB", "AC", "USB and AC"}; sc = device_get_softc(dev); @@ -143,7 +156,6 @@ am335x_pmic_attach(device_t dev) } static device_method_t am335x_pmic_methods[] = { - DEVMETHOD(device_identify, am335x_pmic_identify), DEVMETHOD(device_probe, am335x_pmic_probe), DEVMETHOD(device_attach, am335x_pmic_attach), {0, 0}, From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 02:04:42 2012 Return-Path: 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 DBE4D106566B; Wed, 29 Feb 2012 02:04:41 +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 C637C8FC14; Wed, 29 Feb 2012 02:04:41 +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 q1T24fHj002433; Wed, 29 Feb 2012 02:04:41 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T24fQv002428; Wed, 29 Feb 2012 02:04:41 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202290204.q1T24fQv002428@svn.freebsd.org> From: Damjan Marion Date: Wed, 29 Feb 2012 02:04:41 +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: r232287 - in projects/armv6/sys/arm/ti: . am335x omap4 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 02:04:42 -0000 Author: dmarion Date: Wed Feb 29 02:04:41 2012 New Revision: 232287 URL: http://svn.freebsd.org/changeset/base/232287 Log: Use files.ti for common code between TI platforms. Approved by: cognet (mentor) Added: projects/armv6/sys/arm/ti/files.ti Modified: projects/armv6/sys/arm/ti/am335x/files.am335x projects/armv6/sys/arm/ti/omap4/files.omap4 projects/armv6/sys/arm/ti/std.ti Modified: projects/armv6/sys/arm/ti/am335x/files.am335x ============================================================================== --- projects/armv6/sys/arm/ti/am335x/files.am335x Wed Feb 29 02:01:48 2012 (r232286) +++ projects/armv6/sys/arm/ti/am335x/files.am335x Wed Feb 29 02:04:41 2012 (r232287) @@ -1,28 +1,6 @@ #$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/ti_scm.c standard -arm/ti/common.c standard -arm/ti/bus_space.c standard -arm/ti/ti_prcm.c standard -arm/ti/ti_i2c.c optional ti_i2c - -arm/ti/am335x/am335x_prcm.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 arm/ti/am335x/am335x_scm_padconf.c standard - -dev/ofw/ofw_iicbus.c optional iicbus - -dev/uart/uart_dev_ns8250.c optional uart Added: projects/armv6/sys/arm/ti/files.ti ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/files.ti Wed Feb 29 02:04:41 2012 (r232287) @@ -0,0 +1,24 @@ +#$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/bus_space.c standard +arm/ti/common.c standard +arm/ti/ti_cpuid.c standard +arm/ti/ti_machdep.c standard +arm/ti/ti_prcm.c standard +arm/ti/ti_scm.c standard + +arm/ti/ti_i2c.c optional ti_i2c +dev/ofw/ofw_iicbus.c optional iicbus + +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 Wed Feb 29 02:01:48 2012 (r232286) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Wed Feb 29 02:04:41 2012 (r232287) @@ -1,29 +1,12 @@ #$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/bus_space.c standard -arm/ti/common.c standard arm/ti/gic.c standard arm/ti/mp_timer.c standard -arm/ti/ti_prcm.c standard -arm/ti/ti_scm.c standard -arm/ti/ti_cpuid.c standard -arm/ti/ti_machdep.c standard arm/ti/ti_smc.S standard arm/ti/omap_gpio.c optional gpio arm/ti/usb/omap_ehci.c optional usb ehci arm/ti/omap_dma.c optional omap_dma -arm/ti/ti_i2c.c optional ti_i2c arm/ti/omap_mmc.c optional mmc arm/ti/omap4/omap4_l2cache.c optional pl310 @@ -32,5 +15,3 @@ arm/ti/omap4/omap4_scm_padconf.c standa arm/ti/twl/twl.c optional twl arm/ti/twl/twl_vreg.c optional twl twl_vreg - -dev/uart/uart_dev_ns8250.c optional uart Modified: projects/armv6/sys/arm/ti/std.ti ============================================================================== --- projects/armv6/sys/arm/ti/std.ti Wed Feb 29 02:01:48 2012 (r232286) +++ projects/armv6/sys/arm/ti/std.ti Wed Feb 29 02:04:41 2012 (r232287) @@ -4,3 +4,5 @@ # makeoptions CONF_CFLAGS=-march=armv6 cpu CPU_CORTEXA + +files "../ti/files.ti" From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 09:52:36 2012 Return-Path: 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 4DBD4106566C; Wed, 29 Feb 2012 09:52:36 +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 338888FC12; Wed, 29 Feb 2012 09:52:36 +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 q1T9qaYA019522; Wed, 29 Feb 2012 09:52:36 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1T9qZwB019485; Wed, 29 Feb 2012 09:52:35 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202290952.q1T9qZwB019485@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 29 Feb 2012 09:52: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: r232293 - in projects/multi-fibv6/8: etc/defaults etc/rc.d lib/libc/locale lib/libpmc release/doc/en_US.ISO8859-1/hardware release/doc/share/misc release/picobsd/floppy.tree/sbin share/... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 09:52:36 -0000 Author: bz Date: Wed Feb 29 09:52:35 2012 New Revision: 232293 URL: http://svn.freebsd.org/changeset/base/232293 Log: IF stable/8 @r232292 Sponsored by: Cisco Systems, Inc. Added: projects/multi-fibv6/8/share/man/man4/oce.4 - copied unchanged from r232292, stable/8/share/man/man4/oce.4 - copied unchanged from r232292, stable/8/sys/i386/conf/XENHVM Directory Properties: projects/multi-fibv6/8/sys/i386/conf/XENHVM (props changed) Modified: projects/multi-fibv6/8/etc/defaults/rc.conf projects/multi-fibv6/8/etc/rc.d/nfsd projects/multi-fibv6/8/lib/libc/locale/btowc.3 projects/multi-fibv6/8/lib/libpmc/pmc.3 projects/multi-fibv6/8/lib/libpmc/pmc.atom.3 projects/multi-fibv6/8/lib/libpmc/pmc.core.3 projects/multi-fibv6/8/lib/libpmc/pmc.core2.3 projects/multi-fibv6/8/lib/libpmc/pmc.corei7.3 projects/multi-fibv6/8/lib/libpmc/pmc.corei7uc.3 projects/multi-fibv6/8/lib/libpmc/pmc.iaf.3 projects/multi-fibv6/8/lib/libpmc/pmc.k7.3 projects/multi-fibv6/8/lib/libpmc/pmc.k8.3 projects/multi-fibv6/8/lib/libpmc/pmc.p4.3 projects/multi-fibv6/8/lib/libpmc/pmc.p5.3 projects/multi-fibv6/8/lib/libpmc/pmc.p6.3 projects/multi-fibv6/8/lib/libpmc/pmc.tsc.3 projects/multi-fibv6/8/lib/libpmc/pmc.ucf.3 projects/multi-fibv6/8/lib/libpmc/pmc.westmere.3 projects/multi-fibv6/8/lib/libpmc/pmc.westmereuc.3 projects/multi-fibv6/8/lib/libpmc/pmc_allocate.3 projects/multi-fibv6/8/lib/libpmc/pmc_attach.3 projects/multi-fibv6/8/lib/libpmc/pmc_capabilities.3 projects/multi-fibv6/8/lib/libpmc/pmc_configure_logfile.3 projects/multi-fibv6/8/lib/libpmc/pmc_disable.3 projects/multi-fibv6/8/lib/libpmc/pmc_event_names_of_class.3 projects/multi-fibv6/8/lib/libpmc/pmc_get_driver_stats.3 projects/multi-fibv6/8/lib/libpmc/pmc_get_msr.3 projects/multi-fibv6/8/lib/libpmc/pmc_init.3 projects/multi-fibv6/8/lib/libpmc/pmc_name_of_capability.3 projects/multi-fibv6/8/lib/libpmc/pmc_read.3 projects/multi-fibv6/8/lib/libpmc/pmc_set.3 projects/multi-fibv6/8/lib/libpmc/pmc_start.3 projects/multi-fibv6/8/lib/libpmc/pmclog.3 projects/multi-fibv6/8/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/multi-fibv6/8/release/doc/share/misc/dev.archlist.txt projects/multi-fibv6/8/share/man/man4/Makefile projects/multi-fibv6/8/share/man/man4/isci.4 projects/multi-fibv6/8/share/man/man4/wlan.4 projects/multi-fibv6/8/sys/dev/isp/isp_freebsd.h projects/multi-fibv6/8/sys/dev/mii/brgphy.c projects/multi-fibv6/8/sys/dev/mii/miidevs projects/multi-fibv6/8/sys/dev/mii/nsphyter.c projects/multi-fibv6/8/sys/dev/mps/mps_sas.c projects/multi-fibv6/8/sys/dev/pci/pci.c projects/multi-fibv6/8/sys/dev/re/if_re.c projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvnops.c projects/multi-fibv6/8/sys/geom/journal/g_journal.c projects/multi-fibv6/8/sys/gnu/fs/ext2fs/ext2_inode.c projects/multi-fibv6/8/sys/kern/vfs_cluster.c projects/multi-fibv6/8/sys/kern/vfs_subr.c projects/multi-fibv6/8/sys/kern/vfs_syscalls.c projects/multi-fibv6/8/sys/net/flowtable.c projects/multi-fibv6/8/sys/net/if_llatbl.c projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw_nat.c projects/multi-fibv6/8/sys/netinet/sctp_output.c projects/multi-fibv6/8/sys/nfsclient/nfs_vnops.c projects/multi-fibv6/8/sys/sys/proc.h projects/multi-fibv6/8/sys/sys/vnode.h projects/multi-fibv6/8/sys/ufs/ffs/ffs_vfsops.c projects/multi-fibv6/8/sys/ufs/ufs/inode.h projects/multi-fibv6/8/sys/ufs/ufs/ufs_acl.c projects/multi-fibv6/8/sys/ufs/ufs/ufs_vnops.c Directory Properties: projects/multi-fibv6/8/ (props changed) projects/multi-fibv6/8/etc/ (props changed) projects/multi-fibv6/8/lib/ (props changed) projects/multi-fibv6/8/lib/libc/ (props changed) projects/multi-fibv6/8/lib/libpmc/ (props changed) projects/multi-fibv6/8/release/ (props changed) projects/multi-fibv6/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/multi-fibv6/8/release/picobsd/ (props changed) projects/multi-fibv6/8/release/picobsd/floppy.tree/sbin/ (props changed) projects/multi-fibv6/8/release/picobsd/floppy.tree/sbin/dhclient-script (props changed) projects/multi-fibv6/8/release/picobsd/qemu/ (props changed) projects/multi-fibv6/8/release/picobsd/tinyware/login/ (props changed) projects/multi-fibv6/8/release/picobsd/tinyware/passwd/ (props changed) projects/multi-fibv6/8/release/powerpc/ (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/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) Modified: projects/multi-fibv6/8/etc/defaults/rc.conf ============================================================================== --- projects/multi-fibv6/8/etc/defaults/rc.conf Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/etc/defaults/rc.conf Wed Feb 29 09:52:35 2012 (r232293) @@ -24,7 +24,7 @@ rc_debug="NO" # Set to YES to enable debugging output from rc.d rc_info="NO" # Enables display of informational messages at boot. rc_startmsgs="YES" # Show "Starting foo:" messages at boot -rcshutdown_timeout="30" # Seconds to wait before terminating rc.shutdown +rcshutdown_timeout="90" # Seconds to wait before terminating rc.shutdown early_late_divider="FILESYSTEMS" # Script that separates early/late # stages of the boot process. Make sure you know # the ramifications if you change this. Modified: projects/multi-fibv6/8/etc/rc.d/nfsd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/nfsd Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/etc/rc.d/nfsd Wed Feb 29 09:52:35 2012 (r232293) @@ -25,11 +25,7 @@ nfsd_precmd() # rc_flags="-e ${nfs_server_flags}" - if ! checkyesno nfsuserd_enable && \ - ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1 - then - force_depend nfsuserd || return 1 - fi + force_depend nfsuserd || return 1 else rc_flags="${nfs_server_flags}" Modified: projects/multi-fibv6/8/lib/libc/locale/btowc.3 ============================================================================== --- projects/multi-fibv6/8/lib/libc/locale/btowc.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libc/locale/btowc.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 3, 2002 +.Dd February 13, 2012 .Dt BTOWC 3 .Os .Sh NAME @@ -58,7 +58,7 @@ If the wide character is or not able to be represented as a single byte in the initial shift state, .Fn wctob returns -.Dv WEOF . +.Dv EOF . .Sh SEE ALSO .Xr mbrtowc 3 , .Xr multibyte 3 , Modified: projects/multi-fibv6/8/lib/libpmc/pmc.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.atom.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.atom.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.atom.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.core.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.core.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.core.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.core2.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.core2.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.core2.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.corei7.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.corei7.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.corei7.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.corei7uc.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.corei7uc.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.corei7uc.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.iaf.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.iaf.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.iaf.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.k7.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.k7.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.k7.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.k8.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.k8.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.k8.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.p4.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.p4.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.p4.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.p5.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.p5.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.p5.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.p6.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.p6.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.p6.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.tsc.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.tsc.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.tsc.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.ucf.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.ucf.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.ucf.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.westmere.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.westmere.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.westmere.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc.westmereuc.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc.westmereuc.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc.westmereuc.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_allocate.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_allocate.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_allocate.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_attach.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_attach.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_attach.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_capabilities.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_capabilities.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_capabilities.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_configure_logfile.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_configure_logfile.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_configure_logfile.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_disable.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_disable.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_disable.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_event_names_of_class.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_event_names_of_class.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_event_names_of_class.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_get_driver_stats.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_get_driver_stats.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_get_driver_stats.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_get_msr.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_get_msr.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_get_msr.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_init.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_init.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_init.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_name_of_capability.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_name_of_capability.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_name_of_capability.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_read.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_read.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_read.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_set.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_set.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_set.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmc_start.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmc_start.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmc_start.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/lib/libpmc/pmclog.3 ============================================================================== --- projects/multi-fibv6/8/lib/libpmc/pmclog.3 Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/lib/libpmc/pmclog.3 Wed Feb 29 09:52:35 2012 (r232293) @@ -9,17 +9,17 @@ .\" 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 Joseph Koshy ``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 Joseph Koshy 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. +.\" 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$ .\" Modified: projects/multi-fibv6/8/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- projects/multi-fibv6/8/release/doc/en_US.ISO8859-1/hardware/article.sgml Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/release/doc/en_US.ISO8859-1/hardware/article.sgml Wed Feb 29 09:52:35 2012 (r232293) @@ -737,6 +737,8 @@ &hwlist.ips; + &hwlist.isci; + &hwlist.isp; &hwlist.mfi; @@ -900,6 +902,8 @@ &hwlist.nxge; + &hwlist.oce; + &hwlist.pcn; &hwlist.re; Modified: projects/multi-fibv6/8/release/doc/share/misc/dev.archlist.txt ============================================================================== --- projects/multi-fibv6/8/release/doc/share/misc/dev.archlist.txt Wed Feb 29 09:47:26 2012 (r232292) +++ projects/multi-fibv6/8/release/doc/share/misc/dev.archlist.txt Wed Feb 29 09:52:35 2012 (r232293) @@ -80,6 +80,7 @@ ida i386 ie i386 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 14:50:17 2012 Return-Path: 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 D62881065673; Wed, 29 Feb 2012 14:50:17 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BFB058FC0A; Wed, 29 Feb 2012 14:50:17 +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 q1TEoHGP031428; Wed, 29 Feb 2012 14:50:17 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1TEoHIa031422; Wed, 29 Feb 2012 14:50:17 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201202291450.q1TEoHIa031422@svn.freebsd.org> From: Gleb Smirnoff Date: Wed, 29 Feb 2012 14:50:17 +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: r232298 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 14:50:17 -0000 Author: glebius Date: Wed Feb 29 14:50:17 2012 New Revision: 232298 URL: http://svn.freebsd.org/changeset/base/232298 Log: Make local functions static. Not only a perfectionism, but also improves readability and understanding of code. Modified: projects/pf/head/sys/contrib/pf/net/if_pflog.c projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/if_pfsync.h projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_if.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c projects/pf/head/sys/contrib/pf/net/pf_lb.c projects/pf/head/sys/contrib/pf/net/pf_norm.c projects/pf/head/sys/contrib/pf/net/pf_osfp.c projects/pf/head/sys/contrib/pf/net/pf_ruleset.c projects/pf/head/sys/contrib/pf/net/pf_table.c projects/pf/head/sys/contrib/pf/net/pfvar.h Modified: projects/pf/head/sys/contrib/pf/net/if_pflog.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pflog.c Wed Feb 29 14:44:42 2012 (r232297) +++ projects/pf/head/sys/contrib/pf/net/if_pflog.c Wed Feb 29 14:50:17 2012 (r232298) @@ -100,20 +100,20 @@ __FBSDID("$FreeBSD$"); #define DPRINTF(x) #endif -void pflogattach(int); -int pflogoutput(struct ifnet *, struct mbuf *, struct sockaddr *, - struct route *); -int pflogioctl(struct ifnet *, u_long, caddr_t); -void pflogstart(struct ifnet *); -static int pflog_clone_create(struct if_clone *, int, caddr_t); -static void pflog_clone_destroy(struct ifnet *); +static int pflogoutput(struct ifnet *, struct mbuf *, struct sockaddr *, + struct route *); +static void pflogattach(int); +static int pflogioctl(struct ifnet *, u_long, caddr_t); +static void pflogstart(struct ifnet *); +static int pflog_clone_create(struct if_clone *, int, caddr_t); +static void pflog_clone_destroy(struct ifnet *); LIST_HEAD(, pflog_softc) pflogif_list; IFC_SIMPLE_DECLARE(pflog, 1); struct ifnet *pflogifs[PFLOGIFS_MAX]; /* for fast access */ -void +static void pflogattach(int npflog) { int i; @@ -186,7 +186,7 @@ pflog_clone_destroy(struct ifnet *ifp) /* * Start output on the pflog interface. */ -void +static void pflogstart(struct ifnet *ifp) { struct mbuf *m; @@ -204,7 +204,7 @@ pflogstart(struct ifnet *ifp) } } -int +static int pflogoutput(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, struct route *rt) { @@ -213,7 +213,7 @@ pflogoutput(struct ifnet *ifp, struct mb } /* ARGSUSED */ -int +static int pflogioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { switch (cmd) { @@ -230,7 +230,7 @@ pflogioctl(struct ifnet *ifp, u_long cmd return (0); } -int +static int pflog_packet(struct pfi_kif *kif, struct mbuf *m, sa_family_t af, u_int8_t dir, u_int8_t reason, struct pf_rule *rm, struct pf_rule *am, struct pf_ruleset *ruleset, struct pf_pdesc *pd) Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Wed Feb 29 14:44:42 2012 (r232297) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Wed Feb 29 14:50:17 2012 (r232298) @@ -122,26 +122,22 @@ struct pfsync_pkt { u_int8_t flags; }; -int pfsync_input_hmac(struct mbuf *, int); +static int pfsync_upd_tcp(struct pf_state *, struct pfsync_state_peer *, + struct pfsync_state_peer *); +static int pfsync_in_clr(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_ins(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_iack(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_upd(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_upd_c(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_ureq(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_del(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_del_c(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_bus(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_tdb(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_eof(struct pfsync_pkt *, struct mbuf *, int, int); +static int pfsync_in_error(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_upd_tcp(struct pf_state *, struct pfsync_state_peer *, - struct pfsync_state_peer *); - -int pfsync_in_clr(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_ins(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_iack(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_upd(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_upd_c(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_ureq(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_del(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_del_c(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_bus(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_tdb(struct pfsync_pkt *, struct mbuf *, int, int); -int pfsync_in_eof(struct pfsync_pkt *, struct mbuf *, int, int); - -int pfsync_in_error(struct pfsync_pkt *, struct mbuf *, int, int); - -int (*pfsync_acts[])(struct pfsync_pkt *, struct mbuf *, int, int) = { +static int (*pfsync_acts[])(struct pfsync_pkt *, struct mbuf *, int, int) = { pfsync_in_clr, /* PFSYNC_ACT_CLR */ pfsync_in_ins, /* PFSYNC_ACT_INS */ pfsync_in_iack, /* PFSYNC_ACT_INS_ACK */ @@ -164,12 +160,12 @@ struct pfsync_q { }; /* we have one of these for every PFSYNC_S_ */ -int pfsync_out_state(struct pf_state *, struct mbuf *, int); -int pfsync_out_iack(struct pf_state *, struct mbuf *, int); -int pfsync_out_upd_c(struct pf_state *, struct mbuf *, int); -int pfsync_out_del(struct pf_state *, struct mbuf *, int); +static int pfsync_out_state(struct pf_state *, struct mbuf *, int); +static int pfsync_out_iack(struct pf_state *, struct mbuf *, int); +static int pfsync_out_upd_c(struct pf_state *, struct mbuf *, int); +static int pfsync_out_del(struct pf_state *, struct mbuf *, int); -struct pfsync_q pfsync_qs[] = { +static struct pfsync_q pfsync_qs[] = { { pfsync_out_state, sizeof(struct pfsync_state), PFSYNC_ACT_INS }, { pfsync_out_iack, sizeof(struct pfsync_ins_ack), PFSYNC_ACT_INS_ACK }, { pfsync_out_state, sizeof(struct pfsync_state), PFSYNC_ACT_UPD }, @@ -177,8 +173,10 @@ struct pfsync_q pfsync_qs[] = { { pfsync_out_del, sizeof(struct pfsync_del_c), PFSYNC_ACT_DEL_C } }; -void pfsync_q_ins(struct pf_state *, int); -void pfsync_q_del(struct pf_state *); +static void pfsync_q_ins(struct pf_state *, int); +static void pfsync_q_del(struct pf_state *); + +static void pfsync_update_state(struct pf_state *); struct pfsync_upd_req_item { TAILQ_ENTRY(pfsync_upd_req_item) ur_entry; @@ -198,7 +196,7 @@ TAILQ_HEAD(pfsync_deferrals, pfsync_defe sizeof(struct pfsync_deferral)) #ifdef notyet -int pfsync_out_tdb(struct tdb *, struct mbuf *, int); +static int pfsync_out_tdb(struct tdb *, struct mbuf *, int); #endif struct pfsync_softc { @@ -266,36 +264,37 @@ SYSCTL_VNET_STRUCT(_net_pfsync, OID_AUTO SYSCTL_INT(_net_pfsync, OID_AUTO, carp_demotion_factor, CTLFLAG_RW, &VNET_NAME(pfsync_carp_adj), 0, "pfsync's CARP demotion factor adjustment"); -void pfsyncattach(int); -int pfsync_clone_create(struct if_clone *, int, caddr_t); -void pfsync_clone_destroy(struct ifnet *); -int pfsync_alloc_scrub_memory(struct pfsync_state_peer *, - struct pf_state_peer *); -void pfsync_update_net_tdb(struct pfsync_tdb *); -int pfsyncoutput(struct ifnet *, struct mbuf *, struct sockaddr *, - struct route *); -int pfsyncioctl(struct ifnet *, u_long, caddr_t); -void pfsyncstart(struct ifnet *); - -struct mbuf *pfsync_if_dequeue(struct ifnet *); - -void pfsync_deferred(struct pf_state *, int); -void pfsync_undefer(struct pfsync_deferral *, int); -void pfsync_defer_tmo(void *); - -void pfsync_request_update(u_int32_t, u_int64_t); -void pfsync_update_state_req(struct pf_state *); - -void pfsync_drop(struct pfsync_softc *); -void pfsync_sendout(void); -void pfsync_send_plus(void *, size_t); -void pfsync_timeout(void *); -void pfsync_tdb_timeout(void *); - -void pfsync_bulk_start(void); -void pfsync_bulk_status(u_int8_t); -void pfsync_bulk_update(void *); -void pfsync_bulk_fail(void *); +static int pfsync_clone_create(struct if_clone *, int, caddr_t); +static void pfsync_clone_destroy(struct ifnet *); +static int pfsync_alloc_scrub_memory(struct pfsync_state_peer *, + struct pf_state_peer *); +static int pfsyncoutput(struct ifnet *, struct mbuf *, struct sockaddr *, + struct route *); +static int pfsyncioctl(struct ifnet *, u_long, caddr_t); +static void pfsyncstart(struct ifnet *); + +static struct mbuf *pfsync_if_dequeue(struct ifnet *); + +static void pfsync_deferred(struct pf_state *, int); +static void pfsync_undefer(struct pfsync_deferral *, int); +static void pfsync_defer_tmo(void *); + +static void pfsync_request_update(u_int32_t, u_int64_t); +static void pfsync_update_state_req(struct pf_state *); + +static void pfsync_drop(struct pfsync_softc *); +static void pfsync_sendout(void); +static void pfsync_send_plus(void *, size_t); +static void pfsync_timeout(void *); + +static void pfsync_bulk_start(void); +static void pfsync_bulk_status(u_int8_t); +static void pfsync_bulk_update(void *); +static void pfsync_bulk_fail(void *); + +#ifdef IPSEC +static void pfsync_update_net_tdb(struct pfsync_tdb *); +#endif #define PFSYNC_MAX_BULKTRIES 12 @@ -305,12 +304,7 @@ VNET_DEFINE(struct if_clone, pfsync_clon #define V_pfsync_cloner VNET(pfsync_cloner) IFC_SIMPLE_DECLARE(pfsync, 1); -void -pfsyncattach(int npfsync) -{ - if_clone_attach(&pfsync_cloner); -} -int +static int pfsync_clone_create(struct if_clone *ifc, int unit, caddr_t param) { struct pfsync_softc *sc; @@ -368,7 +362,7 @@ pfsync_clone_create(struct if_clone *ifc return (0); } -void +static void pfsync_clone_destroy(struct ifnet *ifp) { struct pfsync_softc *sc = ifp->if_softc; @@ -400,7 +394,7 @@ pfsync_clone_destroy(struct ifnet *ifp) } -struct mbuf * +static struct mbuf * pfsync_if_dequeue(struct ifnet *ifp) { struct mbuf *m; @@ -416,7 +410,7 @@ pfsync_if_dequeue(struct ifnet *ifp) /* * Start output on the pfsync interface. */ -void +static void pfsyncstart(struct ifnet *ifp) { struct mbuf *m; @@ -426,7 +420,7 @@ pfsyncstart(struct ifnet *ifp) } } -int +static int pfsync_alloc_scrub_memory(struct pfsync_state_peer *s, struct pf_state_peer *d) { @@ -440,7 +434,7 @@ pfsync_alloc_scrub_memory(struct pfsync_ } -int +static int pfsync_state_import(struct pfsync_state *sp, u_int8_t flags) { struct pf_state *st = NULL; @@ -597,7 +591,7 @@ cleanup_state: /* pf_state_insert frees return (error); } -void +static void pfsync_input(struct mbuf *m, __unused int off) { struct pfsync_softc *sc = V_pfsyncif; @@ -650,13 +644,6 @@ pfsync_input(struct mbuf *m, __unused in goto done; } -#if 0 - if (pfsync_input_hmac(m, offset) != 0) { - /* XXX stats */ - goto done; - } -#endif - /* Cheaper to grab this now than having to mess with mbufs later */ pkt.ip = ip; pkt.src = ip->ip_src; @@ -687,7 +674,7 @@ done: m_freem(m); } -int +static int pfsync_in_clr(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_clr *clr; @@ -744,7 +731,7 @@ pfsync_in_clr(struct pfsync_pkt *pkt, st return (len); } -int +static int pfsync_in_ins(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct mbuf *mp; @@ -787,7 +774,7 @@ pfsync_in_ins(struct pfsync_pkt *pkt, st return (len); } -int +static int pfsync_in_iack(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_ins_ack *ia, *iaa; @@ -828,7 +815,7 @@ pfsync_in_iack(struct pfsync_pkt *pkt, s return (count * sizeof(struct pfsync_ins_ack)); } -int +static int pfsync_upd_tcp(struct pf_state *st, struct pfsync_state_peer *src, struct pfsync_state_peer *dst) { @@ -862,7 +849,7 @@ pfsync_upd_tcp(struct pf_state *st, stru return (sfail); } -int +static int pfsync_in_upd(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_state *sa, *sp; @@ -953,7 +940,7 @@ pfsync_in_upd(struct pfsync_pkt *pkt, st return (len); } -int +static int pfsync_in_upd_c(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_upd_c *ua, *up; @@ -1044,7 +1031,7 @@ pfsync_in_upd_c(struct pfsync_pkt *pkt, return (len); } -int +static int pfsync_in_ureq(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_upd_req *ur, *ura; @@ -1088,7 +1075,7 @@ pfsync_in_ureq(struct pfsync_pkt *pkt, s return (len); } -int +static int pfsync_in_del(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct mbuf *mp; @@ -1125,7 +1112,7 @@ pfsync_in_del(struct pfsync_pkt *pkt, st return (len); } -int +static int pfsync_in_del_c(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct mbuf *mp; @@ -1163,7 +1150,7 @@ pfsync_in_del_c(struct pfsync_pkt *pkt, return (len); } -int +static int pfsync_in_bus(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { struct pfsync_softc *sc = V_pfsyncif; @@ -1219,7 +1206,7 @@ pfsync_in_bus(struct pfsync_pkt *pkt, st return (len); } -int +static int pfsync_in_tdb(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { int len = count * sizeof(struct pfsync_tdb); @@ -1249,7 +1236,7 @@ pfsync_in_tdb(struct pfsync_pkt *pkt, st #if defined(IPSEC) /* Update an in-kernel tdb. Silently fail if no tdb is found. */ -void +static void pfsync_update_net_tdb(struct pfsync_tdb *pt) { struct tdb *tdb; @@ -1287,7 +1274,7 @@ bad: #endif -int +static int pfsync_in_eof(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { /* check if we are at the right place in the packet */ @@ -1299,7 +1286,7 @@ pfsync_in_eof(struct pfsync_pkt *pkt, st return (-1); } -int +static int pfsync_in_error(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) { V_pfsyncstats.pfsyncs_badact++; @@ -1308,7 +1295,7 @@ pfsync_in_error(struct pfsync_pkt *pkt, return (-1); } -int +static int pfsyncoutput(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst, struct route *rt) { @@ -1317,7 +1304,7 @@ pfsyncoutput(struct ifnet *ifp, struct m } /* ARGSUSED */ -int +static int pfsyncioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { struct pfsync_softc *sc = ifp->if_softc; @@ -1448,7 +1435,7 @@ pfsyncioctl(struct ifnet *ifp, u_long cm return (0); } -int +static int pfsync_out_state(struct pf_state *st, struct mbuf *m, int offset) { struct pfsync_state *sp = (struct pfsync_state *)(m->m_data + offset); @@ -1458,7 +1445,7 @@ pfsync_out_state(struct pf_state *st, st return (sizeof(*sp)); } -int +static int pfsync_out_iack(struct pf_state *st, struct mbuf *m, int offset) { struct pfsync_ins_ack *iack = @@ -1470,7 +1457,7 @@ pfsync_out_iack(struct pf_state *st, str return (sizeof(*iack)); } -int +static int pfsync_out_upd_c(struct pf_state *st, struct mbuf *m, int offset) { struct pfsync_upd_c *up = (struct pfsync_upd_c *)(m->m_data + offset); @@ -1492,7 +1479,7 @@ pfsync_out_upd_c(struct pf_state *st, st return (sizeof(*up)); } -int +static int pfsync_out_del(struct pf_state *st, struct mbuf *m, int offset) { struct pfsync_del_c *dp = (struct pfsync_del_c *)(m->m_data + offset); @@ -1505,7 +1492,7 @@ pfsync_out_del(struct pf_state *st, stru return (sizeof(*dp)); } -void +static void pfsync_drop(struct pfsync_softc *sc) { struct pf_state *st; @@ -1549,7 +1536,8 @@ pfsync_drop(struct pfsync_softc *sc) sc->sc_len = PFSYNC_MINPKT; } -void pfsync_sendout() +static void +pfsync_sendout() { pfsync_sendout1(1); } @@ -1730,7 +1718,7 @@ pfsync_sendout1(int schedswi) swi_sched(V_pfsync_swi_cookie, 0); } -void +static void pfsync_insert_state(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -1763,9 +1751,9 @@ pfsync_insert_state(struct pf_state *st) st->sync_updates = 0; } -int defer = 10; +static int defer = 10; -int +static int pfsync_defer(struct pf_state *st, struct mbuf *m) { struct pfsync_softc *sc = V_pfsyncif; @@ -1795,7 +1783,7 @@ pfsync_defer(struct pf_state *st, struct return (1); } -void +static void pfsync_undefer(struct pfsync_deferral *pd, int drop) { struct pfsync_softc *sc = V_pfsyncif; @@ -1820,7 +1808,7 @@ pfsync_undefer(struct pfsync_deferral *p uma_zfree(sc->sc_pool, pd); } -void +static void pfsync_defer_tmo(void *arg) { #ifdef VIMAGE @@ -1834,7 +1822,7 @@ pfsync_defer_tmo(void *arg) CURVNET_RESTORE(); } -void +static void pfsync_deferred(struct pf_state *st, int drop) { struct pfsync_softc *sc = V_pfsyncif; @@ -1850,9 +1838,9 @@ pfsync_deferred(struct pf_state *st, int panic("pfsync_send_deferred: unable to find deferred state"); } -u_int pfsync_upds = 0; +static u_int pfsync_upds = 0; -void +static void pfsync_update_state(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -1906,7 +1894,7 @@ pfsync_update_state(struct pf_state *st) } } -void +static void pfsync_request_update(u_int32_t creatorid, u_int64_t id) { struct pfsync_softc *sc = V_pfsyncif; @@ -1945,7 +1933,7 @@ pfsync_request_update(u_int32_t creatori schednetisr(NETISR_PFSYNC); } -void +static void pfsync_update_state_req(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -1981,7 +1969,7 @@ pfsync_update_state_req(struct pf_state } } -void +static void pfsync_delete_state(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -2025,7 +2013,7 @@ pfsync_delete_state(struct pf_state *st) } } -void +static void pfsync_clear_states(u_int32_t creatorid, const char *ifname) { struct { @@ -2051,7 +2039,7 @@ pfsync_clear_states(u_int32_t creatorid, pfsync_send_plus(&r, sizeof(r)); } -void +static void pfsync_q_ins(struct pf_state *st, int q) { struct pfsync_softc *sc = V_pfsyncif; @@ -2078,7 +2066,7 @@ pfsync_q_ins(struct pf_state *st, int q) st->sync_state = q; } -void +static void pfsync_q_del(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -2096,7 +2084,7 @@ pfsync_q_del(struct pf_state *st) } #ifdef notyet -void +static void pfsync_update_tdb(struct tdb *t, int output) { struct pfsync_softc *sc = V_pfsyncif; @@ -2134,7 +2122,7 @@ pfsync_update_tdb(struct tdb *t, int out CLR(t->tdb_flags, TDBF_PFSYNC_RPL); } -void +static void pfsync_delete_tdb(struct tdb *t) { struct pfsync_softc *sc = V_pfsyncif; @@ -2150,7 +2138,7 @@ pfsync_delete_tdb(struct tdb *t) sc->sc_len -= sizeof(struct pfsync_subheader); } -int +static int pfsync_out_tdb(struct tdb *t, struct mbuf *m, int offset) { struct pfsync_tdb *ut = (struct pfsync_tdb *)(m->m_data + offset); @@ -2185,7 +2173,7 @@ pfsync_out_tdb(struct tdb *t, struct mbu } #endif -void +static void pfsync_bulk_start(void) { struct pfsync_softc *sc = V_pfsyncif; @@ -2207,7 +2195,7 @@ pfsync_bulk_start(void) } } -void +static void pfsync_bulk_update(void *arg) { struct pfsync_softc *sc = arg; @@ -2250,7 +2238,7 @@ pfsync_bulk_update(void *arg) CURVNET_RESTORE(); } -void +static void pfsync_bulk_status(u_int8_t status) { struct { @@ -2274,7 +2262,7 @@ pfsync_bulk_status(u_int8_t status) pfsync_send_plus(&r, sizeof(r)); } -void +static void pfsync_bulk_fail(void *arg) { struct pfsync_softc *sc = arg; @@ -2303,7 +2291,7 @@ pfsync_bulk_fail(void *arg) CURVNET_RESTORE(); } -void +static void pfsync_send_plus(void *plus, size_t pluslen) { struct pfsync_softc *sc = V_pfsyncif; @@ -2320,7 +2308,7 @@ pfsync_send_plus(void *plus, size_t plus pfsync_sendout(); } -int +static int pfsync_up(void) { struct pfsync_softc *sc = V_pfsyncif; @@ -2331,7 +2319,7 @@ pfsync_up(void) return (1); } -int +static int pfsync_state_in_use(struct pf_state *st) { struct pfsync_softc *sc = V_pfsyncif; @@ -2347,10 +2335,10 @@ pfsync_state_in_use(struct pf_state *st) return (0); } -u_int pfsync_ints; -u_int pfsync_tmos; +static u_int pfsync_ints; +static u_int pfsync_tmos; -void +static void pfsync_timeout(void *arg) { #ifdef VIMAGE @@ -2369,7 +2357,7 @@ pfsync_timeout(void *arg) } /* this is a softnet/netisr handler */ -void +static void pfsyncintr(void *arg) { struct pfsync_softc *sc = arg; @@ -2397,12 +2385,12 @@ pfsyncintr(void *arg) CURVNET_RESTORE(); } -int +#ifdef notyet +static int pfsync_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { -#ifdef notyet /* All sysctl names at this level are terminal. */ if (namelen != 1) return (ENOTDIR); @@ -2414,9 +2402,9 @@ pfsync_sysctl(int *name, u_int namelen, return (sysctl_struct(oldp, oldlenp, newp, newlen, &V_pfsyncstats, sizeof(V_pfsyncstats))); } -#endif return (ENOPROTOOPT); } +#endif static int pfsync_multicast_setup(struct pfsync_softc *sc) Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.h ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.h Wed Feb 29 14:44:42 2012 (r232297) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.h Wed Feb 29 14:50:17 2012 (r232298) @@ -286,29 +286,10 @@ struct pfsyncreq { #define PFSYNC_S_DEFER 0xfe #define PFSYNC_S_NONE 0xff -void pfsync_input(struct mbuf *, __unused int); -int pfsync_sysctl(int *, u_int, void *, size_t *, - void *, size_t); - #define PFSYNC_SI_IOCTL 0x01 #define PFSYNC_SI_CKSUM 0x02 #define PFSYNC_SI_ACK 0x04 -int pfsync_state_import(struct pfsync_state *, u_int8_t); - -void pfsync_insert_state(struct pf_state *); -void pfsync_update_state(struct pf_state *); -void pfsync_delete_state(struct pf_state *); -void pfsync_clear_states(u_int32_t, const char *); - -#ifdef notyet -void pfsync_update_tdb(struct tdb *, int); -void pfsync_delete_tdb(struct tdb *); -#endif - -int pfsync_defer(struct pf_state *, struct mbuf *); -int pfsync_up(void); -int pfsync_state_in_use(struct pf_state *); -#endif +#endif /* _KERNEL */ #endif /* _NET_IF_PFSYNC_H_ */ Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Wed Feb 29 14:44:42 2012 (r232297) +++ projects/pf/head/sys/contrib/pf/net/pf.c Wed Feb 29 14:50:17 2012 (r232298) @@ -163,25 +163,26 @@ VNET_DEFINE(uma_zone_t, pf_state_key_pl VNET_DEFINE(uma_zone_t, pf_state_item_pl); VNET_DEFINE(uma_zone_t, pf_altq_pl); -void pf_init_threshold(struct pf_threshold *, u_int32_t, +static void pf_src_tree_remove_state(struct pf_state *); +static void pf_init_threshold(struct pf_threshold *, u_int32_t, u_int32_t); -void pf_add_threshold(struct pf_threshold *); -int pf_check_threshold(struct pf_threshold *); +static void pf_add_threshold(struct pf_threshold *); +static int pf_check_threshold(struct pf_threshold *); -void pf_change_ap(struct pf_addr *, u_int16_t *, +static void pf_change_ap(struct pf_addr *, u_int16_t *, u_int16_t *, u_int16_t *, struct pf_addr *, u_int16_t, u_int8_t, sa_family_t); -int pf_modulate_sack(struct mbuf *, int, struct pf_pdesc *, +static int pf_modulate_sack(struct mbuf *, int, struct pf_pdesc *, struct tcphdr *, struct pf_state_peer *); #ifdef INET6 -void pf_change_a6(struct pf_addr *, u_int16_t *, +static void pf_change_a6(struct pf_addr *, u_int16_t *, struct pf_addr *, u_int8_t); #endif /* INET6 */ -void pf_change_icmp(struct pf_addr *, u_int16_t *, +static void pf_change_icmp(struct pf_addr *, u_int16_t *, struct pf_addr *, struct pf_addr *, u_int16_t, u_int16_t *, u_int16_t *, u_int16_t *, u_int16_t *, u_int8_t, sa_family_t); -void pf_send_tcp(struct mbuf *, +static void pf_send_tcp(struct mbuf *, const struct pf_rule *, sa_family_t, const struct pf_addr *, const struct pf_addr *, u_int16_t, u_int16_t, u_int32_t, u_int32_t, @@ -189,10 +190,12 @@ void pf_send_tcp(struct mbuf *, u_int16_t, struct ether_header *, struct ifnet *); static void pf_send_icmp(struct mbuf *, u_int8_t, u_int8_t, sa_family_t, struct pf_rule *); -void pf_detach_state(struct pf_state *); -void pf_state_key_detach(struct pf_state *, int); -u_int32_t pf_tcp_iss(struct pf_pdesc *); -int pf_test_rule(struct pf_rule **, struct pf_state **, +static void pf_detach_state(struct pf_state *); +static int pf_state_key_attach(struct pf_state_key *, + struct pf_state *, int); +static void pf_state_key_detach(struct pf_state *, int); +static u_int32_t pf_tcp_iss(struct pf_pdesc *); +static int pf_test_rule(struct pf_rule **, struct pf_state **, int, struct pfi_kif *, struct mbuf *, int, void *, struct pf_pdesc *, struct pf_rule **, struct pf_ruleset **, struct ifqueue *, @@ -205,55 +208,60 @@ static __inline int pf_create_state(str u_int16_t, u_int16_t, int *, struct pfi_kif *, struct pf_state **, int, u_int16_t, u_int16_t, int); -int pf_test_fragment(struct pf_rule **, int, +static int pf_test_fragment(struct pf_rule **, int, struct pfi_kif *, struct mbuf *, void *, struct pf_pdesc *, struct pf_rule **, struct pf_ruleset **); -int pf_tcp_track_full(struct pf_state_peer *, +static int pf_tcp_track_full(struct pf_state_peer *, struct pf_state_peer *, struct pf_state **, struct pfi_kif *, struct mbuf *, int, struct pf_pdesc *, u_short *, int *); -int pf_tcp_track_sloppy(struct pf_state_peer *, +static int pf_tcp_track_sloppy(struct pf_state_peer *, struct pf_state_peer *, struct pf_state **, struct pf_pdesc *, u_short *); -int pf_test_state_tcp(struct pf_state **, int, +static int pf_test_state_tcp(struct pf_state **, int, struct pfi_kif *, struct mbuf *, int, void *, struct pf_pdesc *, u_short *); -int pf_test_state_udp(struct pf_state **, int, +static int pf_test_state_udp(struct pf_state **, int, struct pfi_kif *, struct mbuf *, int, void *, struct pf_pdesc *); -int pf_test_state_icmp(struct pf_state **, int, +static int pf_test_state_icmp(struct pf_state **, int, struct pfi_kif *, struct mbuf *, int, void *, struct pf_pdesc *, u_short *); -int pf_test_state_other(struct pf_state **, int, +static int pf_test_state_other(struct pf_state **, int, struct pfi_kif *, struct mbuf *, struct pf_pdesc *); -void pf_route(struct mbuf **, struct pf_rule *, int, +static void pf_route(struct mbuf **, struct pf_rule *, int, struct ifnet *, struct pf_state *, struct pf_pdesc *); -void pf_route6(struct mbuf **, struct pf_rule *, int, +static void pf_route6(struct mbuf **, struct pf_rule *, int, struct ifnet *, struct pf_state *, struct pf_pdesc *); -u_int8_t pf_get_wscale(struct mbuf *, int, u_int16_t, +static int pf_socket_lookup(int, struct pf_pdesc *, + struct inpcb *); +static u_int8_t pf_get_wscale(struct mbuf *, int, u_int16_t, sa_family_t); -u_int16_t pf_get_mss(struct mbuf *, int, u_int16_t, +static 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, +static u_int16_t pf_calc_mss(struct pf_addr *, sa_family_t, int, u_int16_t); -void pf_set_rt_ifp(struct pf_state *, +static void pf_set_rt_ifp(struct pf_state *, struct pf_addr *); -int pf_check_proto_cksum(struct mbuf *, int, int, +static int pf_check_proto_cksum(struct mbuf *, int, int, u_int8_t, sa_family_t); -void pf_print_state_parts(struct pf_state *, +static void pf_print_state_parts(struct pf_state *, struct pf_state_key *, struct pf_state_key *); -int pf_addr_wrap_neq(struct pf_addr_wrap *, +static int pf_addr_wrap_neq(struct pf_addr_wrap *, struct pf_addr_wrap *); -int pf_compare_state_keys(struct pf_state_key *, +static int pf_compare_state_keys(struct pf_state_key *, struct pf_state_key *, struct pfi_kif *, u_int); -struct pf_state *pf_find_state(struct pfi_kif *, +static struct pf_state *pf_find_state(struct pfi_kif *, struct pf_state_key_cmp *, u_int, struct mbuf *, struct pf_mtag *); -int pf_src_connlimit(struct pf_state **); -int pf_check_congestion(struct ifqueue *); +static int pf_src_connlimit(struct pf_state **); +static int pf_insert_src_node(struct pf_src_node **, + struct pf_rule *, struct pf_addr *, sa_family_t); +static int pf_check_congestion(struct ifqueue *); +static int pf_purge_expired_states(u_int32_t , int); int in4_cksum(struct mbuf *m, u_int8_t nxt, int off, int len); @@ -390,7 +398,7 @@ pf_addrcpy(struct pf_addr *dst, struct p } #endif /* INET6 */ -void +static void pf_init_threshold(struct pf_threshold *threshold, u_int32_t limit, u_int32_t seconds) { @@ -400,7 +408,7 @@ pf_init_threshold(struct pf_threshold *t threshold->last = time_second; } -void +static void pf_add_threshold(struct pf_threshold *threshold) { u_int32_t t = time_second, diff = t - threshold->last; @@ -414,13 +422,13 @@ pf_add_threshold(struct pf_threshold *th threshold->last = t; } -int +static int pf_check_threshold(struct pf_threshold *threshold) { return (threshold->count > threshold->limit); } -int +static int pf_src_connlimit(struct pf_state **state) { int bad = 0; @@ -519,7 +527,7 @@ pf_src_connlimit(struct pf_state **state return (1); } -int +static int pf_insert_src_node(struct pf_src_node **sn, struct pf_rule *rule, struct pf_addr *src, sa_family_t af) { @@ -667,7 +675,7 @@ pf_state_compare_id(struct pf_state *a, return (0); } -int +static int pf_state_key_attach(struct pf_state_key *sk, struct pf_state *s, int idx) { struct pf_state_item *si; @@ -735,7 +743,7 @@ pf_state_key_attach(struct pf_state_key return (0); } -void +static void pf_detach_state(struct pf_state *s) { if (s->key[PF_SK_WIRE] == s->key[PF_SK_STACK]) @@ -748,7 +756,7 @@ pf_detach_state(struct pf_state *s) pf_state_key_detach(s, PF_SK_WIRE); } -void +static void pf_state_key_detach(struct pf_state *s, int idx) { struct pf_state_item *si; @@ -884,7 +892,7 @@ pf_find_state_byid(struct pf_state_cmp * } /* XXX debug function, intended to be removed one day */ -int +static int pf_compare_state_keys(struct pf_state_key *a, struct pf_state_key *b, struct pfi_kif *kif, u_int dir) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 16:16:00 2012 Return-Path: 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 CA73D106564A; Wed, 29 Feb 2012 16:16:00 +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 B837A8FC19; Wed, 29 Feb 2012 16:16: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 q1TGG0CR034530; Wed, 29 Feb 2012 16:16:00 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1TGG0vW034526; Wed, 29 Feb 2012 16:16:00 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202291616.q1TGG0vW034526@svn.freebsd.org> From: Damjan Marion Date: Wed, 29 Feb 2012 16:16: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: r232306 - in projects/armv6/sys: arm/ti arm/ti/omap4 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 16:16:00 -0000 Author: dmarion Date: Wed Feb 29 16:16:00 2012 New Revision: 232306 URL: http://svn.freebsd.org/changeset/base/232306 Log: Rename as MMCHS driver will be used on non-omap platforms. Approved by: cognet (mentor) Added: projects/armv6/sys/arm/ti/ti_mmchs.c - copied, changed from r232305, projects/armv6/sys/arm/ti/omap_mmc.c projects/armv6/sys/arm/ti/ti_mmchs.h - copied, changed from r232305, projects/armv6/sys/arm/ti/omap_mmc.h Deleted: projects/armv6/sys/arm/ti/omap_mmc.c projects/armv6/sys/arm/ti/omap_mmc.h Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 projects/armv6/sys/boot/fdt/dts/pandaboard.dts Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/files.omap4 Wed Feb 29 15:18:53 2012 (r232305) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Wed Feb 29 16:16:00 2012 (r232306) @@ -7,7 +7,7 @@ arm/ti/ti_smc.S standard arm/ti/omap_gpio.c optional gpio arm/ti/usb/omap_ehci.c optional usb ehci arm/ti/omap_dma.c optional omap_dma -arm/ti/omap_mmc.c optional mmc +arm/ti/ti_mmchs.c optional mmc arm/ti/omap4/omap4_l2cache.c optional pl310 arm/ti/omap4/omap4_prcm_clks.c standard Copied and modified: projects/armv6/sys/arm/ti/ti_mmchs.c (from r232305, projects/armv6/sys/arm/ti/omap_mmc.c) ============================================================================== --- projects/armv6/sys/arm/ti/omap_mmc.c Wed Feb 29 15:18:53 2012 (r232305, copy source) +++ projects/armv6/sys/arm/ti/ti_mmchs.c Wed Feb 29 16:16:00 2012 (r232306) @@ -83,7 +83,7 @@ __FBSDID("$FreeBSD$"); #include "mmcbus_if.h" #include -#include +#include #include #include @@ -91,16 +91,16 @@ __FBSDID("$FreeBSD$"); #include #ifdef DEBUG -#define omap_mmc_dbg(sc, fmt, args...) \ +#define ti_mmchs_dbg(sc, fmt, args...) \ device_printf((sc)->sc_dev, fmt, ## args); #else -#define omap_mmc_dbg(sc, fmt, args...) +#define ti_mmchs_dbg(sc, fmt, args...) #endif /** * Structure that stores the driver context */ -struct omap_mmc_softc { +struct ti_mmchs_softc { device_t sc_dev; struct resource* sc_irq_res; struct resource* sc_mem_res; @@ -156,16 +156,16 @@ struct omap_mmc_softc { #define OMAP_MMC_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) #define OMAP_MMC_LOCK_INIT(_sc) \ mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->sc_dev), \ - "omap_mmc", MTX_DEF) + "ti_mmchs", MTX_DEF) #define OMAP_MMC_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx); #define OMAP_MMC_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED); #define OMAP_MMC_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED); -static void omap_mmc_start(struct omap_mmc_softc *sc); +static void ti_mmchs_start(struct ti_mmchs_softc *sc); /** - * omap_mmc_read_4 - reads a 32-bit value from a register - * omap_mmc_write_4 - writes a 32-bit value to a register + * ti_mmchs_read_4 - reads a 32-bit value from a register + * ti_mmchs_write_4 - writes a 32-bit value to a register * @sc: pointer to the driver context * @off: register offset to read from * @val: the value to write into the register @@ -177,19 +177,19 @@ static void omap_mmc_start(struct omap_m * The 32-bit value read from the register */ static inline uint32_t -omap_mmc_read_4(struct omap_mmc_softc *sc, bus_size_t off) +ti_mmchs_read_4(struct ti_mmchs_softc *sc, bus_size_t off) { return bus_read_4(sc->sc_mem_res, (sc->sc_reg_off + off)); } static inline void -omap_mmc_write_4(struct omap_mmc_softc *sc, bus_size_t off, uint32_t val) +ti_mmchs_write_4(struct ti_mmchs_softc *sc, bus_size_t off, uint32_t val) { bus_write_4(sc->sc_mem_res, (sc->sc_reg_off + off), val); } /** - * omap_mmc_reset_controller - + * ti_mmchs_reset_controller - * @arg: caller supplied arg * @segs: array of segments (although in our case should only be one) * @nsegs: number of segments (in our case should be 1) @@ -199,35 +199,35 @@ omap_mmc_write_4(struct omap_mmc_softc * * */ static void -omap_mmc_reset_controller(struct omap_mmc_softc *sc, uint32_t bit) +ti_mmchs_reset_controller(struct ti_mmchs_softc *sc, uint32_t bit) { unsigned long attempts; uint32_t sysctl; - omap_mmc_dbg(sc, "reseting controller - bit 0x%08x\n", bit); + ti_mmchs_dbg(sc, "reseting controller - bit 0x%08x\n", bit); - sysctl = omap_mmc_read_4(sc, MMCHS_SYSCTL); - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl | bit); + sysctl = ti_mmchs_read_4(sc, MMCHS_SYSCTL); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl | bit); if ((ti_chip() == CHIP_OMAP_4) && (ti_revision() > OMAP4430_REV_ES1_0)) { /* OMAP4 ES2 and greater has an updated reset logic. * Monitor a 0->1 transition first */ attempts = 10000; - while (!(omap_mmc_read_4(sc, MMCHS_SYSCTL) & bit) && (attempts-- > 0)) + while (!(ti_mmchs_read_4(sc, MMCHS_SYSCTL) & bit) && (attempts-- > 0)) continue; } attempts = 10000; - while ((omap_mmc_read_4(sc, MMCHS_SYSCTL) & bit) && (attempts-- > 0)) + while ((ti_mmchs_read_4(sc, MMCHS_SYSCTL) & bit) && (attempts-- > 0)) continue; - if (omap_mmc_read_4(sc, MMCHS_SYSCTL) & bit) + if (ti_mmchs_read_4(sc, MMCHS_SYSCTL) & bit) device_printf(sc->sc_dev, "Error - Timeout waiting on controller reset\n"); } /** - * omap_mmc_getaddr - called by the DMA function to simply return the phys addr + * ti_mmchs_getaddr - called by the DMA function to simply return the phys addr * @arg: caller supplied arg * @segs: array of segments (although in our case should only be one) * @nsegs: number of segments (in our case should be 1) @@ -237,11 +237,11 @@ omap_mmc_reset_controller(struct omap_mm * of segments, each segment is a phsyical chunk of memory. However in our case * we should only have one segment, because we don't (yet?) support DMA scatter * gather. To ensure we only have one segment, the DMA tag was created by - * bus_dma_tag_create() (called from omap_mmc_attach) with nsegments set to 1. + * bus_dma_tag_create() (called from ti_mmchs_attach) with nsegments set to 1. * */ static void -omap_mmc_getaddr(void *arg, bus_dma_segment_t *segs, int nsegs, int error) +ti_mmchs_getaddr(void *arg, bus_dma_segment_t *segs, int nsegs, int error) { if (error != 0) return; @@ -250,7 +250,7 @@ omap_mmc_getaddr(void *arg, bus_dma_segm } /** - * omap_mmc_dma_intr - interrupt handler for DMA events triggered by the controller + * ti_mmchs_dma_intr - interrupt handler for DMA events triggered by the controller * @ch: the dma channel number * @status: bit field of the status bytes * @data: callback data, in this case a pointer to the controller struct @@ -261,7 +261,7 @@ omap_mmc_getaddr(void *arg, bus_dma_segm * */ static void -omap_mmc_dma_intr(unsigned int ch, uint32_t status, void *data) +ti_mmchs_dma_intr(unsigned int ch, uint32_t status, void *data) { /* Ignore for now ... we don't need this interrupt as we already have the * interrupt from the MMC controller. @@ -269,7 +269,7 @@ omap_mmc_dma_intr(unsigned int ch, uint3 } /** - * omap_mmc_intr_xfer_compl - called if a 'transfer complete' IRQ was received + * ti_mmchs_intr_xfer_compl - called if a 'transfer complete' IRQ was received * @sc: pointer to the driver context * @cmd: the command that was sent previously * @@ -282,12 +282,12 @@ omap_mmc_dma_intr(unsigned int ch, uint3 * Return value indicates if the transaction is complete, not done = 0, done != 0 */ static int -omap_mmc_intr_xfer_compl(struct omap_mmc_softc *sc, struct mmc_command *cmd) +ti_mmchs_intr_xfer_compl(struct ti_mmchs_softc *sc, struct mmc_command *cmd) { uint32_t cmd_reg; /* Read command register to test whether this command was a read or write. */ - cmd_reg = omap_mmc_read_4(sc, MMCHS_CMD); + cmd_reg = ti_mmchs_read_4(sc, MMCHS_CMD); /* Sync-up the DMA buffer so the caller can access the new memory */ if (cmd_reg & MMCHS_CMD_DDIR) { @@ -319,7 +319,7 @@ omap_mmc_intr_xfer_compl(struct omap_mmc } /** - * omap_mmc_intr_cmd_compl - called if a 'command complete' IRQ was received + * ti_mmchs_intr_cmd_compl - called if a 'command complete' IRQ was received * @sc: pointer to the driver context * @cmd: the command that was sent previously * @@ -331,7 +331,7 @@ omap_mmc_intr_xfer_compl(struct omap_mmc * Return value indicates if the transaction is complete, not done = 0, done != 0 */ static int -omap_mmc_intr_cmd_compl(struct omap_mmc_softc *sc, struct mmc_command *cmd) +ti_mmchs_intr_cmd_compl(struct ti_mmchs_softc *sc, struct mmc_command *cmd) { uint32_t cmd_reg; @@ -339,23 +339,23 @@ omap_mmc_intr_cmd_compl(struct omap_mmc_ * expected */ if (cmd != NULL && (cmd->flags & MMC_RSP_PRESENT)) { if (cmd->flags & MMC_RSP_136) { - cmd->resp[3] = omap_mmc_read_4(sc, MMCHS_RSP10); - cmd->resp[2] = omap_mmc_read_4(sc, MMCHS_RSP32); - cmd->resp[1] = omap_mmc_read_4(sc, MMCHS_RSP54); - cmd->resp[0] = omap_mmc_read_4(sc, MMCHS_RSP76); + cmd->resp[3] = ti_mmchs_read_4(sc, MMCHS_RSP10); + cmd->resp[2] = ti_mmchs_read_4(sc, MMCHS_RSP32); + cmd->resp[1] = ti_mmchs_read_4(sc, MMCHS_RSP54); + cmd->resp[0] = ti_mmchs_read_4(sc, MMCHS_RSP76); } else { - cmd->resp[0] = omap_mmc_read_4(sc, MMCHS_RSP10); + cmd->resp[0] = ti_mmchs_read_4(sc, MMCHS_RSP10); } } /* Check if the command was expecting some data transfer, if not * we are done. */ - cmd_reg = omap_mmc_read_4(sc, MMCHS_CMD); + cmd_reg = ti_mmchs_read_4(sc, MMCHS_CMD); return ((cmd_reg & MMCHS_CMD_DP) == 0); } /** - * omap_mmc_intr_error - handles error interrupts + * ti_mmchs_intr_error - handles error interrupts * @sc: pointer to the driver context * @cmd: the command that was sent previously * @stat_reg: the value that was in the status register @@ -368,10 +368,10 @@ omap_mmc_intr_cmd_compl(struct omap_mmc_ * Return value indicates if the transaction is complete, not done = 0, done != 0 */ static int -omap_mmc_intr_error(struct omap_mmc_softc *sc, struct mmc_command *cmd, +ti_mmchs_intr_error(struct ti_mmchs_softc *sc, struct mmc_command *cmd, uint32_t stat_reg) { - omap_mmc_dbg(sc, "error in xfer - stat 0x%08x\n", stat_reg); + ti_mmchs_dbg(sc, "error in xfer - stat 0x%08x\n", stat_reg); /* Ignore CRC errors on CMD2 and ACMD47, per relevant standards */ if ((stat_reg & MMCHS_STAT_CCRC) && (cmd->opcode == MMC_SEND_OP_COND || @@ -385,10 +385,10 @@ omap_mmc_intr_error(struct omap_mmc_soft cmd->error = MMC_ERR_FAILED; /* If a dma transaction we should also stop the dma transfer */ - if (omap_mmc_read_4(sc, MMCHS_CMD) & MMCHS_CMD_DE) { + if (ti_mmchs_read_4(sc, MMCHS_CMD) & MMCHS_CMD_DE) { /* Abort the DMA transfer (DDIR bit tells direction) */ - if (omap_mmc_read_4(sc, MMCHS_CMD) & MMCHS_CMD_DDIR) + if (ti_mmchs_read_4(sc, MMCHS_CMD) & MMCHS_CMD_DDIR) omap_dma_stop_xfer(sc->sc_dmach_rd); else omap_dma_stop_xfer(sc->sc_dmach_wr); @@ -402,12 +402,12 @@ omap_mmc_intr_error(struct omap_mmc_soft /* Command error occured? ... if so issue a soft reset for the cmd fsm */ if (stat_reg & (MMCHS_STAT_CCRC | MMCHS_STAT_CTO)) { - omap_mmc_reset_controller(sc, MMCHS_SYSCTL_SRC); + ti_mmchs_reset_controller(sc, MMCHS_SYSCTL_SRC); } /* Data error occured? ... if so issue a soft reset for the data line */ if (stat_reg & (MMCHS_STAT_DEB | MMCHS_STAT_DCRC | MMCHS_STAT_DTO)) { - omap_mmc_reset_controller(sc, MMCHS_SYSCTL_SRD); + ti_mmchs_reset_controller(sc, MMCHS_SYSCTL_SRD); } /* On any error the command is cancelled ... so we are done */ @@ -415,7 +415,7 @@ omap_mmc_intr_error(struct omap_mmc_soft } /** - * omap_mmc_intr - interrupt handler for MMC/SD/SDIO controller + * ti_mmchs_intr - interrupt handler for MMC/SD/SDIO controller * @arg: pointer to the driver context * * Interrupt handler for the MMC/SD/SDIO controller, responsible for handling @@ -428,27 +428,27 @@ omap_mmc_intr_error(struct omap_mmc_soft * nothing */ static void -omap_mmc_intr(void *arg) +ti_mmchs_intr(void *arg) { - struct omap_mmc_softc *sc = (struct omap_mmc_softc *) arg; + struct ti_mmchs_softc *sc = (struct ti_mmchs_softc *) arg; uint32_t stat_reg; int done = 0; OMAP_MMC_LOCK(sc); - stat_reg = omap_mmc_read_4(sc, MMCHS_STAT) - & (omap_mmc_read_4(sc, MMCHS_IE) | MMCHS_STAT_ERRI); + stat_reg = ti_mmchs_read_4(sc, MMCHS_STAT) + & (ti_mmchs_read_4(sc, MMCHS_IE) | MMCHS_STAT_ERRI); if (sc->curcmd == NULL) { device_printf(sc->sc_dev, "Error: current cmd NULL, already done?\n"); - omap_mmc_write_4(sc, MMCHS_STAT, stat_reg); + ti_mmchs_write_4(sc, MMCHS_STAT, stat_reg); OMAP_MMC_UNLOCK(sc); return; } if (stat_reg & MMCHS_STAT_ERRI) { /* An error has been tripped in the status register */ - done = omap_mmc_intr_error(sc, sc->curcmd, stat_reg); + done = ti_mmchs_intr_error(sc, sc->curcmd, stat_reg); } else { @@ -463,37 +463,37 @@ omap_mmc_intr(void *arg) /* Check if the command completed */ if (stat_reg & MMCHS_STAT_CC) { - done = omap_mmc_intr_cmd_compl(sc, sc->curcmd); + done = ti_mmchs_intr_cmd_compl(sc, sc->curcmd); } /* Check if the transfer has completed */ if (stat_reg & MMCHS_STAT_TC) { - done = omap_mmc_intr_xfer_compl(sc, sc->curcmd); + done = ti_mmchs_intr_xfer_compl(sc, sc->curcmd); } } /* Clear all the interrupt status bits by writing the value back */ - omap_mmc_write_4(sc, MMCHS_STAT, stat_reg); + ti_mmchs_write_4(sc, MMCHS_STAT, stat_reg); /* This may mark the command as done if there is no stop request */ /* TODO: This is a bit ugly, needs fix-up */ if (done) { - omap_mmc_start(sc); + ti_mmchs_start(sc); } OMAP_MMC_UNLOCK(sc); } /** - * omap_mmc_start_cmd - starts the given command + * ti_mmchs_start_cmd - starts the given command * @sc: pointer to the driver context * @cmd: the command to start * * The call tree for this function is - * - omap_mmc_start_cmd - * - omap_mmc_start - * - omap_mmc_request + * - ti_mmchs_start_cmd + * - ti_mmchs_start + * - ti_mmchs_request * * LOCKING: * Caller should be holding the OMAP_MMC lock. @@ -502,7 +502,7 @@ omap_mmc_intr(void *arg) * nothing */ static void -omap_mmc_start_cmd(struct omap_mmc_softc *sc, struct mmc_command *cmd) +ti_mmchs_start_cmd(struct ti_mmchs_softc *sc, struct mmc_command *cmd) { uint32_t cmd_reg, con_reg, ise_reg; struct mmc_data *data; @@ -518,7 +518,7 @@ omap_mmc_start_cmd(struct omap_mmc_softc /* Ensure the STR and MIT bits are cleared, these are only used for special * command types. */ - con_reg = omap_mmc_read_4(sc, MMCHS_CON); + con_reg = ti_mmchs_read_4(sc, MMCHS_CON); con_reg &= ~(MMCHS_CON_STR | MMCHS_CON_MIT); /* Load the command into bits 29:24 of the CMD register */ @@ -561,14 +561,14 @@ omap_mmc_start_cmd(struct omap_mmc_softc /* Check if there is any data to write */ if (data == NULL) { /* Clear the block count */ - omap_mmc_write_4(sc, MMCHS_BLK, 0); + ti_mmchs_write_4(sc, MMCHS_BLK, 0); /* The no data case is fairly simple */ - omap_mmc_write_4(sc, MMCHS_CON, con_reg); - omap_mmc_write_4(sc, MMCHS_IE, ise_reg); - omap_mmc_write_4(sc, MMCHS_ISE, ise_reg); - omap_mmc_write_4(sc, MMCHS_ARG, cmd->arg); - omap_mmc_write_4(sc, MMCHS_CMD, cmd_reg); + ti_mmchs_write_4(sc, MMCHS_CON, con_reg); + ti_mmchs_write_4(sc, MMCHS_IE, ise_reg); + ti_mmchs_write_4(sc, MMCHS_ISE, ise_reg); + ti_mmchs_write_4(sc, MMCHS_ARG, cmd->arg); + ti_mmchs_write_4(sc, MMCHS_CMD, cmd_reg); return; } @@ -598,7 +598,7 @@ omap_mmc_start_cmd(struct omap_mmc_softc cmd_reg |= MMCHS_CMD_DE; /* Set the block size and block count */ - omap_mmc_write_4(sc, MMCHS_BLK, (1 << 16) | data->len); + ti_mmchs_write_4(sc, MMCHS_BLK, (1 << 16) | data->len); /* Setup the DMA stuff */ if (data->flags & (MMC_DATA_READ | MMC_DATA_WRITE)) { @@ -608,7 +608,7 @@ omap_mmc_start_cmd(struct omap_mmc_softc /* Map the buffer buf into bus space using the dmamap map. */ if (bus_dmamap_load(sc->sc_dmatag, sc->sc_dmamap, vaddr, data->len, - omap_mmc_getaddr, &paddr, 0) != 0) { + ti_mmchs_getaddr, &paddr, 0) != 0) { if (req->cmd->flags & STOP_STARTED) req->stop->error = MMC_ERR_NO_MEMORY; @@ -644,20 +644,20 @@ omap_mmc_start_cmd(struct omap_mmc_softc } /* Finally kick off the command */ - omap_mmc_write_4(sc, MMCHS_CON, con_reg); - omap_mmc_write_4(sc, MMCHS_IE, ise_reg); - omap_mmc_write_4(sc, MMCHS_ISE, ise_reg); - omap_mmc_write_4(sc, MMCHS_ARG, cmd->arg); - omap_mmc_write_4(sc, MMCHS_CMD, cmd_reg); + ti_mmchs_write_4(sc, MMCHS_CON, con_reg); + ti_mmchs_write_4(sc, MMCHS_IE, ise_reg); + ti_mmchs_write_4(sc, MMCHS_ISE, ise_reg); + ti_mmchs_write_4(sc, MMCHS_ARG, cmd->arg); + ti_mmchs_write_4(sc, MMCHS_CMD, cmd_reg); /* and we're done */ } /** - * omap_mmc_start - starts a request stored in the driver context + * ti_mmchs_start - starts a request stored in the driver context * @sc: pointer to the driver context * - * This function is called by omap_mmc_request() in response to a read/write + * This function is called by ti_mmchs_request() in response to a read/write * request from the MMC core module. * * LOCKING: @@ -667,7 +667,7 @@ omap_mmc_start_cmd(struct omap_mmc_softc * nothing */ static void -omap_mmc_start(struct omap_mmc_softc *sc) +ti_mmchs_start(struct ti_mmchs_softc *sc) { struct mmc_request *req; @@ -679,13 +679,13 @@ omap_mmc_start(struct omap_mmc_softc *sc /* assert locked */ if (!(sc->flags & CMD_STARTED)) { sc->flags |= CMD_STARTED; - omap_mmc_start_cmd(sc, req->cmd); + ti_mmchs_start_cmd(sc, req->cmd); return; } if (!(sc->flags & STOP_STARTED) && req->stop) { sc->flags |= STOP_STARTED; - omap_mmc_start_cmd(sc, req->stop); + ti_mmchs_start_cmd(sc, req->stop); return; } @@ -696,7 +696,7 @@ omap_mmc_start(struct omap_mmc_softc *sc } /** - * omap_mmc_request - entry point for all read/write/cmd requests + * ti_mmchs_request - entry point for all read/write/cmd requests * @brdev: mmc bridge device handle * @reqdev: the device doing the requesting ? * @req: the action requested @@ -709,9 +709,9 @@ omap_mmc_start(struct omap_mmc_softc *sc * EBUSY if the driver is already performing a request */ static int -omap_mmc_request(device_t brdev, device_t reqdev, struct mmc_request *req) +ti_mmchs_request(device_t brdev, device_t reqdev, struct mmc_request *req) { - struct omap_mmc_softc *sc = device_get_softc(brdev); + struct ti_mmchs_softc *sc = device_get_softc(brdev); OMAP_MMC_LOCK(sc); @@ -728,7 +728,7 @@ omap_mmc_request(device_t brdev, device_ /* Store the request and start the command */ sc->req = req; sc->flags = 0; - omap_mmc_start(sc); + ti_mmchs_start(sc); OMAP_MMC_UNLOCK(sc); @@ -736,7 +736,7 @@ omap_mmc_request(device_t brdev, device_ } /** - * omap_mmc_get_ro - returns the status of the read-only setting + * ti_mmchs_get_ro - returns the status of the read-only setting * @brdev: mmc bridge device handle * @reqdev: device doing the request * @@ -752,9 +752,9 @@ omap_mmc_request(device_t brdev, device_ * 1 if read only */ static int -omap_mmc_get_ro(device_t brdev, device_t reqdev) +ti_mmchs_get_ro(device_t brdev, device_t reqdev) { - struct omap_mmc_softc *sc = device_get_softc(brdev); + struct ti_mmchs_softc *sc = device_get_softc(brdev); unsigned int readonly = 0; OMAP_MMC_LOCK(sc); @@ -772,7 +772,7 @@ omap_mmc_get_ro(device_t brdev, device_t } /** - * omap_mmc_send_init_stream - sets bus/controller settings + * ti_mmchs_send_init_stream - sets bus/controller settings * @brdev: mmc bridge device handle * @reqdev: device doing the request * @@ -785,12 +785,12 @@ omap_mmc_get_ro(device_t brdev, device_t * 0 if function succeeded */ static void -omap_mmc_send_init_stream(struct omap_mmc_softc *sc) +ti_mmchs_send_init_stream(struct ti_mmchs_softc *sc) { unsigned long timeout; uint32_t ie, ise, con; - omap_mmc_dbg(sc, "Performing init sequence\n"); + ti_mmchs_dbg(sc, "Performing init sequence\n"); /* Prior to issuing any command, the MMCHS controller has to execute a * special INIT procedure. The MMCHS controller has to generate a clock @@ -812,20 +812,20 @@ omap_mmc_send_init_stream(struct omap_mm */ /* Enable interrupt generation */ - ie = omap_mmc_read_4(sc, MMCHS_IE); - omap_mmc_write_4(sc, MMCHS_IE, 0x307F0033); + ie = ti_mmchs_read_4(sc, MMCHS_IE); + ti_mmchs_write_4(sc, MMCHS_IE, 0x307F0033); /* Disable generation of status events (stops interrupt triggering) */ - ise = omap_mmc_read_4(sc, MMCHS_ISE); - omap_mmc_write_4(sc, MMCHS_ISE, 0); + ise = ti_mmchs_read_4(sc, MMCHS_ISE); + ti_mmchs_write_4(sc, MMCHS_ISE, 0); /* Set the initialise stream bit */ - con = omap_mmc_read_4(sc, MMCHS_CON); + con = ti_mmchs_read_4(sc, MMCHS_CON); con |= MMCHS_CON_INIT; - omap_mmc_write_4(sc, MMCHS_CON, con); + ti_mmchs_write_4(sc, MMCHS_CON, con); /* Write a dummy command 0x00 */ - omap_mmc_write_4(sc, MMCHS_CMD, 0x00000000); + ti_mmchs_write_4(sc, MMCHS_CMD, 0x00000000); /* Loop waiting for the command to finish */ timeout = hz; @@ -835,13 +835,13 @@ omap_mmc_send_init_stream(struct omap_mm device_printf(sc->sc_dev, "Error: first stream init timed out\n"); break; } - } while (!(omap_mmc_read_4(sc, MMCHS_STAT) & MMCHS_STAT_CC)); + } while (!(ti_mmchs_read_4(sc, MMCHS_STAT) & MMCHS_STAT_CC)); /* Clear the command complete status bit */ - omap_mmc_write_4(sc, MMCHS_STAT, MMCHS_STAT_CC); + ti_mmchs_write_4(sc, MMCHS_STAT, MMCHS_STAT_CC); /* Write another dummy command 0x00 */ - omap_mmc_write_4(sc, MMCHS_CMD, 0x00000000); + ti_mmchs_write_4(sc, MMCHS_CMD, 0x00000000); /* Loop waiting for the second command to finish */ timeout = hz; @@ -851,22 +851,22 @@ omap_mmc_send_init_stream(struct omap_mm device_printf(sc->sc_dev, "Error: second stream init timed out\n"); break; } - } while (!(omap_mmc_read_4(sc, MMCHS_STAT) & MMCHS_STAT_CC)); + } while (!(ti_mmchs_read_4(sc, MMCHS_STAT) & MMCHS_STAT_CC)); /* Clear the stream init bit */ con &= ~MMCHS_CON_INIT; - omap_mmc_write_4(sc, MMCHS_CON, con); + ti_mmchs_write_4(sc, MMCHS_CON, con); /* Clear the status register, then restore the IE and ISE registers */ - omap_mmc_write_4(sc, MMCHS_STAT, 0xffffffff); - omap_mmc_read_4(sc, MMCHS_STAT); + ti_mmchs_write_4(sc, MMCHS_STAT, 0xffffffff); + ti_mmchs_read_4(sc, MMCHS_STAT); - omap_mmc_write_4(sc, MMCHS_ISE, ise); - omap_mmc_write_4(sc, MMCHS_IE, ie); + ti_mmchs_write_4(sc, MMCHS_ISE, ise); + ti_mmchs_write_4(sc, MMCHS_IE, ie); } /** - * omap_mmc_update_ios - sets bus/controller settings + * ti_mmchs_update_ios - sets bus/controller settings * @brdev: mmc bridge device handle * @reqdev: device doing the request * @@ -881,9 +881,9 @@ omap_mmc_send_init_stream(struct omap_mm * 0 if function succeeded */ static int -omap_mmc_update_ios(device_t brdev, device_t reqdev) +ti_mmchs_update_ios(device_t brdev, device_t reqdev) { - struct omap_mmc_softc *sc; + struct ti_mmchs_softc *sc; struct mmc_host *host; struct mmc_ios *ios; uint32_t clkdiv; @@ -899,8 +899,8 @@ omap_mmc_update_ios(device_t brdev, devi ios = &host->ios; /* Read the initial values of the registers */ - hctl_reg = omap_mmc_read_4(sc, MMCHS_HCTL); - con_reg = omap_mmc_read_4(sc, MMCHS_CON); + hctl_reg = ti_mmchs_read_4(sc, MMCHS_HCTL); + con_reg = ti_mmchs_read_4(sc, MMCHS_CON); /* Set the bus width */ switch (ios->bus_width) { @@ -918,8 +918,8 @@ omap_mmc_update_ios(device_t brdev, devi } /* Finally write all these settings back to the registers */ - omap_mmc_write_4(sc, MMCHS_HCTL, hctl_reg); - omap_mmc_write_4(sc, MMCHS_CON, con_reg); + ti_mmchs_write_4(sc, MMCHS_HCTL, hctl_reg); + ti_mmchs_write_4(sc, MMCHS_CON, con_reg); /* Check if we need to change the external voltage regulator */ if (sc->sc_cur_power_mode != ios->power_mode) { @@ -927,7 +927,7 @@ omap_mmc_update_ios(device_t brdev, devi if (ios->power_mode == power_up) { /* Set the power level */ - hctl_reg = omap_mmc_read_4(sc, MMCHS_HCTL); + hctl_reg = ti_mmchs_read_4(sc, MMCHS_HCTL); hctl_reg &= ~(MMCHS_HCTL_SDVS_MASK | MMCHS_HCTL_SDBP); if ((ios->vdd == -1) || (ios->vdd >= vdd_240)) { @@ -938,16 +938,16 @@ omap_mmc_update_ios(device_t brdev, devi hctl_reg |= MMCHS_HCTL_SDVS_V18; } - omap_mmc_write_4(sc, MMCHS_HCTL, hctl_reg); + ti_mmchs_write_4(sc, MMCHS_HCTL, hctl_reg); /* Set the desired voltage on the regulator */ if (sc->sc_vreg_dev && sc->sc_vreg_name) twl_vreg_set_voltage(sc->sc_vreg_dev, sc->sc_vreg_name, mv); /* Enable the bus power */ - omap_mmc_write_4(sc, MMCHS_HCTL, (hctl_reg | MMCHS_HCTL_SDBP)); + ti_mmchs_write_4(sc, MMCHS_HCTL, (hctl_reg | MMCHS_HCTL_SDBP)); timeout = hz; - while (!(omap_mmc_read_4(sc, MMCHS_HCTL) & MMCHS_HCTL_SDBP)) { + while (!(ti_mmchs_read_4(sc, MMCHS_HCTL) & MMCHS_HCTL_SDBP)) { if (timeout-- == 0) break; pause("MMC_PWRON", 1); @@ -955,8 +955,8 @@ omap_mmc_update_ios(device_t brdev, devi } else if (ios->power_mode == power_off) { /* Disable the bus power */ - hctl_reg = omap_mmc_read_4(sc, MMCHS_HCTL); - omap_mmc_write_4(sc, MMCHS_HCTL, (hctl_reg & ~MMCHS_HCTL_SDBP)); + hctl_reg = ti_mmchs_read_4(sc, MMCHS_HCTL); + ti_mmchs_write_4(sc, MMCHS_HCTL, (hctl_reg & ~MMCHS_HCTL_SDBP)); /* Turn the power off on the voltage regulator */ if (sc->sc_vreg_dev && sc->sc_vreg_name) @@ -972,7 +972,7 @@ omap_mmc_update_ios(device_t brdev, devi } /* need the MMCHS_SYSCTL register */ - sysctl_reg = omap_mmc_read_4(sc, MMCHS_SYSCTL); + sysctl_reg = ti_mmchs_read_4(sc, MMCHS_SYSCTL); /* Just in case this hasn't been setup before, set the timeout to the default */ sysctl_reg &= ~MMCHS_SYSCTL_DTO_MASK; @@ -980,7 +980,7 @@ omap_mmc_update_ios(device_t brdev, devi /* Disable the clock output while configuring the new clock */ sysctl_reg &= ~(MMCHS_SYSCTL_ICE | MMCHS_SYSCTL_CEN); - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl_reg); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl_reg); /* bus mode? */ if (ios->clock == 0) { @@ -1000,36 +1000,36 @@ omap_mmc_update_ios(device_t brdev, devi sysctl_reg |= MMCHS_SYSCTL_CLKD(clkdiv); /* Write the new settings ... */ - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl_reg); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl_reg); /* ... write the internal clock enable bit ... */ - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl_reg | MMCHS_SYSCTL_ICE); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl_reg | MMCHS_SYSCTL_ICE); /* ... wait for the clock to stablise ... */ - while (((sysctl_reg = omap_mmc_read_4(sc, MMCHS_SYSCTL)) & + while (((sysctl_reg = ti_mmchs_read_4(sc, MMCHS_SYSCTL)) & MMCHS_SYSCTL_ICS) == 0) { continue; } /* ... then enable */ sysctl_reg |= MMCHS_SYSCTL_CEN; - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl_reg); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl_reg); /* If the power state has changed to 'power_on' then run the init sequence*/ if (do_card_init) { - omap_mmc_send_init_stream(sc); + ti_mmchs_send_init_stream(sc); } /* Set the bus mode (opendrain or normal) */ - con_reg = omap_mmc_read_4(sc, MMCHS_CON); + con_reg = ti_mmchs_read_4(sc, MMCHS_CON); if (ios->bus_mode == opendrain) con_reg |= MMCHS_CON_OD; else con_reg &= ~MMCHS_CON_OD; - omap_mmc_write_4(sc, MMCHS_CON, con_reg); + ti_mmchs_write_4(sc, MMCHS_CON, con_reg); return (0); } /** - * omap_mmc_acquire_host - + * ti_mmchs_acquire_host - * @brdev: mmc bridge device handle * @reqdev: device doing the request * @@ -1043,9 +1043,9 @@ omap_mmc_update_ios(device_t brdev, devi * */ static int -omap_mmc_acquire_host(device_t brdev, device_t reqdev) +ti_mmchs_acquire_host(device_t brdev, device_t reqdev) { - struct omap_mmc_softc *sc = device_get_softc(brdev); + struct ti_mmchs_softc *sc = device_get_softc(brdev); int err = 0; OMAP_MMC_LOCK(sc); @@ -1062,7 +1062,7 @@ omap_mmc_acquire_host(device_t brdev, de } /** - * omap_mmc_release_host - + * ti_mmchs_release_host - * @brdev: mmc bridge device handle * @reqdev: device doing the request * @@ -1076,9 +1076,9 @@ omap_mmc_acquire_host(device_t brdev, de * */ static int -omap_mmc_release_host(device_t brdev, device_t reqdev) +ti_mmchs_release_host(device_t brdev, device_t reqdev) { - struct omap_mmc_softc *sc = device_get_softc(brdev); + struct ti_mmchs_softc *sc = device_get_softc(brdev); OMAP_MMC_LOCK(sc); @@ -1091,7 +1091,7 @@ omap_mmc_release_host(device_t brdev, de } /** - * omap_mmc_read_ivar - returns driver conf variables + * ti_mmchs_read_ivar - returns driver conf variables * @bus: * @child: * @which: The variable to get the result for @@ -1107,9 +1107,9 @@ omap_mmc_release_host(device_t brdev, de * EINVAL if the variable requested is invalid */ static int -omap_mmc_read_ivar(device_t bus, device_t child, int which, uintptr_t *result) +ti_mmchs_read_ivar(device_t bus, device_t child, int which, uintptr_t *result) { - struct omap_mmc_softc *sc = device_get_softc(bus); + struct ti_mmchs_softc *sc = device_get_softc(bus); switch (which) { case MMCBR_IVAR_BUS_MODE: @@ -1158,7 +1158,7 @@ omap_mmc_read_ivar(device_t bus, device_ } /** - * omap_mmc_write_ivar - writes a driver conf variables + * ti_mmchs_write_ivar - writes a driver conf variables * @bus: * @child: * @which: The variable to set @@ -1174,9 +1174,9 @@ omap_mmc_read_ivar(device_t bus, device_ * EINVAL if the variable requested is invalid */ static int -omap_mmc_write_ivar(device_t bus, device_t child, int which, uintptr_t value) +ti_mmchs_write_ivar(device_t bus, device_t child, int which, uintptr_t value) { - struct omap_mmc_softc *sc = device_get_softc(bus); + struct ti_mmchs_softc *sc = device_get_softc(bus); switch (which) { case MMCBR_IVAR_BUS_MODE: @@ -1217,7 +1217,7 @@ omap_mmc_write_ivar(device_t bus, device } /** - * omap_mmc_hw_init - initialises the MMC/SD/SIO controller + * ti_mmchs_hw_init - initialises the MMC/SD/SIO controller * @dev: mmc device handle * * Called by the driver attach function during driver initialisation. This @@ -1230,9 +1230,9 @@ omap_mmc_write_ivar(device_t bus, device * nothing */ static void -omap_mmc_hw_init(device_t dev) +ti_mmchs_hw_init(device_t dev) { - struct omap_mmc_softc *sc = device_get_softc(dev); + struct ti_mmchs_softc *sc = device_get_softc(dev); clk_ident_t clk; unsigned long timeout; uint32_t sysctl; @@ -1254,9 +1254,9 @@ omap_mmc_hw_init(device_t dev) } /* 2: Issue a softreset to the controller */ - omap_mmc_write_4(sc, MMCHS_SYSCONFIG, 0x0002); + ti_mmchs_write_4(sc, MMCHS_SYSCONFIG, 0x0002); timeout = 100; - while ((omap_mmc_read_4(sc, MMCHS_SYSSTATUS) & 0x01) == 0x0) { + while ((ti_mmchs_read_4(sc, MMCHS_SYSSTATUS) & 0x01) == 0x0) { DELAY(1000); if (timeout-- == 0) { device_printf(dev, "Error: reset operation timed out\n"); @@ -1265,10 +1265,10 @@ omap_mmc_hw_init(device_t dev) } /* 3: Reset both the command and data state machines */ - sysctl = omap_mmc_read_4(sc, MMCHS_SYSCTL); - omap_mmc_write_4(sc, MMCHS_SYSCTL, sysctl | MMCHS_SYSCTL_SRA); + sysctl = ti_mmchs_read_4(sc, MMCHS_SYSCTL); + ti_mmchs_write_4(sc, MMCHS_SYSCTL, sysctl | MMCHS_SYSCTL_SRA); timeout = 100; - while ((omap_mmc_read_4(sc, MMCHS_SYSCTL) & MMCHS_SYSCTL_SRA) != 0x0) { + while ((ti_mmchs_read_4(sc, MMCHS_SYSCTL) & MMCHS_SYSCTL_SRA) != 0x0) { DELAY(1000); if (timeout-- == 0) { device_printf(dev, "Error: reset operation timed out\n"); @@ -1277,10 +1277,10 @@ omap_mmc_hw_init(device_t dev) } /* 4: Set initial host configuration (1-bit mode, pwroff) and capabilities */ - omap_mmc_write_4(sc, MMCHS_HCTL, MMCHS_HCTL_SDVS_V30); + ti_mmchs_write_4(sc, MMCHS_HCTL, MMCHS_HCTL_SDVS_V30); - capa = omap_mmc_read_4(sc, MMCHS_CAPA); - omap_mmc_write_4(sc, MMCHS_CAPA, capa | MMCHS_CAPA_VS30 | MMCHS_CAPA_VS18); + capa = ti_mmchs_read_4(sc, MMCHS_CAPA); + ti_mmchs_write_4(sc, MMCHS_CAPA, capa | MMCHS_CAPA_VS30 | MMCHS_CAPA_VS18); /* 5: Set the initial bus configuration * 0 CTPL_MMC_SD : Control Power for DAT1 line @@ -1294,13 +1294,13 @@ omap_mmc_hw_init(device_t dev) * 0 INIT_DISABLED : Send initialization stream * 0 OD_DISABLED : No Open Drain */ - con = omap_mmc_read_4(sc, MMCHS_CON) & MMCHS_CON_DVAL_MASK; - omap_mmc_write_4(sc, MMCHS_CON, con); + con = ti_mmchs_read_4(sc, MMCHS_CON) & MMCHS_CON_DVAL_MASK; + ti_mmchs_write_4(sc, MMCHS_CON, con); } /** - * omap_mmc_fini - shutdown the MMC/SD/SIO controller + * ti_mmchs_fini - shutdown the MMC/SD/SIO controller * @dev: mmc device handle * * Responsible for shutting done the MMC controller, this function may be @@ -1313,13 +1313,13 @@ omap_mmc_hw_init(device_t dev) * nothing */ static void -omap_mmc_hw_fini(device_t dev) +ti_mmchs_hw_fini(device_t dev) { - struct omap_mmc_softc *sc = device_get_softc(dev); + struct ti_mmchs_softc *sc = device_get_softc(dev); /* Disable all interrupts */ - omap_mmc_write_4(sc, MMCHS_ISE, 0x00000000); - omap_mmc_write_4(sc, MMCHS_IE, 0x00000000); + ti_mmchs_write_4(sc, MMCHS_ISE, 0x00000000); + ti_mmchs_write_4(sc, MMCHS_IE, 0x00000000); /* Disable the functional and interface clocks */ switch (device_get_unit(dev)) { @@ -1336,7 +1336,7 @@ omap_mmc_hw_fini(device_t dev) } /** - * omap_mmc_init_dma_channels - initalise the DMA channels + * ti_mmchs_init_dma_channels - initalise the DMA channels * @sc: driver soft context * * Attempts to activate an RX and TX DMA channel for the MMC device. @@ -1348,7 +1348,7 @@ omap_mmc_hw_fini(device_t dev) * 0 on success, a negative error code on failure. */ static int -omap_mmc_init_dma_channels(struct omap_mmc_softc *sc) +ti_mmchs_init_dma_channels(struct ti_mmchs_softc *sc) { int err; int unit; @@ -1392,7 +1392,7 @@ omap_mmc_init_dma_channels(struct omap_m } /* Activate a RX channel from the OMAP DMA driver */ - err = omap_dma_activate_channel(&sc->sc_dmach_rd, omap_mmc_dma_intr, sc); + err = omap_dma_activate_channel(&sc->sc_dmach_rd, ti_mmchs_dma_intr, sc); if (err != 0) return(err); @@ -1406,7 +1406,7 @@ omap_mmc_init_dma_channels(struct omap_m OMAP_SDMA_ADDR_POST_INCREMENT); /* Activate and configure the TX DMA channel */ - err = omap_dma_activate_channel(&sc->sc_dmach_wr, omap_mmc_dma_intr, sc); + err = omap_dma_activate_channel(&sc->sc_dmach_wr, ti_mmchs_dma_intr, sc); if (err != 0) return(err); @@ -1423,7 +1423,7 @@ omap_mmc_init_dma_channels(struct omap_m } /** - * omap_mmc_deactivate - deactivates the driver + * ti_mmchs_deactivate - deactivates the driver * @dev: mmc device handle * * Unmaps the register set and releases the IRQ resource. @@ -1435,9 +1435,9 @@ omap_mmc_init_dma_channels(struct omap_m * nothing */ static void -omap_mmc_deactivate(device_t dev) +ti_mmchs_deactivate(device_t dev) { - struct omap_mmc_softc *sc= device_get_softc(dev); + struct ti_mmchs_softc *sc= device_get_softc(dev); /* Remove the IRQ handler */ if (sc->sc_irq_h != NULL) { @@ -1470,7 +1470,7 @@ omap_mmc_deactivate(device_t dev) } /** - * omap_mmc_activate - activates the driver + * ti_mmchs_activate - activates the driver * @dev: mmc device handle * * Maps in the register set and requests an IRQ handler for the MMC controller. @@ -1483,9 +1483,9 @@ omap_mmc_deactivate(device_t dev) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 29 22:21:59 2012 Return-Path: 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 7ADD9106564A; Wed, 29 Feb 2012 22:21:59 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6A6368FC15; Wed, 29 Feb 2012 22:21:59 +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 q1TMLxIg047638; Wed, 29 Feb 2012 22:21:59 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1TMLxPA047636; Wed, 29 Feb 2012 22:21:59 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201202292221.q1TMLxPA047636@svn.freebsd.org> From: Olivier Houchard Date: Wed, 29 Feb 2012 22:21:59 +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: r232319 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Feb 2012 22:21:59 -0000 Author: cognet Date: Wed Feb 29 22:21:58 2012 New Revision: 232319 URL: http://svn.freebsd.org/changeset/base/232319 Log: We shouldn't dereference curthread here Modified: projects/armv6/sys/arm/arm/swtch.S Modified: projects/armv6/sys/arm/arm/swtch.S ============================================================================== --- projects/armv6/sys/arm/arm/swtch.S Wed Feb 29 22:06:44 2012 (r232318) +++ projects/armv6/sys/arm/arm/swtch.S Wed Feb 29 22:21:58 2012 (r232319) @@ -348,7 +348,6 @@ ENTRY(cpu_switch) beq .Lcs_same_vector str r0, [r7] /* Otherwise, update it */ -#if !defined(CPU_ARM11) && !defined(CPU_CORTEXA) && !defined(CPU_MV_PJ4B) /* * Need to sync the cache to make sure that last store is * visible to the MMU. @@ -358,7 +357,6 @@ ENTRY(cpu_switch) mov r1, #4 mov lr, pc ldr pc, [r2, #CF_DCACHE_WB_RANGE] -#endif .Lcs_same_vector: #endif /* PMAP_INCLUDE_PTE_SYNC */ @@ -396,7 +394,6 @@ ENTRY(cpu_switch) str r6, [r4, #TD_LOCK] ldr r6, .Lblocked_lock GET_CURTHREAD_PTR(r3) - ldr r3, [r3] 1: ldr r4, [r3, #TD_LOCK] From owner-svn-src-projects@FreeBSD.ORG Thu Mar 1 10:55:02 2012 Return-Path: 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 27945106568A; Thu, 1 Mar 2012 10:55:02 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0A1C48FC15; Thu, 1 Mar 2012 10:55:02 +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 q21At2L1075192; Thu, 1 Mar 2012 10:55:02 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q21At17o075186; Thu, 1 Mar 2012 10:55:01 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203011055.q21At17o075186@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 1 Mar 2012 10:55:01 +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: r232330 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Mar 2012 10:55:02 -0000 Author: glebius Date: Thu Mar 1 10:55:01 2012 New Revision: 232330 URL: http://svn.freebsd.org/changeset/base/232330 Log: Locking pf normalization code: - Make struct pf_frent, pf_frcache, pf_fragment private to pf_norm.c. - Make fragment UMA zones, TAILQs and RB-trees static to pf_norm.c - Introduce mutex pf_frag_mtx for the above fragment storage structures. - Assert the mutex in storage manipulation functions, obtain it in pf_normalize_ip() and in pf_normalize_ip6(), when we are dealing with a fragment. - TODO: lock pf_normalize_tcp_stateful() Other bits in progress: - Rename the main pf_task_mtx, to pf_mtx, description "pf Giant". - Introduce rwlock pf_rules_lock, that protects rules. - Obtain the rwlock in pf_test(), pf_test6(). - Micro-optimise pf_test(), pf_test6() obtaining the pf Giant after initial assertions and basic checks. Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c projects/pf/head/sys/contrib/pf/net/pf_norm.c projects/pf/head/sys/contrib/pf/net/pf_ruleset.c projects/pf/head/sys/contrib/pf/net/pfvar.h Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Thu Mar 1 10:55:01 2012 (r232330) @@ -348,7 +348,7 @@ pfsync_clone_create(struct if_clone *ifc ifp->if_hdrlen = sizeof(struct pfsync_header); ifp->if_mtu = ETHERMTU; callout_init(&sc->sc_tmo, CALLOUT_MPSAFE); - callout_init_mtx(&sc->sc_bulk_tmo, &pf_task_mtx, 0); + callout_init_mtx(&sc->sc_bulk_tmo, &pf_mtx, 0); callout_init(&sc->sc_bulkfail_tmo, CALLOUT_MPSAFE); if_attach(ifp); Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/pf.c Thu Mar 1 10:55:01 2012 (r232330) @@ -5354,48 +5354,41 @@ pf_test(int dir, struct ifnet *ifp, stru struct pf_pdesc pd; int off, dirndx, pqid = 0; - PF_LOCK(); + M_ASSERTPKTHDR(m); + if (!V_pf_status.running) - { - PF_UNLOCK(); return (PF_PASS); - } memset(&pd, 0, sizeof(pd)); if ((pd.pf_mtag = pf_get_mtag(m)) == NULL) { - PF_UNLOCK(); DPFPRINTF(PF_DEBUG_URGENT, ("pf_test: pf_get_mtag returned NULL\n")); return (PF_DROP); } - kif = (struct pfi_kif *)ifp->if_pf_kif; + kif = (struct pfi_kif *)ifp->if_pf_kif; if (kif == NULL) { - PF_UNLOCK(); DPFPRINTF(PF_DEBUG_URGENT, ("pf_test: kif == NULL, if_xname %s\n", ifp->if_xname)); return (PF_DROP); } if (kif->pfik_flags & PFI_IFLAG_SKIP) - { - PF_UNLOCK(); return (PF_PASS); - } - M_ASSERTPKTHDR(m); - - if (m->m_pkthdr.len < (int)sizeof(*h)) { + if (m->m_flags & M_SKIP_FIREWALL) + return (PF_PASS); + + if (m->m_pkthdr.len < (int)sizeof(struct ip)) { action = PF_DROP; REASON_SET(&reason, PFRES_SHORT); log = 1; + PF_LOCK(); goto done; } - if (m->m_flags & M_SKIP_FIREWALL) { - PF_UNLOCK(); - return (PF_PASS); - } - + PF_LOCK(); + PF_RULES_RLOCK(); + if (ip_divert_ptr != NULL && ((ipfwtag = m_tag_locate(m, MTAG_IPFW_RULE, 0, NULL)) != NULL)) { struct ipfw_rule_ref *rr = (struct ipfw_rule_ref *)(ipfwtag+1); @@ -5407,9 +5400,8 @@ pf_test(int dir, struct ifnet *ifp, stru m->m_flags |= M_FASTFWD_OURS; pd.pf_mtag->flags &= ~PF_FASTFWD_OURS_PRESENT; } - } else - /* We do IP header normalization and packet reassembly here */ - if (pf_normalize_ip(m0, dir, kif, &reason, &pd) != PF_PASS) { + } else if (pf_normalize_ip(m0, dir, kif, &reason, &pd) != PF_PASS) { + /* We do IP header normalization and packet reassembly here */ action = PF_DROP; goto done; } @@ -5417,7 +5409,7 @@ pf_test(int dir, struct ifnet *ifp, stru h = mtod(m, struct ip *); off = h->ip_hl << 2; - if (off < (int)sizeof(*h)) { + if (off < (int)sizeof(struct ip)) { action = PF_DROP; REASON_SET(&reason, PFRES_SHORT); log = 1; @@ -5591,28 +5583,27 @@ done: (ntohl(pd.dst->v4.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) m->m_flags |= M_SKIP_FIREWALL; - if (action == PF_PASS && r->divert.port && - ip_divert_ptr != NULL && !PACKET_LOOPED()) { + if (action == PF_PASS && r->divert.port && ip_divert_ptr != NULL && + !PACKET_LOOPED()) { ipfwtag = m_tag_alloc(MTAG_IPFW_RULE, 0, - sizeof(struct ipfw_rule_ref), M_NOWAIT | M_ZERO); + sizeof(struct ipfw_rule_ref), M_NOWAIT | M_ZERO); if (ipfwtag != NULL) { ((struct ipfw_rule_ref *)(ipfwtag+1))->info = ntohs(r->divert.port); ((struct ipfw_rule_ref *)(ipfwtag+1))->rulenum = dir; - m_tag_prepend(m, ipfwtag); - + PF_RULES_RUNLOCK(); PF_UNLOCK(); + m_tag_prepend(m, ipfwtag); if (m->m_flags & M_FASTFWD_OURS) { pd.pf_mtag->flags |= PF_FASTFWD_OURS_PRESENT; m->m_flags &= ~M_FASTFWD_OURS; } - - ip_divert_ptr(*m0, - dir == PF_IN ? DIR_IN : DIR_OUT); + ip_divert_ptr(*m0, dir == PF_IN ? DIR_IN : DIR_OUT); *m0 = NULL; + return (action); } else { /* XXX: ipfw has the same behaviour! */ @@ -5697,7 +5688,9 @@ done: pf_route(m0, r, dir, kif->pfik_ifp, s, &pd); break; } + PF_RULES_RUNLOCK(); PF_UNLOCK(); + return (action); } #endif /* INET */ @@ -5717,46 +5710,40 @@ pf_test6(int dir, struct ifnet *ifp, str struct pf_pdesc pd; int off, terminal = 0, dirndx, rh_cnt = 0; - PF_LOCK(); - if (!V_pf_status.running) { - PF_UNLOCK(); + M_ASSERTPKTHDR(m); + + if (!V_pf_status.running) return (PF_PASS); - } memset(&pd, 0, sizeof(pd)); if ((pd.pf_mtag = pf_get_mtag(m)) == NULL) { - PF_UNLOCK(); DPFPRINTF(PF_DEBUG_URGENT, ("pf_test: pf_get_mtag returned NULL\n")); return (PF_DROP); } - kif = (struct pfi_kif *)ifp->if_pf_kif; + if (pd.pf_mtag->flags & PF_TAG_GENERATED) + return (PF_PASS); + + kif = (struct pfi_kif *)ifp->if_pf_kif; if (kif == NULL) { - PF_UNLOCK(); DPFPRINTF(PF_DEBUG_URGENT, ("pf_test6: kif == NULL, if_xname %s\n", ifp->if_xname)); return (PF_DROP); } if (kif->pfik_flags & PFI_IFLAG_SKIP) - { - PF_UNLOCK(); return (PF_PASS); - } - - M_ASSERTPKTHDR(m); if (m->m_pkthdr.len < (int)sizeof(*h)) { action = PF_DROP; REASON_SET(&reason, PFRES_SHORT); log = 1; + PF_LOCK(); goto done; } - if (pd.pf_mtag->flags & PF_TAG_GENERATED) { - PF_UNLOCK(); - return (PF_PASS); - } + PF_LOCK(); + PF_RULES_RLOCK(); /* We do IP header normalization and packet reassembly here */ if (pf_normalize_ip6(m0, dir, kif, &reason, &pd) != PF_PASS) { @@ -6081,6 +6068,7 @@ done: break; } + PF_RULES_RUNLOCK(); PF_UNLOCK(); return (action); } Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 10:55:01 2012 (r232330) @@ -104,7 +104,6 @@ __FBSDID("$FreeBSD$"); #include #include -static void init_zone_var(void); static void cleanup_pf_zone(void); int pfattach(void); static struct pf_pool *pf_get_pool(char *, u_int32_t, u_int8_t, u_int32_t, @@ -208,7 +207,9 @@ static struct cdevsw pf_cdevsw = { static volatile VNET_DEFINE(int, pf_pfil_hooked); #define V_pf_pfil_hooked VNET(pf_pfil_hooked) VNET_DEFINE(int, pf_end_threads); -struct mtx pf_task_mtx; + +struct mtx pf_mtx; +struct rwlock pf_rules_lock; /* pfsync */ pfsync_state_import_t *pfsync_state_import_ptr = NULL; @@ -233,25 +234,19 @@ static void init_pf_mutex(void) { - mtx_init(&pf_task_mtx, "pf task mtx", NULL, MTX_DEF); + mtx_init(&pf_mtx, "pf Giant", NULL, MTX_DEF); + rw_init(&pf_rules_lock, "pf rulesets"); + /* XXXGL: name */ + sx_init(&V_pf_consistency_lock, "pf_statetbl_lock"); } static void destroy_pf_mutex(void) { - mtx_destroy(&pf_task_mtx); -} - -static void -init_zone_var(void) -{ - V_pf_src_tree_pl = V_pf_rule_pl = NULL; - V_pf_state_pl = V_pf_state_key_pl = V_pf_state_item_pl = NULL; - V_pf_altq_pl = V_pf_pooladdr_pl = NULL; - V_pf_frent_pl = V_pf_frag_pl = V_pf_cache_pl = V_pf_cent_pl = NULL; - V_pf_state_scrub_pl = NULL; - V_pfr_ktable_pl = V_pfr_kentry_pl = NULL; + mtx_destroy(&pf_mtx); + rw_destroy(&pf_rules_lock); + sx_destroy(&V_pf_consistency_lock); } static void @@ -265,13 +260,8 @@ cleanup_pf_zone(void) uma_zdestroy(V_pf_state_item_pl); uma_zdestroy(V_pf_altq_pl); uma_zdestroy(V_pf_pooladdr_pl); - uma_zdestroy(V_pf_frent_pl); - uma_zdestroy(V_pf_frag_pl); - uma_zdestroy(V_pf_cache_pl); - uma_zdestroy(V_pf_cent_pl); uma_zdestroy(V_pfr_ktable_pl); uma_zdestroy(V_pfr_kentry_pl); - uma_zdestroy(V_pf_state_scrub_pl); uma_zdestroy(V_pfi_addr_pl); } @@ -300,29 +290,17 @@ pfattach(void) NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pfr_kentry_pl = uma_zcreate("pfrkentry", sizeof(struct pfr_kentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_frent_pl = uma_zcreate("pffrent", sizeof(struct pf_frent), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_frag_pl = uma_zcreate("pffrag", sizeof(struct pf_fragment), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_cache_pl = uma_zcreate("pffrcache", sizeof(struct pf_fragment), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_cent_pl = uma_zcreate("pffrcent", sizeof(struct pf_frcache), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_state_scrub_pl = uma_zcreate("pfstatescrub", - sizeof(struct pf_state_scrub), NULL, NULL, NULL, NULL, - UMA_ALIGN_PTR, 0); V_pfi_addr_pl = uma_zcreate("pfiaddrpl", sizeof(struct pfi_dynaddr), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); pfr_initialize(); pfi_initialize(); pf_osfp_initialize(); + pf_normalize_init(); V_pf_pool_limits[PF_LIMIT_STATES].pp = V_pf_state_pl; V_pf_pool_limits[PF_LIMIT_STATES].limit = PFSTATE_HIWAT; V_pf_pool_limits[PF_LIMIT_SRC_NODES].pp = V_pf_src_tree_pl; V_pf_pool_limits[PF_LIMIT_SRC_NODES].limit = PFSNODE_HIWAT; - V_pf_pool_limits[PF_LIMIT_FRAGS].pp = V_pf_frent_pl; - V_pf_pool_limits[PF_LIMIT_FRAGS].limit = PFFRAG_FRENT_HIWAT; V_pf_pool_limits[PF_LIMIT_TABLES].pp = V_pfr_ktable_pl; V_pf_pool_limits[PF_LIMIT_TABLES].limit = PFR_KTABLE_HIWAT; V_pf_pool_limits[PF_LIMIT_TABLE_ENTRIES].pp = V_pfr_kentry_pl; @@ -369,8 +347,6 @@ pfattach(void) my_timeout[PFTM_ADAPTIVE_START] = PFSTATE_ADAPT_START; my_timeout[PFTM_ADAPTIVE_END] = PFSTATE_ADAPT_END; - pf_normalize_init(); - bzero(&V_pf_status, sizeof(V_pf_status)); V_pf_status.debug = PF_DEBUG_URGENT; @@ -3533,8 +3509,6 @@ pf_load(void) init_pf_mutex(); pf_dev = make_dev(&pf_cdevsw, 0, 0, 0, 0600, PF_NAME); - init_zone_var(); - sx_init(&V_pf_consistency_lock, "pf_statetbl_lock"); if ((error = pfattach()) != 0) return (error); @@ -3565,8 +3539,9 @@ pf_unload(void) V_pf_end_threads = 1; while (V_pf_end_threads < 2) { wakeup_one(pf_purge_thread); - msleep(pf_purge_thread, &pf_task_mtx, 0, "pftmo", hz); + msleep(pf_purge_thread, &pf_mtx, 0, "pftmo", hz); } + pf_normalize_cleanup(); pfi_cleanup(); pf_osfp_flush(); pf_osfp_cleanup(); @@ -3574,8 +3549,8 @@ pf_unload(void) PF_UNLOCK(); destroy_dev(pf_dev); destroy_pf_mutex(); - sx_destroy(&V_pf_consistency_lock); - return error; + + return (error); } static int Modified: projects/pf/head/sys/contrib/pf/net/pf_norm.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_norm.c Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/pf_norm.c Thu Mar 1 10:55:01 2012 (r232330) @@ -68,30 +68,75 @@ __FBSDID("$FreeBSD$"); #include - +struct pf_frent { + LIST_ENTRY(pf_frent) fr_next; + struct ip *fr_ip; + struct mbuf *fr_m; +}; + +struct pf_frcache { + LIST_ENTRY(pf_frcache) fr_next; + uint16_t fr_off; + uint16_t fr_end; +}; + +struct pf_fragment { + RB_ENTRY(pf_fragment) fr_entry; + TAILQ_ENTRY(pf_fragment) frag_next; + struct in_addr fr_src; + struct in_addr fr_dst; + u_int8_t fr_p; /* protocol of this fragment */ + u_int8_t fr_flags; /* status flags */ #define PFFRAG_SEENLAST 0x0001 /* Seen the last fragment for this */ #define PFFRAG_NOBUFFER 0x0002 /* Non-buffering fragment cache */ #define PFFRAG_DROP 0x0004 /* Drop all fragments */ #define BUFFER_FRAGMENTS(fr) (!((fr)->fr_flags & PFFRAG_NOBUFFER)) - + u_int16_t fr_id; /* fragment id for reassemble */ + u_int16_t fr_max; /* fragment data max */ + u_int32_t fr_timeout; +#define fr_queue fr_u.fru_queue +#define fr_cache fr_u.fru_cache + union { + LIST_HEAD(pf_fragq, pf_frent) fru_queue; /* buffering */ + LIST_HEAD(pf_cacheq, pf_frcache) fru_cache; /* non-buf */ + } fr_u; +}; + +static struct mtx pf_frag_mtx; +#define PF_FRAG_LOCK() mtx_lock(&pf_frag_mtx) +#define PF_FRAG_UNLOCK() mtx_unlock(&pf_frag_mtx) +#define PF_FRAG_ASSERT() mtx_assert(&pf_frag_mtx, MA_OWNED) + +VNET_DEFINE(uma_zone_t, pf_state_scrub_pl); /* XXX: shared with pfsync */ + +static VNET_DEFINE(uma_zone_t, pf_frent_pl); +#define V_pf_frent_pl VNET(pf_frent_pl) +static VNET_DEFINE(uma_zone_t, pf_frag_pl); +#define V_pf_frag_pl VNET(pf_frag_pl) +static VNET_DEFINE(uma_zone_t, pf_cache_pl); +#define V_pf_cache_pl VNET(pf_cache_pl) +static VNET_DEFINE(uma_zone_t, pf_cent_pl); +#define V_pf_cent_pl VNET(pf_cent_pl) +static VNET_DEFINE(int, pf_nfrents); +#define V_pf_nfrents VNET(pf_nfrents) +static VNET_DEFINE(int, pf_ncache); +#define V_pf_ncache VNET(pf_ncache) TAILQ_HEAD(pf_fragqueue, pf_fragment); TAILQ_HEAD(pf_cachequeue, pf_fragment); -VNET_DEFINE(struct pf_fragqueue, pf_fragqueue); +static VNET_DEFINE(struct pf_fragqueue, pf_fragqueue); #define V_pf_fragqueue VNET(pf_fragqueue) -VNET_DEFINE(struct pf_cachequeue, pf_cachequeue); +static VNET_DEFINE(struct pf_cachequeue, pf_cachequeue); #define V_pf_cachequeue VNET(pf_cachequeue) - -static int pf_frag_compare(struct pf_fragment *, - struct pf_fragment *); - RB_HEAD(pf_frag_tree, pf_fragment); -VNET_DEFINE(struct pf_frag_tree, pf_frag_tree); +static VNET_DEFINE(struct pf_frag_tree, pf_frag_tree); #define V_pf_frag_tree VNET(pf_frag_tree) -VNET_DEFINE(struct pf_frag_tree, pf_cache_tree); +static VNET_DEFINE(struct pf_frag_tree, pf_cache_tree); #define V_pf_cache_tree VNET(pf_cache_tree) -RB_PROTOTYPE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare); -RB_GENERATE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare); +static int pf_frag_compare(struct pf_fragment *, + struct pf_fragment *); +static RB_PROTOTYPE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare); +static RB_GENERATE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare); /* Private prototypes */ static void pf_ip2key(struct pf_fragment *, struct ip *); @@ -117,21 +162,23 @@ static void pf_scrub_ip6(struct mbuf * } \ } while(0) -/* Globals */ -VNET_DEFINE(uma_zone_t, pf_frent_pl); -VNET_DEFINE(uma_zone_t, pf_frag_pl); -VNET_DEFINE(uma_zone_t, pf_cache_pl); -VNET_DEFINE(uma_zone_t, pf_cent_pl); -VNET_DEFINE(uma_zone_t, pf_state_scrub_pl); - -VNET_DEFINE(int, pf_nfrents); -#define V_pf_nfrents VNET(pf_nfrents) -VNET_DEFINE(int, pf_ncache); -#define V_pf_ncache VNET(pf_ncache) - void pf_normalize_init(void) { + + V_pf_frent_pl = uma_zcreate("pffrent", sizeof(struct pf_frent), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + /* XXXGL: two zones of struct pf_fragment */ + V_pf_frag_pl = uma_zcreate("pffrag", sizeof(struct pf_fragment), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + V_pf_cache_pl = uma_zcreate("pffrcache", sizeof(struct pf_fragment), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + V_pf_cent_pl = uma_zcreate("pffrcent", sizeof(struct pf_frcache), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + V_pf_state_scrub_pl = uma_zcreate("pfstatescrub", + sizeof(struct pf_state_scrub), NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, 0); + /* * XXX * No high water mark support(It's hint not hard limit). @@ -141,10 +188,28 @@ pf_normalize_init(void) uma_zone_set_max(V_pf_cache_pl, PFFRAG_FRCACHE_HIWAT); uma_zone_set_max(V_pf_cent_pl, PFFRAG_FRCENT_HIWAT); + V_pf_pool_limits[PF_LIMIT_FRAGS].pp = V_pf_frent_pl; + V_pf_pool_limits[PF_LIMIT_FRAGS].limit = PFFRAG_FRENT_HIWAT; + + mtx_init(&pf_frag_mtx, "pf fragments", NULL, MTX_DEF); + TAILQ_INIT(&V_pf_fragqueue); TAILQ_INIT(&V_pf_cachequeue); } +void +pf_normalize_cleanup(void) +{ + + uma_zdestroy(V_pf_frent_pl); + uma_zdestroy(V_pf_frag_pl); + uma_zdestroy(V_pf_cache_pl); + uma_zdestroy(V_pf_cent_pl); + uma_zdestroy(V_pf_state_scrub_pl); + + mtx_destroy(&pf_frag_mtx); +} + static int pf_frag_compare(struct pf_fragment *a, struct pf_fragment *b) { @@ -172,6 +237,7 @@ pf_purge_expired_fragments(void) u_int32_t expire = time_second - V_pf_default_rule.timeout[PFTM_FRAG]; + PF_FRAG_LOCK(); while ((frag = TAILQ_LAST(&V_pf_fragqueue, pf_fragqueue)) != NULL) { KASSERT((BUFFER_FRAGMENTS(frag)), ("BUFFER_FRAGMENTS(frag) == 0: %s", __FUNCTION__)); @@ -195,6 +261,7 @@ pf_purge_expired_fragments(void) ("!(TAILQ_EMPTY() || TAILQ_LAST() == farg): %s", __FUNCTION__)); } + PF_FRAG_UNLOCK(); } /* @@ -207,6 +274,8 @@ pf_flush_fragments(void) struct pf_fragment *frag; int goal; + PF_FRAG_ASSERT(); + goal = V_pf_nfrents * 9 / 10; DPFPRINTF(("trying to free > %d frents\n", V_pf_nfrents - goal)); @@ -237,6 +306,8 @@ pf_free_fragment(struct pf_fragment *fra struct pf_frent *frent; struct pf_frcache *frcache; + PF_FRAG_ASSERT(); + /* Free all fragments */ if (BUFFER_FRAGMENTS(frag)) { for (frent = LIST_FIRST(&frag->fr_queue); frent; @@ -281,6 +352,8 @@ pf_find_fragment(struct ip *ip, struct p struct pf_fragment key; struct pf_fragment *frag; + PF_FRAG_ASSERT(); + pf_ip2key(&key, ip); frag = RB_FIND(pf_frag_tree, tree, &key); @@ -304,6 +377,9 @@ pf_find_fragment(struct ip *ip, struct p static void pf_remove_fragment(struct pf_fragment *frag) { + + PF_FRAG_ASSERT(); + if (BUFFER_FRAGMENTS(frag)) { RB_REMOVE(pf_frag_tree, &V_pf_frag_tree, frag); TAILQ_REMOVE(&V_pf_fragqueue, frag, frag_next); @@ -329,6 +405,7 @@ pf_reassemble(struct mbuf **m0, struct p u_int16_t ip_len = ntohs(ip->ip_len) - ip->ip_hl * 4; u_int16_t max = ip_len + off; + PF_FRAG_ASSERT(); KASSERT((*frag == NULL || BUFFER_FRAGMENTS(*frag)), ("! (*frag == NULL || BUFFER_FRAGMENTS(*frag)): %s", __FUNCTION__)); @@ -533,6 +610,7 @@ pf_fragcache(struct mbuf **m0, struct ip u_int16_t max = ip_len + off; int hosed = 0; + PF_FRAG_ASSERT(); KASSERT((*frag == NULL || !BUFFER_FRAGMENTS(*frag)), ("!(*frag == NULL || !BUFFER_FRAGMENTS(*frag)): %s", __FUNCTION__)); @@ -847,6 +925,8 @@ pf_normalize_ip(struct mbuf **m0, int di int ip_off; int tag = -1; + PF_RULES_RASSERT(); + r = TAILQ_FIRST(pf_main_ruleset.rules[PF_RULESET_SCRUB].active.ptr); while (r != NULL) { r->evaluations++; @@ -924,8 +1004,9 @@ pf_normalize_ip(struct mbuf **m0, int di max = fragoff + ip_len; if ((r->rule_flag & (PFRULE_FRAGCROP|PFRULE_FRAGDROP)) == 0) { - /* Fully buffer all of the fragments */ + /* Fully buffer all of the fragments */ + PF_FRAG_LOCK(); frag = pf_find_fragment(h, &V_pf_frag_tree); /* Check if we saw the last fragment already */ @@ -936,6 +1017,7 @@ pf_normalize_ip(struct mbuf **m0, int di /* Get an entry for the fragment queue */ frent = uma_zalloc(V_pf_frent_pl, M_NOWAIT); if (frent == NULL) { + PF_FRAG_UNLOCK(); REASON_SET(reason, PFRES_MEMORY); return (PF_DROP); } @@ -947,11 +1029,14 @@ pf_normalize_ip(struct mbuf **m0, int di DPFPRINTF(("reass frag %d @ %d-%d\n", h->ip_id, fragoff, max)); *m0 = m = pf_reassemble(m0, &frag, frent, mff); - if (m == NULL) + if (m == NULL) { + PF_FRAG_UNLOCK(); return (PF_DROP); + } /* use mtag from concatenated mbuf chain */ pd->pf_mtag = pf_find_mtag(m); + PF_FRAG_UNLOCK(); #ifdef DIAGNOSTIC if (pd->pf_mtag == NULL) { printf("%s: pf_find_mtag returned NULL(1)\n", __func__); @@ -979,6 +1064,7 @@ pf_normalize_ip(struct mbuf **m0, int di goto fragment_pass; } + PF_FRAG_LOCK(); frag = pf_find_fragment(h, &V_pf_cache_tree); /* Check if we saw the last fragment already */ @@ -992,6 +1078,7 @@ pf_normalize_ip(struct mbuf **m0, int di *m0 = m = pf_fragcache(m0, h, &frag, mff, (r->rule_flag & PFRULE_FRAGDROP) ? 1 : 0, &nomem); if (m == NULL) { + PF_FRAG_UNLOCK(); if (nomem) goto no_mem; goto drop; @@ -999,6 +1086,7 @@ pf_normalize_ip(struct mbuf **m0, int di /* use mtag from copied and trimmed mbuf chain */ pd->pf_mtag = pf_find_mtag(m); + PF_FRAG_UNLOCK(); #ifdef DIAGNOSTIC if (pd->pf_mtag == NULL) { printf("%s: pf_find_mtag returned NULL(2)\n", __func__); @@ -1051,8 +1139,10 @@ pf_normalize_ip(struct mbuf **m0, int di DPFPRINTF(("dropping bad fragment\n")); /* Free associated fragments */ - if (frag != NULL) + if (frag != NULL) { pf_free_fragment(frag); + PF_FRAG_UNLOCK(); + } REASON_SET(reason, PFRES_FRAG); if (r != NULL && r->log) @@ -1082,6 +1172,8 @@ pf_normalize_ip6(struct mbuf **m0, int d u_int8_t proto; int terminal; + PF_RULES_RASSERT(); + r = TAILQ_FIRST(pf_main_ruleset.rules[PF_RULESET_SCRUB].active.ptr); while (r != NULL) { r->evaluations++; @@ -1250,6 +1342,8 @@ pf_normalize_tcp(int dir, struct pfi_kif u_int8_t flags; sa_family_t af = pd->af; + PF_RULES_RASSERT(); + r = TAILQ_FIRST(pf_main_ruleset.rules[PF_RULESET_SCRUB].active.ptr); while (r != NULL) { r->evaluations++; @@ -1462,6 +1556,8 @@ pf_normalize_tcp_stateful(struct mbuf *m int copyback = 0; int got_ts = 0; + /* XXXGL: lock */ + KASSERT((src->scrub || dst->scrub), ("pf_normalize_tcp_statefull: src->scrub && dst->scrub!")); Modified: projects/pf/head/sys/contrib/pf/net/pf_ruleset.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ruleset.c Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/pf_ruleset.c Thu Mar 1 10:55:01 2012 (r232330) @@ -87,14 +87,14 @@ __FBSDID("$FreeBSD$"); #ifdef _KERNEL VNET_DEFINE(struct pf_anchor_global, pf_anchors); VNET_DEFINE(struct pf_anchor, pf_main_anchor); -#else +#else /* ! _KERNEL */ struct pf_anchor_global pf_anchors; struct pf_anchor pf_main_anchor; #undef V_pf_anchors #define V_pf_anchors pf_anchors #undef pf_main_ruleset #define pf_main_ruleset pf_main_anchor.ruleset -#endif +#endif /* _KERNEL */ static __inline int pf_anchor_compare(struct pf_anchor *, struct pf_anchor *); Modified: projects/pf/head/sys/contrib/pf/net/pfvar.h ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pfvar.h Thu Mar 1 10:21:10 2012 (r232329) +++ projects/pf/head/sys/contrib/pf/net/pfvar.h Thu Mar 1 10:55:01 2012 (r232330) @@ -202,12 +202,19 @@ struct pfi_dynaddr { #define PF_NAME "pf" -extern struct mtx pf_task_mtx; - -#define PF_LOCK_ASSERT() mtx_assert(&pf_task_mtx, MA_OWNED) -#define PF_UNLOCK_ASSERT() mtx_assert(&pf_task_mtx, MA_NOTOWNED) -#define PF_LOCK() mtx_lock(&pf_task_mtx) -#define PF_UNLOCK() mtx_unlock(&pf_task_mtx) +extern struct mtx pf_mtx; +#define PF_LOCK_ASSERT() mtx_assert(&pf_mtx, MA_OWNED) +#define PF_UNLOCK_ASSERT() mtx_assert(&pf_mtx, MA_NOTOWNED) +#define PF_LOCK() mtx_lock(&pf_mtx) +#define PF_UNLOCK() mtx_unlock(&pf_mtx) + +extern struct rwlock pf_rules_lock; +#define PF_RULES_RLOCK() rw_rlock(&pf_rules_lock) +#define PF_RULES_RUNLOCK() rw_runlock(&pf_rules_lock) +#define PF_RULES_RASSERT() rw_assert(&pf_rules_lock, RA_RLOCKED) +#define PF_RULES_WLOCK() rw_wlock(&pf_rules_lock) +#define PF_RULES_WUNLOCK() rw_wunlock(&pf_rules_lock) +#define PF_RULES_WASSERT() rw_assert(&pf_rules_lock, RA_WLOCKED) #define PF_COPYIN(uaddr, kaddr, len, r) do { \ PF_UNLOCK(); \ @@ -1769,10 +1776,6 @@ VNET_DECLARE(uma_zone_t, pfr_ktable_pl #define V_pfr_ktable_pl VNET(pfr_ktable_pl) VNET_DECLARE(uma_zone_t, pfr_kentry_pl); #define V_pfr_kentry_pl VNET(pfr_kentry_pl) -VNET_DECLARE(uma_zone_t, pf_cache_pl); -#define V_pf_cache_pl VNET(pf_cache_pl) -VNET_DECLARE(uma_zone_t, pf_cent_pl); -#define V_pf_cent_pl VNET(pf_cent_pl) VNET_DECLARE(uma_zone_t, pf_state_scrub_pl); #define V_pf_state_scrub_pl VNET(pf_state_scrub_pl) VNET_DECLARE(uma_zone_t, pfi_addr_pl); @@ -1826,6 +1829,7 @@ int pf_match_addr_range(struct pf_addr * int pf_match_port(u_int8_t, u_int16_t, u_int16_t, u_int16_t); void pf_normalize_init(void); +void pf_normalize_cleanup(void); int pf_normalize_ip(struct mbuf **, int, struct pfi_kif *, u_short *, struct pf_pdesc *); int pf_normalize_ip6(struct mbuf **, int, struct pfi_kif *, u_short *, @@ -1912,10 +1916,6 @@ void pf_qid2qname(u_int32_t, char *); VNET_DECLARE(struct pf_status, pf_status); #define V_pf_status VNET(pf_status) -VNET_DECLARE(uma_zone_t, pf_frent_pl); -#define V_pf_frent_pl VNET(pf_frent_pl) -VNET_DECLARE(uma_zone_t, pf_frag_pl); -#define V_pf_frag_pl VNET(pf_frag_pl) VNET_DECLARE(struct sx, pf_consistency_lock); #define V_pf_consistency_lock VNET(pf_consistency_lock) @@ -1926,36 +1926,6 @@ struct pf_pool_limit { VNET_DECLARE(struct pf_pool_limit, pf_pool_limits[PF_LIMIT_MAX]); #define V_pf_pool_limits VNET(pf_pool_limits) -struct pf_frent { - LIST_ENTRY(pf_frent) fr_next; - struct ip *fr_ip; - struct mbuf *fr_m; -}; - -struct pf_frcache { - LIST_ENTRY(pf_frcache) fr_next; - uint16_t fr_off; - uint16_t fr_end; -}; - -struct pf_fragment { - RB_ENTRY(pf_fragment) fr_entry; - TAILQ_ENTRY(pf_fragment) frag_next; - struct in_addr fr_src; - struct in_addr fr_dst; - u_int8_t fr_p; /* protocol of this fragment */ - u_int8_t fr_flags; /* status flags */ - u_int16_t fr_id; /* fragment id for reassemble */ - u_int16_t fr_max; /* fragment data max */ - u_int32_t fr_timeout; -#define fr_queue fr_u.fru_queue -#define fr_cache fr_u.fru_cache - union { - LIST_HEAD(pf_fragq, pf_frent) fru_queue; /* buffering */ - LIST_HEAD(pf_cacheq, pf_frcache) fru_cache; /* non-buf */ - } fr_u; -}; - #endif /* _KERNEL */ #ifdef _KERNEL From owner-svn-src-projects@FreeBSD.ORG Thu Mar 1 11:55:29 2012 Return-Path: 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 42BAB106564A; Thu, 1 Mar 2012 11:55:29 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2D4BF8FC15; Thu, 1 Mar 2012 11:55: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 q21BtTOD077180; Thu, 1 Mar 2012 11:55:29 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q21BtTmO077178; Thu, 1 Mar 2012 11:55:29 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203011155.q21BtTmO077178@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 1 Mar 2012 11:55: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: r232332 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Mar 2012 11:55:29 -0000 Author: glebius Date: Thu Mar 1 11:55:28 2012 New Revision: 232332 URL: http://svn.freebsd.org/changeset/base/232332 Log: Use correct size argument for V_pf_state_key_pl and V_pf_state_item_pl. Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 11:03:39 2012 (r232331) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 11:55:28 2012 (r232332) @@ -274,13 +274,14 @@ pfattach(void) NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_rule_pl = uma_zcreate("pfrulepl", sizeof(struct pf_rule), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - /* XXXGL: why three same zones here? */ V_pf_state_pl = uma_zcreate("pfstatepl", sizeof(struct pf_state), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_state_key_pl = uma_zcreate("pfstatekeypl", sizeof(struct pf_state), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + V_pf_state_key_pl = uma_zcreate("pfstatekeypl", + sizeof(struct pf_state_key), NULL, NULL, NULL, NULL,UMA_ALIGN_PTR, + 0); V_pf_state_item_pl = uma_zcreate("pfstateitempl", - sizeof(struct pf_state), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + sizeof(struct pf_state_item), NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, 0); V_pf_altq_pl = uma_zcreate("pfaltqpl", sizeof(struct pf_altq), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_pooladdr_pl = uma_zcreate("pfpooladdrpl", From owner-svn-src-projects@FreeBSD.ORG Thu Mar 1 14:42:07 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 528AE106566C; Thu, 1 Mar 2012 14:42:07 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3CE4F8FC18; Thu, 1 Mar 2012 14:42:07 +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 q21Eg7kS083262; Thu, 1 Mar 2012 14:42:07 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q21Eg70a083257; Thu, 1 Mar 2012 14:42:07 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203011442.q21Eg70a083257@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 1 Mar 2012 14:42:07 +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: r232340 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Mar 2012 14:42:07 -0000 Author: glebius Date: Thu Mar 1 14:42:06 2012 New Revision: 232340 URL: http://svn.freebsd.org/changeset/base/232340 Log: o Axe intermediate struct pf_state_item, instead embed TAILQ_ENTRY right into struct pf_state. Axe associated UMA zone. - More PF_RULES_RASSERT. - Minor unrelated nits. Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c projects/pf/head/sys/contrib/pf/net/pfvar.h Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Thu Mar 1 14:39:01 2012 (r232339) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Thu Mar 1 14:42:06 2012 (r232340) @@ -682,9 +682,8 @@ pfsync_in_clr(struct pfsync_pkt *pkt, st int len = sizeof(*clr) * count; int i, offp; - struct pf_state *st, *nexts; + struct pf_state *si, *st, *nexts; struct pf_state_key *sk, *nextsk; - struct pf_state_item *si; u_int32_t creatorid; mp = m_pulldown(m, offset, len, &offp); @@ -716,11 +715,11 @@ pfsync_in_clr(struct pfsync_pkt *pkt, st sk; sk = nextsk) { nextsk = RB_NEXT(pf_state_tree, &V_pf_statetbl, sk); - TAILQ_FOREACH(si, &sk->states, entry) { - if (si->s->creatorid == creatorid) { - SET(si->s->state_flags, + TAILQ_FOREACH(si, &sk->states, key_list) { + if (si->creatorid == creatorid) { + SET(si->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(si->s); + pf_unlink_state(si); } } } Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Thu Mar 1 14:39:01 2012 (r232339) +++ projects/pf/head/sys/contrib/pf/net/pf.c Thu Mar 1 14:42:06 2012 (r232340) @@ -160,7 +160,6 @@ VNET_DEFINE(uma_zone_t, pf_rule_pl); VNET_DEFINE(uma_zone_t, pf_pooladdr_pl); VNET_DEFINE(uma_zone_t, pf_state_pl); VNET_DEFINE(uma_zone_t, pf_state_key_pl); -VNET_DEFINE(uma_zone_t, pf_state_item_pl); VNET_DEFINE(uma_zone_t, pf_altq_pl); static void pf_src_tree_remove_state(struct pf_state *); @@ -678,24 +677,23 @@ pf_state_compare_id(struct pf_state *a, static int pf_state_key_attach(struct pf_state_key *sk, struct pf_state *s, int idx) { - struct pf_state_item *si; struct pf_state_key *cur; - struct pf_state *olds = NULL; + struct pf_state *si, *olds = NULL; KASSERT(s->key[idx] == NULL, ("%s: key is null!", __func__)); if ((cur = RB_INSERT(pf_state_tree, &V_pf_statetbl, sk)) != NULL) { /* key exists. check for same kif, if none, add to key */ - TAILQ_FOREACH(si, &cur->states, entry) - if (si->s->kif == s->kif && - si->s->direction == s->direction) { + TAILQ_FOREACH(si, &cur->states, key_list) + if (si->kif == s->kif && + si->direction == s->direction) { if (sk->proto == IPPROTO_TCP && - si->s->src.state >= TCPS_FIN_WAIT_2 && - si->s->dst.state >= TCPS_FIN_WAIT_2) { - si->s->src.state = si->s->dst.state = + si->src.state >= TCPS_FIN_WAIT_2 && + si->dst.state >= TCPS_FIN_WAIT_2) { + si->src.state = si->dst.state = TCPS_CLOSED; /* unlink late or sks can go away */ - olds = si->s; + olds = si; } else { if (V_pf_status.debug >= PF_DEBUG_MISC) { printf("pf: %s key attach " @@ -709,7 +707,7 @@ pf_state_key_attach(struct pf_state_key (idx == PF_SK_STACK) ? sk : NULL); printf(", existing: "); - pf_print_state_parts(si->s, + pf_print_state_parts(si, (idx == PF_SK_WIRE) ? sk : NULL, (idx == PF_SK_STACK) ? @@ -725,17 +723,11 @@ pf_state_key_attach(struct pf_state_key } else s->key[idx] = sk; - if ((si = uma_zalloc(V_pf_state_item_pl, M_NOWAIT)) == NULL) { - pf_state_key_detach(s, idx); - return (-1); - } - si->s = s; - /* list is sorted, if-bound states before floating */ if (s->kif == V_pfi_all) - TAILQ_INSERT_TAIL(&s->key[idx]->states, si, entry); + TAILQ_INSERT_TAIL(&s->key[idx]->states, s, key_list); else - TAILQ_INSERT_HEAD(&s->key[idx]->states, si, entry); + TAILQ_INSERT_HEAD(&s->key[idx]->states, s, key_list); if (olds) pf_unlink_state(olds); @@ -759,22 +751,19 @@ pf_detach_state(struct pf_state *s) static void pf_state_key_detach(struct pf_state *s, int idx) { - struct pf_state_item *si; + struct pf_state *si; si = TAILQ_FIRST(&s->key[idx]->states); - while (si && si->s != s) - si = TAILQ_NEXT(si, entry); + while (si && si != s) + si = TAILQ_NEXT(si, key_list); - if (si) { - TAILQ_REMOVE(&s->key[idx]->states, si, entry); - uma_zfree(V_pf_state_item_pl, si); - } + if (si) + TAILQ_REMOVE(&s->key[idx]->states, si, key_list); if (TAILQ_EMPTY(&s->key[idx]->states)) { RB_REMOVE(pf_state_tree, &V_pf_statetbl, s->key[idx]); if (s->key[idx]->reverse) s->key[idx]->reverse->reverse = NULL; - /* XXX: implement this */ uma_zfree(V_pf_state_key_pl, s->key[idx]); } s->key[idx] = NULL; @@ -927,7 +916,7 @@ pf_find_state(struct pfi_kif *kif, struc struct mbuf *m, struct pf_mtag *pftag) { struct pf_state_key *sk; - struct pf_state_item *si; + struct pf_state *si; V_pf_status.fcounters[FCNT_STATE_SEARCH]++; @@ -951,11 +940,11 @@ pf_find_state(struct pfi_kif *kif, struc pftag->statekey = NULL; /* list is sorted, if-bound states before floating ones */ - TAILQ_FOREACH(si, &sk->states, entry) - if ((si->s->kif == V_pfi_all || si->s->kif == kif) && - sk == (dir == PF_IN ? si->s->key[PF_SK_WIRE] : - si->s->key[PF_SK_STACK])) - return (si->s); + TAILQ_FOREACH(si, &sk->states, key_list) + if ((si->kif == V_pfi_all || si->kif == kif) && + sk == (dir == PF_IN ? si->key[PF_SK_WIRE] : + si->key[PF_SK_STACK])) + return (si); return (NULL); } @@ -964,26 +953,27 @@ struct pf_state * pf_find_state_all(struct pf_state_key_cmp *key, u_int dir, int *more) { struct pf_state_key *sk; - struct pf_state_item *si, *ret = NULL; + struct pf_state *s, *ret = NULL; V_pf_status.fcounters[FCNT_STATE_SEARCH]++; sk = RB_FIND(pf_state_tree, &V_pf_statetbl, (struct pf_state_key *)key); if (sk != NULL) { - TAILQ_FOREACH(si, &sk->states, entry) + TAILQ_FOREACH(s, &sk->states, key_list) if (dir == PF_INOUT || - (sk == (dir == PF_IN ? si->s->key[PF_SK_WIRE] : - si->s->key[PF_SK_STACK]))) { + (sk == (dir == PF_IN ? s->key[PF_SK_WIRE] : + s->key[PF_SK_STACK]))) { if (more == NULL) - return (si->s); + return (s); if (ret) (*more)++; else - ret = si; + ret = s; } } - return (ret ? ret->s : NULL); + + return (ret); } /* END state table stuff */ @@ -1157,9 +1147,6 @@ pf_src_tree_remove_state(struct pf_state void pf_unlink_state(struct pf_state *cur) { - if (cur->local_flags & PFSTATE_EXPIRING) - return; - cur->local_flags |= PFSTATE_EXPIRING; if (cur->src.state == PF_TCPS_PROXY_DST) { /* XXX wire key the right one? */ @@ -2206,6 +2193,8 @@ pf_step_into_anchor(int *depth, struct p { struct pf_anchor_stackframe *f; + PF_RULES_RASSERT(); + (*r)->anchor->match = 0; if (match) *match = 0; @@ -2242,6 +2231,8 @@ pf_step_out_of_anchor(int *depth, struct struct pf_anchor_stackframe *f; int quick = 0; + PF_RULES_RASSERT(); + do { if (*depth <= 0) break; @@ -3280,6 +3271,8 @@ pf_test_fragment(struct pf_rule **rm, in int asd = 0; int match = 0; + PF_RULES_RASSERT(); + r = TAILQ_FIRST(pf_main_ruleset.rules[PF_RULESET_FILTER].active.ptr); while (r != NULL) { r->evaluations++; Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 14:39:01 2012 (r232339) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Thu Mar 1 14:42:06 2012 (r232340) @@ -257,7 +257,6 @@ cleanup_pf_zone(void) uma_zdestroy(V_pf_rule_pl); uma_zdestroy(V_pf_state_pl); uma_zdestroy(V_pf_state_key_pl); - uma_zdestroy(V_pf_state_item_pl); uma_zdestroy(V_pf_altq_pl); uma_zdestroy(V_pf_pooladdr_pl); uma_zdestroy(V_pfr_ktable_pl); @@ -279,9 +278,6 @@ pfattach(void) V_pf_state_key_pl = uma_zcreate("pfstatekeypl", sizeof(struct pf_state_key), NULL, NULL, NULL, NULL,UMA_ALIGN_PTR, 0); - V_pf_state_item_pl = uma_zcreate("pfstateitempl", - sizeof(struct pf_state_item), NULL, NULL, NULL, NULL, - UMA_ALIGN_PTR, 0); V_pf_altq_pl = uma_zcreate("pfaltqpl", sizeof(struct pf_altq), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_pooladdr_pl = uma_zcreate("pfpooladdrpl", Modified: projects/pf/head/sys/contrib/pf/net/pfvar.h ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pfvar.h Thu Mar 1 14:39:01 2012 (r232339) +++ projects/pf/head/sys/contrib/pf/net/pfvar.h Thu Mar 1 14:42:06 2012 (r232340) @@ -764,13 +764,6 @@ struct pf_state_key_cmp { u_int8_t pad[2]; }; -struct pf_state_item { - TAILQ_ENTRY(pf_state_item) entry; - struct pf_state *s; -}; - -TAILQ_HEAD(pf_statelisthead, pf_state_item); - struct pf_state_key { struct pf_addr addr[2]; u_int16_t port[2]; @@ -779,7 +772,7 @@ struct pf_state_key { u_int8_t pad[2]; RB_ENTRY(pf_state_key) entry; - struct pf_statelisthead states; + TAILQ_HEAD(, pf_state) states; struct pf_state_key *reverse; struct inpcb *inp; }; @@ -797,11 +790,9 @@ struct pf_state { u_int32_t creatorid; u_int8_t direction; u_int8_t pad[2]; - u_int8_t local_flags; -#define PFSTATE_EXPIRING 0x01 - TAILQ_ENTRY(pf_state) sync_list; TAILQ_ENTRY(pf_state) entry_list; + TAILQ_ENTRY(pf_state) key_list; RB_ENTRY(pf_state) entry_id; struct pf_state_peer src; struct pf_state_peer dst; @@ -882,9 +873,7 @@ struct pfsync_state { sa_family_t af; u_int8_t proto; u_int8_t direction; - u_int8_t local_flags; -#define PFSTATE_EXPIRING 0x01 - + u_int8_t __spare; u_int8_t log; u_int8_t state_flags; u_int8_t timeout; @@ -1766,8 +1755,6 @@ VNET_DECLARE(uma_zone_t, pf_state_pl); #define V_pf_state_pl VNET(pf_state_pl) VNET_DECLARE(uma_zone_t, pf_state_key_pl); #define V_pf_state_key_pl VNET(pf_state_key_pl) -VNET_DECLARE(uma_zone_t, pf_state_item_pl); -#define V_pf_state_item_pl VNET(pf_state_item_pl) VNET_DECLARE(uma_zone_t, pf_altq_pl); #define V_pf_altq_pl VNET(pf_altq_pl) VNET_DECLARE(uma_zone_t, pf_pooladdr_pl); From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 11:27:08 2012 Return-Path: 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 38BB61065670; Fri, 2 Mar 2012 11:27:08 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 21BE18FC1B; Fri, 2 Mar 2012 11:27: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 q22BR8nH027903; Fri, 2 Mar 2012 11:27:08 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22BR8dA027898; Fri, 2 Mar 2012 11:27:08 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203021127.q22BR8dA027898@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 2 Mar 2012 11:27: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: r232386 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 11:27:08 -0000 Author: glebius Date: Fri Mar 2 11:27:07 2012 New Revision: 232386 URL: http://svn.freebsd.org/changeset/base/232386 Log: - Add separate mutex to lock state keys rbtree. - Add separate mutex to lock state IDs rbtree. - Add separate rwlock to lock the global states list. Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c projects/pf/head/sys/contrib/pf/net/pfvar.h Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 10:03:38 2012 (r232385) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 11:27:07 2012 (r232386) @@ -698,18 +698,23 @@ pfsync_in_clr(struct pfsync_pkt *pkt, st creatorid = clr[i].creatorid; if (clr[i].ifname[0] == '\0') { + PF_KEYS_LOCK(); + PF_IDS_LOCK(); for (st = RB_MIN(pf_state_tree_id, &V_tree_id); st; st = nexts) { nexts = RB_NEXT(pf_state_tree_id, &V_tree_id, st); if (st->creatorid == creatorid) { SET(st->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(st); + pf_unlink_state(st, 1); } } + PF_IDS_UNLOCK(); + PF_KEYS_UNLOCK(); } else { if (pfi_kif_get(clr[i].ifname) == NULL) continue; + PF_KEYS_LOCK(); /* XXX correct? */ for (sk = RB_MIN(pf_state_tree, &V_pf_statetbl); sk; sk = nextsk) { @@ -719,10 +724,11 @@ pfsync_in_clr(struct pfsync_pkt *pkt, st if (si->creatorid == creatorid) { SET(si->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(si); + pf_unlink_state(si, 0); } } } + PF_KEYS_UNLOCK(); } } PF_UNLOCK(); @@ -1104,7 +1110,7 @@ pfsync_in_del(struct pfsync_pkt *pkt, st continue; } SET(st->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(st); + pf_unlink_state(st, 0); } PF_UNLOCK(); @@ -1142,7 +1148,7 @@ pfsync_in_del_c(struct pfsync_pkt *pkt, } SET(st->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(st); + pf_unlink_state(st, 0); } PF_UNLOCK(); @@ -2212,9 +2218,11 @@ pfsync_bulk_update(void *arg) i++; } + PF_LIST_RLOCK(); st = TAILQ_NEXT(st, entry_list); if (st == NULL) st = TAILQ_FIRST(&V_state_list); + PF_LIST_RUNLOCK(); if (st == sc->sc_bulk_last) { /* we're done */ Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 10:03:38 2012 (r232385) +++ projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 11:27:07 2012 (r232386) @@ -489,6 +489,8 @@ pf_src_connlimit(struct pf_state **state struct pf_state *st; V_pf_status.lcounters[LCNT_OVERLOAD_FLUSH]++; + PF_IDS_LOCK(); + /* XXXGL: this cycle should go into a separate taskq */ RB_FOREACH(st, pf_state_tree_id, &V_tree_id) { sk = st->key[PF_SK_WIRE]; /* @@ -513,6 +515,7 @@ pf_src_connlimit(struct pf_state **state killed++; } } + PF_IDS_UNLOCK(); if (V_pf_status.debug >= PF_DEBUG_MISC) printf(", %u states killed", killed); } @@ -680,7 +683,8 @@ pf_state_key_attach(struct pf_state_key struct pf_state_key *cur; struct pf_state *si, *olds = NULL; - KASSERT(s->key[idx] == NULL, ("%s: key is null!", __func__)); + PF_KEYS_ASSERT(); + KASSERT(s->key[idx] == NULL, ("%s: a key already attached", __func__)); if ((cur = RB_INSERT(pf_state_tree, &V_pf_statetbl, sk)) != NULL) { /* key exists. check for same kif, if none, add to key */ @@ -730,7 +734,7 @@ pf_state_key_attach(struct pf_state_key TAILQ_INSERT_HEAD(&s->key[idx]->states, s, key_list); if (olds) - pf_unlink_state(olds); + pf_unlink_state(olds, 0); return (0); } @@ -738,6 +742,9 @@ pf_state_key_attach(struct pf_state_key static void pf_detach_state(struct pf_state *s) { + + PF_KEYS_ASSERT(); + if (s->key[PF_SK_WIRE] == s->key[PF_SK_STACK]) s->key[PF_SK_WIRE] = NULL; @@ -753,6 +760,8 @@ pf_state_key_detach(struct pf_state *s, { struct pf_state *si; + PF_KEYS_ASSERT(); + si = TAILQ_FIRST(&s->key[idx]->states); while (si && si != s) si = TAILQ_NEXT(si, key_list); @@ -833,17 +842,22 @@ pf_state_insert(struct pfi_kif *kif, str s->kif = kif; + PF_KEYS_LOCK(); if (skw == sks) { - if (pf_state_key_attach(skw, s, PF_SK_WIRE)) + if (pf_state_key_attach(skw, s, PF_SK_WIRE)) { + PF_KEYS_UNLOCK(); return (-1); + } s->key[PF_SK_STACK] = s->key[PF_SK_WIRE]; } else { if (pf_state_key_attach(skw, s, PF_SK_WIRE)) { + PF_KEYS_UNLOCK(); uma_zfree(V_pf_state_key_pl, sks); return (-1); } if (pf_state_key_attach(sks, s, PF_SK_STACK)) { pf_state_key_detach(s, PF_SK_WIRE); + PF_KEYS_UNLOCK(); return (-1); } } @@ -852,7 +866,9 @@ pf_state_insert(struct pfi_kif *kif, str s->id = htobe64(V_pf_status.stateid++); s->creatorid = V_pf_status.hostid; } + PF_IDS_LOCK(); if (RB_INSERT(pf_state_tree_id, &V_tree_id, s) != NULL) { + PF_IDS_UNLOCK(); if (V_pf_status.debug >= PF_DEBUG_MISC) { printf("pf: state insert failed: " "id: %016llx creatorid: %08x", @@ -862,7 +878,11 @@ pf_state_insert(struct pfi_kif *kif, str pf_detach_state(s); return (-1); } + PF_IDS_UNLOCK(); + PF_KEYS_UNLOCK(); + PF_LIST_WLOCK(); TAILQ_INSERT_TAIL(&V_state_list, s, entry_list); + PF_LIST_WUNLOCK(); V_pf_status.fcounters[FCNT_STATE_INSERT]++; V_pf_status.states++; pfi_kif_ref(kif, PFI_KIF_REF_STATE); @@ -875,9 +895,14 @@ pf_state_insert(struct pfi_kif *kif, str struct pf_state * pf_find_state_byid(struct pf_state_cmp *key) { + struct pf_state *s; + V_pf_status.fcounters[FCNT_STATE_SEARCH]++; + PF_IDS_LOCK(); + s = RB_FIND(pf_state_tree_id, &V_tree_id, (struct pf_state *)key); + PF_IDS_UNLOCK(); - return (RB_FIND(pf_state_tree_id, &V_tree_id, (struct pf_state *)key)); + return (s); } /* XXX debug function, intended to be removed one day */ @@ -920,13 +945,16 @@ pf_find_state(struct pfi_kif *kif, struc V_pf_status.fcounters[FCNT_STATE_SEARCH]++; + PF_KEYS_LOCK(); if (dir == PF_OUT && pftag->statekey && ((struct pf_state_key *)pftag->statekey)->reverse) sk = ((struct pf_state_key *)pftag->statekey)->reverse; else { if ((sk = RB_FIND(pf_state_tree, &V_pf_statetbl, - (struct pf_state_key *)key)) == NULL) + (struct pf_state_key *)key)) == NULL) { + PF_KEYS_UNLOCK(); return (NULL); + } if (dir == PF_OUT && pftag->statekey && pf_compare_state_keys(pftag->statekey, sk, kif, dir) == 0) { @@ -943,8 +971,11 @@ pf_find_state(struct pfi_kif *kif, struc TAILQ_FOREACH(si, &sk->states, key_list) if ((si->kif == V_pfi_all || si->kif == kif) && sk == (dir == PF_IN ? si->key[PF_SK_WIRE] : - si->key[PF_SK_STACK])) + si->key[PF_SK_STACK])) { + PF_KEYS_UNLOCK(); return (si); + } + PF_KEYS_UNLOCK(); return (NULL); } @@ -957,14 +988,17 @@ pf_find_state_all(struct pf_state_key_cm V_pf_status.fcounters[FCNT_STATE_SEARCH]++; + PF_KEYS_LOCK(); sk = RB_FIND(pf_state_tree, &V_pf_statetbl, (struct pf_state_key *)key); if (sk != NULL) { TAILQ_FOREACH(s, &sk->states, key_list) if (dir == PF_INOUT || (sk == (dir == PF_IN ? s->key[PF_SK_WIRE] : s->key[PF_SK_STACK]))) { - if (more == NULL) + if (more == NULL) { + PF_KEYS_UNLOCK(); return (s); + } if (ret) (*more)++; @@ -972,6 +1006,7 @@ pf_find_state_all(struct pf_state_key_cm ret = s; } } + PF_KEYS_UNLOCK(); return (ret); } @@ -1145,9 +1180,11 @@ pf_src_tree_remove_state(struct pf_state } void -pf_unlink_state(struct pf_state *cur) +pf_unlink_state(struct pf_state *cur, int idslocked) { + PF_KEYS_ASSERT(); + if (cur->src.state == PF_TCPS_PROXY_DST) { /* XXX wire key the right one? */ pf_send_tcp(NULL, cur->rule.ptr, cur->key[PF_SK_WIRE]->af, @@ -1158,7 +1195,11 @@ pf_unlink_state(struct pf_state *cur) cur->src.seqhi, cur->src.seqlo + 1, TH_RST|TH_ACK, 0, 0, 0, 1, cur->tag, NULL, NULL); } + if (!idslocked) + PF_IDS_LOCK(); RB_REMOVE(pf_state_tree_id, &V_tree_id, cur); + if (!idslocked) + PF_IDS_UNLOCK(); #if NPFLOW > 0 if (cur->state_flags & PFSTATE_PFLOW) if (export_pflow_ptr != NULL) @@ -1177,6 +1218,8 @@ static void pf_free_state(struct pf_state *cur) { + PF_LIST_WASSERT(); + if (pfsync_state_in_use_ptr != NULL && pfsync_state_in_use_ptr(cur)) return; @@ -1210,6 +1253,7 @@ pf_purge_expired_states(u_int32_t maxche struct pf_state *next; int locked = waslocked; + PF_LIST_WLOCK(); while (maxcheck--) { /* wrap to start of list when we hit the end */ if (cur == NULL) { @@ -1224,23 +1268,30 @@ pf_purge_expired_states(u_int32_t maxche if (cur->timeout == PFTM_UNLINKED) { /* free unlinked state */ if (! locked) { - if (!sx_try_upgrade(&V_pf_consistency_lock)) + if (!sx_try_upgrade(&V_pf_consistency_lock)) { + PF_LIST_WUNLOCK(); return (0); /* XXXGL */ + } locked = 1; } pf_free_state(cur); } else if (pf_state_expires(cur) <= time_second) { + PF_KEYS_LOCK(); /* unlink and free expired state */ - pf_unlink_state(cur); + pf_unlink_state(cur, 0); + PF_KEYS_UNLOCK(); if (! locked) { - if (!sx_try_upgrade(&V_pf_consistency_lock)) + if (!sx_try_upgrade(&V_pf_consistency_lock)) { + PF_LIST_WUNLOCK(); return (0); /* XXXGL */ + } locked = 1; } pf_free_state(cur); } cur = next; } + PF_LIST_WUNLOCK(); if (!waslocked && locked) sx_downgrade(&V_pf_consistency_lock); @@ -3877,7 +3928,7 @@ pf_test_state_tcp(struct pf_state **stat } /* XXX make sure it's the same direction ?? */ (*state)->src.state = (*state)->dst.state = TCPS_CLOSED; - pf_unlink_state(*state); + pf_unlink_state(*state, 0); *state = NULL; return (PF_DROP); } Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 10:03:38 2012 (r232385) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 11:27:07 2012 (r232386) @@ -172,9 +172,6 @@ struct cdev *pf_dev; static void pf_clear_states(void); static int pf_clear_tables(void); static void pf_clear_srcnodes(void); -/* - * XXX - These are new and need to be checked when moveing to a new version - */ /* * Wrapper functions for pfil(9) hooks @@ -209,6 +206,9 @@ static volatile VNET_DEFINE(int, pf_pfil VNET_DEFINE(int, pf_end_threads); struct mtx pf_mtx; +struct mtx pf_state_keys_mtx; +struct mtx pf_state_ids_mtx; +struct rwlock pf_state_list_lock; struct rwlock pf_rules_lock; /* pfsync */ @@ -235,6 +235,9 @@ init_pf_mutex(void) { mtx_init(&pf_mtx, "pf Giant", NULL, MTX_DEF); + mtx_init(&pf_state_keys_mtx, "pf state keys", NULL, MTX_DEF); + mtx_init(&pf_state_ids_mtx, "pf state ids", NULL, MTX_DEF); + rw_init(&pf_state_list_lock, "pf state list"); rw_init(&pf_rules_lock, "pf rulesets"); /* XXXGL: name */ sx_init(&V_pf_consistency_lock, "pf_statetbl_lock"); @@ -245,6 +248,9 @@ destroy_pf_mutex(void) { mtx_destroy(&pf_mtx); + mtx_destroy(&pf_state_keys_mtx); + mtx_destroy(&pf_state_ids_mtx); + rw_destroy(&pf_state_list_lock); rw_destroy(&pf_rules_lock); sx_destroy(&V_pf_consistency_lock); } @@ -1682,6 +1688,8 @@ pfioctl(struct cdev *dev, u_long cmd, ca struct pfioc_state_kill *psk = (struct pfioc_state_kill *)addr; u_int killed = 0; + PF_KEYS_LOCK(); + PF_IDS_LOCK(); for (s = RB_MIN(pf_state_tree_id, &V_tree_id); s; s = nexts) { nexts = RB_NEXT(pf_state_tree_id, &V_tree_id, s); @@ -1689,10 +1697,12 @@ pfioctl(struct cdev *dev, u_long cmd, ca s->kif->pfik_name)) { /* don't send out individual delete messages */ SET(s->state_flags, PFSTATE_NOSYNC); - pf_unlink_state(s); + pf_unlink_state(s, 1); killed++; } } + PF_IDS_UNLOCK(); + PF_KEYS_UNLOCK(); psk->psk_killed = killed; if (pfsync_clear_states_ptr != NULL) pfsync_clear_states_ptr(V_pf_status.hostid, psk->psk_ifname); @@ -1711,12 +1721,14 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (psk->psk_pfcmp.creatorid == 0) psk->psk_pfcmp.creatorid = V_pf_status.hostid; if ((s = pf_find_state_byid(&psk->psk_pfcmp))) { - pf_unlink_state(s); + pf_unlink_state(s, 0); psk->psk_killed = 1; } break; } + PF_KEYS_LOCK(); + PF_IDS_LOCK(); for (s = RB_MIN(pf_state_tree_id, &V_tree_id); s; s = nexts) { nexts = RB_NEXT(pf_state_tree_id, &V_tree_id, s); @@ -1756,10 +1768,12 @@ pfioctl(struct cdev *dev, u_long cmd, ca !strcmp(psk->psk_label, s->rule.ptr->label))) && (!psk->psk_ifname[0] || !strcmp(psk->psk_ifname, s->kif->pfik_name))) { - pf_unlink_state(s); + pf_unlink_state(s, 1); killed++; } } + PF_IDS_UNLOCK(); + PF_KEYS_UNLOCK(); psk->psk_killed = killed; break; } @@ -1799,7 +1813,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca case DIOCGETSTATES: { struct pfioc_states *ps = (struct pfioc_states *)addr; struct pf_state *state; - struct pfsync_state *p, *pstore; + struct pfsync_state *p, pstore; u_int32_t nr = 0; if (ps->ps_len == 0) { @@ -1808,32 +1822,31 @@ pfioctl(struct cdev *dev, u_long cmd, ca break; } - PF_UNLOCK(); - pstore = malloc(sizeof(*pstore), M_TEMP, M_WAITOK); - PF_LOCK(); - p = ps->ps_states; + PF_LIST_RLOCK(); state = TAILQ_FIRST(&V_state_list); while (state) { if (state->timeout != PFTM_UNLINKED) { if ((nr+1) * sizeof(*p) > (unsigned)ps->ps_len) break; - pfsync_state_export(pstore, state); - PF_COPYOUT(pstore, p, sizeof(*p), error); - if (error) { - free(pstore, M_TEMP); + pfsync_state_export(&pstore, state); + PF_LIST_RUNLOCK(); /* XXXGL: ref state? */ + PF_UNLOCK(); + error = copyout(&pstore, p, sizeof(*p)); + PF_LOCK(); + if (error) goto fail; - } + PF_LIST_RLOCK(); p++; nr++; } state = TAILQ_NEXT(state, entry_list); } + PF_LIST_RUNLOCK(); ps->ps_len = sizeof(struct pfsync_state) * nr; - free(pstore, M_TEMP); break; } @@ -2964,14 +2977,18 @@ pfioctl(struct cdev *dev, u_long cmd, ca struct pf_src_node *n; struct pf_state *state; + PF_IDS_LOCK(); RB_FOREACH(state, pf_state_tree_id, &V_tree_id) { state->src_node = NULL; state->nat_src_node = NULL; } + PF_IDS_UNLOCK(); + PF_KEYS_LOCK(); RB_FOREACH(n, pf_src_tree, &V_tree_src_tracking) { n->expire = 1; n->states = 0; } + PF_KEYS_UNLOCK(); pf_purge_expired_src_nodes(1); V_pf_status.src_nodes = 0; break; @@ -2984,6 +3001,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca (struct pfioc_src_node_kill *)addr; u_int killed = 0; + PF_KEYS_LOCK(); RB_FOREACH(sn, pf_src_tree, &V_tree_src_tracking) { if (PF_MATCHA(psnk->psnk_src.neg, &psnk->psnk_src.addr.v.a.addr, @@ -2995,6 +3013,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca &sn->raddr, sn->af)) { /* Handle state to src_node linkage */ if (sn->states != 0) { + PF_IDS_LOCK(); RB_FOREACH(s, pf_state_tree_id, &V_tree_id) { if (s->src_node == sn) @@ -3002,12 +3021,14 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (s->nat_src_node == sn) s->nat_src_node = NULL; } + PF_IDS_UNLOCK(); sn->states = 0; } sn->expire = 1; killed++; } } + PF_KEYS_UNLOCK(); if (killed > 0) pf_purge_expired_src_nodes(1); @@ -3141,13 +3162,17 @@ static void pf_clear_states(void) { struct pf_state *state; - + + PF_KEYS_LOCK(); + PF_IDS_LOCK(); RB_FOREACH(state, pf_state_tree_id, &V_tree_id) { state->timeout = PFTM_PURGE; /* don't send out individual delete messages */ state->sync_state = PFSTATE_NOSYNC; - pf_unlink_state(state); + pf_unlink_state(state, 1); } + PF_IDS_UNLOCK(); + PF_KEYS_UNLOCK(); #if 0 /* NPFSYNC */ /* @@ -3177,14 +3202,18 @@ pf_clear_srcnodes(void) struct pf_src_node *n; struct pf_state *state; + PF_IDS_LOCK(); RB_FOREACH(state, pf_state_tree_id, &V_tree_id) { state->src_node = NULL; state->nat_src_node = NULL; } + PF_IDS_UNLOCK(); + PF_KEYS_LOCK(); RB_FOREACH(n, pf_src_tree, &V_tree_src_tracking) { n->expire = 1; n->states = 0; } + PF_KEYS_UNLOCK(); } /* * XXX - Check for version missmatch!!! Modified: projects/pf/head/sys/contrib/pf/net/pfvar.h ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pfvar.h Fri Mar 2 10:03:38 2012 (r232385) +++ projects/pf/head/sys/contrib/pf/net/pfvar.h Fri Mar 2 11:27:07 2012 (r232386) @@ -208,6 +208,24 @@ extern struct mtx pf_mtx; #define PF_LOCK() mtx_lock(&pf_mtx) #define PF_UNLOCK() mtx_unlock(&pf_mtx) +extern struct mtx pf_state_keys_mtx; +#define PF_KEYS_ASSERT() mtx_assert(&pf_state_keys_mtx, MA_OWNED) +#define PF_KEYS_LOCK() mtx_lock(&pf_state_keys_mtx) +#define PF_KEYS_UNLOCK() mtx_unlock(&pf_state_keys_mtx) + +extern struct mtx pf_state_ids_mtx; +#define PF_IDS_ASSERT() mtx_assert(&pf_state_ids_mtx, MA_OWNED) +#define PF_IDS_LOCK() mtx_lock(&pf_state_ids_mtx) +#define PF_IDS_UNLOCK() mtx_unlock(&pf_state_ids_mtx) + +extern struct rwlock pf_state_list_lock; +#define PF_LIST_RASSERT() rw_assert(&pf_state_list_lock, RA_RLOCKED) +#define PF_LIST_RLOCK() rw_rlock(&pf_state_list_lock) +#define PF_LIST_RUNLOCK() rw_runlock(&pf_state_list_lock) +#define PF_LIST_WASSERT() rw_assert(&pf_state_list_lock, RA_WLOCKED) +#define PF_LIST_WLOCK() rw_wlock(&pf_state_list_lock) +#define PF_LIST_WUNLOCK() rw_wunlock(&pf_state_list_lock) + extern struct rwlock pf_rules_lock; #define PF_RULES_RLOCK() rw_rlock(&pf_rules_lock) #define PF_RULES_RUNLOCK() rw_runlock(&pf_rules_lock) @@ -1770,7 +1788,7 @@ VNET_DECLARE(uma_zone_t, pfi_addr_pl); extern void pf_purge_thread(void *); extern int pf_purge_expired_src_nodes(int); -extern void pf_unlink_state(struct pf_state *); +extern void pf_unlink_state(struct pf_state *, int); extern int pf_state_insert(struct pfi_kif *, struct pf_state_key *, struct pf_state_key *, From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 12:33:11 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0A54C106567E; Fri, 2 Mar 2012 12:33:10 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CA77C8FC28; Fri, 2 Mar 2012 12:33:10 +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 q22CXAsv030208; Fri, 2 Mar 2012 12:33:10 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22CXARQ030198; Fri, 2 Mar 2012 12:33:10 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203021233.q22CXARQ030198@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 2 Mar 2012 12:33:10 +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: r232390 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 12:33:11 -0000 Author: glebius Date: Fri Mar 2 12:33:10 2012 New Revision: 232390 URL: http://svn.freebsd.org/changeset/base/232390 Log: - Due to the "V" our zone names do not match original OpenBSD names, so there is not reason to name our zones as "pools", so this change mechanically renames them. - Provide better zone names in uma_zcreate(). Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_if.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c projects/pf/head/sys/contrib/pf/net/pf_lb.c projects/pf/head/sys/contrib/pf/net/pf_norm.c projects/pf/head/sys/contrib/pf/net/pf_osfp.c projects/pf/head/sys/contrib/pf/net/pf_table.c projects/pf/head/sys/contrib/pf/net/pfvar.h Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 12:33:10 2012 (r232390) @@ -425,7 +425,7 @@ pfsync_alloc_scrub_memory(struct pfsync_ struct pf_state_peer *d) { if (s->scrub.scrub_flag && d->scrub == NULL) { - d->scrub = uma_zalloc(V_pf_state_scrub_pl, M_NOWAIT | M_ZERO); + d->scrub = uma_zalloc(V_pf_state_scrub_z, M_NOWAIT | M_ZERO); if (d->scrub == NULL) return (ENOMEM); } @@ -481,7 +481,7 @@ pfsync_state_import(struct pfsync_state else pool_flags = M_NOWAIT | M_ZERO; - if ((st = uma_zalloc(V_pf_state_pl, pool_flags)) == NULL) + if ((st = uma_zalloc(V_pf_state_z, pool_flags)) == NULL) goto cleanup; if ((skw = pf_alloc_state_key(pool_flags)) == NULL) @@ -576,17 +576,17 @@ cleanup: if (skw == sks) sks = NULL; if (skw != NULL) - uma_zfree(V_pf_state_key_pl, skw); + uma_zfree(V_pf_state_key_z, skw); if (sks != NULL) - uma_zfree(V_pf_state_key_pl, sks); + uma_zfree(V_pf_state_key_z, sks); cleanup_state: /* pf_state_insert frees the state keys */ if (st) { if (st->dst.scrub) - uma_zfree(V_pf_state_scrub_pl, st->dst.scrub); + uma_zfree(V_pf_state_scrub_z, st->dst.scrub); if (st->src.scrub) - uma_zfree(V_pf_state_scrub_pl, st->src.scrub); - uma_zfree(V_pf_state_pl, st); + uma_zfree(V_pf_state_scrub_z, st->src.scrub); + uma_zfree(V_pf_state_z, st); } return (error); } Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 12:33:10 2012 (r232390) @@ -155,12 +155,12 @@ struct pf_anchor_stackframe { VNET_DEFINE(struct pf_anchor_stackframe, pf_anchor_stack[64]); #define V_pf_anchor_stack VNET(pf_anchor_stack) -VNET_DEFINE(uma_zone_t, pf_src_tree_pl); -VNET_DEFINE(uma_zone_t, pf_rule_pl); -VNET_DEFINE(uma_zone_t, pf_pooladdr_pl); -VNET_DEFINE(uma_zone_t, pf_state_pl); -VNET_DEFINE(uma_zone_t, pf_state_key_pl); -VNET_DEFINE(uma_zone_t, pf_altq_pl); +VNET_DEFINE(uma_zone_t, pf_src_tree_z); +VNET_DEFINE(uma_zone_t, pf_rule_z); +VNET_DEFINE(uma_zone_t, pf_pooladdr_z); +VNET_DEFINE(uma_zone_t, pf_state_z); +VNET_DEFINE(uma_zone_t, pf_state_key_z); +VNET_DEFINE(uma_zone_t, pf_altq_z); static void pf_src_tree_remove_state(struct pf_state *); static void pf_init_threshold(struct pf_threshold *, u_int32_t, @@ -549,7 +549,7 @@ pf_insert_src_node(struct pf_src_node ** if (*sn == NULL) { if (!rule->max_src_nodes || rule->src_nodes < rule->max_src_nodes) - (*sn) = uma_zalloc(V_pf_src_tree_pl, M_NOWAIT | M_ZERO); + (*sn) = uma_zalloc(V_pf_src_tree_z, M_NOWAIT | M_ZERO); else V_pf_status.lcounters[LCNT_SRCNODES]++; if ((*sn) == NULL) @@ -573,7 +573,7 @@ pf_insert_src_node(struct pf_src_node ** pf_print_host(&(*sn)->addr, 0, af); printf("\n"); } - uma_zfree(V_pf_src_tree_pl, *sn); + uma_zfree(V_pf_src_tree_z, *sn); return (-1); } (*sn)->creation = time_second; @@ -718,11 +718,11 @@ pf_state_key_attach(struct pf_state_key sk : NULL); printf("\n"); } - uma_zfree(V_pf_state_key_pl, sk); + uma_zfree(V_pf_state_key_z, sk); return (-1); /* collision! */ } } - uma_zfree(V_pf_state_key_pl, sk); + uma_zfree(V_pf_state_key_z, sk); s->key[idx] = cur; } else s->key[idx] = sk; @@ -773,7 +773,7 @@ pf_state_key_detach(struct pf_state *s, RB_REMOVE(pf_state_tree, &V_pf_statetbl, s->key[idx]); if (s->key[idx]->reverse) s->key[idx]->reverse->reverse = NULL; - uma_zfree(V_pf_state_key_pl, s->key[idx]); + uma_zfree(V_pf_state_key_z, s->key[idx]); } s->key[idx] = NULL; } @@ -783,7 +783,7 @@ pf_alloc_state_key(int pool_flags) { struct pf_state_key *sk; - if ((sk = uma_zalloc(V_pf_state_key_pl, pool_flags)) == NULL) + if ((sk = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) return (NULL); TAILQ_INIT(&sk->states); @@ -852,7 +852,7 @@ pf_state_insert(struct pfi_kif *kif, str } else { if (pf_state_key_attach(skw, s, PF_SK_WIRE)) { PF_KEYS_UNLOCK(); - uma_zfree(V_pf_state_key_pl, sks); + uma_zfree(V_pf_state_key_z, sks); return (-1); } if (pf_state_key_attach(sks, s, PF_SK_STACK)) { @@ -1140,7 +1140,7 @@ pf_purge_expired_src_nodes(int waslocked RB_REMOVE(pf_src_tree, &V_tree_src_tracking, cur); V_pf_status.scounters[SCNT_SRC_NODE_REMOVALS]++; V_pf_status.src_nodes--; - uma_zfree(V_pf_src_tree_pl, cur); + uma_zfree(V_pf_src_tree_z, cur); } } @@ -1241,7 +1241,7 @@ pf_free_state(struct pf_state *cur) TAILQ_REMOVE(&V_state_list, cur, entry_list); if (cur->tag) pf_tag_unref(cur->tag); - uma_zfree(V_pf_state_pl, cur); + uma_zfree(V_pf_state_z, cur); V_pf_status.fcounters[FCNT_STATE_REMOVALS]++; V_pf_status.states--; } @@ -3058,9 +3058,9 @@ pf_test_rule(struct pf_rule **rm, struct return (action); } else { if (sk != NULL) - uma_zfree(V_pf_state_key_pl, sk); + uma_zfree(V_pf_state_key_z, sk); if (nk != NULL) - uma_zfree(V_pf_state_key_pl, nk); + uma_zfree(V_pf_state_key_z, nk); } /* copy back packet headers if we performed NAT operations */ @@ -3084,9 +3084,9 @@ pf_test_rule(struct pf_rule **rm, struct cleanup: if (sk != NULL) - uma_zfree(V_pf_state_key_pl, sk); + uma_zfree(V_pf_state_key_z, sk); if (nk != NULL) - uma_zfree(V_pf_state_key_pl, nk); + uma_zfree(V_pf_state_key_z, nk); return (PF_DROP); } @@ -3123,7 +3123,7 @@ pf_create_state(struct pf_rule *r, struc REASON_SET(&reason, PFRES_SRCLIMIT); goto csfailed; } - s = uma_zalloc(V_pf_state_pl, M_NOWAIT | M_ZERO); + s = uma_zalloc(V_pf_state_z, M_NOWAIT | M_ZERO); if (s == NULL) { REASON_SET(&reason, PFRES_MEMORY); goto csfailed; @@ -3214,7 +3214,7 @@ pf_create_state(struct pf_rule *r, struc REASON_SET(&reason, PFRES_MEMORY); pf_src_tree_remove_state(s); STATE_DEC_COUNTERS(s); - uma_zfree(V_pf_state_pl, s); + uma_zfree(V_pf_state_z, s); return (PF_DROP); } if ((pd->flags & PFDESC_TCP_NORM) && s->src.scrub && @@ -3226,7 +3226,7 @@ pf_create_state(struct pf_rule *r, struc pf_normalize_tcp_cleanup(s); pf_src_tree_remove_state(s); STATE_DEC_COUNTERS(s); - uma_zfree(V_pf_state_pl, s); + uma_zfree(V_pf_state_z, s); return (PF_DROP); } } @@ -3242,7 +3242,7 @@ pf_create_state(struct pf_rule *r, struc REASON_SET(&reason, PFRES_STATEINS); pf_src_tree_remove_state(s); STATE_DEC_COUNTERS(s); - uma_zfree(V_pf_state_pl, s); + uma_zfree(V_pf_state_z, s); return (PF_DROP); } else *sm = s; @@ -3290,21 +3290,21 @@ pf_create_state(struct pf_rule *r, struc csfailed: if (sk != NULL) - uma_zfree(V_pf_state_key_pl, sk); + uma_zfree(V_pf_state_key_z, sk); if (nk != NULL) - uma_zfree(V_pf_state_key_pl, nk); + uma_zfree(V_pf_state_key_z, nk); if (sn != NULL && sn->states == 0 && sn->expire == 0) { RB_REMOVE(pf_src_tree, &V_tree_src_tracking, sn); V_pf_status.scounters[SCNT_SRC_NODE_REMOVALS]++; V_pf_status.src_nodes--; - uma_zfree(V_pf_src_tree_pl, sn); + uma_zfree(V_pf_src_tree_z, sn); } if (nsn != sn && nsn != NULL && nsn->states == 0 && nsn->expire == 0) { RB_REMOVE(pf_src_tree, &V_tree_src_tracking, nsn); V_pf_status.scounters[SCNT_SRC_NODE_REMOVALS]++; V_pf_status.src_nodes--; - uma_zfree(V_pf_src_tree_pl, nsn); + uma_zfree(V_pf_src_tree_z, nsn); } return (PF_DROP); } Modified: projects/pf/head/sys/contrib/pf/net/pf_if.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_if.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_if.c Fri Mar 2 12:33:10 2012 (r232390) @@ -65,7 +65,7 @@ __FBSDID("$FreeBSD$"); #endif /* INET6 */ VNET_DEFINE(struct pfi_kif *, pfi_all); -VNET_DEFINE(uma_zone_t, pfi_addr_pl); +VNET_DEFINE(uma_zone_t, pfi_addr_z); VNET_DEFINE(struct pfi_ifhead, pfi_ifs); #define V_pfi_ifs VNET(pfi_ifs) VNET_DEFINE(long, pfi_update); @@ -395,7 +395,7 @@ pfi_dynaddr_setup(struct pf_addr_wrap *a if (aw->type != PF_ADDR_DYNIFTL) return (0); /* XXX: revisit! */ - if ((dyn = uma_zalloc(V_pfi_addr_pl, M_WAITOK | M_ZERO)) + if ((dyn = uma_zalloc(V_pfi_addr_z, M_WAITOK | M_ZERO)) == NULL) return (1); @@ -451,7 +451,7 @@ _bad: pf_remove_if_empty_ruleset(ruleset); if (dyn->pfid_kif != NULL) pfi_kif_unref(dyn->pfid_kif, PFI_KIF_REF_RULE); - uma_zfree(V_pfi_addr_pl, dyn); + uma_zfree(V_pfi_addr_z, dyn); return (rv); } @@ -640,7 +640,7 @@ pfi_dynaddr_remove(struct pf_addr_wrap * aw->p.dyn->pfid_kif = NULL; pfr_detach_table(aw->p.dyn->pfid_kt); aw->p.dyn->pfid_kt = NULL; - uma_zfree(V_pfi_addr_pl, aw->p.dyn); + uma_zfree(V_pfi_addr_z, aw->p.dyn); aw->p.dyn = NULL; } Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 12:33:10 2012 (r232390) @@ -259,15 +259,15 @@ static void cleanup_pf_zone(void) { - uma_zdestroy(V_pf_src_tree_pl); - uma_zdestroy(V_pf_rule_pl); - uma_zdestroy(V_pf_state_pl); - uma_zdestroy(V_pf_state_key_pl); - uma_zdestroy(V_pf_altq_pl); - uma_zdestroy(V_pf_pooladdr_pl); - uma_zdestroy(V_pfr_ktable_pl); - uma_zdestroy(V_pfr_kentry_pl); - uma_zdestroy(V_pfi_addr_pl); + uma_zdestroy(V_pf_src_tree_z); + uma_zdestroy(V_pf_rule_z); + uma_zdestroy(V_pf_state_z); + uma_zdestroy(V_pf_state_key_z); + uma_zdestroy(V_pf_altq_z); + uma_zdestroy(V_pf_pooladdr_z); + uma_zdestroy(V_pfr_ktable_z); + uma_zdestroy(V_pfr_kentry_z); + uma_zdestroy(V_pfi_addr_z); } int @@ -275,38 +275,41 @@ pfattach(void) { u_int32_t *my_timeout = V_pf_default_rule.timeout; - V_pf_src_tree_pl = uma_zcreate("pfsrctrpl", sizeof(struct pf_src_node), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_rule_pl = uma_zcreate("pfrulepl", sizeof(struct pf_rule), + V_pf_src_tree_z = uma_zcreate("pf src nodes", + sizeof(struct pf_src_node), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + 0); + V_pf_rule_z = uma_zcreate("pf rules", sizeof(struct pf_rule), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_state_pl = uma_zcreate("pfstatepl", sizeof(struct pf_state), + V_pf_state_z = uma_zcreate("pf states", sizeof(struct pf_state), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_state_key_pl = uma_zcreate("pfstatekeypl", + V_pf_state_key_z = uma_zcreate("pf state keys", sizeof(struct pf_state_key), NULL, NULL, NULL, NULL,UMA_ALIGN_PTR, 0); - V_pf_altq_pl = uma_zcreate("pfaltqpl", sizeof(struct pf_altq), + V_pf_altq_z = uma_zcreate("pf altq", sizeof(struct pf_altq), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_pooladdr_pl = uma_zcreate("pfpooladdrpl", + V_pf_pooladdr_z = uma_zcreate("pf pool addresses", sizeof(struct pf_pooladdr), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pfr_ktable_pl = uma_zcreate("pfrktable", sizeof(struct pfr_ktable), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pfr_kentry_pl = uma_zcreate("pfrkentry", sizeof(struct pfr_kentry), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pfi_addr_pl = uma_zcreate("pfiaddrpl", sizeof(struct pfi_dynaddr), + V_pfr_ktable_z = uma_zcreate("pf tables", + sizeof(struct pfr_ktable), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + 0); + V_pfr_kentry_z = uma_zcreate("pf table entries", + sizeof(struct pfr_kentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + 0); + V_pfi_addr_z = uma_zcreate("pf pfi_dynaddr", sizeof(struct pfi_dynaddr), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); pfr_initialize(); pfi_initialize(); pf_osfp_initialize(); pf_normalize_init(); - V_pf_pool_limits[PF_LIMIT_STATES].pp = V_pf_state_pl; + V_pf_pool_limits[PF_LIMIT_STATES].pp = V_pf_state_z; V_pf_pool_limits[PF_LIMIT_STATES].limit = PFSTATE_HIWAT; - V_pf_pool_limits[PF_LIMIT_SRC_NODES].pp = V_pf_src_tree_pl; + V_pf_pool_limits[PF_LIMIT_SRC_NODES].pp = V_pf_src_tree_z; V_pf_pool_limits[PF_LIMIT_SRC_NODES].limit = PFSNODE_HIWAT; - V_pf_pool_limits[PF_LIMIT_TABLES].pp = V_pfr_ktable_pl; + V_pf_pool_limits[PF_LIMIT_TABLES].pp = V_pfr_ktable_z; V_pf_pool_limits[PF_LIMIT_TABLES].limit = PFR_KTABLE_HIWAT; - V_pf_pool_limits[PF_LIMIT_TABLE_ENTRIES].pp = V_pfr_kentry_pl; + V_pf_pool_limits[PF_LIMIT_TABLE_ENTRIES].pp = V_pfr_kentry_z; V_pf_pool_limits[PF_LIMIT_TABLE_ENTRIES].limit = PFR_KENTRY_HIWAT; uma_zone_set_max(V_pf_pool_limits[PF_LIMIT_STATES].pp, V_pf_pool_limits[PF_LIMIT_STATES].limit); @@ -432,7 +435,7 @@ pf_empty_pool(struct pf_palist *poola) pf_tbladdr_remove(&empty_pool_pa->addr); pfi_kif_unref(empty_pool_pa->kif, PFI_KIF_REF_RULE); TAILQ_REMOVE(poola, empty_pool_pa, entries); - uma_zfree(V_pf_pooladdr_pl, empty_pool_pa); + uma_zfree(V_pf_pooladdr_z, empty_pool_pa); } } @@ -479,7 +482,7 @@ pf_rm_rule(struct pf_rulequeue *rulequeu pfi_kif_unref(rule->kif, PFI_KIF_REF_RULE); pf_anchor_remove(rule); pf_empty_pool(&rule->rpool.list); - uma_zfree(V_pf_rule_pl, rule); + uma_zfree(V_pf_rule_z, rule); } static u_int16_t @@ -618,7 +621,7 @@ pf_begin_altq(u_int32_t *ticket) error = altq_remove(altq); } else pf_qid_unref(altq->qid); - uma_zfree(V_pf_altq_pl, altq); + uma_zfree(V_pf_altq_z, altq); } if (error) return (error); @@ -644,7 +647,7 @@ pf_rollback_altq(u_int32_t ticket) error = altq_remove(altq); } else pf_qid_unref(altq->qid); - uma_zfree(V_pf_altq_pl, altq); + uma_zfree(V_pf_altq_z, altq); } V_altqs_inactive_open = 0; return (error); @@ -695,7 +698,7 @@ pf_commit_altq(u_int32_t ticket) error = err; } else pf_qid_unref(altq->qid); - uma_zfree(V_pf_altq_pl, altq); + uma_zfree(V_pf_altq_z, altq); } V_altqs_inactive_open = 0; @@ -775,7 +778,7 @@ pf_altq_ifnet_event(struct ifnet *ifp, i /* Copy the current active set */ TAILQ_FOREACH(a1, V_pf_altqs_active, entries) { - a2 = uma_zalloc(V_pf_altq_pl, M_NOWAIT); + a2 = uma_zalloc(V_pf_altq_z, M_NOWAIT); if (a2 == NULL) { error = ENOMEM; break; @@ -785,7 +788,7 @@ pf_altq_ifnet_event(struct ifnet *ifp, i if (a2->qname[0] != 0) { if ((a2->qid = pf_qname2qid(a2->qname)) == 0) { error = EBUSY; - uma_zfree(V_pf_altq_pl, a2); + uma_zfree(V_pf_altq_z, a2); break; } a2->altq_disc = NULL; @@ -811,7 +814,7 @@ pf_altq_ifnet_event(struct ifnet *ifp, i error = EBUSY; if (error) { - uma_zfree(V_pf_altq_pl, a2); + uma_zfree(V_pf_altq_z, a2); break; } } @@ -1261,7 +1264,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca error = EBUSY; break; } - rule = uma_zalloc(V_pf_rule_pl, M_NOWAIT); + rule = uma_zalloc(V_pf_rule_z, M_NOWAIT); if (rule == NULL) { error = ENOMEM; break; @@ -1278,14 +1281,14 @@ pfioctl(struct cdev *dev, u_long cmd, ca rule->entries.tqe_prev = NULL; #ifndef INET if (rule->af == AF_INET) { - uma_zfree(V_pf_rule_pl, rule); + uma_zfree(V_pf_rule_z, rule); error = EAFNOSUPPORT; break; } #endif /* INET */ #ifndef INET6 if (rule->af == AF_INET6) { - uma_zfree(V_pf_rule_pl, rule); + uma_zfree(V_pf_rule_z, rule); error = EAFNOSUPPORT; break; } @@ -1299,7 +1302,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (rule->ifname[0]) { rule->kif = pfi_kif_get(rule->ifname); if (rule->kif == NULL) { - uma_zfree(V_pf_rule_pl, rule); + uma_zfree(V_pf_rule_z, rule); error = EINVAL; break; } @@ -1510,7 +1513,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca } if (pcr->action != PF_CHANGE_REMOVE) { - newrule = uma_zalloc(V_pf_rule_pl, M_NOWAIT); + newrule = uma_zalloc(V_pf_rule_z, M_NOWAIT); if (newrule == NULL) { error = ENOMEM; break; @@ -1524,14 +1527,14 @@ pfioctl(struct cdev *dev, u_long cmd, ca newrule->entries.tqe_prev = NULL; #ifndef INET if (newrule->af == AF_INET) { - uma_zfree(V_pf_rule_pl, newrule); + uma_zfree(V_pf_rule_z, newrule); error = EAFNOSUPPORT; break; } #endif /* INET */ #ifndef INET6 if (newrule->af == AF_INET6) { - uma_zfree(V_pf_rule_pl, newrule); + uma_zfree(V_pf_rule_z, newrule); error = EAFNOSUPPORT; break; } @@ -1539,7 +1542,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (newrule->ifname[0]) { newrule->kif = pfi_kif_get(newrule->ifname); if (newrule->kif == NULL) { - uma_zfree(V_pf_rule_pl, newrule); + uma_zfree(V_pf_rule_z, newrule); error = EINVAL; break; } @@ -2062,7 +2065,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca error = EBUSY; break; } - altq = uma_zalloc(V_pf_altq_pl, M_NOWAIT); + altq = uma_zalloc(V_pf_altq_z, M_NOWAIT); if (altq == NULL) { error = ENOMEM; break; @@ -2077,7 +2080,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (altq->qname[0] != 0) { if ((altq->qid = pf_qname2qid(altq->qname)) == 0) { error = EBUSY; - uma_zfree(V_pf_altq_pl, altq); + uma_zfree(V_pf_altq_z, altq); break; } altq->altq_disc = NULL; @@ -2100,7 +2103,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca PF_LOCK(); } if (error) { - uma_zfree(V_pf_altq_pl, altq); + uma_zfree(V_pf_altq_z, altq); break; } @@ -2218,7 +2221,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca error = EINVAL; break; } - pa = uma_zalloc(V_pf_pooladdr_pl, M_NOWAIT); + pa = uma_zalloc(V_pf_pooladdr_z, M_NOWAIT); if (pa == NULL) { error = ENOMEM; break; @@ -2227,7 +2230,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (pa->ifname[0]) { pa->kif = pfi_kif_get(pa->ifname); if (pa->kif == NULL) { - uma_zfree(V_pf_pooladdr_pl, pa); + uma_zfree(V_pf_pooladdr_z, pa); error = EINVAL; break; } @@ -2236,7 +2239,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (pfi_dynaddr_setup(&pa->addr, pp->af)) { pfi_dynaddr_remove(&pa->addr); pfi_kif_unref(pa->kif, PFI_KIF_REF_RULE); - uma_zfree(V_pf_pooladdr_pl, pa); + uma_zfree(V_pf_pooladdr_z, pa); error = EINVAL; break; } @@ -2312,7 +2315,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca break; } if (pca->action != PF_CHANGE_REMOVE) { - newpa = uma_zalloc(V_pf_pooladdr_pl, + newpa = uma_zalloc(V_pf_pooladdr_z, M_NOWAIT); if (newpa == NULL) { error = ENOMEM; @@ -2321,14 +2324,14 @@ pfioctl(struct cdev *dev, u_long cmd, ca bcopy(&pca->addr, newpa, sizeof(struct pf_pooladdr)); #ifndef INET if (pca->af == AF_INET) { - uma_zfree(V_pf_pooladdr_pl, newpa); + uma_zfree(V_pf_pooladdr_z, newpa); error = EAFNOSUPPORT; break; } #endif /* INET */ #ifndef INET6 if (pca->af == AF_INET6) { - uma_zfree(V_pf_pooladdr_pl, newpa); + uma_zfree(V_pf_pooladdr_z, newpa); error = EAFNOSUPPORT; break; } @@ -2336,7 +2339,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca if (newpa->ifname[0]) { newpa->kif = pfi_kif_get(newpa->ifname); if (newpa->kif == NULL) { - uma_zfree(V_pf_pooladdr_pl, newpa); + uma_zfree(V_pf_pooladdr_z, newpa); error = EINVAL; break; } @@ -2347,7 +2350,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca pf_tbladdr_setup(ruleset, &newpa->addr)) { pfi_dynaddr_remove(&newpa->addr); pfi_kif_unref(newpa->kif, PFI_KIF_REF_RULE); - uma_zfree(V_pf_pooladdr_pl, newpa); + uma_zfree(V_pf_pooladdr_z, newpa); error = EINVAL; break; } @@ -2376,7 +2379,7 @@ pfioctl(struct cdev *dev, u_long cmd, ca pfi_dynaddr_remove(&oldpa->addr); pf_tbladdr_remove(&oldpa->addr); pfi_kif_unref(oldpa->kif, PFI_KIF_REF_RULE); - uma_zfree(V_pf_pooladdr_pl, oldpa); + uma_zfree(V_pf_pooladdr_z, oldpa); } else { if (oldpa == NULL) TAILQ_INSERT_TAIL(&pool->list, newpa, entries); Modified: projects/pf/head/sys/contrib/pf/net/pf_lb.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_lb.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_lb.c Fri Mar 2 12:33:10 2012 (r232390) @@ -691,8 +691,8 @@ pf_get_translation(struct pf_pdesc *pd, * Pretend there was no match. */ if (!bcmp(*skp, *nkp, sizeof(struct pf_state_key_cmp))) { - uma_zfree(V_pf_state_key_pl, *nkp); - uma_zfree(V_pf_state_key_pl, *skp); + uma_zfree(V_pf_state_key_z, *nkp); + uma_zfree(V_pf_state_key_z, *skp); *skw = *sks = *nkp = *skp = NULL; return (NULL); } Modified: projects/pf/head/sys/contrib/pf/net/pf_norm.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_norm.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_norm.c Fri Mar 2 12:33:10 2012 (r232390) @@ -107,16 +107,16 @@ static struct mtx pf_frag_mtx; #define PF_FRAG_UNLOCK() mtx_unlock(&pf_frag_mtx) #define PF_FRAG_ASSERT() mtx_assert(&pf_frag_mtx, MA_OWNED) -VNET_DEFINE(uma_zone_t, pf_state_scrub_pl); /* XXX: shared with pfsync */ +VNET_DEFINE(uma_zone_t, pf_state_scrub_z); /* XXX: shared with pfsync */ -static VNET_DEFINE(uma_zone_t, pf_frent_pl); -#define V_pf_frent_pl VNET(pf_frent_pl) -static VNET_DEFINE(uma_zone_t, pf_frag_pl); -#define V_pf_frag_pl VNET(pf_frag_pl) -static VNET_DEFINE(uma_zone_t, pf_cache_pl); -#define V_pf_cache_pl VNET(pf_cache_pl) -static VNET_DEFINE(uma_zone_t, pf_cent_pl); -#define V_pf_cent_pl VNET(pf_cent_pl) +static VNET_DEFINE(uma_zone_t, pf_frent_z); +#define V_pf_frent_z VNET(pf_frent_z) +static VNET_DEFINE(uma_zone_t, pf_frag_z); +#define V_pf_frag_z VNET(pf_frag_z) +static VNET_DEFINE(uma_zone_t, pf_cache_z); +#define V_pf_cache_z VNET(pf_cache_z) +static VNET_DEFINE(uma_zone_t, pf_cent_z); +#define V_pf_cent_z VNET(pf_cent_z) static VNET_DEFINE(int, pf_nfrents); #define V_pf_nfrents VNET(pf_nfrents) static VNET_DEFINE(int, pf_ncache); @@ -166,29 +166,29 @@ void pf_normalize_init(void) { - V_pf_frent_pl = uma_zcreate("pffrent", sizeof(struct pf_frent), + V_pf_frent_z = uma_zcreate("pffrent", sizeof(struct pf_frent), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); /* XXXGL: two zones of struct pf_fragment */ - V_pf_frag_pl = uma_zcreate("pffrag", sizeof(struct pf_fragment), + V_pf_frag_z = uma_zcreate("pffrag", sizeof(struct pf_fragment), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_cache_pl = uma_zcreate("pffrcache", sizeof(struct pf_fragment), + V_pf_cache_z = uma_zcreate("pffrcache", sizeof(struct pf_fragment), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_cent_pl = uma_zcreate("pffrcent", sizeof(struct pf_frcache), + V_pf_cent_z = uma_zcreate("pffrcent", sizeof(struct pf_frcache), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - V_pf_state_scrub_pl = uma_zcreate("pfstatescrub", + V_pf_state_scrub_z = uma_zcreate("pfstatescrub", sizeof(struct pf_state_scrub), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); /* * XXX * No high water mark support(It's hint not hard limit). - * uma_zone_set_max(pf_frag_pl, PFFRAG_FRAG_HIWAT); + * uma_zone_set_max(pf_frag_z, PFFRAG_FRAG_HIWAT); */ - uma_zone_set_max(V_pf_frent_pl, PFFRAG_FRENT_HIWAT); - uma_zone_set_max(V_pf_cache_pl, PFFRAG_FRCACHE_HIWAT); - uma_zone_set_max(V_pf_cent_pl, PFFRAG_FRCENT_HIWAT); + uma_zone_set_max(V_pf_frent_z, PFFRAG_FRENT_HIWAT); + uma_zone_set_max(V_pf_cache_z, PFFRAG_FRCACHE_HIWAT); + uma_zone_set_max(V_pf_cent_z, PFFRAG_FRCENT_HIWAT); - V_pf_pool_limits[PF_LIMIT_FRAGS].pp = V_pf_frent_pl; + V_pf_pool_limits[PF_LIMIT_FRAGS].pp = V_pf_frent_z; V_pf_pool_limits[PF_LIMIT_FRAGS].limit = PFFRAG_FRENT_HIWAT; mtx_init(&pf_frag_mtx, "pf fragments", NULL, MTX_DEF); @@ -201,11 +201,11 @@ void pf_normalize_cleanup(void) { - uma_zdestroy(V_pf_frent_pl); - uma_zdestroy(V_pf_frag_pl); - uma_zdestroy(V_pf_cache_pl); - uma_zdestroy(V_pf_cent_pl); - uma_zdestroy(V_pf_state_scrub_pl); + uma_zdestroy(V_pf_frent_z); + uma_zdestroy(V_pf_frag_z); + uma_zdestroy(V_pf_cache_z); + uma_zdestroy(V_pf_cent_z); + uma_zdestroy(V_pf_state_scrub_z); mtx_destroy(&pf_frag_mtx); } @@ -315,7 +315,7 @@ pf_free_fragment(struct pf_fragment *fra LIST_REMOVE(frent, fr_next); m_freem(frent->fr_m); - uma_zfree(V_pf_frent_pl, frent); + uma_zfree(V_pf_frent_z, frent); V_pf_nfrents--; } } else { @@ -329,7 +329,7 @@ pf_free_fragment(struct pf_fragment *fra ("! (LIST_EMPTY() || LIST_FIRST()->fr_off >" " frcache->fr_end): %s", __FUNCTION__)); - uma_zfree(V_pf_cent_pl, frcache); + uma_zfree(V_pf_cent_z, frcache); V_pf_ncache--; } } @@ -383,11 +383,11 @@ pf_remove_fragment(struct pf_fragment *f if (BUFFER_FRAGMENTS(frag)) { RB_REMOVE(pf_frag_tree, &V_pf_frag_tree, frag); TAILQ_REMOVE(&V_pf_fragqueue, frag, frag_next); - uma_zfree(V_pf_frag_pl, frag); + uma_zfree(V_pf_frag_z, frag); } else { RB_REMOVE(pf_frag_tree, &V_pf_cache_tree, frag); TAILQ_REMOVE(&V_pf_cachequeue, frag, frag_next); - uma_zfree(V_pf_cache_pl, frag); + uma_zfree(V_pf_cache_z, frag); } } @@ -415,10 +415,10 @@ pf_reassemble(struct mbuf **m0, struct p /* Create a new reassembly queue for this packet */ if (*frag == NULL) { - *frag = uma_zalloc(V_pf_frag_pl, M_NOWAIT); + *frag = uma_zalloc(V_pf_frag_z, M_NOWAIT); if (*frag == NULL) { pf_flush_fragments(); - *frag = uma_zalloc(V_pf_frag_pl, M_NOWAIT); + *frag = uma_zalloc(V_pf_frag_z, M_NOWAIT); if (*frag == NULL) goto drop_fragment; } @@ -494,7 +494,7 @@ pf_reassemble(struct mbuf **m0, struct p next = LIST_NEXT(frea, fr_next); m_freem(frea->fr_m); LIST_REMOVE(frea, fr_next); - uma_zfree(V_pf_frent_pl, frea); + uma_zfree(V_pf_frent_z, frea); V_pf_nfrents--; } @@ -551,13 +551,13 @@ pf_reassemble(struct mbuf **m0, struct p m2 = m->m_next; m->m_next = NULL; m_cat(m, m2); - uma_zfree(V_pf_frent_pl, frent); + uma_zfree(V_pf_frent_z, frent); V_pf_nfrents--; for (frent = next; frent != NULL; frent = next) { next = LIST_NEXT(frent, fr_next); m2 = frent->fr_m; - uma_zfree(V_pf_frent_pl, frent); + uma_zfree(V_pf_frent_z, frent); V_pf_nfrents--; m->m_pkthdr.csum_flags &= m2->m_pkthdr.csum_flags; m->m_pkthdr.csum_data += m2->m_pkthdr.csum_data; @@ -593,7 +593,7 @@ pf_reassemble(struct mbuf **m0, struct p drop_fragment: /* Oops - fail safe - drop packet */ - uma_zfree(V_pf_frent_pl, frent); + uma_zfree(V_pf_frent_z, frent); V_pf_nfrents--; m_freem(m); return (NULL); @@ -616,18 +616,18 @@ pf_fragcache(struct mbuf **m0, struct ip /* Create a new range queue for this packet */ if (*frag == NULL) { - *frag = uma_zalloc(V_pf_cache_pl, M_NOWAIT); + *frag = uma_zalloc(V_pf_cache_z, M_NOWAIT); if (*frag == NULL) { pf_flush_fragments(); - *frag = uma_zalloc(V_pf_cache_pl, M_NOWAIT); + *frag = uma_zalloc(V_pf_cache_z, M_NOWAIT); if (*frag == NULL) goto no_mem; } /* Get an entry for the queue */ - cur = uma_zalloc(V_pf_cent_pl, M_NOWAIT); + cur = uma_zalloc(V_pf_cent_z, M_NOWAIT); if (cur == NULL) { - uma_zfree(V_pf_cache_pl, *frag); + uma_zfree(V_pf_cache_z, *frag); *frag = NULL; goto no_mem; } @@ -749,7 +749,7 @@ pf_fragcache(struct mbuf **m0, struct ip h->ip_id, -precut, frp->fr_off, frp->fr_end, off, max)); - cur = uma_zalloc(V_pf_cent_pl, M_NOWAIT); + cur = uma_zalloc(V_pf_cent_z, M_NOWAIT); if (cur == NULL) goto no_mem; V_pf_ncache++; @@ -804,7 +804,7 @@ pf_fragcache(struct mbuf **m0, struct ip h->ip_id, -aftercut, off, max, fra->fr_off, fra->fr_end)); - cur = uma_zalloc(V_pf_cent_pl, M_NOWAIT); + cur = uma_zalloc(V_pf_cent_z, M_NOWAIT); if (cur == NULL) goto no_mem; V_pf_ncache++; @@ -825,7 +825,7 @@ pf_fragcache(struct mbuf **m0, struct ip max, fra->fr_off, fra->fr_end)); fra->fr_off = cur->fr_off; LIST_REMOVE(cur, fr_next); - uma_zfree(V_pf_cent_pl, cur); + uma_zfree(V_pf_cent_z, cur); V_pf_ncache--; cur = NULL; @@ -839,7 +839,7 @@ pf_fragcache(struct mbuf **m0, struct ip max, fra->fr_off, fra->fr_end)); fra->fr_off = frp->fr_off; LIST_REMOVE(frp, fr_next); - uma_zfree(V_pf_cent_pl, frp); + uma_zfree(V_pf_cent_z, frp); V_pf_ncache--; frp = NULL; @@ -1015,7 +1015,7 @@ pf_normalize_ip(struct mbuf **m0, int di goto bad; /* Get an entry for the fragment queue */ - frent = uma_zalloc(V_pf_frent_pl, M_NOWAIT); + frent = uma_zalloc(V_pf_frent_z, M_NOWAIT); if (frent == NULL) { PF_FRAG_UNLOCK(); REASON_SET(reason, PFRES_MEMORY); @@ -1459,7 +1459,7 @@ pf_normalize_tcp_init(struct mbuf *m, in KASSERT((src->scrub == NULL), ("pf_normalize_tcp_init: src->scrub != NULL")); - src->scrub = uma_zalloc(V_pf_state_scrub_pl, M_NOWAIT); + src->scrub = uma_zalloc(V_pf_state_scrub_z, M_NOWAIT); if (src->scrub == NULL) return (1); bzero(src->scrub, sizeof(*src->scrub)); @@ -1536,9 +1536,9 @@ void pf_normalize_tcp_cleanup(struct pf_state *state) { if (state->src.scrub) - uma_zfree(V_pf_state_scrub_pl, state->src.scrub); + uma_zfree(V_pf_state_scrub_z, state->src.scrub); if (state->dst.scrub) - uma_zfree(V_pf_state_scrub_pl, state->dst.scrub); + uma_zfree(V_pf_state_scrub_z, state->dst.scrub); /* Someday... flush the TCP segment reassembly descriptors. */ } Modified: projects/pf/head/sys/contrib/pf/net/pf_osfp.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_osfp.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_osfp.c Fri Mar 2 12:33:10 2012 (r232390) @@ -75,10 +75,10 @@ typedef uma_zone_t pool_t; SLIST_HEAD(pf_osfp_list, pf_os_fingerprint); VNET_DEFINE(struct pf_osfp_list, pf_osfp_list); #define V_pf_osfp_list VNET(pf_osfp_list) -VNET_DEFINE(pool_t, pf_osfp_entry_pl); -#define pf_osfp_entry_pl VNET(pf_osfp_entry_pl) -VNET_DEFINE(pool_t, pf_osfp_pl); -#define pf_osfp_pl VNET(pf_osfp_pl) +VNET_DEFINE(pool_t, pf_osfp_entry_z); +#define pf_osfp_entry_pl VNET(pf_osfp_entry_z) +VNET_DEFINE(pool_t, pf_osfp_z); +#define pf_osfp_pl VNET(pf_osfp_z) static struct pf_osfp_enlist *pf_osfp_fingerprint_hdr(const struct ip *, const struct ip6_hdr *, @@ -307,9 +307,9 @@ pf_osfp_match(struct pf_osfp_enlist *lis void pf_osfp_initialize(void) { - pf_osfp_entry_pl = uma_zcreate("pfospfen", sizeof(struct pf_osfp_entry), + pf_osfp_entry_z = uma_zcreate("pfospfen", sizeof(struct pf_osfp_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - pf_osfp_pl = uma_zcreate("pfosfp", sizeof(struct pf_os_fingerprint), + pf_osfp_z = uma_zcreate("pfosfp", sizeof(struct pf_os_fingerprint), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); SLIST_INIT(&V_pf_osfp_list); @@ -319,8 +319,8 @@ void pf_osfp_cleanup(void) { - uma_zdestroy(pf_osfp_entry_pl); - uma_zdestroy(pf_osfp_pl); + uma_zdestroy(pf_osfp_entry_z); + uma_zdestroy(pf_osfp_z); } #endif @@ -335,9 +335,9 @@ pf_osfp_flush(void) SLIST_REMOVE_HEAD(&V_pf_osfp_list, fp_next); while ((entry = SLIST_FIRST(&fp->fp_oses))) { SLIST_REMOVE_HEAD(&fp->fp_oses, fp_entry); - uma_zfree(pf_osfp_entry_pl, entry); + uma_zfree(pf_osfp_entry_z, entry); } - uma_zfree(pf_osfp_pl, fp); + uma_zfree(pf_osfp_z, fp); } } @@ -390,11 +390,11 @@ pf_osfp_add(struct pf_osfp_ioctl *fpioc) if (PF_OSFP_ENTRY_EQ(entry, &fpioc->fp_os)) return (EEXIST); } - if ((entry = uma_zalloc(pf_osfp_entry_pl, + if ((entry = uma_zalloc(pf_osfp_entry_z, M_NOWAIT)) == NULL) return (ENOMEM); } else { - if ((fp = uma_zalloc(pf_osfp_pl, + if ((fp = uma_zalloc(pf_osfp_z, M_NOWAIT)) == NULL) return (ENOMEM); memset(fp, 0, sizeof(*fp)); @@ -407,9 +407,9 @@ pf_osfp_add(struct pf_osfp_ioctl *fpioc) fp->fp_wscale = fpioc->fp_wscale; fp->fp_ttl = fpioc->fp_ttl; SLIST_INIT(&fp->fp_oses); - if ((entry = uma_zalloc(pf_osfp_entry_pl, + if ((entry = uma_zalloc(pf_osfp_entry_z, M_NOWAIT)) == NULL) { - uma_zfree(pf_osfp_pl, fp); + uma_zfree(pf_osfp_z, fp); return (ENOMEM); } pf_osfp_insert(&V_pf_osfp_list, fp); Modified: projects/pf/head/sys/contrib/pf/net/pf_table.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_table.c Fri Mar 2 11:50:37 2012 (r232389) +++ projects/pf/head/sys/contrib/pf/net/pf_table.c Fri Mar 2 12:33:10 2012 (r232390) @@ -154,10 +154,10 @@ struct pfr_walktree { #define senderr(e) do { rv = (e); goto _bad; } while (0) -VNET_DEFINE(uma_zone_t, pfr_ktable_pl); -VNET_DEFINE(uma_zone_t, pfr_kentry_pl); -VNET_DEFINE(uma_zone_t, pfr_kcounters_pl); -#define V_pfr_kcounters_pl VNET(pfr_kcounters_pl) +VNET_DEFINE(uma_zone_t, pfr_ktable_z); +VNET_DEFINE(uma_zone_t, pfr_kentry_z); +VNET_DEFINE(uma_zone_t, pfr_kcounters_z); +#define V_pfr_kcounters_z VNET(pfr_kcounters_z) VNET_DEFINE(struct sockaddr_in, pfr_sin); #define V_pfr_sin VNET(pfr_sin) VNET_DEFINE(struct sockaddr_in6, pfr_sin6); @@ -843,7 +843,7 @@ pfr_create_kentry(struct pfr_addr *ad, i { struct pfr_kentry *ke; - ke = uma_zalloc(V_pfr_kentry_pl, M_NOWAIT | M_ZERO); + ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); if (ke == NULL) return (NULL); @@ -872,8 +872,8 @@ static void pfr_destroy_kentry(struct pfr_kentry *ke) { if (ke->pfrke_counters) - uma_zfree(V_pfr_kcounters_pl, ke->pfrke_counters); - uma_zfree(V_pfr_kentry_pl, ke); + uma_zfree(V_pfr_kcounters_z, ke->pfrke_counters); + uma_zfree(V_pfr_kentry_z, ke); } static void @@ -953,7 +953,7 @@ pfr_clstats_kentries(struct pfr_kentrywo if (negchange) p->pfrke_not = !p->pfrke_not; if (p->pfrke_counters) { - uma_zfree(V_pfr_kcounters_pl, p->pfrke_counters); + uma_zfree(V_pfr_kcounters_z, p->pfrke_counters); p->pfrke_counters = NULL; } p->pfrke_tzero = tzero; @@ -1919,7 +1919,7 @@ pfr_create_ktable(struct pfr_table *tbl, struct pfr_ktable *kt; struct pf_ruleset *rs; - kt = uma_zalloc(V_pfr_ktable_pl, M_NOWAIT|M_ZERO); + kt = uma_zalloc(V_pfr_ktable_z, M_NOWAIT|M_ZERO); if (kt == NULL) return (NULL); kt->pfrkt_t = *tbl; @@ -1981,7 +1981,7 @@ pfr_destroy_ktable(struct pfr_ktable *kt kt->pfrkt_rs->tables--; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 12:43:00 2012 Return-Path: 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 4E4A2106564A; Fri, 2 Mar 2012 12:43:00 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 39DE38FC08; Fri, 2 Mar 2012 12:43: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 q22Ch0K6030532; Fri, 2 Mar 2012 12:43:00 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22Ch0rk030527; Fri, 2 Mar 2012 12:43:00 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203021243.q22Ch0rk030527@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 2 Mar 2012 12:43: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: r232391 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 12:43:00 -0000 Author: glebius Date: Fri Mar 2 12:42:59 2012 New Revision: 232391 URL: http://svn.freebsd.org/changeset/base/232391 Log: Use uma(9) init method to init pf_state_key. Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 12:33:10 2012 (r232390) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Mar 2 12:42:59 2012 (r232391) @@ -484,7 +484,7 @@ pfsync_state_import(struct pfsync_state if ((st = uma_zalloc(V_pf_state_z, pool_flags)) == NULL) goto cleanup; - if ((skw = pf_alloc_state_key(pool_flags)) == NULL) + if ((skw = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) goto cleanup; if (PF_ANEQ(&sp->key[PF_SK_WIRE].addr[0], @@ -493,7 +493,7 @@ pfsync_state_import(struct pfsync_state &sp->key[PF_SK_STACK].addr[1], sp->af) || sp->key[PF_SK_WIRE].port[0] != sp->key[PF_SK_STACK].port[0] || sp->key[PF_SK_WIRE].port[1] != sp->key[PF_SK_STACK].port[1]) { - if ((sks = pf_alloc_state_key(pool_flags)) == NULL) + if ((sks = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) goto cleanup; } else sks = skw; Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 12:33:10 2012 (r232390) +++ projects/pf/head/sys/contrib/pf/net/pf.c Fri Mar 2 12:42:59 2012 (r232391) @@ -778,18 +778,6 @@ pf_state_key_detach(struct pf_state *s, s->key[idx] = NULL; } -struct pf_state_key * -pf_alloc_state_key(int pool_flags) -{ - struct pf_state_key *sk; - - if ((sk = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) - return (NULL); - TAILQ_INIT(&sk->states); - - return (sk); -} - int pf_state_key_setup(struct pf_pdesc *pd, struct pf_rule *nr, struct pf_state_key **skw, struct pf_state_key **sks, @@ -800,7 +788,7 @@ pf_state_key_setup(struct pf_pdesc *pd, KASSERT((*skp == NULL && *nkp == NULL), ("%s: skp == NULL && nkp == NULL", __func__)); - if ((*skp = pf_alloc_state_key(M_NOWAIT | M_ZERO)) == NULL) + if ((*skp = uma_zalloc(V_pf_state_key_z, M_NOWAIT | M_ZERO)) == NULL) return (ENOMEM); PF_ACPY(&(*skp)->addr[pd->sidx], saddr, pd->af); @@ -811,7 +799,8 @@ pf_state_key_setup(struct pf_pdesc *pd, (*skp)->af = pd->af; if (nr != NULL) { - if ((*nkp = pf_alloc_state_key(M_NOWAIT | M_ZERO)) == NULL) + if ((*nkp = uma_zalloc(V_pf_state_key_z, M_NOWAIT | M_ZERO)) + == NULL) return (ENOMEM); /* caller must handle cleanup */ /* XXX maybe just bcopy and TAILQ_INIT(&(*nkp)->states) */ Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 12:33:10 2012 (r232390) +++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c Fri Mar 2 12:42:59 2012 (r232391) @@ -270,6 +270,15 @@ cleanup_pf_zone(void) uma_zdestroy(V_pfi_addr_z); } +static int +pf_state_key_ini(void *mem, int size, int flags) +{ + struct pf_state_key *sk = mem; + + TAILQ_INIT(&sk->states); + return (0); +} + int pfattach(void) { @@ -283,8 +292,8 @@ pfattach(void) V_pf_state_z = uma_zcreate("pf states", sizeof(struct pf_state), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_state_key_z = uma_zcreate("pf state keys", - sizeof(struct pf_state_key), NULL, NULL, NULL, NULL,UMA_ALIGN_PTR, - 0); + sizeof(struct pf_state_key), NULL, NULL, pf_state_key_ini, NULL, + UMA_ALIGN_PTR, 0); V_pf_altq_z = uma_zcreate("pf altq", sizeof(struct pf_altq), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_pooladdr_z = uma_zcreate("pf pool addresses", From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 21:38:07 2012 Return-Path: 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 87362106566B; Fri, 2 Mar 2012 21:38:07 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 683208FC1D; Fri, 2 Mar 2012 21:38:07 +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 q22Lc7Z7048460; Fri, 2 Mar 2012 21:38:07 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22Lc7Vd048457; Fri, 2 Mar 2012 21:38:07 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201203022138.q22Lc7Vd048457@svn.freebsd.org> From: "Justin T. Gibbs" Date: Fri, 2 Mar 2012 21:38:07 +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: r232407 - projects/zfsd/head/cddl/sbin/zfsd X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 21:38:07 -0000 Author: gibbs Date: Fri Mar 2 21:38:06 2012 New Revision: 232407 URL: http://svn.freebsd.org/changeset/base/232407 Log: Modify ZFSD to tolerate events of arbitrary size instead of assuming that events will be no larger than 1024 bytes. This corrects an infinite loop when events larger than this size are received (e.g. when a block checksum fails). cddl/sbin/zfsd/zfsd.h: Bump the event limit up to 8K and add/rename some constants to clarify exactly what ZFSD's limits control. cddl/sbin/zfsd/zfsd.h: cddl/sbin/zfsd/zfsd.cc: o Add EventBuffer::s_keyPairSepTokens[] to make explicit the characters that can separate devctl event key=value pairs. o In EventBuffer::ExtractEvent(), truncate events to the end of the last fully received key=value pair if they are longer than the event size limit imposed by ZFSD. o Prefer syslog to warn(x) for warnings generated after becoming a daemon. Modified: projects/zfsd/head/cddl/sbin/zfsd/zfsd.cc projects/zfsd/head/cddl/sbin/zfsd/zfsd.h Modified: projects/zfsd/head/cddl/sbin/zfsd/zfsd.cc ============================================================================== --- projects/zfsd/head/cddl/sbin/zfsd/zfsd.cc Fri Mar 2 21:36:24 2012 (r232406) +++ projects/zfsd/head/cddl/sbin/zfsd/zfsd.cc Fri Mar 2 21:38:06 2012 (r232407) @@ -98,6 +98,11 @@ const char EventBuffer::s_eventStartToke */ const char EventBuffer::s_eventEndTokens[] = "\n"; +/** + * Key=Value pairs are terminated by whitespace. + */ +const char EventBuffer::s_keyPairSepTokens[] = " \t\n"; + //- EventBuffer Public Methods ------------------------------------------------- EventBuffer::EventBuffer(int fd) : m_fd(fd), @@ -126,7 +131,8 @@ EventBuffer::ExtractEvent(string &eventS size_t startLen(strcspn(nextEvent, s_eventStartTokens)); bool aligned(startLen == 0); if (aligned == false) { - warnx("Re-synchronizing with devd event stream"); + syslog(LOG_WARNING, + "Re-synchronizing with devd event stream"); m_nextEventOffset += startLen; m_parsedLen = m_nextEventOffset; continue; @@ -136,26 +142,45 @@ EventBuffer::ExtractEvent(string &eventS * Start tokens may be end tokens too, so skip the start * token when trying to find the end of the event. */ + bool truncated(true); size_t eventLen(strcspn(nextEvent + 1, s_eventEndTokens) + 1); if (nextEvent[eventLen] == '\0') { - /* Ran out of buffer before hitting a full event. */ - m_parsedLen += eventLen; - continue; - } - if (nextEvent[eventLen] != '\n') { - warnx("Improperly terminated event encountered"); + m_parsedLen += eventLen; + if (m_parsedLen < MAX_EVENT_SIZE) { + /* + * Ran out of buffer before hitting + * a full event. Fill() and try again. + */ + continue; + } + syslog(LOG_WARNING, + "Event exceeds event size limit of %d bytes."); + } else if (nextEvent[eventLen] != '\n') { + syslog(LOG_WARNING, + "Improperly terminated event encountered."); } else { /* * Include the normal terminator in the extracted * event data. */ eventLen += 1; + truncated = false; } m_nextEventOffset += eventLen; m_parsedLen = m_nextEventOffset; eventString.assign(nextEvent, eventLen); + + if (truncated) { + size_t fieldEnd; + + fieldEnd = eventString.find_last_of(s_keyPairSepTokens); + eventString.erase(fieldEnd); + syslog(LOG_WARNING, + "Truncated %d characters from event.", + eventLen - fieldEnd); + } return (true); } return (false); Modified: projects/zfsd/head/cddl/sbin/zfsd/zfsd.h ============================================================================== --- projects/zfsd/head/cddl/sbin/zfsd/zfsd.h Fri Mar 2 21:36:24 2012 (r232406) +++ projects/zfsd/head/cddl/sbin/zfsd/zfsd.h Fri Mar 2 21:38:06 2012 (r232407) @@ -119,21 +119,27 @@ private: */ MIN_EVENT_SIZE = 2, + /* + * The maximum event size supported by ZFSD. + * Events larger than this size (minus 1) are + * truncated at the end of the last fully received + * key/value pair. + */ + MAX_EVENT_SIZE = 8192, + /** * The maximum amount of buffer data to read at * a single time from the Devd file descriptor. - * This size matches the largest event size allowed - * in the system. */ - MAX_READ_SIZE = 1024, + MAX_READ_SIZE = MAX_EVENT_SIZE, /** * The size of EventBuffer's buffer of Devd event data. - * This is one larger than the maximum event size which - * alows us to always include a terminating NUL without - * overwriting any received data. + * This is one larger than the maximum supported event + * size, which alows us to always include a terminating + * NUL without overwriting any received data. */ - EVENT_BUFSIZE = MAX_READ_SIZE + /*NUL*/1 + EVENT_BUFSIZE = MAX_EVENT_SIZE + /*NUL*/1 }; /** The amount of data in m_buf we have yet to look at. */ @@ -151,6 +157,9 @@ private: /** Characters we treat as ending an event string. */ static const char s_eventEndTokens[]; + /** Characters found between successive "key=value" strings. */ + static const char s_keyPairSepTokens[]; + /** Temporary space for event data during our parsing. */ char m_buf[EVENT_BUFSIZE]; From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 22:20:16 2012 Return-Path: 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 919DB106566B; Fri, 2 Mar 2012 22:20:16 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7D6098FC19; Fri, 2 Mar 2012 22:20:16 +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 q22MKGjO049977; Fri, 2 Mar 2012 22:20:16 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22MKGLI049975; Fri, 2 Mar 2012 22:20:16 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201203022220.q22MKGLI049975@svn.freebsd.org> From: Xin LI Date: Fri, 2 Mar 2012 22:20:16 +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: r232412 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 22:20:16 -0000 Author: delphij Date: Fri Mar 2 22:20:15 2012 New Revision: 232412 URL: http://svn.freebsd.org/changeset/base/232412 Log: Put wildcard pattern later in the match table. Otherwise the more specific matches will not get a chance to win. Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:00:40 2012 (r232411) +++ projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:20:15 2012 (r232412) @@ -121,9 +121,9 @@ struct mfi_ident { int flags; const char *desc; } mfi_identifiers[] = { - {0x1000, 0x005B, 0xffff, 0xffff, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "ThunderBolt"}, {0x1000, 0x005B, 0x8086, 0x9265, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25DB080"}, {0x1000, 0x005B, 0x8086, 0x9285, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25NB008"}, + {0x1000, 0x005B, 0xffff, 0xffff, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "ThunderBolt"}, {0x1000, 0x0060, 0x1028, 0xffff, MFI_FLAGS_1078, "Dell PERC 6"}, {0x1000, 0x0060, 0xffff, 0xffff, MFI_FLAGS_1078, "LSI MegaSAS 1078"}, {0x1000, 0x0071, 0xffff, 0xffff, MFI_FLAGS_SKINNY, "Drake Skinny"}, From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 22:21:54 2012 Return-Path: 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 80A0B106567D; Fri, 2 Mar 2012 22:21:54 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6D0B18FC19; Fri, 2 Mar 2012 22:21:54 +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 q22MLspl050058; Fri, 2 Mar 2012 22:21:54 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22MLsi3050056; Fri, 2 Mar 2012 22:21:54 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201203022221.q22MLsi3050056@svn.freebsd.org> From: Xin LI Date: Fri, 2 Mar 2012 22:21: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: r232413 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 22:21:54 -0000 Author: delphij Date: Fri Mar 2 22:21:53 2012 New Revision: 232413 URL: http://svn.freebsd.org/changeset/base/232413 Log: Use lower case for hexadecimal numbers to match surrounding style. Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:20:15 2012 (r232412) +++ projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:21:53 2012 (r232413) @@ -121,9 +121,9 @@ struct mfi_ident { int flags; const char *desc; } mfi_identifiers[] = { - {0x1000, 0x005B, 0x8086, 0x9265, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25DB080"}, - {0x1000, 0x005B, 0x8086, 0x9285, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25NB008"}, - {0x1000, 0x005B, 0xffff, 0xffff, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "ThunderBolt"}, + {0x1000, 0x005b, 0x8086, 0x9265, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25DB080"}, + {0x1000, 0x005b, 0x8086, 0x9285, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25NB008"}, + {0x1000, 0x005b, 0xffff, 0xffff, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "ThunderBolt"}, {0x1000, 0x0060, 0x1028, 0xffff, MFI_FLAGS_1078, "Dell PERC 6"}, {0x1000, 0x0060, 0xffff, 0xffff, MFI_FLAGS_1078, "LSI MegaSAS 1078"}, {0x1000, 0x0071, 0xffff, 0xffff, MFI_FLAGS_SKINNY, "Drake Skinny"}, From owner-svn-src-projects@FreeBSD.ORG Fri Mar 2 22:24:15 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9249D106564A; Fri, 2 Mar 2012 22:24:15 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7EACD8FC13; Fri, 2 Mar 2012 22:24: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 q22MOFLv050181; Fri, 2 Mar 2012 22:24:15 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q22MOFEX050179; Fri, 2 Mar 2012 22:24:15 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201203022224.q22MOFEX050179@svn.freebsd.org> From: Xin LI Date: Fri, 2 Mar 2012 22:24: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: r232414 - projects/head_mfi/sys/dev/mfi X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Mar 2012 22:24:15 -0000 Author: delphij Date: Fri Mar 2 22:24:15 2012 New Revision: 232414 URL: http://svn.freebsd.org/changeset/base/232414 Log: Add more Thunderbolt variants. Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c Modified: projects/head_mfi/sys/dev/mfi/mfi_pci.c ============================================================================== --- projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:21:53 2012 (r232413) +++ projects/head_mfi/sys/dev/mfi/mfi_pci.c Fri Mar 2 22:24:15 2012 (r232414) @@ -121,6 +121,14 @@ struct mfi_ident { int flags; const char *desc; } mfi_identifiers[] = { + {0x1000, 0x005b, 0x1028, 0x1f2d, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H810 Adapter"}, + {0x1000, 0x005b, 0x1028, 0x1f30, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710 Embedded"}, + {0x1000, 0x005b, 0x1028, 0x1f31, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710P Adapter"}, + {0x1000, 0x005b, 0x1028, 0x1f33, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710P Mini (blades)"}, + {0x1000, 0x005b, 0x1028, 0x1f34, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710P Mini (monolithics)"}, + {0x1000, 0x005b, 0x1028, 0x1f35, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710 Adapter"}, + {0x1000, 0x005b, 0x1028, 0x1f37, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710 Mini (blades)"}, + {0x1000, 0x005b, 0x1028, 0x1f38, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Dell PERC H710 Mini (monolithics)"}, {0x1000, 0x005b, 0x8086, 0x9265, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25DB080"}, {0x1000, 0x005b, 0x8086, 0x9285, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "Intel (R) RAID Controller RS25NB008"}, {0x1000, 0x005b, 0xffff, 0xffff, MFI_FLAGS_SKINNY| MFI_FLAGS_TBOLT, "ThunderBolt"}, From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:00:19 2012 Return-Path: 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 06888106566B; Sat, 3 Mar 2012 01:00:18 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D79B48FC13; Sat, 3 Mar 2012 01:00:18 +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 q2310IOc055529; Sat, 3 Mar 2012 01:00:18 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q2310Itw055527; Sat, 3 Mar 2012 01:00:18 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030100.q2310Itw055527@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:00:18 +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: r232419 - projects/armv6/sys/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:00:19 -0000 Author: cognet Date: Sat Mar 3 01:00:18 2012 New Revision: 232419 URL: http://svn.freebsd.org/changeset/base/232419 Log: Add proper memory barriers for armv6/7 Modified: projects/armv6/sys/arm/include/atomic.h Modified: projects/armv6/sys/arm/include/atomic.h ============================================================================== --- projects/armv6/sys/arm/include/atomic.h Sat Mar 3 00:37:03 2012 (r232418) +++ projects/armv6/sys/arm/include/atomic.h Sat Mar 3 01:00:18 2012 (r232419) @@ -64,6 +64,28 @@ #if ARM_ARCH_6 || ARM_ARCH_7A static __inline void +__do_dmb(void) +{ + + __asm __volatile("dmb" : : : "memory"); +} + +#define ATOMIC_ACQ_REL(NAME, WIDTH) \ +static __inline void \ +atomic_##NAME##_acq_##WIDTH(__volatile uint##WIDTH##_t *p, uint##WIDTH##_t v)\ +{ \ + atomic_##NAME##_##WIDTH(p, v); \ + __do_dmb(); \ +} \ + \ +static __inline void \ +atomic_##NAME##_rel_##WIDTH(__volatile uint##WIDTH##_t *p, uint##WIDTH##_t v)\ +{ \ + __do_dmb(); \ + atomic_##NAME##_##WIDTH(p, v); \ +} + +static __inline void atomic_set_32(volatile uint32_t *address, uint32_t setmask) { uint32_t tmp = 0, tmp2 = 0; @@ -111,6 +133,23 @@ atomic_cmpset_32(volatile u_int32_t *p, return (ret); } +static __inline u_int32_t +atomic_cmpset_acq_32(volatile u_int32_t *p, volatile u_int32_t cmpval, volatile u_int32_t newval) +{ + int ret = atomic_cmpset_32(p, cmpval, newval); + + __do_dmb(); + return (ret); +} + +static __inline u_int32_t +atomic_cmpset_rel_32(volatile u_int32_t *p, volatile u_int32_t cmpval, volatile u_int32_t newval) +{ + + __do_dmb(); + return (atomic_cmpset_32(p, cmpval, newval)); +} + static __inline void atomic_add_32(volatile u_int32_t *p, u_int32_t val) { @@ -139,6 +178,14 @@ atomic_subtract_32(volatile u_int32_t *p ,"+r" (p), "+r" (val) : : "memory"); } + +ATOMIC_ACQ_REL(clear, 32) +ATOMIC_ACQ_REL(add, 32) +ATOMIC_ACQ_REL(subtract, 32) +ATOMIC_ACQ_REL(set, 32) + +#undef ATOMIC_ACQ_REL + static __inline uint32_t atomic_fetchadd_32(volatile uint32_t *p, uint32_t val) { @@ -169,6 +216,23 @@ atomic_readandclear_32(volatile u_int32_ return (ret); } +static __inline uint32_t +atomic_load_acq_32(volatile uint32_t *p) +{ + uint32_t v; + + v = *p; + __do_dmb(); + return (v); +} + +static __inline void +atomic_store_rel_32(volatile uint32_t *p, uint32_t v) +{ + + __do_dmb(); + *p = v; +} #else /* < armv6 */ @@ -410,6 +474,18 @@ atomic_readandclear_32(volatile u_int32_ return (__swp(0, p)); } +#define atomic_cmpset_rel_32 atomic_cmpset_32 +#define atomic_cmpset_acq_32 atomic_cmpset_32 +#define atomic_set_rel_32 atomic_set_32 +#define atomic_set_acq_32 atomic_set_32 +#define atomic_clear_rel_32 atomic_clear_32 +#define atomic_clear_acq_32 atomic_clear_32 +#define atomic_add_rel_32 atomic_add_32 +#define atomic_add_acq_32 atomic_add_32 +#define atomic_subtract_rel_32 atomic_subtract_32 +#define atomic_subtract_acq_32 atomic_subtract_32 +#define atomic_store_rel_32 atomic_store_32 +#define atomic_load_acq_32 atomic_load_32 #undef __with_interrupts_disabled #endif /* _LOCORE */ @@ -431,31 +507,31 @@ atomic_store_32(volatile uint32_t *dst, #define atomic_add_long(p, v) \ atomic_add_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_add_acq_long atomic_add_long -#define atomic_add_rel_long atomic_add_long +#define atomic_add_acq_long atomic_add_acq_32 +#define atomic_add_rel_long atomic_add_rel_32 #define atomic_subtract_long(p, v) \ atomic_subtract_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_subtract_acq_long atomic_subtract_long -#define atomic_subtract_rel_long atomic_subtract_long +#define atomic_subtract_acq_long atomic_subtract_acq_32 +#define atomic_subtract_rel_long atomic_subtract_rel_32 #define atomic_clear_long(p, v) \ atomic_clear_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_clear_acq_long atomic_clear_long -#define atomic_clear_rel_long atomic_clear_long +#define atomic_clear_acq_long atomic_clear_acq_32 +#define atomic_clear_rel_long atomic_clear_rel_32 #define atomic_set_long(p, v) \ atomic_set_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_set_acq_long atomic_set_long -#define atomic_set_rel_long atomic_set_long +#define atomic_set_acq_long atomic_set_acq_32 +#define atomic_set_rel_long atomic_set_rel_32 #define atomic_cmpset_long(dst, old, new) \ atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) -#define atomic_cmpset_acq_long atomic_cmpset_long -#define atomic_cmpset_rel_long atomic_cmpset_long +#define atomic_cmpset_acq_long atomic_cmpset_acq_32 +#define atomic_cmpset_rel_long atomic_cmpset_rel_32 #define atomic_fetchadd_long(p, v) \ atomic_fetchadd_32((volatile u_int *)(p), (u_int)(v)) #define atomic_readandclear_long(p) \ atomic_readandclear_long((volatile u_int *)(p)) #define atomic_load_long(p) \ atomic_load_32((volatile u_int *)(p)) -#define atomic_load_acq_long atomic_load_long +#define atomic_load_acq_long atomic_load_acq_32 #define atomic_store_rel_long(p, v) \ atomic_store_rel_32((volatile u_int *)(p), (u_int)(v)) @@ -464,43 +540,31 @@ atomic_store_32(volatile uint32_t *dst, #define atomic_set_ptr atomic_set_32 #define atomic_cmpset_ptr(dst, old, new) \ atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) -#define atomic_cmpset_rel_ptr atomic_cmpset_ptr -#define atomic_cmpset_acq_ptr atomic_cmpset_ptr +#define atomic_cmpset_rel_ptr(dst, old, new) \ + atomic_cmpset_rel_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) +#define atomic_cmpset_acq_ptr(dst, old, new) \ + atomic_cmpset_acq_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) #define atomic_store_ptr atomic_store_32 #define atomic_store_rel_ptr atomic_store_ptr #define atomic_add_int atomic_add_32 -#define atomic_add_acq_int atomic_add_int -#define atomic_add_rel_int atomic_add_int +#define atomic_add_acq_int atomic_add_acq_32 +#define atomic_add_rel_int atomic_add_rel_32 #define atomic_subtract_int atomic_subtract_32 -#define atomic_subtract_acq_int atomic_subtract_int -#define atomic_subtract_rel_int atomic_subtract_int +#define atomic_subtract_acq_int atomic_subtract_acq_32 +#define atomic_subtract_rel_int atomic_subtract_rel_32 #define atomic_clear_int atomic_clear_32 -#define atomic_clear_acq_int atomic_clear_int -#define atomic_clear_rel_int atomic_clear_int +#define atomic_clear_acq_int atomic_clear_acq_32 +#define atomic_clear_rel_int atomic_clear_rel_32 #define atomic_set_int atomic_set_32 -#define atomic_set_acq_int atomic_set_int -#define atomic_set_rel_int atomic_set_int +#define atomic_set_acq_int atomic_set_acq_32 +#define atomic_set_rel_int atomic_set_rel_32 #define atomic_cmpset_int atomic_cmpset_32 -#define atomic_cmpset_acq_int atomic_cmpset_int -#define atomic_cmpset_rel_int atomic_cmpset_int +#define atomic_cmpset_acq_int atomic_cmpset_acq_32 +#define atomic_cmpset_rel_int atomic_cmpset_rel_32 #define atomic_fetchadd_int atomic_fetchadd_32 #define atomic_readandclear_int atomic_readandclear_32 -#define atomic_load_acq_int atomic_load_32 -#define atomic_store_rel_int atomic_store_32 - -#define atomic_add_acq_32 atomic_add_32 -#define atomic_add_rel_32 atomic_add_32 -#define atomic_subtract_acq_32 atomic_subtract_32 -#define atomic_subtract_rel_32 atomic_subtract_32 -#define atomic_clear_acq_32 atomic_clear_32 -#define atomic_clear_rel_32 atomic_clear_32 -#define atomic_set_acq_32 atomic_set_32 -#define atomic_set_rel_32 atomic_set_32 -#define atomic_cmpset_acq_32 atomic_cmpset_32 -#define atomic_cmpset_rel_32 atomic_cmpset_32 -#define atomic_load_acq_32 atomic_load_32 -#define atomic_store_rel_32 atomic_store_32 - +#define atomic_load_acq_int atomic_load_acq_32 +#define atomic_store_rel_int atomic_store_rel_32 #endif /* _MACHINE_ATOMIC_H_ */ From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:17:14 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7627D106564A; Sat, 3 Mar 2012 01:17:14 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4C2DD8FC13; Sat, 3 Mar 2012 01:17:14 +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 q231HEKi056103; Sat, 3 Mar 2012 01:17:14 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231HEVq056101; Sat, 3 Mar 2012 01:17:14 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030117.q231HEVq056101@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:17:14 +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: r232421 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:17:14 -0000 Author: cognet Date: Sat Mar 3 01:17:13 2012 New Revision: 232421 URL: http://svn.freebsd.org/changeset/base/232421 Log: Implement workarounds for arm errata. Wait and sync the cache where we should. Modified: projects/armv6/sys/arm/arm/pl310.c Modified: projects/armv6/sys/arm/arm/pl310.c ============================================================================== --- projects/armv6/sys/arm/arm/pl310.c Sat Mar 3 01:06:54 2012 (r232420) +++ projects/armv6/sys/arm/arm/pl310.c Sat Mar 3 01:17:13 2012 (r232421) @@ -36,6 +36,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include #include @@ -162,8 +164,16 @@ pl310_cache_sync(void) static void pl310_wbinv_all(void) { +#if 1 + pl310_write4(PL310_DEBUG_CTRL, 3); +#endif pl310_write4(PL310_CLEAN_INV_WAY, g_l2cache_way_mask); pl310_wait_background_op(PL310_CLEAN_INV_WAY, g_l2cache_way_mask); + pl310_cache_sync(); +#if 1 + pl310_write4(PL310_DEBUG_CTRL, 0); +#endif + } static void @@ -174,11 +184,33 @@ pl310_wbinv_range(vm_paddr_t start, vm_s size &= ~g_l2cache_align_mask; size += g_l2cache_line_size; } +#if 1 + + pl310_write4(PL310_DEBUG_CTRL, 3); +#endif while (size > 0) { +#if 1 + /* + * Errata 588369 says that clean + inv may keep the + * cache line if it was clean, the recommanded workaround + * is to clean then invalidate the cache line, with + * write-back and cache linefill disabled + */ + + pl310_write4(PL310_CLEAN_LINE_PA, start); + pl310_write4(PL310_INV_LINE_PA, start); +#else pl310_write4(PL310_CLEAN_INV_LINE_PA, start); +#endif start += g_l2cache_line_size; size -= g_l2cache_line_size; } +#if 1 + pl310_write4(PL310_DEBUG_CTRL, 0); +#endif + pl310_wait_background_op(PL310_CLEAN_INV_LINE_PA, 1); + pl310_cache_sync(); + } static void @@ -194,6 +226,8 @@ pl310_wb_range(vm_paddr_t start, vm_size start += g_l2cache_line_size; size -= g_l2cache_line_size; } + pl310_cache_sync(); + pl310_wait_background_op(PL310_CLEAN_LINE_PA, 1); } @@ -210,6 +244,8 @@ pl310_inv_range(vm_paddr_t start, vm_siz start += g_l2cache_line_size; size -= g_l2cache_line_size; } + pl310_cache_sync(); + pl310_wait_background_op(PL310_INV_LINE_PA, 1); } From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:20:47 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3DA791065672; Sat, 3 Mar 2012 01:20:47 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2C5C58FC0A; Sat, 3 Mar 2012 01:20:47 +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 q231KlUb056246; Sat, 3 Mar 2012 01:20:47 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231Kkv9056241; Sat, 3 Mar 2012 01:20:46 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030120.q231Kkv9056241@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:20: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: r232422 - in projects/armv6/sys/arm: arm include mv mv/armadaxp X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:20:47 -0000 Author: cognet Date: Sat Mar 3 01:20:46 2012 New Revision: 232422 URL: http://svn.freebsd.org/changeset/base/232422 Log: - We can't rely on the initial pagetable still being setted up, maybe we reused the memory, instead, allocate a temporary page table, map the kernel into it, and make the APs use it. - Make it so we can use multiple IRQs for IPI - Add a new function, platform_mp_init_secondary(), which will be called for each AP, and do platform-specific init stuff, such as setting up the GIC for the AP. Modified: projects/armv6/sys/arm/arm/mp_machdep.c projects/armv6/sys/arm/include/smp.h projects/armv6/sys/arm/mv/armadaxp/armadaxp_mp.c projects/armv6/sys/arm/mv/mpic.c Modified: projects/armv6/sys/arm/arm/mp_machdep.c ============================================================================== --- projects/armv6/sys/arm/arm/mp_machdep.c Sat Mar 3 01:17:13 2012 (r232421) +++ projects/armv6/sys/arm/arm/mp_machdep.c Sat Mar 3 01:20:46 2012 (r232422) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -47,7 +48,11 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include "opt_smp.h" + +void *temp_pagetable; extern struct pcpu __pcpu[]; /* used to hold the AP's until we are ready to release them */ struct mtx ap_boot_mtx; @@ -90,17 +95,38 @@ check_ap(void) return (-2); } +extern unsigned char _end[]; + /* Initialize and fire up non-boot processors */ void cpu_mp_start(void) { int error, i; + vm_offset_t temp_pagetable_va; + vm_paddr_t addr, addr_end; mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN); /* Reserve memory for application processors */ for(i = 0; i < (mp_ncpus - 1); i++) dpcpu[i] = (void *)kmem_alloc(kernel_map, DPCPU_SIZE); + temp_pagetable_va = (vm_offset_t)contigmalloc(L1_TABLE_SIZE, + M_TEMP, 0, 0x0, 0xffffffff, L1_TABLE_SIZE, 0); + addr = KERNPHYSADDR; + addr_end = (vm_offset_t)&_end - KERNVIRTADDR + KERNPHYSADDR; + addr_end &= ~L1_S_OFFSET; + addr_end += L1_S_SIZE; + bzero((void *)temp_pagetable_va, L1_TABLE_SIZE); + for (addr = KERNPHYSADDR; addr <= addr_end; addr += L1_S_SIZE) { + ((int *)(temp_pagetable_va))[addr >> L1_S_SHIFT] = + L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; + ((int *)(temp_pagetable_va))[(addr - + KERNPHYSADDR + KERNVIRTADDR) >> L1_S_SHIFT] = + L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW)|L1_S_DOM(PMAP_DOMAIN_KERNEL)|addr; + } + temp_pagetable = (void*)(vtophys(temp_pagetable_va)); + cpu_idcache_wbinv_all(); + cpu_l2cache_wbinv_all(); /* Initialize boot code and start up processors */ platform_mp_start_ap(); @@ -113,7 +139,7 @@ cpu_mp_start(void) for (i = 1; i < mp_ncpus; i++) CPU_SET(i, &all_cpus); - printf("%d AP started\n", mp_naps); + contigfree((void *)temp_pagetable_va, L1_TABLE_SIZE, M_TEMP); } /* Introduce rest of cores to the world */ @@ -129,9 +155,9 @@ init_secondary(int cpu) { struct pcpu *pc; uint32_t loop_counter; + int start = 0, end = 0; cpu_setup(NULL); - setttb(pmap_pa); cpu_tlb_flushID(); @@ -169,7 +195,17 @@ init_secondary(int cpu) mtx_unlock_spin(&ap_boot_mtx); /* Enable ipi */ - arm_unmask_irq(0); +#ifdef IPI_IRQ_START + start = IPI_IRQ_START; +#ifdef IPI_IRQ_END + end = IPI_IRQ_END; +#else + end = IPI_IRQ_START; +#endif +#endif + + for (int i = start; i <= end; i++) + arm_unmask_irq(i); enable_interrupts(I32_bit); loop_counter = 0; @@ -179,11 +215,11 @@ init_secondary(int cpu) if (loop_counter == 1000) CTR0(KTR_SMP, "AP still wait for smp_started"); } - /* Start per-CPU event timers. */ cpu_initclocks_ap(); CTR0(KTR_SMP, "go into scheduler"); + platform_mp_init_secondary(); /* Enter the scheduler */ sched_throw(NULL); @@ -199,7 +235,7 @@ ipi_handler(void *arg) cpu = PCPU_GET(cpuid); - ipi = pic_ipi_get(); + ipi = pic_ipi_get((int)arg); while ((ipi != 0x3ff)) { switch (ipi) { @@ -250,7 +286,7 @@ ipi_handler(void *arg) } pic_ipi_clear(ipi); - ipi = pic_ipi_get(); + ipi = pic_ipi_get(-1); } return (FILTER_HANDLED); @@ -260,19 +296,34 @@ static void release_aps(void *dummy __unused) { uint32_t loop_counter; + int start = 0, end = 0; if (mp_ncpus == 1) return; +#ifdef IPI_IRQ_START + start = IPI_IRQ_START; +#ifdef IPI_IRQ_END + end = IPI_IRQ_END; +#else + end = IPI_IRQ_START; +#endif +#endif + + for (int i = start; i <= end; i++) { + /* + * IPI handler + */ + /* + * Use 0xdeadbeef as the argument value for irq 0, + * if we used 0, the intr code will give the trap frame + * pointer instead. + */ + arm_setup_irqhandler("ipi", ipi_handler, NULL, (void *)i, i, + INTR_TYPE_MISC | INTR_EXCL, NULL); - /* - * IPI handler - */ - arm_setup_irqhandler("ipi", ipi_handler, NULL, NULL, 0, - INTR_TYPE_MISC | INTR_EXCL, NULL); - - /* Enable ipi */ - arm_unmask_irq(0); - + /* Enable ipi */ + arm_unmask_irq(i); + } atomic_store_rel_int(&aps_ready, 1); printf("Release APs\n"); @@ -282,7 +333,6 @@ release_aps(void *dummy __unused) return; DELAY(1000); } - printf("AP's not started\n"); } Modified: projects/armv6/sys/arm/include/smp.h ============================================================================== --- projects/armv6/sys/arm/include/smp.h Sat Mar 3 01:17:13 2012 (r232421) +++ projects/armv6/sys/arm/include/smp.h Sat Mar 3 01:20:46 2012 (r232422) @@ -22,12 +22,13 @@ void ipi_selected(cpuset_t cpus, u_int i /* PIC interface */ void pic_ipi_send(cpuset_t cpus, u_int ipi); void pic_ipi_clear(int ipi); -int pic_ipi_get(void); +int pic_ipi_get(int arg); /* Platform interface */ void platform_mp_setmaxid(void); int platform_mp_probe(void); void platform_mp_start_ap(void); +void platform_mp_init_secondary(void); void platform_ipi_send(cpuset_t cpus, u_int ipi); Modified: projects/armv6/sys/arm/mv/armadaxp/armadaxp_mp.c ============================================================================== --- projects/armv6/sys/arm/mv/armadaxp/armadaxp_mp.c Sat Mar 3 01:17:13 2012 (r232421) +++ projects/armv6/sys/arm/mv/armadaxp/armadaxp_mp.c Sat Mar 3 01:20:46 2012 (r232422) @@ -101,6 +101,11 @@ platform_mp_probe(void) return (mp_ncpus > 1); } +void +platform_mp_init_secondary(void) +{ +} + void mpentry(void); void mptramp(void); Modified: projects/armv6/sys/arm/mv/mpic.c ============================================================================== --- projects/armv6/sys/arm/mv/mpic.c Sat Mar 3 01:17:13 2012 (r232421) +++ projects/armv6/sys/arm/mv/mpic.c Sat Mar 3 01:20:46 2012 (r232422) @@ -281,7 +281,7 @@ pic_ipi_send(cpuset_t cpus, u_int ipi) } int -pic_ipi_get(void) +pic_ipi_get(int i __unused) { uint32_t val; From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:22:47 2012 Return-Path: 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 1FB72106566C; Sat, 3 Mar 2012 01:22:47 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0EDA48FC18; Sat, 3 Mar 2012 01:22:47 +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 q231Mke5056355; Sat, 3 Mar 2012 01:22:46 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231MkHQ056352; Sat, 3 Mar 2012 01:22:46 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030122.q231MkHQ056352@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:22: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: r232423 - in projects/armv6/sys/arm: arm include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:22:47 -0000 Author: cognet Date: Sat Mar 3 01:22:46 2012 New Revision: 232423 URL: http://svn.freebsd.org/changeset/base/232423 Log: Introduce armv7_sev() and armv7_auxctrl. Use broadcasting TLB functions for SMP, instead of sending IPIs. Modified: projects/armv6/sys/arm/arm/cpufunc_asm_armv7.S projects/armv6/sys/arm/include/cpufunc.h Modified: projects/armv6/sys/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- projects/armv6/sys/arm/arm/cpufunc_asm_armv7.S Sat Mar 3 01:20:46 2012 (r232422) +++ projects/armv6/sys/arm/arm/cpufunc_asm_armv7.S Sat Mar 3 01:22:46 2012 (r232423) @@ -43,24 +43,30 @@ __FBSDID("$FreeBSD$"); .Lpage_mask: .word 0xfff +#define PT_NOS (1 << 5) +#define PT_S (1 << 1) +#define PT_INNER_NC 0 +#define PT_INNER_WT (1 << 0) +#define PT_INNER_WB ((1 << 0) | (1 << 6)) +#define PT_INNER_WBWA (1 << 6) +#define PT_OUTER_NC 0 +#define PT_OUTER_WT (2 << 3) +#define PT_OUTER_WB (3 << 3) +#define PT_OUTER_WBWA (1 << 3) + +#ifdef SMP +#define PT_ATTR (PT_S|PT_INNER_WT|PT_OUTER_WT|PT_NOS) +#else +#define PT_ATTR (PT_INNER_WT|PT_OUTER_WT) +#endif + ENTRY(armv7_setttb) stmdb sp!, {r0, lr} bl _C_LABEL(armv7_idcache_wbinv_all) /* clean the D cache */ ldmia sp!, {r0, lr} dsb -#if defined(SMP) - /* - * Settings for architecture with SMP extension: - * PT memory: inner WBWA, shareable; outer WBWA, non-shareable - */ - orr r0, r0, #106 -#else - /* - * Settings for architecture without SMP extension: - * PT memory: inner-cacheable, non-shareable; outer WB, non-shareable - */ - orr r0, r0, #25 -#endif + + orr r0, r0, #PT_ATTR mcr p15, 0, r0, c2, c0, 0 /* Translation Table Base Register 0 (TTBR0) */ mcr p15, 0, r0, c8, c7, 0 /* invalidate I+D TLBs */ dsb @@ -69,7 +75,11 @@ ENTRY(armv7_setttb) ENTRY(armv7_tlb_flushID) dsb +#ifdef SMP + mcr p15, 0, r0, c8, c3, 0 +#else mcr p15, 0, r0, c8, c7, 0 /* flush I+D tlb */ +#endif mcr p15, 0, r0, c7, c5, 6 /* flush BTB */ dsb isb @@ -78,9 +88,14 @@ ENTRY(armv7_tlb_flushID) ENTRY(armv7_tlb_flushID_SE) ldr r1, .Lpage_mask bic r0, r0, r1 +#ifdef SMP + mcr p15, 0, r0, c8, c3, 1 /* flush D tlb single entry */ +#else mcr p15, 0, r0, c8, c7, 1 /* flush D tlb single entry */ +#endif mcr p15, 0, r0, c7, c5, 6 /* flush BTB */ dsb + isb mov pc, lr /* Based on algorithm from ARM Architecture Reference Manual */ @@ -131,7 +146,7 @@ Skip: cmp r3, r8 bne Loop1 Finished: - isb + dsb ldmia sp!, {r4, r5, r6, r7, r8, r9} RET @@ -231,6 +246,8 @@ ENTRY(armv7_cpu_sleep) ENTRY(armv7_context_switch) dsb + orr r0, r0, #PT_ATTR + mcr p15, 0, r0, c2, c0, 0 /* set the new TTB */ mcr p15, 0, r0, c8, c7, 0 /* and flush the I+D tlbs */ dsb @@ -241,3 +258,18 @@ ENTRY(armv7_drain_writebuf) dsb RET +ENTRY(armv7_sev) + dsb + sev + nop + RET + +ENTRY(armv7_auxctrl) + mrc p15, 0, r2, c1, c0, 1 + bic r3, r2, r0 /* Clear bits */ + eor r3, r3, r1 /* XOR bits */ + + teq r2, r3 + mcrne p15, 0, r3, c1, c0, 1 + mov r0, r2 + RET Modified: projects/armv6/sys/arm/include/cpufunc.h ============================================================================== --- projects/armv6/sys/arm/include/cpufunc.h Sat Mar 3 01:20:46 2012 (r232422) +++ projects/armv6/sys/arm/include/cpufunc.h Sat Mar 3 01:22:46 2012 (r232423) @@ -188,38 +188,44 @@ extern u_int cputype; #else void tlb_broadcast(int); +#ifdef CPU_CORTEXA +#define TLB_BROADCAST /* No need to explicitely send an IPI */ +#else +#define TLB_BROADCAST tlb_broadcast(7) +#endif + #define cpu_tlb_flushID() do { \ cpufuncs.cf_tlb_flushID(); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #define cpu_tlb_flushID_SE(e) do { \ cpufuncs.cf_tlb_flushID_SE(e); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #define cpu_tlb_flushI() do { \ cpufuncs.cf_tlb_flushI(); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #define cpu_tlb_flushI_SE(e) do { \ cpufuncs.cf_tlb_flushI_SE(e); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #define cpu_tlb_flushD() do { \ cpufuncs.cf_tlb_flushD(); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #define cpu_tlb_flushD_SE(e) do { \ cpufuncs.cf_tlb_flushD_SE(e); \ - tlb_broadcast(7); \ + TLB_BROADCAST; \ } while(0) #endif @@ -506,6 +512,8 @@ void armv7_cpu_sleep (int); void armv7_setup (char *string); void armv7_context_switch (void); void armv7_drain_writebuf (void); +void armv7_sev (void); +u_int armv7_auxctrl (u_int, u_int); void pj4bv7_setup (char *string); void pj4bv6_setup (char *string); void pj4b_config (void); From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:24:20 2012 Return-Path: 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 0EA48106566B; Sat, 3 Mar 2012 01:24:20 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E7A0A8FC19; Sat, 3 Mar 2012 01:24:19 +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 q231OJZ2056435; Sat, 3 Mar 2012 01:24:19 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231OJXw056432; Sat, 3 Mar 2012 01:24:19 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030124.q231OJXw056432@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:24:19 +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: r232424 - in projects/armv6/sys/arm: include ti X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:24:20 -0000 Author: cognet Date: Sat Mar 3 01:24:19 2012 New Revision: 232424 URL: http://svn.freebsd.org/changeset/base/232424 Log: Add SMP bits to gic. Modified: projects/armv6/sys/arm/include/intr.h projects/armv6/sys/arm/ti/gic.c Modified: projects/armv6/sys/arm/include/intr.h ============================================================================== --- projects/armv6/sys/arm/include/intr.h Sat Mar 3 01:22:46 2012 (r232423) +++ projects/armv6/sys/arm/include/intr.h Sat Mar 3 01:24:19 2012 (r232424) @@ -65,4 +65,7 @@ void arm_setup_irqhandler(const char *, void *, int, int, void **); int arm_remove_irqhandler(int, void *); extern void (*arm_post_filter)(void *); + +void gic_init_secondary(void); + #endif /* _MACHINE_INTR_H */ Modified: projects/armv6/sys/arm/ti/gic.c ============================================================================== --- projects/armv6/sys/arm/ti/gic.c Sat Mar 3 01:22:46 2012 (r232423) +++ projects/armv6/sys/arm/ti/gic.c Sat Mar 3 01:24:19 2012 (r232424) @@ -41,8 +41,14 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include +#include +#include +#include #include #include +#include #include #include @@ -103,6 +109,8 @@ static struct arm_gic_softc *arm_gic_sc #define gic_d_write_4(reg, val) \ bus_space_write_4(arm_gic_sc->gic_d_bst, arm_gic_sc->gic_d_bsh, reg, val) +static void gic_post_filter(void *); + static int arm_gic_probe(device_t dev) { @@ -112,6 +120,27 @@ arm_gic_probe(device_t dev) return (BUS_PROBE_DEFAULT); } +void +gic_init_secondary(void) +{ + int nirqs; + + /* Get the number of interrupts */ + nirqs = gic_d_read_4(GICD_TYPER); + nirqs = 32 * ((nirqs & 0x1f) + 1); + + for (int i = 0; i < nirqs; i += 4) + gic_d_write_4(GICD_IPRIORITYR(i >> 2), 0); + /* Enable CPU interface */ + gic_c_write_4(GICC_CTLR, 1); + + /* Enable interrupt distribution */ + gic_d_write_4(GICD_CTLR, 0x01); + + /* Activate IRQ 29, ie private timer IRQ*/ + gic_d_write_4(GICD_ISENABLER(29 >> 5), (1UL << (29 & 0x1F))); +} + static int arm_gic_attach(device_t dev) { @@ -128,6 +157,8 @@ arm_gic_attach(device_t dev) return (ENXIO); } + arm_post_filter = gic_post_filter; + /* Distributor Interface */ sc->gic_d_bst = rman_get_bustag(sc->gic_res[0]); sc->gic_d_bsh = rman_get_bushandle(sc->gic_res[0]); @@ -160,10 +191,9 @@ arm_gic_attach(device_t dev) gic_d_write_4(GICD_ICENABLER(i >> 5), 0xFFFFFFFF); } - /* Route all interrupts to CPU0 and set priority to 0 */ - for (i = 32; i < nirqs; i += 4) { - gic_d_write_4(GICD_IPRIORITYR(i >> 2), 0x00000000); - gic_d_write_4(GICD_ITARGETSR(i >> 2), 0x01010101); + for (i = 0; i < nirqs; i += 4) { + gic_d_write_4(GICD_IPRIORITYR(i >> 2), 0); + gic_d_write_4(GICD_ITARGETSR(i >> 2), 0xffffffff); } /* Enable CPU interface */ @@ -172,7 +202,6 @@ arm_gic_attach(device_t dev) /* Enable interrupt distribution */ gic_d_write_4(GICD_CTLR, 0x01); - return (0); } @@ -192,17 +221,29 @@ static devclass_t arm_gic_devclass; DRIVER_MODULE(gic, simplebus, arm_gic_driver, arm_gic_devclass, 0, 0); +static void +gic_post_filter(void *arg) +{ + uintptr_t irq = (uintptr_t) arg; + + gic_c_write_4(GICC_EOIR, irq); +} + int arm_get_next_irq(int last_irq) { uint32_t active_irq; - /* clean-up the last IRQ */ - if (last_irq != -1) { - gic_c_write_4(GICC_EOIR, last_irq); - } - active_irq = gic_c_read_4(GICC_IAR); + + /* + * Immediatly EOIR the SGIs, because doing so requires the other + * bits (ie CPU number), not just the IRQ number, and we do not + * have this information later. + */ + + if ((active_irq & 0x3ff) < 16) + gic_c_write_4(GICC_EOIR, active_irq); active_irq &= 0x3FF; if (active_irq == 0x3FF) { @@ -210,6 +251,7 @@ arm_get_next_irq(int last_irq) printf("Spurious interrupt detected [0x%08x]\n", active_irq); return -1; } + gic_c_write_4(GICC_EOIR, active_irq); return active_irq; } @@ -223,5 +265,43 @@ arm_mask_irq(uintptr_t nb) void arm_unmask_irq(uintptr_t nb) { + + gic_c_write_4(GICC_EOIR, nb); gic_d_write_4(GICD_ISENABLER(nb >> 5), (1UL << (nb & 0x1F))); } + +#ifdef SMP +void +pic_ipi_send(cpuset_t cpus, u_int ipi) +{ + uint32_t val = 0, i; + + for (i = 0; i < MAXCPU; i++) + if (CPU_ISSET(i, &cpus)) + val |= 1 << (16 + i); + gic_d_write_4(GICD_SGIR(0), val | ipi); + +} + +int +pic_ipi_get(int i) +{ + + if (i != -1) { + /* + * The intr code will automagically give the frame pointer + * if the interrupt argument is 0. + */ + if ((unsigned int)i > 16) + return (0); + return (i); + } + return (0x3ff); +} + +void +pic_ipi_clear(int ipi) +{ +} +#endif + From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:26:14 2012 Return-Path: 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 BD4CE106566B; Sat, 3 Mar 2012 01:26:14 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ACFD08FC12; Sat, 3 Mar 2012 01:26:14 +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 q231QE4L056532; Sat, 3 Mar 2012 01:26:14 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231QEms056530; Sat, 3 Mar 2012 01:26:14 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030126.q231QEms056530@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:26:14 +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: r232425 - 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:26:14 -0000 Author: cognet Date: Sat Mar 3 01:26:14 2012 New Revision: 232425 URL: http://svn.freebsd.org/changeset/base/232425 Log: For the global timer, use GBL_TIMER_CTRL, not PRV_TIMER_CTRL. It's harmless because both values are the same. Modified: projects/armv6/sys/arm/ti/mp_timer.c Modified: projects/armv6/sys/arm/ti/mp_timer.c ============================================================================== --- projects/armv6/sys/arm/ti/mp_timer.c Sat Mar 3 01:24:19 2012 (r232424) +++ projects/armv6/sys/arm/ti/mp_timer.c Sat Mar 3 01:26:14 2012 (r232425) @@ -308,7 +308,7 @@ arm_tmr_attach(device_t dev) /* Disable both timers to start off */ tmr_prv_write_4(PRV_TIMER_CTRL, 0x00000000); - tmr_gbl_write_4(PRV_TIMER_CTRL, 0x00000000); + tmr_gbl_write_4(GBL_TIMER_CTRL, 0x00000000); /* Setup and enable the global timer to use as the timecounter */ tmr_gbl_write_4(GBL_TIMER_CTRL, (0x00 << GBL_TIMER_CTR_PRESCALER_SHIFT) | From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 01:33:11 2012 Return-Path: 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 7822E106564A; Sat, 3 Mar 2012 01:33:11 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 66FF48FC08; Sat, 3 Mar 2012 01:33: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 q231XBEB056796; Sat, 3 Mar 2012 01:33:11 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q231XBqQ056792; Sat, 3 Mar 2012 01:33:11 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203030133.q231XBqQ056792@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 01:33: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: r232426 - in 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 01:33:11 -0000 Author: cognet Date: Sat Mar 3 01:33:10 2012 New Revision: 232426 URL: http://svn.freebsd.org/changeset/base/232426 Log: Initial SMP bits for omap4 Added: projects/armv6/sys/arm/ti/omap4/omap4_mp.c (contents, props changed) Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 projects/armv6/sys/arm/ti/std.ti Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Mar 3 01:26:14 2012 (r232425) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Mar 3 01:33:10 2012 (r232426) @@ -12,6 +12,7 @@ arm/ti/ti_mmchs.c optional mmc arm/ti/omap4/omap4_l2cache.c optional pl310 arm/ti/omap4/omap4_prcm_clks.c standard arm/ti/omap4/omap4_scm_padconf.c standard +arm/ti/omap4/omap4_mp.c optional smp arm/ti/twl/twl.c optional twl arm/ti/twl/twl_vreg.c optional twl twl_vreg Added: projects/armv6/sys/arm/ti/omap4/omap4_mp.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/omap4/omap4_mp.c Sat Mar 3 01:33:10 2012 (r232426) @@ -0,0 +1,87 @@ +/*- + * Copyright (c) 2012 Olivier Houchard. 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 ``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 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 +__FBSDID("$FreeBSD$"); +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +void mpentry(void); +void mptramp(void); + +void +platform_mp_init_secondary(void) +{ + gic_init_secondary(); +} + +void +platform_mp_setmaxid(void) +{ + + mp_maxid = 1; +} + +int +platform_mp_probe(void) +{ + + mp_ncpus = 2; + return (1); +} + +void +platform_mp_start_ap(void) +{ + bus_addr_t scu_addr; + + if (bus_space_map(fdtbus_bs_tag, 0x48240000, 0x1000, 0, &scu_addr) != 0) + panic("Couldn't map the SCU\n"); + /* Enable the SCU */ + *(volatile unsigned int *)scu_addr |= 1; + //*(volatile unsigned int *)(scu_addr + 0x30) |= 1; + cpu_idcache_wbinv_all(); + cpu_l2cache_wbinv_all(); + ti_smc0(0x200, 0xfffffdff, MODIFY_AUX_CORE_0); + ti_smc0(pmap_kextract(mpentry), 0, WRITE_AUX_CORE_1); + armv7_sev(); + bus_space_unmap(fdtbus_bs_tag, scu_addr, 0x1000); +} + +void +platform_ipi_send(cpuset_t cpus, u_int ipi) +{ + pic_ipi_send(cpus, ipi); +} Modified: projects/armv6/sys/arm/ti/std.ti ============================================================================== --- projects/armv6/sys/arm/ti/std.ti Sat Mar 3 01:26:14 2012 (r232425) +++ projects/armv6/sys/arm/ti/std.ti Sat Mar 3 01:33:10 2012 (r232426) @@ -1,7 +1,7 @@ # $FreeBSD$ # This should be armv7-a but current gcc doesn't support it -# makeoptions CONF_CFLAGS=-march=armv6 +makeoptions CONF_CFLAGS=-D_ARM_ARCH_6 cpu CPU_CORTEXA From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 06:38:08 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 81FF4106564A; Sat, 3 Mar 2012 06:38:08 +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 720B78FC17; Sat, 3 Mar 2012 06:38: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 q236c8Xu067604; Sat, 3 Mar 2012 06:38:08 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q236c8gF067602; Sat, 3 Mar 2012 06:38:08 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201203030638.q236c8gF067602@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 3 Mar 2012 06:38: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: r232441 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 06:38:08 -0000 Author: gonzo Date: Sat Mar 3 06:38:07 2012 New Revision: 232441 URL: http://svn.freebsd.org/changeset/base/232441 Log: Use proper TLS location if td == curthread Modified: projects/armv6/sys/arm/arm/sys_machdep.c Modified: projects/armv6/sys/arm/arm/sys_machdep.c ============================================================================== --- projects/armv6/sys/arm/arm/sys_machdep.c Sat Mar 3 06:23:26 2012 (r232440) +++ projects/armv6/sys/arm/arm/sys_machdep.c Sat Mar 3 06:38:07 2012 (r232441) @@ -88,7 +88,11 @@ static int arm32_set_tp(struct thread *td, void *args) { - td->td_md.md_tp = (register_t)args; + if (td != curthread) + td->td_md.md_tp = (register_t)args; + else + /* XXX: wrong for SMP case */ + *(register_t *)ARM_TP_ADDRESS = (register_t)args; return (0); } @@ -96,7 +100,11 @@ static int arm32_get_tp(struct thread *td, void *args) { - td->td_retval[0] = td->td_md.md_tp; + if (td != curthread) + td->td_retval[0] = td->td_md.md_tp; + else + /* XXX: wrong for SMP case */ + td->td_retval[0] = *(register_t *)ARM_TP_ADDRESS; return (0); } From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 06:38:44 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 63BFC106564A; Sat, 3 Mar 2012 06:38:44 +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 53A288FC17; Sat, 3 Mar 2012 06:38:44 +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 q236cit7067654; Sat, 3 Mar 2012 06:38:44 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q236cidI067652; Sat, 3 Mar 2012 06:38:44 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201203030638.q236cidI067652@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 3 Mar 2012 06:38:44 +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: r232442 - projects/armv6/lib/libthr/arch/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 06:38:44 -0000 Author: gonzo Date: Sat Mar 3 06:38:43 2012 New Revision: 232442 URL: http://svn.freebsd.org/changeset/base/232442 Log: sysarch return TLS pointer as return value, not through copyout Modified: projects/armv6/lib/libthr/arch/arm/include/pthread_md.h Modified: projects/armv6/lib/libthr/arch/arm/include/pthread_md.h ============================================================================== --- projects/armv6/lib/libthr/arch/arm/include/pthread_md.h Sat Mar 3 06:38:07 2012 (r232441) +++ projects/armv6/lib/libthr/arch/arm/include/pthread_md.h Sat Mar 3 06:38:43 2012 (r232442) @@ -67,7 +67,7 @@ static __inline struct tcb * _tcb_get(void) { struct tcb *tcb; - sysarch(ARM_GET_TP, &tcb); + tcb = (void*)sysarch(ARM_GET_TP, NULL); return (tcb); } From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 12:23:07 2012 Return-Path: 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 975D1106566B; Sat, 3 Mar 2012 12:23:07 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 86A418FC08; Sat, 3 Mar 2012 12:23:07 +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 q23CN7x6081575; Sat, 3 Mar 2012 12:23:07 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q23CN73s081573; Sat, 3 Mar 2012 12:23:07 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203031223.q23CN73s081573@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 12:23:07 +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: r232456 - projects/armv6/sys/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 12:23:07 -0000 Author: cognet Date: Sat Mar 3 12:23:07 2012 New Revision: 232456 URL: http://svn.freebsd.org/changeset/base/232456 Log: Get the right casts for long operations Modified: projects/armv6/sys/arm/include/atomic.h Modified: projects/armv6/sys/arm/include/atomic.h ============================================================================== --- projects/armv6/sys/arm/include/atomic.h Sat Mar 3 11:53:35 2012 (r232455) +++ projects/armv6/sys/arm/include/atomic.h Sat Mar 3 12:23:07 2012 (r232456) @@ -505,35 +505,47 @@ atomic_store_32(volatile uint32_t *dst, *dst = src; } -#define atomic_add_long(p, v) \ +#define atomic_set_long(p, v) \ + atomic_set_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_set_acq_long(p, v) \ + atomic_set_acq_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_set_rel_long(p, v) \ + atomic_set_rel_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_clear_long(p, v) \ + atomic_clear_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_clear_acq_long(p, v) \ + atomic_clear_acq_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_clear_rel_long(p, v) \ + atomic_clear_rel_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_add_long(p, v) \ + atomic_add_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_add_acq_long(p, v) \ + atomic_add_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_add_rel_long(p, v) \ atomic_add_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_add_acq_long atomic_add_acq_32 -#define atomic_add_rel_long atomic_add_rel_32 -#define atomic_subtract_long(p, v) \ +#define atomic_subtract_long(p, v) \ atomic_subtract_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_subtract_acq_long atomic_subtract_acq_32 -#define atomic_subtract_rel_long atomic_subtract_rel_32 -#define atomic_clear_long(p, v) \ - atomic_clear_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_clear_acq_long atomic_clear_acq_32 -#define atomic_clear_rel_long atomic_clear_rel_32 -#define atomic_set_long(p, v) \ - atomic_set_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_set_acq_long atomic_set_acq_32 -#define atomic_set_rel_long atomic_set_rel_32 -#define atomic_cmpset_long(dst, old, new) \ - atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) -#define atomic_cmpset_acq_long atomic_cmpset_acq_32 -#define atomic_cmpset_rel_long atomic_cmpset_rel_32 -#define atomic_fetchadd_long(p, v) \ - atomic_fetchadd_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_readandclear_long(p) \ - atomic_readandclear_long((volatile u_int *)(p)) -#define atomic_load_long(p) \ - atomic_load_32((volatile u_int *)(p)) -#define atomic_load_acq_long atomic_load_acq_32 -#define atomic_store_rel_long(p, v) \ +#define atomic_subtract_acq_long(p, v) \ + atomic_subtract_acq_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_subtract_rel_long(p, v) \ + atomic_subtract_rel_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_cmpset_long(p, cmpval, newval) \ + atomic_cmpset_32((volatile u_int *)(p), (u_int)(cmpval), \ + (u_int)(newval)) +#define atomic_cmpset_acq_long(p, cmpval, newval) \ + atomic_cmpset_acq_32((volatile u_int *)(p), (u_int)(cmpval), \ + (u_int)(newval)) +#define atomic_cmpset_rel_long(p, cmpval, newval) \ + atomic_cmpset_rel_32((volatile u_int *)(p), (u_int)(cmpval), \ + (u_int)(newval)) +#define atomic_load_acq_long(p) \ + (u_long)atomic_load_acq_32((volatile u_int *)(p)) +#define atomic_store_rel_long(p, v) \ atomic_store_rel_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_fetchadd_long(p, v) \ + atomic_fetchadd_32((volatile u_int *)(p), (u_int)(v)) +#define atomic_readandclear_long(p) \ + atomic_readandclear_32((volatile u_int *)(p)) #define atomic_clear_ptr atomic_clear_32 From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 12:27:53 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CC9C1106566B; Sat, 3 Mar 2012 12:27:53 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BC6AA8FC08; Sat, 3 Mar 2012 12:27:53 +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 q23CRrbb081755; Sat, 3 Mar 2012 12:27:53 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q23CRrde081753; Sat, 3 Mar 2012 12:27:53 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203031227.q23CRrde081753@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 12:27:53 +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: r232457 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 12:27:53 -0000 Author: cognet Date: Sat Mar 3 12:27:53 2012 New Revision: 232457 URL: http://svn.freebsd.org/changeset/base/232457 Log: Try to set the SMP and the TLB broadcasting bits in the aux register (largely a nop on the omap4 because both bits are already set, and we can't change it anyway because we're not running in secure mode) Modified: projects/armv6/sys/arm/arm/cpufunc.c Modified: projects/armv6/sys/arm/arm/cpufunc.c ============================================================================== --- projects/armv6/sys/arm/arm/cpufunc.c Sat Mar 3 12:23:07 2012 (r232456) +++ projects/armv6/sys/arm/arm/cpufunc.c Sat Mar 3 12:27:53 2012 (r232457) @@ -2322,7 +2322,6 @@ cortexa_setup(char *args) cpuctrl = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_IC_ENABLE | CPU_CONTROL_DC_ENABLE | - CPU_CONTROL_V6_EXTPAGE | CPU_CONTROL_BPRD_ENABLE; #ifndef ARM32_DISABLE_ALIGNMENT_FAULTS @@ -2347,6 +2346,9 @@ cortexa_setup(char *args) /* And again. */ cpu_idcache_wbinv_all(); +#ifdef SMP + armv7_auxctrl((1 << 6) | (1 << 0), (1 << 6) | (1 << 0)); /* Enable SMP + TLB broadcasting */ +#endif } #endif /* CPU_CORTEXA */ From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 12:41:20 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 452D5106566C; Sat, 3 Mar 2012 12:41:20 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 34F578FC15; Sat, 3 Mar 2012 12:41:20 +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 q23CfJxe082215; Sat, 3 Mar 2012 12:41:19 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q23CfJYX082213; Sat, 3 Mar 2012 12:41:19 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203031241.q23CfJYX082213@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 12:41:19 +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: r232458 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 12:41:20 -0000 Author: cognet Date: Sat Mar 3 12:41:19 2012 New Revision: 232458 URL: http://svn.freebsd.org/changeset/base/232458 Log: Use set_tls()/get_tls() for >= armv6 Modified: projects/armv6/sys/arm/arm/sys_machdep.c Modified: projects/armv6/sys/arm/arm/sys_machdep.c ============================================================================== --- projects/armv6/sys/arm/arm/sys_machdep.c Sat Mar 3 12:27:53 2012 (r232457) +++ projects/armv6/sys/arm/arm/sys_machdep.c Sat Mar 3 12:41:19 2012 (r232458) @@ -90,9 +90,12 @@ arm32_set_tp(struct thread *td, void *ar if (td != curthread) td->td_md.md_tp = (register_t)args; - else - /* XXX: wrong for SMP case */ + else +#ifdef _ARM_ARCH_6 + set_tls(args); +#else *(register_t *)ARM_TP_ADDRESS = (register_t)args; +#endif return (0); } @@ -103,8 +106,11 @@ arm32_get_tp(struct thread *td, void *ar if (td != curthread) td->td_retval[0] = td->td_md.md_tp; else - /* XXX: wrong for SMP case */ +#ifdef _ARM_ARCH_6 + td->td_retval[0] = (register_t)get_tls(); +#else td->td_retval[0] = *(register_t *)ARM_TP_ADDRESS; +#endif return (0); } From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 14:02:34 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 812BE1065670; Sat, 3 Mar 2012 14:02:34 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6CB708FC0A; Sat, 3 Mar 2012 14:02: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 q23E2Yfr085084; Sat, 3 Mar 2012 14:02:34 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q23E2YYo085082; Sat, 3 Mar 2012 14:02:34 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203031402.q23E2YYo085082@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 14:02: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: r232462 - projects/armv6/sys/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 14:02:34 -0000 Author: cognet Date: Sat Mar 3 14:02:34 2012 New Revision: 232462 URL: http://svn.freebsd.org/changeset/base/232462 Log: Grrr, we can't use dmb for armv6. Of course, our toolchain is too ancient to support armv7, so we have to use this for armv7 userland, as well. Modified: projects/armv6/sys/arm/include/atomic.h Modified: projects/armv6/sys/arm/include/atomic.h ============================================================================== --- projects/armv6/sys/arm/include/atomic.h Sat Mar 3 13:51:51 2012 (r232461) +++ projects/armv6/sys/arm/include/atomic.h Sat Mar 3 14:02:34 2012 (r232462) @@ -67,7 +67,11 @@ static __inline void __do_dmb(void) { +#if ARM_ARCH_7A __asm __volatile("dmb" : : : "memory"); +#else + __asm __volatile("mcr p15, 0, r0, c7, c10, 5" : : : "memory"); +#endif } #define ATOMIC_ACQ_REL(NAME, WIDTH) \ From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 15:14:56 2012 Return-Path: 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 6CDF3106566B; Sat, 3 Mar 2012 15:14:56 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail04.syd.optusnet.com.au (mail04.syd.optusnet.com.au [211.29.132.185]) by mx1.freebsd.org (Postfix) with ESMTP id 054658FC0A; Sat, 3 Mar 2012 15:14:55 +0000 (UTC) Received: from c211-30-171-136.carlnfd1.nsw.optusnet.com.au (c211-30-171-136.carlnfd1.nsw.optusnet.com.au [211.30.171.136]) by mail04.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id q23FEkPj017392 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 4 Mar 2012 02:14:48 +1100 Date: Sun, 4 Mar 2012 02:14:46 +1100 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Olivier Houchard In-Reply-To: <201203031223.q23CN73s081573@svn.freebsd.org> Message-ID: <20120304011922.G5792@besplex.bde.org> References: <201203031223.q23CN73s081573@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r232456 - projects/armv6/sys/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 15:14:56 -0000 On Sat, 3 Mar 2012, Olivier Houchard wrote: > Log: > Get the right casts for long operations I think you mean "the wrong casts". i386 was broken similarly, but amd64 is still correct -- amd64 has no casts at all in its big list of #defines (but the list is excessively complete, with must cases unused). > Modified: projects/armv6/sys/arm/include/atomic.h > ============================================================================== > --- projects/armv6/sys/arm/include/atomic.h Sat Mar 3 11:53:35 2012 (r232455) > +++ projects/armv6/sys/arm/include/atomic.h Sat Mar 3 12:23:07 2012 (r232456) > @@ -505,35 +505,47 @@ atomic_store_32(volatile uint32_t *dst, > *dst = src; > } > > -#define atomic_add_long(p, v) \ > +#define atomic_set_long(p, v) \ > + atomic_set_32((volatile u_int *)(p), (u_int)(v)) > +#define atomic_set_acq_long(p, v) \ > + atomic_set_acq_32((volatile u_int *)(p), (u_int)(v)) Casts like this mostly just defeat type checking. On amd64, atomic_set_32 is just atomic_set_int (without even parameters). There is a minor problem with signedness. With proper type checking, the above will create about as many problems as it hides, by turning a pointer to a signed long or int into a pointer to a u_int. This problem already occurs at the inline function level. There is a problem with int having the same size as long. It is a bug for atomic ops on longs to even exist on arches where int has the same size as long, since atomic ops on longs are useless in MD code on such arches and unusable in MI code on any arches (since longs should be 2 words and thus not naturally atomic). Given this bug, the correct way to support it is to have separate functions for ints and longs at the lowest level, the same as when longs are longer than ints except the contents of the separate functions is essentially indentical when the type sizes are the same. Then there is no need to break type checking by pretending that ints are longs or vice versa. > #define atomic_clear_ptr atomic_clear_32 There is a better case for type puns of pointer types. It's interesting that you didn't changes anything with _ptr. i386 uses bogus casts for pointers too. E.g.: % #define atomic_set_ptr(p, v) \ % atomic_set_int((volatile u_int *)(p), (u_int)(v)) It is probably a bug for any atomic ops on pointers to exist. In fact, none do, but the ops are spelled with "ptr". From atomic(9): % Types % Each atomic operation operates on a specific type. The type to use is % indicated in the function name. The available types that can be used % are: % % int unsigned integer % long unsigned long integer % ptr unsigned integer the size of a pointer % 32 unsigned 32-bit integer % 64 unsigned 64-bit integer Note that `ptr' is not a pointer type, but is uintptr_t described verbosely. The bogus cast in the i386 version rewards broken code that starts with a pointer type. Fortunately, there shouldn't be much such code, since amd64 is still pure and will detect the type mismatch. % % For example, the function to atomically add two integers is called % atomic_add_int(). % % Certain architectures also provide operations for types smaller than % ``int''. % % char unsigned character % short unsigned short integer % 8 unsigned 8-bit integer % 16 unsigned 16-bit integer % % These must not be used in MI code because the instructions to implement % them efficiently may not be available. It should say this for `long' and `64' too. long would be non-atomic on any arch with correctly-sized longs, and `64' already isn't natural atomic on 32-bit arches. On i386, `64' is only available for a limited set of atomic ops (only load/store I think). This restriction of course isn't documented above. % ... % The type ``64'' is currently not implemented for any of the atomic opera- % tions on the arm, i386, and powerpc architectures. The above restiction is partly documented below (that is here). This is wrong too. `64' is now implemented for _some_ atomic ops on i386. % EXAMPLES % This example uses the atomic_cmpset_acq_ptr() and atomic_set_ptr() func- % tions to obtain a sleep mutex and handle recursion. Since the mtx_lock % member of a struct mtx is a pointer, the ``ptr'' type is used. This bad example just echoes an old version of the mutex code. It is so old that it is wrong. The mtx_lock member is _not_ a pointer -- it complies with the earlier documentation and is a uintptr_t. Bruce From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 16:57:57 2012 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9389F1065676; Sat, 3 Mar 2012 16:57:57 +0000 (UTC) (envelope-from doginou@kanar.ci0.org) Received: from kanar.ci0.org (unknown [IPv6:2a01:e0b:1:50:40:63ff:feea:93a]) by mx1.freebsd.org (Postfix) with ESMTP id C17C68FC08; Sat, 3 Mar 2012 16:57:56 +0000 (UTC) Received: from kanar.ci0.org (pluxor@localhost [127.0.0.1]) by kanar.ci0.org (8.14.2/8.14.3) with ESMTP id q23GvcfX028824; Sat, 3 Mar 2012 17:57:38 +0100 (CET) (envelope-from doginou@kanar.ci0.org) Received: (from doginou@localhost) by kanar.ci0.org (8.14.2/8.14.3/Submit) id q23GvbsC028823; Sat, 3 Mar 2012 17:57:37 +0100 (CET) (envelope-from doginou) Date: Sat, 3 Mar 2012 17:57:37 +0100 From: Olivier Houchard To: Bruce Evans Message-ID: <20120303165737.GA26775@ci0.org> References: <201203031223.q23CN73s081573@svn.freebsd.org> <20120304011922.G5792@besplex.bde.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="tThc/1wpZn/ma/RB" Content-Disposition: inline In-Reply-To: <20120304011922.G5792@besplex.bde.org> User-Agent: Mutt/1.4.2.1i Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r232456 - projects/armv6/sys/arm/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 16:57:57 -0000 --tThc/1wpZn/ma/RB Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Mar 04, 2012 at 02:14:46AM +1100, Bruce Evans wrote: > On Sat, 3 Mar 2012, Olivier Houchard wrote: > > >Log: > > Get the right casts for long operations > > I think you mean "the wrong casts". i386 was broken similarly, but amd64 > is still correct -- amd64 has no casts at all in its big list of #defines > (but the list is excessively complete, with must cases unused). > Hi Bruce, I understand your concerns. These casts are indeed bogus, and will become even more when we'll support 64bits arm, which should come with 64bits long. I can't do much for long which should be 64bits even on 32bits machines, that is set in stone now, however I can certainly remove the bogus casts. Would the attached patch be OK for you ? It duplicates the various atomic functions to add a _long variant (for armv6 at least, for armv5 it just introduces _long variants which calls the _32 version, but at least it should catch any signedness/type error), and it removes the bogus casts for the ptr version, and just #defines it to the __32 version, since that's what uintptr_t is. Regards, Olivier --tThc/1wpZn/ma/RB Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="atomic.h.diff" Index: atomic.h =================================================================== --- atomic.h (revision 232462) +++ atomic.h (working copy) @@ -74,6 +74,21 @@ #endif } +#define ATOMIC_ACQ_REL_LONG(NAME) \ +static __inline void \ +atomic_##NAME##_acq_long(__volatile u_long *p, u_long v) \ +{ \ + atomic_##NAME##_long(p, v); \ + __do_dmb(); \ +} \ + \ +static __inline void \ +atomic_##NAME##_rel_long(__volatile u_long *p, u_long v) \ +{ \ + __do_dmb(); \ + atomic_##NAME##_long(p, v); \ +} + #define ATOMIC_ACQ_REL(NAME, WIDTH) \ static __inline void \ atomic_##NAME##_acq_##WIDTH(__volatile uint##WIDTH##_t *p, uint##WIDTH##_t v)\ @@ -105,6 +120,21 @@ } static __inline void +atomic_set_long(volatile u_long *address, u_long setmask) +{ + u_long tmp = 0, tmp2 = 0; + + __asm __volatile("1: ldrex %0, [%2]\n" + "orr %0, %0, %3\n" + "strex %1, %0, [%2]\n" + "cmp %1, #0\n" + "bne 1b\n" + : "=&r" (tmp), "+r" (tmp2) + , "+r" (address), "+r" (setmask) : : "memory"); + +} + +static __inline void atomic_clear_32(volatile uint32_t *address, uint32_t setmask) { uint32_t tmp = 0, tmp2 = 0; @@ -118,6 +148,20 @@ ,"+r" (address), "+r" (setmask) : : "memory"); } +static __inline void +atomic_clear_long(volatile u_long *address, u_long setmask) +{ + u_long tmp = 0, tmp2 = 0; + + __asm __volatile("1: ldrex %0, [%2]\n" + "bic %0, %0, %3\n" + "strex %1, %0, [%2]\n" + "cmp %1, #0\n" + "bne 1b\n" + : "=&r" (tmp), "+r" (tmp2) + ,"+r" (address), "+r" (setmask) : : "memory"); +} + static __inline u_int32_t atomic_cmpset_32(volatile u_int32_t *p, volatile u_int32_t cmpval, volatile u_int32_t newval) { @@ -137,15 +181,43 @@ return (ret); } +static __inline u_long +atomic_cmpset_long(volatile u_long *p, volatile u_long cmpval, volatile u_long newval) +{ + u_long ret; + + __asm __volatile("1: ldrex %0, [%1]\n" + "cmp %0, %2\n" + "movne %0, #0\n" + "bne 2f\n" + "strex %0, %3, [%1]\n" + "cmp %0, #0\n" + "bne 1b\n" + "moveq %0, #1\n" + "2:" + : "=&r" (ret) + ,"+r" (p), "+r" (cmpval), "+r" (newval) : : "memory"); + return (ret); +} + static __inline u_int32_t atomic_cmpset_acq_32(volatile u_int32_t *p, volatile u_int32_t cmpval, volatile u_int32_t newval) { - int ret = atomic_cmpset_32(p, cmpval, newval); + u_int32_t ret = atomic_cmpset_32(p, cmpval, newval); __do_dmb(); return (ret); } +static __inline u_long +atomic_cmpset_acq_long(volatile u_long *p, volatile u_long cmpval, volatile u_long newval) +{ + u_long ret = atomic_cmpset_long(p, cmpval, newval); + + __do_dmb(); + return (ret); +} + static __inline u_int32_t atomic_cmpset_rel_32(volatile u_int32_t *p, volatile u_int32_t cmpval, volatile u_int32_t newval) { @@ -154,6 +226,15 @@ return (atomic_cmpset_32(p, cmpval, newval)); } +static __inline u_long +atomic_cmpset_rel_long(volatile u_long *p, volatile u_long cmpval, volatile u_long newval) +{ + + __do_dmb(); + return (atomic_cmpset_long(p, cmpval, newval)); +} + + static __inline void atomic_add_32(volatile u_int32_t *p, u_int32_t val) { @@ -169,6 +250,20 @@ } static __inline void +atomic_add_long(volatile u_long *p, u_long val) +{ + u_long tmp = 0, tmp2 = 0; + + __asm __volatile("1: ldrex %0, [%2]\n" + "add %0, %0, %3\n" + "strex %1, %0, [%2]\n" + "cmp %1, #0\n" + "bne 1b\n" + : "=&r" (tmp), "+r" (tmp2) + ,"+r" (p), "+r" (val) : : "memory"); +} + +static __inline void atomic_subtract_32(volatile u_int32_t *p, u_int32_t val) { uint32_t tmp = 0, tmp2 = 0; @@ -182,13 +277,31 @@ ,"+r" (p), "+r" (val) : : "memory"); } +static __inline void +atomic_subtract_long(volatile u_long *p, u_long val) +{ + u_long tmp = 0, tmp2 = 0; + __asm __volatile("1: ldrex %0, [%2]\n" + "sub %0, %0, %3\n" + "strex %1, %0, [%2]\n" + "cmp %1, #0\n" + "bne 1b\n" + : "=&r" (tmp), "+r" (tmp2) + ,"+r" (p), "+r" (val) : : "memory"); +} + ATOMIC_ACQ_REL(clear, 32) ATOMIC_ACQ_REL(add, 32) ATOMIC_ACQ_REL(subtract, 32) ATOMIC_ACQ_REL(set, 32) +ATOMIC_ACQ_REL_LONG(clear) +ATOMIC_ACQ_REL_LONG(add) +ATOMIC_ACQ_REL_LONG(subtract) +ATOMIC_ACQ_REL_LONG(set) #undef ATOMIC_ACQ_REL +#undef ATOMIC_ACQ_REL_LONG static __inline uint32_t atomic_fetchadd_32(volatile uint32_t *p, uint32_t val) @@ -238,6 +351,53 @@ *p = v; } +static __inline u_long +atomic_fetchadd_long(volatile u_long *p, u_long val) +{ + u_long tmp = 0, tmp2 = 0, ret = 0; + + __asm __volatile("1: ldrex %0, [%3]\n" + "add %1, %0, %4\n" + "strex %2, %1, [%3]\n" + "cmp %2, #0\n" + "bne 1b\n" + : "+r" (ret), "=&r" (tmp), "+r" (tmp2) + ,"+r" (p), "+r" (val) : : "memory"); + return (ret); +} + +static __inline u_long +atomic_readandclear_long(volatile u_long *p) +{ + u_long ret, tmp = 0, tmp2 = 0; + + __asm __volatile("1: ldrex %0, [%3]\n" + "mov %1, #0\n" + "strex %2, %1, [%3]\n" + "cmp %2, #0\n" + "bne 1b\n" + : "=r" (ret), "=&r" (tmp), "+r" (tmp2) + ,"+r" (p) : : "memory"); + return (ret); +} + +static __inline u_long +atomic_load_acq_long(volatile u_long *p) +{ + u_long v; + + v = *p; + __do_dmb(); + return (v); +} + +static __inline void +atomic_store_rel_long(volatile u_long *p, u_long v) +{ + + __do_dmb(); + *p = v; +} #else /* < armv6 */ #define __with_interrupts_disabled(expr) \ @@ -489,9 +649,64 @@ #define atomic_subtract_rel_32 atomic_subtract_32 #define atomic_subtract_acq_32 atomic_subtract_32 #define atomic_store_rel_32 atomic_store_32 +#define atomic_store_rel_long atomic_store_long #define atomic_load_acq_32 atomic_load_32 +#define atomic_load_acq_long atomic_load_long #undef __with_interrupts_disabled +static __inline void +atomic_add_long(volatile u_long *p, u_long v) +{ + + atomic_add_32((volatile uint32_t *)p, (volatile uint32_t)v); +} + +static __inline void +atomic_clear_long(volatile u_long *p, u_long v) +{ + + atomic_clear_32((volatile uint32_t *)p, (volatile uint32_t)v); +} + +static __inline int +atomic_cmpset_long(volatile u_long *dst, u_long old, u_long newe) +{ + + return (atomic_cmpset_32((volatile uint32_t *)dst, + (volatile uint32_t)old, (volatile uint32_t)newe)); +} + +static __inline u_long +atomic_fetchadd_long(volatile u_long *p, u_long v) +{ + + return (atomic_fetchadd_32((volatile uint32_t *)p, + (volatile uint32_t)v)); +} + +static __inline void +atomic_readandclear_long(volatile u_long *p) +{ + + atomic_readandclear_32((volatile uint32_t *)p); +} + +static __inline void +atomic_set_long(volatile u_long *p, u_long v) +{ + + atomic_set_32((volatile uint32_t *)p, (volatile uint32_t)v); +} + +static __inline void +atomic_subtract_long(volatile u_long *p, u_long v) +{ + + atomic_subtract_32((volatile uint32_t *)p, (volatile uint32_t)v); +} + + + #endif /* _LOCORE */ #endif /* Arch >= v6 */ @@ -509,57 +724,24 @@ *dst = src; } -#define atomic_set_long(p, v) \ - atomic_set_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_set_acq_long(p, v) \ - atomic_set_acq_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_set_rel_long(p, v) \ - atomic_set_rel_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_clear_long(p, v) \ - atomic_clear_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_clear_acq_long(p, v) \ - atomic_clear_acq_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_clear_rel_long(p, v) \ - atomic_clear_rel_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_add_long(p, v) \ - atomic_add_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_add_acq_long(p, v) \ - atomic_add_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_add_rel_long(p, v) \ - atomic_add_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_subtract_long(p, v) \ - atomic_subtract_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_subtract_acq_long(p, v) \ - atomic_subtract_acq_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_subtract_rel_long(p, v) \ - atomic_subtract_rel_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_cmpset_long(p, cmpval, newval) \ - atomic_cmpset_32((volatile u_int *)(p), (u_int)(cmpval), \ - (u_int)(newval)) -#define atomic_cmpset_acq_long(p, cmpval, newval) \ - atomic_cmpset_acq_32((volatile u_int *)(p), (u_int)(cmpval), \ - (u_int)(newval)) -#define atomic_cmpset_rel_long(p, cmpval, newval) \ - atomic_cmpset_rel_32((volatile u_int *)(p), (u_int)(cmpval), \ - (u_int)(newval)) -#define atomic_load_acq_long(p) \ - (u_long)atomic_load_acq_32((volatile u_int *)(p)) -#define atomic_store_rel_long(p, v) \ - atomic_store_rel_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_fetchadd_long(p, v) \ - atomic_fetchadd_32((volatile u_int *)(p), (u_int)(v)) -#define atomic_readandclear_long(p) \ - atomic_readandclear_32((volatile u_int *)(p)) +static __inline int +atomic_load_long(volatile u_long *v) +{ + return (*v); +} +static __inline void +atomic_store_long(volatile u_long *dst, u_long src) +{ + *dst = src; +} + #define atomic_clear_ptr atomic_clear_32 #define atomic_set_ptr atomic_set_32 -#define atomic_cmpset_ptr(dst, old, new) \ - atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) -#define atomic_cmpset_rel_ptr(dst, old, new) \ - atomic_cmpset_rel_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) -#define atomic_cmpset_acq_ptr(dst, old, new) \ - atomic_cmpset_acq_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) +#define atomic_cmpset_ptr atomic_cmpset_32 +#define atomic_cmpset_rel_ptr atomic_cmpset_rel_32 +#define atomic_cmpset_acq_ptr atomic_cmpset_acq_32 #define atomic_store_ptr atomic_store_32 #define atomic_store_rel_ptr atomic_store_ptr --tThc/1wpZn/ma/RB-- From owner-svn-src-projects@FreeBSD.ORG Sat Mar 3 17:03:26 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C73A9106566B; Sat, 3 Mar 2012 17:03:26 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A8E378FC12; Sat, 3 Mar 2012 17:03:26 +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 q23H3Qe8091752; Sat, 3 Mar 2012 17:03:26 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q23H3QFu091743; Sat, 3 Mar 2012 17:03:26 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201203031703.q23H3QFu091743@svn.freebsd.org> From: Olivier Houchard Date: Sat, 3 Mar 2012 17:03:26 +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: r232468 - in projects/armv6/sys: arm/at91 arm/econa arm/s3c2xx0 arm/sa11x0 arm/xscale conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Mar 2012 17:03:26 -0000 Author: cognet Date: Sat Mar 3 17:03:26 2012 New Revision: 232468 URL: http://svn.freebsd.org/changeset/base/232468 Log: Add the IPI_IRQ_START and IPI_IRQ_END that I forgot to add yesterday. Introduce a new option, NO_EVENTTIMERS, and use it for the platforms which haven't been converted to use event timers yet. If set, the cpu_idle.c code will make no attempt to call cpu_idleclock()/cpu_activeclock() Modified: projects/armv6/sys/arm/at91/std.at91 projects/armv6/sys/arm/econa/std.econa projects/armv6/sys/arm/s3c2xx0/std.ln2410sbc projects/armv6/sys/arm/s3c2xx0/std.s3c2410 projects/armv6/sys/arm/sa11x0/std.sa11x0 projects/armv6/sys/arm/xscale/std.xscale projects/armv6/sys/conf/files.arm projects/armv6/sys/conf/options.arm Modified: projects/armv6/sys/arm/at91/std.at91 ============================================================================== --- projects/armv6/sys/arm/at91/std.at91 Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/at91/std.at91 Sat Mar 3 17:03:26 2012 (r232468) @@ -4,3 +4,4 @@ files "../at91/files.at91" cpu CPU_ARM9 makeoptions CONF_CFLAGS=-mcpu=arm9 options PHYSADDR=0x20000000 +options NO_EVENTTIMERS Modified: projects/armv6/sys/arm/econa/std.econa ============================================================================== --- projects/armv6/sys/arm/econa/std.econa Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/econa/std.econa Sat Mar 3 17:03:26 2012 (r232468) @@ -12,3 +12,5 @@ options KERNVIRTADDR=0xc1000000 # Used i options FLASHADDR=0xD0000000 options LOADERRAMADDR=0x00000000 options STARTUP_PAGETABLE_ADDR=0x00100000 + +options NO_EVENTTIMERS Modified: projects/armv6/sys/arm/s3c2xx0/std.ln2410sbc ============================================================================== --- projects/armv6/sys/arm/s3c2xx0/std.ln2410sbc Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/s3c2xx0/std.ln2410sbc Sat Mar 3 17:03:26 2012 (r232468) @@ -7,4 +7,5 @@ options KERNPHYSADDR=0x30000000 options KERNVIRTADDR=0xc0000000 options PHYSADDR=0x30000000 options STARTUP_PAGETABLE_ADDR=0x30800000 +options NO_EVENTTIMERS Modified: projects/armv6/sys/arm/s3c2xx0/std.s3c2410 ============================================================================== --- projects/armv6/sys/arm/s3c2xx0/std.s3c2410 Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/s3c2xx0/std.s3c2410 Sat Mar 3 17:03:26 2012 (r232468) @@ -4,3 +4,4 @@ files "../s3c2xx0/files.s3c2xx0" cpu CPU_ARM9 makeoptions CONF_CFLAGS=-mcpu=arm920t +options NO_EVENTTIMERS Modified: projects/armv6/sys/arm/sa11x0/std.sa11x0 ============================================================================== --- projects/armv6/sys/arm/sa11x0/std.sa11x0 Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/sa11x0/std.sa11x0 Sat Mar 3 17:03:26 2012 (r232468) @@ -5,3 +5,4 @@ cpu CPU_SA1100 cpu CPU_SA1110 makeoptions KERNPHYSADDR=0xc0000000 makeoptions KERNVIRTADDR=0xc0000000 +options NO_EVENTTIMERS Modified: projects/armv6/sys/arm/xscale/std.xscale ============================================================================== --- projects/armv6/sys/arm/xscale/std.xscale Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/arm/xscale/std.xscale Sat Mar 3 17:03:26 2012 (r232468) @@ -1,2 +1,3 @@ # $FreeBSD$ options ARM_CACHE_LOCK_ENABLE +options NO_EVENTTIMERS Modified: projects/armv6/sys/conf/files.arm ============================================================================== --- projects/armv6/sys/conf/files.arm Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/conf/files.arm Sat Mar 3 17:03:26 2012 (r232468) @@ -34,6 +34,7 @@ arm/arm/mem.c optional mem arm/arm/minidump_machdep.c optional mem arm/arm/mp_machdep.c optional smp arm/arm/nexus.c standard +arm/arm/pl310.c optional pl310 arm/arm/pmap.c optional cpu_arm9 | cpu_arm9e | cpu_fa526 | cpu_sa1100 | cpu_sa1110 | cpu_xscale_80219 | cpu_xscale_80321 | cpu_xscale_81342 | cpu_xscale_ixp425 | cpu_xscale_ixp435 | cpu_xscale_pxa2x0 arm/arm/pmap-v6.c optional cpu_arm11 | cpu_cortexa | cpu_mv_pj4b arm/arm/setcpsr.S standard Modified: projects/armv6/sys/conf/options.arm ============================================================================== --- projects/armv6/sys/conf/options.arm Sat Mar 3 16:13:20 2012 (r232467) +++ projects/armv6/sys/conf/options.arm Sat Mar 3 17:03:26 2012 (r232468) @@ -24,10 +24,13 @@ CPU_XSCALE_IXP425 opt_global.h CPU_XSCALE_IXP435 opt_global.h CPU_XSCALE_PXA2X0 opt_global.h FLASHADDR opt_global.h +IPI_IRQ_START opt_smp.h +IPI_IRQ_END opt_smp.h IXP4XX_FLASH_SIZE opt_global.h KERNPHYSADDR opt_global.h KERNVIRTADDR opt_global.h LOADERRAMADDR opt_global.h +NO_EVENTTIMERS opt_timer.h PHYSADDR opt_global.h SKYEYE_WORKAROUNDS opt_global.h SOC_MV_ARMADAXP opt_global.h