From owner-svn-soc-all@FreeBSD.ORG Sun May 31 02:27:42 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4AADD42C for ; Sun, 31 May 2015 02:27:42 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2BF6F1C22 for ; Sun, 31 May 2015 02:27:42 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4V2RgFT004206 for ; Sun, 31 May 2015 02:27:42 GMT (envelope-from pratiksinghal@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t4V2RfCA003975 for svn-soc-all@FreeBSD.org; Sun, 31 May 2015 02:27:41 GMT (envelope-from pratiksinghal@FreeBSD.org) Date: Sun, 31 May 2015 02:27:41 GMT Message-Id: <201505310227.t4V2RfCA003975@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to pratiksinghal@FreeBSD.org using -f From: pratiksinghal@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286434 - in soc2015/pratiksinghal/cubie-head/sys/arm: allwinner conf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 31 May 2015 02:27:42 -0000 Author: pratiksinghal Date: Sun May 31 02:27:40 2015 New Revision: 286434 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286434 Log: Removed the size > 0 panic message. Mapping still needs to be corrected though Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Sun May 31 01:02:05 2015 (r286433) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Sun May 31 02:27:40 2015 (r286434) @@ -55,6 +55,7 @@ #define A10_MMC_IRQRES 1 #define A10_MMC_RESSZ 2 + struct a10_mmc_softc { bus_space_handle_t a10_bsh; bus_space_tag_t a10_bst; @@ -71,6 +72,14 @@ uint32_t a10_intr; uint32_t a10_intr_wait; void * a10_intrhand; + bus_dma_tag_t a10_mmc_dmat ; + bus_dma_segment_t a10_mmc_dma_segments ; + bus_dmamap_t a10_mmc_dmamap ; + bus_size_t buf_size ; + bus_dma_segment_t a10_mmc_dmasegs[1] ; + void * a10_mmc_buff ; /* Pointer to the buffer */ + uint32_t a10_mmc_nseg ; /* No of segments */ + bus_addr_t a10_mmc_seg ; /* Address of the first descriptor */ }; static struct resource_spec a10_mmc_res_spec[] = { @@ -85,6 +94,8 @@ static int a10_mmc_reset(struct a10_mmc_softc *); static void a10_mmc_intr(void *); static int a10_mmc_update_clock(struct a10_mmc_softc *); +static int a10_mmc_init_dma(struct a10_mmc_softc *, struct mmc_command *) ; /* Not defined yet */ +static void a10_mmc_dma_callback(void *, bus_dma_segment_t *,int , int) ; static int a10_mmc_update_ios(device_t, device_t); static int a10_mmc_request(device_t, device_t, struct mmc_request *); @@ -135,8 +146,8 @@ sc->a10_bst = rman_get_bustag(sc->a10_res[A10_MMC_MEMRES]); sc->a10_bsh = rman_get_bushandle(sc->a10_res[A10_MMC_MEMRES]); if (bus_setup_intr(dev, sc->a10_res[A10_MMC_IRQRES], - INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, - &sc->a10_intrhand)) { + INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, + &sc->a10_intrhand)) { bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot setup interrupt handler\n"); return (ENXIO); @@ -145,7 +156,7 @@ /* Activate the module clock. */ if (a10_clk_mmc_activate(sc->a10_id) != 0) { bus_teardown_intr(dev, sc->a10_res[A10_MMC_IRQRES], - sc->a10_intrhand); + sc->a10_intrhand); bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot activate mmc clock\n"); return (ENXIO); @@ -155,9 +166,9 @@ ctx = device_get_sysctl_ctx(dev); tree = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, - &sc->a10_timeout, 0, "Request timeout in seconds"); + &sc->a10_timeout, 0, "Request timeout in seconds"); mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", - MTX_DEF); + MTX_DEF); callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* Reset controller. */ @@ -183,6 +194,30 @@ goto fail; } + /* Create the tag. */ + uint32_t err = bus_dma_tag_create(bus_get_dma_tag(dev), 4096, + 0,BUS_SPACE_MAXADDR,BUS_SPACE_MAXADDR, + NULL,NULL,sizeof(struct a10_mmc_dma_desc)*2, + 1,PAGE_SIZE,0, + NULL,NULL,&sc->a10_mmc_dmat) ; + + if(err) { + device_printf(dev, "Could not create dma tag.\n"); + goto fail ; + } + /* Allocate buffer */ + bus_dmamem_alloc(sc->a10_mmc_dmat, &sc->a10_mmc_buff,BUS_DMA_WAITOK|BUS_DMA_ZERO|BUS_DMA_COHERENT, &sc->a10_mmc_dmamap) ; + + err = bus_dmamap_load(sc->a10_mmc_dmat, sc->a10_mmc_dmamap, sc->a10_mmc_buff, sizeof(struct a10_mmc_dma_desc)*2, a10_mmc_dma_callback, + &sc->a10_mmc_seg, BUS_DMA_NOWAIT) ; + + if(err) + { + device_printf(sc->a10_dev, "Error while loading dma map! code = %d\n", err) ; + goto fail ; + } + + device_printf(sc->a10_dev, "dma_map loaded succesfully!\n") ; return (0); fail: @@ -207,7 +242,7 @@ int timeout; A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); timeout = 1000; while (--timeout > 0) { if ((A10_MMC_READ_4(sc, A10_MMC_GCTRL) & A10_MMC_RESET) == 0) @@ -224,13 +259,13 @@ A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); /* Unmask interrupts. */ A10_MMC_WRITE_4(sc, A10_MMC_IMASK, - A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | - A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); + A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | + A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); /* Enable interrupts and AHB access. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | - A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | + A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); return (0); } @@ -249,7 +284,7 @@ } /* Reset the FIFO. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); req = sc->a10_req; callout_stop(&sc->a10_timeoutc); @@ -307,7 +342,7 @@ a10_mmc_req_done(sc); } else device_printf(sc->a10_dev, - "Spurious timeout - no active request\n"); + "Spurious timeout - no active request\n"); } static int @@ -352,8 +387,8 @@ #endif if (sc->a10_req == NULL) { device_printf(sc->a10_dev, - "Spurious interrupt - no active request, rint: 0x%08X\n", - rint); + "Spurious interrupt - no active request, rint: 0x%08X\n", + rint); A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); A10_MMC_UNLOCK(sc); return; @@ -373,7 +408,7 @@ sc->a10_intr |= rint; data = sc->a10_req->cmd->data; if (data != NULL && (rint & (A10_MMC_DATA_OVER | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) a10_mmc_pio_transfer(sc, data); if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) a10_mmc_req_ok(sc); @@ -429,7 +464,7 @@ A10_MMC_WRITE_4(sc, A10_MMC_CARG, cmd->arg); A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg | cmd->opcode); callout_reset(&sc->a10_timeoutc, sc->a10_timeout * hz, - a10_mmc_timeout, sc); + a10_mmc_timeout, sc); A10_MMC_UNLOCK(sc); return (0); @@ -437,7 +472,7 @@ static int a10_mmc_read_ivar(device_t bus, device_t child, int which, - uintptr_t *result) + uintptr_t *result) { struct a10_mmc_softc *sc; @@ -491,7 +526,7 @@ static int a10_mmc_write_ivar(device_t bus, device_t child, int which, - uintptr_t value) + uintptr_t value) { struct a10_mmc_softc *sc; @@ -542,7 +577,7 @@ int retry; cmdreg = A10_MMC_START | A10_MMC_UPCLK_ONLY | - A10_MMC_WAIT_PREOVER; + A10_MMC_WAIT_PREOVER; A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg); retry = 0xfffff; while (--retry > 0) { @@ -558,6 +593,24 @@ return (ETIMEDOUT); } +/* This function will map the buffer into a device visible address space and will be called before the actual transfer of data takes place. +*/ + +static int +a10_mmc_init_dma(struct a10_mmc_softc* sc, struct mmc_command* cmd) +{ + return (0) ; +} + +static void +a10_mmc_dma_callback(void* arg, bus_dma_segment_t* segs, int nsegs, int error) +{ + if(error) { + printf("a10_mmc : Error in the callback function code = %d\n", error) ; + return ; + } + *(bus_addr_t*)arg = segs[0].ds_addr ; +} static int a10_mmc_update_ios(device_t bus, device_t child) { Modified: soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Sun May 31 01:02:05 2015 (r286433) +++ soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Sun May 31 02:27:40 2015 (r286434) @@ -50,7 +50,7 @@ #options BOOTP_WIRED_TO=cpsw0 # Boot device is 2nd slice on MMC/SD card -options ROOTDEVNAME=\"ufs:/dev/da0s2\" +options ROOTDEVNAME=\"ufs:/dev/da0\" # MMC/SD/SDIO Card slot support device mmc # mmc/sd bus @@ -101,7 +101,7 @@ device emac #DMA controller -device dma +#device dma # USB ethernet support, requires miibus device miibus @@ -111,3 +111,5 @@ options FDT_DTB_STATIC makeoptions FDT_DTS_FILE=cubieboard.dts makeoptions MODULES_EXTRA=dtb/allwinner + +options ARM_NEW_PMAP From owner-svn-soc-all@FreeBSD.ORG Sun May 31 21:27:29 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 35784A71 for ; Sun, 31 May 2015 21:27:29 +0000 (UTC) (envelope-from roam@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 227811A33 for ; Sun, 31 May 2015 21:27:29 +0000 (UTC) (envelope-from roam@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4VLRTdu035811 for ; Sun, 31 May 2015 21:27:29 GMT (envelope-from roam@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t4VLRR7M035786 for svn-soc-all@FreeBSD.org; Sun, 31 May 2015 21:27:27 GMT (envelope-from roam@FreeBSD.org) Date: Sun, 31 May 2015 21:27:27 GMT Message-Id: <201505312127.t4VLRR7M035786@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to roam@FreeBSD.org using -f From: roam@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286476 - soc2015/roam/ng_ayiya MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 31 May 2015 21:27:29 -0000 Author: roam Date: Sun May 31 21:27:26 2015 New Revision: 286476 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286476 Log: Start a Netgraph AYIYA module. Not doing much just yet, busy being created. ObQuote: "A beginning is a very delicate time." Added: soc2015/roam/ng_ayiya/ soc2015/roam/ng_ayiya/Makefile soc2015/roam/ng_ayiya/ng_ayiya.c soc2015/roam/ng_ayiya/ng_ayiya.h soc2015/roam/ng_ayiya/scaffold.pl (contents, props changed) Added: soc2015/roam/ng_ayiya/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/roam/ng_ayiya/Makefile Sun May 31 21:27:26 2015 (r286476) @@ -0,0 +1,45 @@ +#!/usr/bin/make +# +# Copyright (c) 2015 Peter Pentchev +# 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. + +KMOD= ng_ayiya +SRCS= ng_ayiya.c + +.include + +SUDO?= sudo +PERL?= perl +SCAFFOLD_PL?= scaffold.pl +SCAFFOLD_V?= -v +SCAFFOLD?= ${SUDO} ${PERL} ${SCAFFOLD_PL} ${SCAFFOLD_V} + +up: + ${SCAFFOLD} setup + +down: + ${SCAFFOLD} shutdown + +down-all: + ${SCAFFOLD} shutdown all Added: soc2015/roam/ng_ayiya/ng_ayiya.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/roam/ng_ayiya/ng_ayiya.c Sun May 31 21:27:26 2015 (r286476) @@ -0,0 +1,261 @@ +/** + * Copyright (c) 2015 Peter Pentchev + * 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. + * + * Netgraph AYIYA node. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "ng_ayiya.h" + +#ifdef NG_SEPARATE_MALLOC +static MALLOC_DEFINE(M_NETGRAPH_AYIYA, "netgraph_ayiya", "netgraph AYIYA node"); +#else +#define M_NETGRAPH_AYIYA M_NETGRAPH +#endif + +static ng_constructor_t ng_ayiya_constructor; +static ng_rcvmsg_t ng_ayiya_rcvmsg; +static ng_newhook_t ng_ayiya_newhook; +static ng_disconnect_t ng_ayiya_disconnect; +static ng_shutdown_t ng_ayiya_shutdown; + +static struct ng_type typestruct = { + .version = NG_ABI_VERSION, + .name = NG_AYIYA_NODE_TYPE, + + .constructor = ng_ayiya_constructor, + .rcvmsg = ng_ayiya_rcvmsg, + .newhook = ng_ayiya_newhook, + .disconnect = ng_ayiya_disconnect, + .shutdown = ng_ayiya_shutdown, +}; +NETGRAPH_INIT(ayiya, &typestruct); + +enum { + AYIYA_HOOK_CONTROL, + AYIYA_HOOK_INET6, + AYIYA_HOOK_AYIYA, + AYIYA_HOOK_LAST +}; + +#define NG_AYIYA_DECLARE_HOOK(i, n) { .idx = i, .name = n, .len = sizeof(n) - 1 } +static const struct { + int idx; + const char *name; + size_t len; +} hookdefs[AYIYA_HOOK_LAST] = { + NG_AYIYA_DECLARE_HOOK(AYIYA_HOOK_CONTROL, "control"), + NG_AYIYA_DECLARE_HOOK(AYIYA_HOOK_INET6, "inet6"), + NG_AYIYA_DECLARE_HOOK(AYIYA_HOOK_AYIYA, "ayiya"), +}; + +struct ng_ayiya_private { + node_p node; + char * secrethash; + hook_p hooks[AYIYA_HOOK_LAST]; +}; +typedef struct ng_ayiya_private *priv_p; + +static int +ng_ayiya_constructor(const node_p node) +{ + priv_p priv; + + priv = malloc(sizeof(*priv), M_NETGRAPH_AYIYA, M_WAITOK | M_ZERO); + NG_NODE_SET_PRIVATE(node, priv); + priv->node = node; + return (0); +} + +#define ERROUT(x) do { error = (x); goto done; } while (0) + +static void +build_status(struct sbuf * const sb, const node_p node, const bool json) +{ + priv_p priv = NG_NODE_PRIVATE(node); + if (json) + sbuf_printf(sb, + "{\n" + "\t\"id\":\t\"%x\",\n" + "\t\"name\":\t\"%s\",\n" + "\t\"has_secret\":\t%s,\n" + "\t\"hooks\": {\n", + node->nd_ID, node->nd_name, + priv->secrethash? "true": "false"); + else + sbuf_printf(sb, + "Node [%x] %s\n" + "Secret hash %sset\n", + node->nd_ID, node->nd_name, + priv->secrethash? "": "not "); + + for (int idx = 0; idx < AYIYA_HOOK_LAST; idx++) { + const char * const hname = hookdefs[idx].name; + const size_t hidx = hookdefs[idx].idx; + const hook_p hook = priv->hooks[hidx]; + + if (hook != NULL) { + const node_p peer = NG_PEER_NODE(hook); + if (json) + sbuf_printf(sb, + "\t\t\"%s\": {\n" + "\t\t\t\"hook_name\":\t\"%s\",\n" + "\t\t\t\"id\":\t\"%x\",\n" + "\t\t\t\"name\":\t\"%s\",\n" + "\t\t\t\"type\":\t\"%s\"\n" + "\t\t}%s\n", + hname, NG_HOOK_NAME(hook), + peer->nd_ID, peer->nd_name, + peer->nd_type->name, + idx < AYIYA_HOOK_LAST - 1? ",": ""); + else + sbuf_printf(sb, + "Hook '%s' (%s) connected to node " + "[%x] '%s' of type '%s'.\n", + NG_HOOK_NAME(hook), hname, + peer->nd_ID, peer->nd_name, + peer->nd_type->name); + } else { + if (json) + sbuf_printf(sb, "\t\t\"%s\":\tnull%s\n", + hname, + idx < AYIYA_HOOK_LAST - 1? ",": ""); + else + sbuf_printf(sb, + "Hook '%s' not connected yet.\n", + hname); + } + } + + if (json) + sbuf_printf(sb, "\t}\n}"); +} + +static int +ng_ayiya_rcvmsg(const node_p node, item_p item, const hook_p lasthook) +{ + struct ng_mesg *resp = NULL; + int error = 0; + struct ng_mesg *msg; + + NGI_GET_MSG(item, msg); + switch (msg->header.typecookie) { + case NGM_GENERIC_COOKIE: + switch (msg->header.cmd) { + case NGM_TEXT_CONFIG: + case NGM_TEXT_STATUS: + if (msg->header.arglen != 0) + ERROUT(EINVAL); + + struct sbuf *sb = sbuf_new_auto(); + build_status(sb, node, + msg->header.cmd == NGM_TEXT_CONFIG); + if (sbuf_finish(sb) != 0) { + sbuf_delete(sb); + ERROUT(ENOMEM); + } + const ssize_t len = sbuf_len(sb); + NG_MKRESPONSE(resp, msg, len + 1, M_WAITOK); + bcopy(sbuf_data(sb), resp->data, len); + resp->data[len] = '\0'; + sbuf_delete(sb); + break; + + default: + error = EINVAL; + break; + } + break; + + default: + error = EINVAL; + break; + } + +done: + NG_RESPOND_MSG(error, node, item, resp); + NG_FREE_MSG(msg); + return (error); +} + +static int +ng_ayiya_newhook(const node_p node, const hook_p hook, + const char * const name) +{ + int idx; + for (idx = 0; idx < AYIYA_HOOK_LAST; idx++) { + const char * const hname = hookdefs[idx].name; + const size_t hlen = hookdefs[idx].len; + + if (strncmp(name, hname, hlen) == 0 && + (name[hlen] == '\0' || name[hlen] == '/')) + { + idx = hookdefs[idx].idx; + break; + } + } + if (idx == AYIYA_HOOK_LAST) + return (EINVAL); + const priv_p priv = NG_NODE_PRIVATE(node); + if (priv->hooks[idx] != NULL) + return (EISCONN); + + /* TODO: some more checks here */ + + priv->hooks[idx] = hook; + return (0); +} + +static int +ng_ayiya_disconnect(const hook_p hook) +{ + priv_p priv = NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); + int idx; + for (idx = 0; idx < AYIYA_HOOK_LAST; idx++) + if (priv->hooks[idx] == hook) + break; + if (idx == AYIYA_HOOK_LAST) + panic("%s", __func__); + priv->hooks[idx] = NULL; + return (0); +} + +static int +ng_ayiya_shutdown(const node_p node) +{ + const priv_p priv = NG_NODE_PRIVATE(node); + + free(priv, M_NETGRAPH_AYIYA); + NG_NODE_SET_PRIVATE(node, NULL); + NG_NODE_UNREF(node); + return (0); +} Added: soc2015/roam/ng_ayiya/ng_ayiya.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/roam/ng_ayiya/ng_ayiya.h Sun May 31 21:27:26 2015 (r286476) @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2015 Peter Pentchev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _NETGRAPH_NG_AYIYA_H +#define _NETGRAPH_NG_AYIYA_H + +/* Node type name and magic cookie */ +#define NG_AYIYA_NODE_TYPE "ayiya" +#define NGM_AYIYA_COOKIE 1432823247 + +#endif Added: soc2015/roam/ng_ayiya/scaffold.pl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/roam/ng_ayiya/scaffold.pl Sun May 31 21:27:26 2015 (r286476) @@ -0,0 +1,358 @@ +#!/usr/bin/perl +# +# Copyright (c) 2015 Peter Pentchev +# 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. + +use v5.12; +use strict; +use warnings; + +use Getopt::Std; +use JSON::PP; +use POSIX qw/:sys_wait_h/; + +my $debug = 0; +my ($tempfile, $tempname); + +sub debug($); +sub usage($); +sub version(); + +sub get_ayiya; +sub ngctl_list(); +sub ngctl($ @); +sub run_command(@); +sub check_wait_result($ $ $); + +sub cmd_help($ @); +sub cmd_setup($ @); +sub cmd_shutdown($ @); +sub cmd_status($ @); +sub cmd_version($ @); + +my %cmds = ( + build => \&cmd_setup, + erect => \&cmd_setup, + help => \&cmd_help, + setup => \&cmd_setup, + shutdown => \&cmd_shutdown, + teardown => \&cmd_shutdown, + status => \&cmd_status, + version => \&cmd_version, +); + +MAIN: +{ + my %opts; + + getopts('hVv', \%opts) or usage(1); + version() if $opts{V}; + usage 0 if $opts{h}; + exit 0 if $opts{V} || $opts{h}; + $debug = $opts{v}; + + usage 1 unless @ARGV; + my $cmd = shift @ARGV; + my $handler = $cmds{$cmd}; + if (!defined $handler) { + say STDERR "Invalid command '$cmd'"; + usage 1; + } else { + $handler->($cmd, @ARGV); + } +} + +sub usage($) +{ + my ($err) = @_; + my $s = <{all}}; + if (!@all) { + say 'No AYIYA nodes configured'; + return; + } + say scalar(@all).' AYIYA node'.(@all == 1? '': 's').' found'. + (@all? ': '.(join ', ', map "[$_->{id}] $_->{name}", @all): ''); + my $node = $ay->{ours}; + if (!defined $node) { + say "Ours is not there"; + return; + } + say "Ours is there: [$node->{id}] $node->{name}"; + # TODO: config, status, hooks, interfaces +} + +sub cmd_shutdown($ @) +{ + my ($cmd, @args) = @_; + + my $all; + if (@args == 1 && $args[0] eq 'all') { + $all = 1; + } elsif (@args) { + say STDERR "Invalid arguments to 'shutdown'"; + usage 1; + } + + my $ay = get_ayiya; + if ($ay->{ours}) { + debug "Shutting down our node $ay->{ours}->{id}"; + ngctl 'shutdown', "[$ay->{ours}->{id}]:"; + } else { + say "Our node not found"; + } + if ($all) { + debug "Shutting down ".scalar(@{$ay->{others}}). + " other node(s)"; + for (@{$ay->{others}}) { + debug "- $_->{id}"; + ngctl 'shutdown', "[$_->{id}]:"; + } + } + + if ((run_command 'kldstat') =~ /ng_ayiya\.ko/) { + run_command 'make', 'unload'; + } else { + debug "The ng_ayiya.ko module is not even loaded"; + } +} + +sub cmd_setup($ @) +{ + my ($cmd, @args) = @_; + + if (@args) { + say STDERR "The 'status' command does not need any arguments"; + usage 1; + } + + if ((run_command 'kldstat') !~ /ng_ayiya\.ko/) { + debug "Trying to build the ng_ayiya.ko module"; + debug run_command 'make', 'depend'; + debug run_command 'make'; + debug "Trying to load the ng_ayiya.ko module"; + run_command 'make', 'load'; + } else { + debug "The ng_ayiya.ko module seems to be loaded already"; + } + + my $ay = get_ayiya; + if (!$ay->{ours}) { + my %found = map { ($_->{id}, 1) } @{$ay->{all}}; + + debug "Creating a new AYIYA node"; + ngctl 'mkpeer', 'ayiya', 'a', 'control/create'; + $ay = get_ayiya; + my @new = map $_->{id}, @{$ay->{all}}; + debug "Looking for an ID in (".join(' ', sort @new). + ") that's not in (".join(' ', sort keys %found).")"; + my $id; + for (@new) { + if (!defined $found{$_}) { + $id = $_; + last; + } + } + if (!defined $id) { + die "Internal error: no new AYIYA nodes\n"; + } + debug "- found $id"; + ngctl 'name', "[$id]:", 'sc_ayiya'; + $ay = get_ayiya; + if (!$ay->{ours} || $ay->{ours}->{id} ne $id) { + die "Internal error: get_ayiya() did not recognize ". + "node [$id] as ours\n"; + } + } else { + debug "Our node already there"; + } + + # TODO: interfaces, hooks... + debug "Setup complete, our node is ". + "[$ay->{ours}->{id}] $ay->{ours}->{name}"; +} + +sub get_ayiya() +{ + my $nodes = ngctl_list; + my $res = { + all => $nodes->{type}{ayiya}, + }; + my $node; + my @ay = @{$res->{all} // []}; + debug "Got ".scalar(@ay)." AYIYA node(s), looking for ours..."; + for(my $i = 0; $i < @ay; $i++) { + if ($ay[$i]->{name} eq 'sc_ayiya') { + debug "- found it at position $i"; + ($node) = splice @ay, $i, 1; + last; + } + } + $res->{ours} = $node; + $res->{others} = \@ay; + + if (defined $node) { + my $js = ngctl 'config', "$node->{name}:"; + $js =~ s/\A[^{]*//s; + debug "- got ".length($js)." characters of JSON"; + my $d = decode_json $js; + if (!defined($d) || ref $d ne 'HASH' || + grep !exists $d->{$_}, qw/id name has_secret hooks/) { + die "Node [$node->{id}] '$node->{name}' returned ". + "an invalid JSON configuration\n"; + } + debug "- got keys: ".join(' ', sort keys %{$d}); + } + return $res; +} + +sub ngctl_list() +{ + my $s = ngctl 'list'; + + my %nodes; + my @lines = split /\n+/, $s; + for (@lines) { + if (/^\s*Name:\s*(\S+)\s+Type:\s*(\S+)\s+ID:\s*0*(\S+)\s+Num hooks:\s*(\S+)\s*$/) { + my ($name, $type, $id, $hooks) = ($1, $2, $3, $4); + my $node = { + name => $name, + type => $type, + id => $id, + num_hooks => $hooks, + }; + $nodes{id}{$id} = $node; + push @{$nodes{type}{$type}}, $node; + if ($name ne '') { + $nodes{name}{$name} = $node; + } + } + } + return \%nodes; +} + +sub ngctl($ @) +{ + my ($cmd, @args) = @_; + + return run_command 'ngctl', $cmd, @args; +} + +sub run_command(@) +{ + my @cmd = @_; + debug "About to run @cmd"; + my $pid = open(my $pipe, '-|'); + if (!defined $pid) { + die "Could not fork for '@cmd': $!\n"; + } elsif ($pid == 0) { + exec { $cmd[0] } @cmd; + die "Could not run '@cmd': $!\n"; + } + + my $output; + { + local $/; + $output = <$pipe>; + } + my $res = close $pipe; + my $msg = $!; + my $status = $?; + check_wait_result $status, $pid, "@cmd"; + if (!$res) { + die "Some error occurred closing the pipe from '@cmd': $msg\n"; + } + return $output; +} From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 01:20:19 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9885995D for ; Mon, 1 Jun 2015 01:20:19 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 820411D3D for ; Mon, 1 Jun 2015 01:20:19 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t511KJTN029619 for ; Mon, 1 Jun 2015 01:20:19 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t511KAtS029402 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 01:20:10 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 01:20:10 GMT Message-Id: <201506010120.t511KAtS029402@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286497 - in soc2015/btw/head: . bin/cp bin/date bin/pax bin/ps cddl cddl/contrib/opensolaris cddl/contrib/opensolaris/cmd/lockstat cddl/contrib/opensolaris/common/ctf cddl/contrib/o... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 01:20:19 -0000 Author: btw Date: Mon Jun 1 01:20:07 2015 New Revision: 286497 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286497 Log: Merge projects/ifnet r285615 through r286400. Added: soc2015/btw/head/cddl/lib/libdtrace/siftr.d - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/cddl/lib/libdtrace/siftr.d soc2015/btw/head/contrib/bmake/unit-tests/cond2.exp - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/contrib/bmake/unit-tests/cond2.exp soc2015/btw/head/contrib/bmake/unit-tests/cond2.mk - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/contrib/bmake/unit-tests/cond2.mk soc2015/btw/head/contrib/llvm/patches/patch-08-llvm-r230348-arm-fix-bad-ha.diff - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/contrib/llvm/patches/patch-08-llvm-r230348-arm-fix-bad-ha.diff soc2015/btw/head/contrib/llvm/patches/patch-09-clang-r227115-constantarraytype.diff - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/contrib/llvm/patches/patch-09-clang-r227115-constantarraytype.diff soc2015/btw/head/lib/csu/i386/ - copied from r286400, mirror/FreeBSD/projects/ifnet/lib/csu/i386/ soc2015/btw/head/lib/libc/aarch64/gen/fabs.S - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/lib/libc/aarch64/gen/fabs.S soc2015/btw/head/release/Makefile.mirrors - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/release/Makefile.mirrors soc2015/btw/head/release/arm/RPI2.conf - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/release/arm/RPI2.conf soc2015/btw/head/release/arm/WANDBOARD.conf - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/release/arm/WANDBOARD.conf soc2015/btw/head/release/tools/arm.subr - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/release/tools/arm.subr soc2015/btw/head/sys/amd64/linux/ - copied from r286400, mirror/FreeBSD/projects/ifnet/sys/amd64/linux/ soc2015/btw/head/sys/amd64/linux32/linux32_vdso.lds.s - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/amd64/linux32/linux32_vdso.lds.s soc2015/btw/head/sys/arm/allwinner/a10_mmc.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/allwinner/a10_mmc.c soc2015/btw/head/sys/arm/allwinner/a10_mmc.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/allwinner/a10_mmc.h soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_usb_phy-m3.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/amlogic/aml8726/aml8726_usb_phy-m3.c soc2015/btw/head/sys/arm/annapurna/ - copied from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/annapurna/ soc2015/btw/head/sys/arm/broadcom/bcm2835/bcm2836_mp.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/broadcom/bcm2835/bcm2836_mp.c soc2015/btw/head/sys/arm/conf/ALPINE - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/conf/ALPINE soc2015/btw/head/sys/arm/conf/YYHD18 - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/conf/YYHD18 soc2015/btw/head/sys/arm/conf/std.arm - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/conf/std.arm soc2015/btw/head/sys/arm/conf/std.armv6 - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/conf/std.armv6 soc2015/btw/head/sys/arm/qemu/virt_mp.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/qemu/virt_mp.c soc2015/btw/head/sys/arm/ti/am335x/am335x_ecap.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/am335x/am335x_ecap.c soc2015/btw/head/sys/arm/ti/am335x/am335x_ehrpwm.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/am335x/am335x_ehrpwm.c soc2015/btw/head/sys/arm/ti/am335x/am335x_musb.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/am335x/am335x_musb.c soc2015/btw/head/sys/arm/ti/am335x/am335x_pwmss.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/am335x/am335x_pwmss.c soc2015/btw/head/sys/arm/ti/ti_hwmods.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/ti_hwmods.c soc2015/btw/head/sys/arm/ti/ti_hwmods.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/ti_hwmods.h soc2015/btw/head/sys/arm/ti/ti_pinmux.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/ti_pinmux.c soc2015/btw/head/sys/arm/ti/ti_pinmux.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/ti_pinmux.h soc2015/btw/head/sys/arm/ti/usb/omap_host.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/usb/omap_host.c soc2015/btw/head/sys/arm/ti/usb/omap_tll.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm/ti/usb/omap_tll.c soc2015/btw/head/sys/arm64/arm64/busdma_bounce.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/arm64/busdma_bounce.c soc2015/btw/head/sys/arm64/arm64/gic_v3.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/arm64/gic_v3.c soc2015/btw/head/sys/arm64/arm64/gic_v3_fdt.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/arm64/gic_v3_fdt.c soc2015/btw/head/sys/arm64/arm64/gic_v3_reg.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/arm64/gic_v3_reg.h soc2015/btw/head/sys/arm64/arm64/gic_v3_var.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/arm64/gic_v3_var.h soc2015/btw/head/sys/arm64/include/bus_dma_impl.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/arm64/include/bus_dma_impl.h soc2015/btw/head/sys/boot/common/self_reloc.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/common/self_reloc.c soc2015/btw/head/sys/boot/fdt/dts/arm/annapurna-alpine.dts - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/annapurna-alpine.dts soc2015/btw/head/sys/boot/fdt/dts/arm/beaglebone-common.dtsi - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/beaglebone-common.dtsi soc2015/btw/head/sys/boot/fdt/dts/arm/meson3.dtsi - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/meson3.dtsi soc2015/btw/head/sys/boot/fdt/dts/arm/pandaboard-common.dtsi - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/pandaboard-common.dtsi soc2015/btw/head/sys/boot/fdt/dts/arm/pandaboard-es.dts - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/pandaboard-es.dts soc2015/btw/head/sys/boot/fdt/dts/arm/yyhd18-m3.dts - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/boot/fdt/dts/arm/yyhd18-m3.dts soc2015/btw/head/sys/compat/linux/linux.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux.c soc2015/btw/head/sys/compat/linux/linux.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux.h soc2015/btw/head/sys/compat/linux/linux_common.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux_common.c soc2015/btw/head/sys/compat/linux/linux_event.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux_event.c soc2015/btw/head/sys/compat/linux/linux_event.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux_event.h soc2015/btw/head/sys/compat/linux/linux_vdso.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux_vdso.c soc2015/btw/head/sys/compat/linux/linux_vdso.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/compat/linux/linux_vdso.h soc2015/btw/head/sys/contrib/dev/acpica/common/ahtable.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/contrib/dev/acpica/common/ahtable.c soc2015/btw/head/sys/contrib/dev/acpica/include/acuuid.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/contrib/dev/acpica/include/acuuid.h soc2015/btw/head/sys/dev/hwpmc/hwpmc_arm64.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/hwpmc/hwpmc_arm64.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_arm64.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/hwpmc/hwpmc_arm64.h soc2015/btw/head/sys/dev/hwpmc/hwpmc_arm64_md.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/hwpmc/hwpmc_arm64_md.c soc2015/btw/head/sys/dev/sfxge/common/ef10_tlv_layout.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/ef10_tlv_layout.h soc2015/btw/head/sys/dev/sfxge/common/efx_check.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/efx_check.h soc2015/btw/head/sys/dev/sfxge/common/efx_crc32.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/efx_crc32.c soc2015/btw/head/sys/dev/sfxge/common/efx_hash.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/efx_hash.c soc2015/btw/head/sys/dev/sfxge/common/efx_phy_ids.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/efx_phy_ids.h soc2015/btw/head/sys/dev/sfxge/common/hunt_ev.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_ev.c soc2015/btw/head/sys/dev/sfxge/common/hunt_filter.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_filter.c soc2015/btw/head/sys/dev/sfxge/common/hunt_impl.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_impl.h soc2015/btw/head/sys/dev/sfxge/common/hunt_intr.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_intr.c soc2015/btw/head/sys/dev/sfxge/common/hunt_mac.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_mac.c soc2015/btw/head/sys/dev/sfxge/common/hunt_mcdi.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_mcdi.c soc2015/btw/head/sys/dev/sfxge/common/hunt_nic.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_nic.c soc2015/btw/head/sys/dev/sfxge/common/hunt_nvram.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_nvram.c soc2015/btw/head/sys/dev/sfxge/common/hunt_phy.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_phy.c soc2015/btw/head/sys/dev/sfxge/common/hunt_rx.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_rx.c soc2015/btw/head/sys/dev/sfxge/common/hunt_sram.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_sram.c soc2015/btw/head/sys/dev/sfxge/common/hunt_tx.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_tx.c soc2015/btw/head/sys/dev/sfxge/common/hunt_vpd.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/hunt_vpd.c soc2015/btw/head/sys/dev/sfxge/common/mcdi_mon.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/mcdi_mon.c soc2015/btw/head/sys/dev/sfxge/common/mcdi_mon.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/mcdi_mon.h soc2015/btw/head/sys/dev/sfxge/common/siena_mcdi.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/common/siena_mcdi.c soc2015/btw/head/sys/dev/sfxge/sfxge_ioc.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/sfxge_ioc.h soc2015/btw/head/sys/dev/sfxge/sfxge_nvram.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/dev/sfxge/sfxge_nvram.c soc2015/btw/head/sys/i386/linux/linux_vdso.lds.s - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/i386/linux/linux_vdso.lds.s soc2015/btw/head/sys/mips/atheros/qca955x_pci.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/mips/atheros/qca955x_pci.c soc2015/btw/head/sys/modules/linux64/ - copied from r286400, mirror/FreeBSD/projects/ifnet/sys/modules/linux64/ soc2015/btw/head/sys/modules/linux_common/ - copied from r286400, mirror/FreeBSD/projects/ifnet/sys/modules/linux_common/ soc2015/btw/head/sys/powerpc/mpc85xx/pci_mpc85xx_pcib.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/sys/powerpc/mpc85xx/pci_mpc85xx_pcib.c soc2015/btw/head/sys/xen/xenmem/ - copied from r286400, mirror/FreeBSD/projects/ifnet/sys/xen/xenmem/ soc2015/btw/head/tests/etc/ - copied from r286400, mirror/FreeBSD/projects/ifnet/tests/etc/ soc2015/btw/head/tests/sys/kern/ptrace_test.c - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/tests/sys/kern/ptrace_test.c soc2015/btw/head/tools/build/stdlib.h - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/tools/build/stdlib.h soc2015/btw/head/usr.bin/kdump/linux32_syscalls.conf - copied unchanged from r286400, mirror/FreeBSD/projects/ifnet/usr.bin/kdump/linux32_syscalls.conf Deleted: soc2015/btw/head/contrib/llvm/patches/patch-08-llvm-r227089-fix-mips-i128.diff soc2015/btw/head/contrib/llvm/patches/patch-09-llvm-r230058-indirectbrs-assert.diff soc2015/btw/head/contrib/llvm/patches/patch-10-llvm-r230348-arm-fix-bad-ha.diff soc2015/btw/head/contrib/llvm/patches/patch-11-llvm-r231227-aarch64-tls-relocs.diff soc2015/btw/head/contrib/llvm/patches/patch-12-clang-r227115-constantarraytype.diff soc2015/btw/head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff soc2015/btw/head/etc/rc.d/tests/ soc2015/btw/head/etc/tests/Makefile soc2015/btw/head/gnu/usr.bin/groff/src/preproc/soelim/ soc2015/btw/head/kerberos5/lib/libheimsqlite/ soc2015/btw/head/lib/csu/i386-elf/ soc2015/btw/head/lib/libmandoc/ soc2015/btw/head/release/arm/WANDBOARD-QUAD.conf soc2015/btw/head/release/arm/ZEDBOARD.conf soc2015/btw/head/release/arm/release.sh soc2015/btw/head/release/tools/arm/ soc2015/btw/head/sys/arm/conf/WANDBOARD-DUAL soc2015/btw/head/sys/arm/conf/WANDBOARD-QUAD soc2015/btw/head/sys/arm/conf/WANDBOARD-SOLO soc2015/btw/head/sys/arm/ti/am335x/am335x_pwm.c soc2015/btw/head/sys/arm/ti/omap4/omap4var.h soc2015/btw/head/sys/boot/efi/loader/reloc.c soc2015/btw/head/sys/boot/fdt/dts/arm/am335x.dtsi soc2015/btw/head/sys/dev/sfxge/common/siena_mon.c soc2015/btw/head/sys/net/if_tapvar.h soc2015/btw/head/tools/regression/file/ soc2015/btw/head/usr.bin/demandoc/ Modified: soc2015/btw/head/ (props changed) soc2015/btw/head/Makefile.inc1 soc2015/btw/head/ObsoleteFiles.inc soc2015/btw/head/UPDATING soc2015/btw/head/bin/cp/cp.c soc2015/btw/head/bin/date/date.1 soc2015/btw/head/bin/date/date.c soc2015/btw/head/bin/pax/ar_subs.c soc2015/btw/head/bin/pax/buf_subs.c soc2015/btw/head/bin/pax/cache.c soc2015/btw/head/bin/pax/cpio.c soc2015/btw/head/bin/pax/file_subs.c soc2015/btw/head/bin/pax/gen_subs.c soc2015/btw/head/bin/pax/getoldopt.c soc2015/btw/head/bin/pax/pat_rep.c soc2015/btw/head/bin/pax/pax.c soc2015/btw/head/bin/pax/sel_subs.c soc2015/btw/head/bin/pax/tar.c soc2015/btw/head/bin/pax/tty_subs.c soc2015/btw/head/bin/ps/Makefile soc2015/btw/head/bin/ps/keyword.c soc2015/btw/head/bin/ps/print.c soc2015/btw/head/bin/ps/ps.1 soc2015/btw/head/bin/ps/ps.c soc2015/btw/head/bin/ps/ps.h soc2015/btw/head/cddl/ (props changed) soc2015/btw/head/cddl/contrib/opensolaris/ (props changed) soc2015/btw/head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1 soc2015/btw/head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c soc2015/btw/head/cddl/contrib/opensolaris/common/ctf/ctf_create.c soc2015/btw/head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_lex.l soc2015/btw/head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c soc2015/btw/head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c soc2015/btw/head/cddl/lib/Makefile soc2015/btw/head/cddl/lib/libdtrace/Makefile soc2015/btw/head/cddl/lib/libdtrace/tcp.d soc2015/btw/head/cddl/sbin/Makefile soc2015/btw/head/cddl/usr.bin/Makefile soc2015/btw/head/cddl/usr.bin/ctfconvert/Makefile soc2015/btw/head/cddl/usr.bin/ctfdump/Makefile soc2015/btw/head/cddl/usr.sbin/Makefile soc2015/btw/head/cddl/usr.sbin/dtrace/Makefile soc2015/btw/head/cddl/usr.sbin/dtrace/tests/tools/exclude.sh soc2015/btw/head/cddl/usr.sbin/lockstat/Makefile soc2015/btw/head/cddl/usr.sbin/plockstat/Makefile soc2015/btw/head/contrib/atf/ (props changed) soc2015/btw/head/contrib/atf/atf-sh/atf_check_test.sh soc2015/btw/head/contrib/atf/atf-sh/misc_helpers.sh soc2015/btw/head/contrib/binutils/ (props changed) soc2015/btw/head/contrib/binutils/bfd/elf32-arm.c soc2015/btw/head/contrib/bmake/ (props changed) soc2015/btw/head/contrib/bmake/ChangeLog soc2015/btw/head/contrib/bmake/FILES soc2015/btw/head/contrib/bmake/Makefile soc2015/btw/head/contrib/bmake/cond.c soc2015/btw/head/contrib/bmake/machine.sh soc2015/btw/head/contrib/bmake/mk/ChangeLog soc2015/btw/head/contrib/bmake/mk/dirdeps.mk soc2015/btw/head/contrib/bmake/mk/install-mk soc2015/btw/head/contrib/bmake/nonints.h soc2015/btw/head/contrib/bmake/unit-tests/Makefile.in soc2015/btw/head/contrib/bmake/var.c soc2015/btw/head/contrib/elftoolchain/ (props changed) soc2015/btw/head/contrib/elftoolchain/addr2line/addr2line.1 soc2015/btw/head/contrib/elftoolchain/addr2line/addr2line.c soc2015/btw/head/contrib/elftoolchain/common/native-elf-format soc2015/btw/head/contrib/elftoolchain/cxxfilt/c++filt.1 soc2015/btw/head/contrib/elftoolchain/elfcopy/elfcopy.1 soc2015/btw/head/contrib/elftoolchain/elfcopy/sections.c soc2015/btw/head/contrib/elftoolchain/elfcopy/segments.c soc2015/btw/head/contrib/elftoolchain/elfcopy/symbols.c soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_add_line_entry.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_def_macro.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_expand_frame_instructions.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_formblock.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_formflag.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_formref.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_formsig8.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_formudata.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_get_fde_info_for_all_regs.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_get_fde_info_for_reg.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_get_ranges.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_hasattr.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_next_cu_header.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_producer_init.3 soc2015/btw/head/contrib/elftoolchain/libdwarf/dwarf_whatattr.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf_begin.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf_cntl.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf_getdata.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf_open.3 soc2015/btw/head/contrib/elftoolchain/libelf/elf_update.c soc2015/btw/head/contrib/elftoolchain/libelf/gelf.3 soc2015/btw/head/contrib/elftoolchain/libelftc/elftc_demangle.3 soc2015/btw/head/contrib/elftoolchain/libelftc/elftc_symbol_table_create.3 soc2015/btw/head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c soc2015/btw/head/contrib/elftoolchain/nm/nm.1 soc2015/btw/head/contrib/elftoolchain/readelf/readelf.1 soc2015/btw/head/contrib/elftoolchain/readelf/readelf.c soc2015/btw/head/contrib/elftoolchain/size/size.1 soc2015/btw/head/contrib/elftoolchain/size/size.c soc2015/btw/head/contrib/elftoolchain/strings/strings.1 soc2015/btw/head/contrib/gcc/ (props changed) soc2015/btw/head/contrib/gcc/dwarf2.h soc2015/btw/head/contrib/gdb/ (props changed) soc2015/btw/head/contrib/gdb/gdb/c-valprint.c soc2015/btw/head/contrib/gdb/gdb/dwarf2expr.c soc2015/btw/head/contrib/gdb/gdb/dwarf2expr.h soc2015/btw/head/contrib/gdb/gdb/dwarf2loc.c soc2015/btw/head/contrib/gdb/gdb/dwarf2read.c soc2015/btw/head/contrib/gdb/gdb/value.h soc2015/btw/head/contrib/gdb/gdb/values.c soc2015/btw/head/contrib/ipfilter/ (props changed) soc2015/btw/head/contrib/ipfilter/tools/ipf.c soc2015/btw/head/contrib/libarchive/ (props changed) soc2015/btw/head/contrib/libarchive/libarchive/ (props changed) soc2015/btw/head/contrib/libarchive/libarchive/archive_read.c soc2015/btw/head/contrib/libarchive/libarchive/archive_read_support_format_cpio.c soc2015/btw/head/contrib/llvm/ (props changed) soc2015/btw/head/contrib/llvm/include/llvm/Target/TargetCallingConv.h soc2015/btw/head/contrib/llvm/include/llvm/Target/TargetLowering.h soc2015/btw/head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp soc2015/btw/head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp soc2015/btw/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp soc2015/btw/head/contrib/llvm/lib/IR/ConstantFold.cpp soc2015/btw/head/contrib/llvm/lib/IR/GCOV.cpp soc2015/btw/head/contrib/llvm/lib/Support/Unix/Memory.inc soc2015/btw/head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc soc2015/btw/head/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/Mips.td soc2015/btw/head/contrib/llvm/lib/Target/Mips/Mips16InstrInfo.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp soc2015/btw/head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPU.td soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUAlwaysInlinePass.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUAsmPrinter.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUInstrInfo.h soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUInstrInfo.td soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUInstructions.td soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUIntrinsics.td soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUSubtarget.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/AMDGPUSubtarget.h soc2015/btw/head/contrib/llvm/lib/Target/R600/CaymanInstructions.td soc2015/btw/head/contrib/llvm/lib/Target/R600/EvergreenInstructions.td soc2015/btw/head/contrib/llvm/lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/Processors.td soc2015/btw/head/contrib/llvm/lib/Target/R600/R600ISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/R600Instructions.td soc2015/btw/head/contrib/llvm/lib/Target/R600/SIAnnotateControlFlow.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIDefines.h soc2015/btw/head/contrib/llvm/lib/Target/R600/SIFoldOperands.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInsertWaits.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInstrFormats.td soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInstrInfo.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInstrInfo.h soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInstrInfo.td soc2015/btw/head/contrib/llvm/lib/Target/R600/SIInstructions.td soc2015/btw/head/contrib/llvm/lib/Target/R600/SILowerControlFlow.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIRegisterInfo.cpp soc2015/btw/head/contrib/llvm/lib/Target/R600/SIRegisterInfo.h soc2015/btw/head/contrib/llvm/lib/Target/R600/SIRegisterInfo.td soc2015/btw/head/contrib/llvm/lib/Target/R600/VIInstrFormats.td soc2015/btw/head/contrib/llvm/lib/Target/R600/VIInstructions.td soc2015/btw/head/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/X86/X86FrameLowering.h soc2015/btw/head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp soc2015/btw/head/contrib/llvm/lib/Target/X86/X86InstrControl.td soc2015/btw/head/contrib/llvm/lib/Target/X86/X86IntrinsicsInfo.h soc2015/btw/head/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp soc2015/btw/head/contrib/llvm/lib/Transforms/Scalar/GVN.cpp soc2015/btw/head/contrib/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp soc2015/btw/head/contrib/llvm/patches/README.TXT soc2015/btw/head/contrib/llvm/patches/patch-01-freebsd-kprintf.diff soc2015/btw/head/contrib/llvm/patches/patch-07-llvm-r227752-boot2-shrink.diff soc2015/btw/head/contrib/llvm/tools/clang/ (props changed) soc2015/btw/head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td soc2015/btw/head/contrib/llvm/tools/clang/include/clang/Basic/TargetCXXABI.h soc2015/btw/head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h soc2015/btw/head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h soc2015/btw/head/contrib/llvm/tools/clang/include/clang/Sema/Template.h soc2015/btw/head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/AST/Decl.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Analysis/ThreadSafety.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Basic/Version.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp soc2015/btw/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp soc2015/btw/head/contrib/netbsd-tests/lib/libc/string/t_memmem.c soc2015/btw/head/contrib/netcat/ (props changed) soc2015/btw/head/contrib/netcat/netcat.c soc2015/btw/head/contrib/tzdata/ (props changed) soc2015/btw/head/contrib/tzdata/africa soc2015/btw/head/contrib/tzdata/antarctica soc2015/btw/head/contrib/tzdata/backward soc2015/btw/head/contrib/tzdata/europe soc2015/btw/head/contrib/tzdata/northamerica soc2015/btw/head/contrib/tzdata/southamerica soc2015/btw/head/crypto/openssh/ (props changed) soc2015/btw/head/crypto/openssh/moduli soc2015/btw/head/etc/ (props changed) soc2015/btw/head/etc/Makefile soc2015/btw/head/etc/etc.arm/ttys soc2015/btw/head/etc/mtree/BSD.debug.dist soc2015/btw/head/etc/mtree/BSD.usr.dist soc2015/btw/head/etc/rc.d/Makefile soc2015/btw/head/etc/rc.d/local_unbound soc2015/btw/head/gnu/lib/ (props changed) soc2015/btw/head/gnu/lib/Makefile soc2015/btw/head/include/ (props changed) soc2015/btw/head/include/stdlib.h soc2015/btw/head/include/stringlist.h soc2015/btw/head/kerberos5/lib/Makefile soc2015/btw/head/kerberos5/lib/libhdb/Makefile soc2015/btw/head/lib/Makefile soc2015/btw/head/lib/clang/include/Makefile soc2015/btw/head/lib/clang/include/clang/Basic/Version.inc soc2015/btw/head/lib/clang/include/clang/Config/config.h soc2015/btw/head/lib/clang/include/llvm/Config/config.h soc2015/btw/head/lib/clang/include/llvm/Config/llvm-config.h soc2015/btw/head/lib/csu/Makefile soc2015/btw/head/lib/libc/ (props changed) soc2015/btw/head/lib/libc/aarch64/Symbol.map soc2015/btw/head/lib/libc/aarch64/gen/Makefile.inc soc2015/btw/head/lib/libc/arm/SYS.h soc2015/btw/head/lib/libc/arm/aeabi/aeabi_vfp_double.S soc2015/btw/head/lib/libc/arm/aeabi/aeabi_vfp_float.S soc2015/btw/head/lib/libc/arm/gen/_setjmp.S soc2015/btw/head/lib/libc/arm/gen/setjmp.S soc2015/btw/head/lib/libc/arm/sys/brk.S soc2015/btw/head/lib/libc/arm/sys/sbrk.S soc2015/btw/head/lib/libc/db/hash/hash.c soc2015/btw/head/lib/libc/gen/directory.3 soc2015/btw/head/lib/libc/gen/dlfcn.c soc2015/btw/head/lib/libc/gen/readdir.c soc2015/btw/head/lib/libc/gen/rewinddir.c soc2015/btw/head/lib/libc/gen/stringlist.c soc2015/btw/head/lib/libc/gen/telldir.c soc2015/btw/head/lib/libc/gen/telldir.h soc2015/btw/head/lib/libc/net/recv.c soc2015/btw/head/lib/libc/net/send.c soc2015/btw/head/lib/libc/stdlib/reallocarray.3 soc2015/btw/head/lib/libc/string/memmem.3 soc2015/btw/head/lib/libc/string/memmem.c soc2015/btw/head/lib/libclang_rt/Makefile.inc soc2015/btw/head/lib/libedit/chartype.c soc2015/btw/head/lib/libedit/chartype.h soc2015/btw/head/lib/libedit/edit/readline/readline.h soc2015/btw/head/lib/libedit/el.c soc2015/btw/head/lib/libedit/eln.c soc2015/btw/head/lib/libedit/map.c soc2015/btw/head/lib/libedit/readline.c soc2015/btw/head/lib/libedit/tty.c soc2015/btw/head/lib/libelftc/elftc_version.c soc2015/btw/head/lib/libiconv_modules/UTF7/citrus_utf7.c soc2015/btw/head/lib/libmd/Makefile soc2015/btw/head/lib/libmd/md4.h soc2015/btw/head/lib/libmd/md4c.c soc2015/btw/head/lib/libmd/md5.h soc2015/btw/head/lib/libmd/md5c.c soc2015/btw/head/lib/libmd/mdXhl.c soc2015/btw/head/lib/libmd/ripemd.h soc2015/btw/head/lib/libmd/rmd160c.c soc2015/btw/head/lib/libmd/sha.h soc2015/btw/head/lib/libmd/sha1c.c soc2015/btw/head/lib/libmd/sha256.h soc2015/btw/head/lib/libmd/sha256c.c soc2015/btw/head/lib/libmd/sha512.h soc2015/btw/head/lib/libmd/sha512c.c soc2015/btw/head/lib/libmd/shadriver.c soc2015/btw/head/lib/libpmc/libpmc.c soc2015/btw/head/lib/libproc/Makefile soc2015/btw/head/lib/libprocstat/Makefile soc2015/btw/head/lib/libprocstat/libprocstat.3 soc2015/btw/head/lib/libthr/thread/thr_spec.c soc2015/btw/head/lib/libufs/Makefile soc2015/btw/head/lib/libvmmapi/ (props changed) soc2015/btw/head/lib/libvmmapi/vmmapi.c soc2015/btw/head/lib/libvmmapi/vmmapi.h soc2015/btw/head/lib/msun/src/e_j0.c soc2015/btw/head/lib/msun/src/e_j0f.c soc2015/btw/head/lib/msun/src/e_j1.c soc2015/btw/head/lib/msun/src/e_j1f.c soc2015/btw/head/libexec/rtld-elf/debug.h soc2015/btw/head/libexec/rtld-elf/rtld.c soc2015/btw/head/release/Makefile.ec2 soc2015/btw/head/release/arm/BEAGLEBONE.conf soc2015/btw/head/release/arm/PANDABOARD.conf soc2015/btw/head/release/arm/RPI-B.conf soc2015/btw/head/release/doc/en_US.ISO8859-1/relnotes/article.xml soc2015/btw/head/release/doc/share/xml/sponsor.ent soc2015/btw/head/release/i386/make-memstick.sh soc2015/btw/head/release/release.sh soc2015/btw/head/release/tools/vmimage.subr soc2015/btw/head/sbin/ (props changed) soc2015/btw/head/sbin/devd/devd.conf.5 soc2015/btw/head/sbin/dumpfs/dumpfs.c soc2015/btw/head/sbin/geom/class/mountver/geom_mountver.c soc2015/btw/head/sbin/geom/class/mountver/gmountver.8 soc2015/btw/head/sbin/ifconfig/af_inet.c soc2015/btw/head/sbin/ifconfig/af_inet6.c soc2015/btw/head/sbin/ifconfig/ifconfig.8 soc2015/btw/head/sbin/ifconfig/iffib.c soc2015/btw/head/sbin/ifconfig/ifgif.c soc2015/btw/head/sbin/ifconfig/sfp.c soc2015/btw/head/sbin/ipfw/ (props changed) soc2015/btw/head/sbin/ipfw/tables.c soc2015/btw/head/share/ (props changed) soc2015/btw/head/share/man/man3/pthread_getspecific.3 soc2015/btw/head/share/man/man4/ (props changed) soc2015/btw/head/share/man/man4/acpi.4 soc2015/btw/head/share/man/man4/ctl.4 soc2015/btw/head/share/man/man4/iic.4 soc2015/btw/head/share/man/man4/sfxge.4 (contents, props changed) soc2015/btw/head/share/man/man4/usb_quirk.4 soc2015/btw/head/share/man/man9/Makefile soc2015/btw/head/share/man/man9/namei.9 soc2015/btw/head/share/man/man9/psignal.9 soc2015/btw/head/share/man/man9/sleep.9 soc2015/btw/head/share/misc/bsd-family-tree soc2015/btw/head/share/mk/src.libnames.mk soc2015/btw/head/share/syscons/keymaps/INDEX.keymaps soc2015/btw/head/share/vt/keymaps/INDEX.keymaps soc2015/btw/head/sys/ (props changed) soc2015/btw/head/sys/amd64/acpica/acpi_machdep.c soc2015/btw/head/sys/amd64/amd64/apic_vector.S soc2015/btw/head/sys/amd64/amd64/cpu_switch.S soc2015/btw/head/sys/amd64/amd64/db_disasm.c soc2015/btw/head/sys/amd64/amd64/elf_machdep.c soc2015/btw/head/sys/amd64/amd64/genassym.c soc2015/btw/head/sys/amd64/amd64/machdep.c soc2015/btw/head/sys/amd64/amd64/mp_machdep.c soc2015/btw/head/sys/amd64/amd64/mp_watchdog.c soc2015/btw/head/sys/amd64/amd64/pmap.c soc2015/btw/head/sys/amd64/amd64/vm_machdep.c soc2015/btw/head/sys/amd64/conf/GENERIC soc2015/btw/head/sys/amd64/ia32/ia32_signal.c soc2015/btw/head/sys/amd64/include/cpufunc.h soc2015/btw/head/sys/amd64/include/md_var.h soc2015/btw/head/sys/amd64/include/pcpu.h soc2015/btw/head/sys/amd64/include/pmap.h soc2015/btw/head/sys/amd64/include/smp.h soc2015/btw/head/sys/amd64/include/vmm.h (contents, props changed) soc2015/btw/head/sys/amd64/include/vmm_instruction_emul.h (contents, props changed) soc2015/btw/head/sys/amd64/linux32/linux.h soc2015/btw/head/sys/amd64/linux32/linux32_dummy.c soc2015/btw/head/sys/amd64/linux32/linux32_genassym.c soc2015/btw/head/sys/amd64/linux32/linux32_locore.s soc2015/btw/head/sys/amd64/linux32/linux32_machdep.c soc2015/btw/head/sys/amd64/linux32/linux32_proto.h soc2015/btw/head/sys/amd64/linux32/linux32_syscall.h soc2015/btw/head/sys/amd64/linux32/linux32_syscalls.c soc2015/btw/head/sys/amd64/linux32/linux32_sysent.c soc2015/btw/head/sys/amd64/linux32/linux32_systrace_args.c soc2015/btw/head/sys/amd64/linux32/linux32_sysvec.c soc2015/btw/head/sys/amd64/linux32/syscalls.master soc2015/btw/head/sys/amd64/vmm/ (props changed) soc2015/btw/head/sys/amd64/vmm/amd/svm.c soc2015/btw/head/sys/amd64/vmm/intel/vmx.c soc2015/btw/head/sys/amd64/vmm/io/vatpit.c soc2015/btw/head/sys/amd64/vmm/vmm.c soc2015/btw/head/sys/amd64/vmm/vmm_dev.c soc2015/btw/head/sys/amd64/vmm/vmm_instruction_emul.c soc2015/btw/head/sys/amd64/vmm/x86.c soc2015/btw/head/sys/amd64/vmm/x86.h soc2015/btw/head/sys/arm/allwinner/a10_clk.c soc2015/btw/head/sys/arm/allwinner/a10_clk.h soc2015/btw/head/sys/arm/allwinner/a20/files.a20 soc2015/btw/head/sys/arm/allwinner/files.allwinner soc2015/btw/head/sys/arm/allwinner/std.a10 soc2015/btw/head/sys/arm/altera/socfpga/files.socfpga soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_ccm.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_machdep.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_pic.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_pinctrl.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_rng.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_rtc.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_uart.h soc2015/btw/head/sys/arm/amlogic/aml8726/aml8726_usb_phy-m6.c soc2015/btw/head/sys/arm/amlogic/aml8726/files.aml8726 soc2015/btw/head/sys/arm/amlogic/aml8726/uart_dev_aml8726.c soc2015/btw/head/sys/arm/arm/autoconf.c soc2015/btw/head/sys/arm/arm/bcopyinout.S soc2015/btw/head/sys/arm/arm/bcopyinout_xscale.S soc2015/btw/head/sys/arm/arm/blockio.S soc2015/btw/head/sys/arm/arm/bus_space_base.c soc2015/btw/head/sys/arm/arm/busdma_machdep-v6.c soc2015/btw/head/sys/arm/arm/busdma_machdep.c soc2015/btw/head/sys/arm/arm/copystr.S soc2015/btw/head/sys/arm/arm/cpu_asm-v6.S soc2015/btw/head/sys/arm/arm/cpufunc.c soc2015/btw/head/sys/arm/arm/cpufunc_asm_arm11x6.S soc2015/btw/head/sys/arm/arm/cpufunc_asm_arm9.S soc2015/btw/head/sys/arm/arm/cpufunc_asm_armv6.S soc2015/btw/head/sys/arm/arm/cpufunc_asm_armv7.S soc2015/btw/head/sys/arm/arm/cpufunc_asm_xscale_c3.S soc2015/btw/head/sys/arm/arm/cpuinfo.c soc2015/btw/head/sys/arm/arm/db_disasm.c soc2015/btw/head/sys/arm/arm/db_interface.c soc2015/btw/head/sys/arm/arm/elf_machdep.c soc2015/btw/head/sys/arm/arm/elf_trampoline.c soc2015/btw/head/sys/arm/arm/exception.S soc2015/btw/head/sys/arm/arm/fiq.c soc2015/btw/head/sys/arm/arm/fusu.S soc2015/btw/head/sys/arm/arm/generic_timer.c soc2015/btw/head/sys/arm/arm/gic.c soc2015/btw/head/sys/arm/arm/intr.c soc2015/btw/head/sys/arm/arm/machdep.c soc2015/btw/head/sys/arm/arm/mp_machdep.c soc2015/btw/head/sys/arm/arm/mpcore_timer.c soc2015/btw/head/sys/arm/arm/nexus.c soc2015/btw/head/sys/arm/arm/physmem.c soc2015/btw/head/sys/arm/arm/pl190.c soc2015/btw/head/sys/arm/arm/pl310.c soc2015/btw/head/sys/arm/arm/pmap-v6-new.c soc2015/btw/head/sys/arm/arm/pmap-v6.c soc2015/btw/head/sys/arm/arm/pmap.c soc2015/btw/head/sys/arm/arm/pmu.c soc2015/btw/head/sys/arm/arm/stdatomic.c soc2015/btw/head/sys/arm/arm/support.S soc2015/btw/head/sys/arm/arm/swtch.S soc2015/btw/head/sys/arm/arm/syscall.c soc2015/btw/head/sys/arm/arm/trap.c soc2015/btw/head/sys/arm/arm/undefined.c soc2015/btw/head/sys/arm/arm/vfp.c soc2015/btw/head/sys/arm/arm/vm_machdep.c soc2015/btw/head/sys/arm/at91/at91_pio.c soc2015/btw/head/sys/arm/broadcom/bcm2835/bcm2835_cpufreq.c soc2015/btw/head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c soc2015/btw/head/sys/arm/broadcom/bcm2835/bcm2836.c soc2015/btw/head/sys/arm/broadcom/bcm2835/files.bcm2836 soc2015/btw/head/sys/arm/broadcom/bcm2835/std.bcm2836 soc2015/btw/head/sys/arm/conf/AML8726 soc2015/btw/head/sys/arm/conf/APALIS-IMX6 soc2015/btw/head/sys/arm/conf/ARMADAXP soc2015/btw/head/sys/arm/conf/ARNDALE soc2015/btw/head/sys/arm/conf/ARNDALE-OCTA soc2015/btw/head/sys/arm/conf/ATMEL soc2015/btw/head/sys/arm/conf/AVILA soc2015/btw/head/sys/arm/conf/BEAGLEBONE soc2015/btw/head/sys/arm/conf/BWCT soc2015/btw/head/sys/arm/conf/CAMBRIA soc2015/btw/head/sys/arm/conf/CHROMEBOOK soc2015/btw/head/sys/arm/conf/CHROMEBOOK-PEACH-PIT soc2015/btw/head/sys/arm/conf/CHROMEBOOK-SNOW soc2015/btw/head/sys/arm/conf/CHROMEBOOK-SPRING soc2015/btw/head/sys/arm/conf/CNS11XXNAS soc2015/btw/head/sys/arm/conf/COLIBRI-VF50 soc2015/btw/head/sys/arm/conf/COSMIC soc2015/btw/head/sys/arm/conf/CRB soc2015/btw/head/sys/arm/conf/CUBIEBOARD soc2015/btw/head/sys/arm/conf/CUBIEBOARD2 soc2015/btw/head/sys/arm/conf/DB-78XXX soc2015/btw/head/sys/arm/conf/DB-88F5XXX soc2015/btw/head/sys/arm/conf/DB-88F6XXX soc2015/btw/head/sys/arm/conf/DIGI-CCWMX53 soc2015/btw/head/sys/arm/conf/DOCKSTAR soc2015/btw/head/sys/arm/conf/DREAMPLUG-1001 soc2015/btw/head/sys/arm/conf/EA3250 soc2015/btw/head/sys/arm/conf/EB9200 soc2015/btw/head/sys/arm/conf/EFIKA_MX soc2015/btw/head/sys/arm/conf/EP80219 soc2015/btw/head/sys/arm/conf/ETHERNUT5 soc2015/btw/head/sys/arm/conf/EXYNOS5.common soc2015/btw/head/sys/arm/conf/EXYNOS5250 soc2015/btw/head/sys/arm/conf/EXYNOS5420 soc2015/btw/head/sys/arm/conf/GUMSTIX soc2015/btw/head/sys/arm/conf/HL200 soc2015/btw/head/sys/arm/conf/HL201 soc2015/btw/head/sys/arm/conf/IMX53 soc2015/btw/head/sys/arm/conf/IMX53-QSB soc2015/btw/head/sys/arm/conf/IMX6 soc2015/btw/head/sys/arm/conf/IQ31244 soc2015/btw/head/sys/arm/conf/KB920X soc2015/btw/head/sys/arm/conf/LN2410SBC soc2015/btw/head/sys/arm/conf/NSLU soc2015/btw/head/sys/arm/conf/ODROIDC1 soc2015/btw/head/sys/arm/conf/PANDABOARD soc2015/btw/head/sys/arm/conf/QILA9G20 soc2015/btw/head/sys/arm/conf/QUARTZ soc2015/btw/head/sys/arm/conf/RADXA soc2015/btw/head/sys/arm/conf/RADXA-LITE soc2015/btw/head/sys/arm/conf/RK3188 soc2015/btw/head/sys/arm/conf/RPI-B soc2015/btw/head/sys/arm/conf/RPI2 soc2015/btw/head/sys/arm/conf/SAM9260EK soc2015/btw/head/sys/arm/conf/SAM9G20EK soc2015/btw/head/sys/arm/conf/SAM9X25EK soc2015/btw/head/sys/arm/conf/SHEEVAPLUG soc2015/btw/head/sys/arm/conf/SN9G45 soc2015/btw/head/sys/arm/conf/SOCKIT.common soc2015/btw/head/sys/arm/conf/TS7800 soc2015/btw/head/sys/arm/conf/VERSATILEPB soc2015/btw/head/sys/arm/conf/VIRT soc2015/btw/head/sys/arm/conf/VSATV102 soc2015/btw/head/sys/arm/conf/VYBRID soc2015/btw/head/sys/arm/conf/ZEDBOARD soc2015/btw/head/sys/arm/freescale/imx/files.imx6 soc2015/btw/head/sys/arm/freescale/imx/imx6_anatop.c soc2015/btw/head/sys/arm/freescale/imx/imx6_ccm.c soc2015/btw/head/sys/arm/freescale/imx/imx6_ccmreg.h soc2015/btw/head/sys/arm/freescale/imx/imx_ccmvar.h soc2015/btw/head/sys/arm/freescale/imx/imx_sdhci.c soc2015/btw/head/sys/arm/freescale/vybrid/files.vybrid soc2015/btw/head/sys/arm/include/armreg.h soc2015/btw/head/sys/arm/include/asm.h soc2015/btw/head/sys/arm/include/atomic.h soc2015/btw/head/sys/arm/include/cpu-v6.h soc2015/btw/head/sys/arm/include/cpufunc.h soc2015/btw/head/sys/arm/include/elf.h soc2015/btw/head/sys/arm/include/pl310.h soc2015/btw/head/sys/arm/include/pmap-v6.h soc2015/btw/head/sys/arm/include/proc.h soc2015/btw/head/sys/arm/include/smp.h soc2015/btw/head/sys/arm/include/sysreg.h soc2015/btw/head/sys/arm/qemu/files.qemu soc2015/btw/head/sys/arm/rockchip/files.rk30xx soc2015/btw/head/sys/arm/samsung/exynos/files.exynos5 soc2015/btw/head/sys/arm/ti/aintc.c soc2015/btw/head/sys/arm/ti/am335x/am335x_dmtimer.c soc2015/btw/head/sys/arm/ti/am335x/am335x_gpio.c soc2015/btw/head/sys/arm/ti/am335x/am335x_lcd.c soc2015/btw/head/sys/arm/ti/am335x/am335x_lcd.h soc2015/btw/head/sys/arm/ti/am335x/am335x_pmic.c soc2015/btw/head/sys/arm/ti/am335x/am335x_prcm.c soc2015/btw/head/sys/arm/ti/am335x/am335x_pwm.h soc2015/btw/head/sys/arm/ti/am335x/am335x_scm_padconf.c soc2015/btw/head/sys/arm/ti/am335x/am335x_usbss.c soc2015/btw/head/sys/arm/ti/am335x/files.am335x soc2015/btw/head/sys/arm/ti/cpsw/if_cpsw.c soc2015/btw/head/sys/arm/ti/cpsw/if_cpswreg.h soc2015/btw/head/sys/arm/ti/cpsw/if_cpswvar.h soc2015/btw/head/sys/arm/ti/files.ti soc2015/btw/head/sys/arm/ti/omap4/files.omap4 soc2015/btw/head/sys/arm/ti/omap4/omap4_gpio.c soc2015/btw/head/sys/arm/ti/omap4/omap4_prcm_clks.c soc2015/btw/head/sys/arm/ti/omap4/omap4_scm_padconf.c soc2015/btw/head/sys/arm/ti/omap4/pandaboard/pandaboard.c soc2015/btw/head/sys/arm/ti/ti_adc.c soc2015/btw/head/sys/arm/ti/ti_common.c soc2015/btw/head/sys/arm/ti/ti_edma3.c soc2015/btw/head/sys/arm/ti/ti_gpio.c soc2015/btw/head/sys/arm/ti/ti_gpio.h soc2015/btw/head/sys/arm/ti/ti_i2c.c soc2015/btw/head/sys/arm/ti/ti_mbox.c soc2015/btw/head/sys/arm/ti/ti_prcm.h soc2015/btw/head/sys/arm/ti/ti_pruss.c soc2015/btw/head/sys/arm/ti/ti_pruss.h soc2015/btw/head/sys/arm/ti/ti_scm.c soc2015/btw/head/sys/arm/ti/ti_scm.h soc2015/btw/head/sys/arm/ti/ti_sdhci.c soc2015/btw/head/sys/arm/ti/ti_sdma.c soc2015/btw/head/sys/arm/ti/usb/omap_ehci.c soc2015/btw/head/sys/arm/ti/usb/omap_usb.h soc2015/btw/head/sys/arm/xilinx/files.zynq7 soc2015/btw/head/sys/arm64/arm64/busdma_machdep.c soc2015/btw/head/sys/arm64/arm64/db_disasm.c soc2015/btw/head/sys/arm64/arm64/intr_machdep.c soc2015/btw/head/sys/arm64/arm64/locore.S soc2015/btw/head/sys/arm64/arm64/nexus.c soc2015/btw/head/sys/arm64/conf/GENERIC soc2015/btw/head/sys/arm64/include/armreg.h soc2015/btw/head/sys/arm64/include/pmc_mdep.h soc2015/btw/head/sys/boot/ (props changed) soc2015/btw/head/sys/boot/arm/uboot/Makefile soc2015/btw/head/sys/boot/arm/uboot/ldscript.arm soc2015/btw/head/sys/boot/arm/uboot/start.S soc2015/btw/head/sys/boot/common/dev_net.c soc2015/btw/head/sys/boot/common/dev_net.h soc2015/btw/head/sys/boot/common/load_elf.c soc2015/btw/head/sys/boot/efi/boot1/Makefile soc2015/btw/head/sys/boot/efi/libefi/Makefile soc2015/btw/head/sys/boot/efi/loader/Makefile soc2015/btw/head/sys/boot/efi/loader/arch/amd64/start.S soc2015/btw/head/sys/boot/efi/loader/arch/arm/ldscript.arm soc2015/btw/head/sys/boot/efi/loader/arch/arm/start.S soc2015/btw/head/sys/boot/efi/loader/arch/arm64/Makefile.inc soc2015/btw/head/sys/boot/efi/loader/arch/arm64/start.S soc2015/btw/head/sys/boot/efi/loader/arch/i386/start.S soc2015/btw/head/sys/boot/efi/loader/main.c soc2015/btw/head/sys/boot/fdt/dts/arm/am335x-evm.dts soc2015/btw/head/sys/boot/fdt/dts/arm/beaglebone-black.dts soc2015/btw/head/sys/boot/fdt/dts/arm/beaglebone.dts soc2015/btw/head/sys/boot/fdt/dts/arm/cubieboard.dts soc2015/btw/head/sys/boot/fdt/dts/arm/cubieboard2.dts soc2015/btw/head/sys/boot/fdt/dts/arm/odroidc1.dts soc2015/btw/head/sys/boot/fdt/dts/arm/pandaboard.dts soc2015/btw/head/sys/boot/fdt/dts/arm/rpi2.dts soc2015/btw/head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi soc2015/btw/head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi soc2015/btw/head/sys/boot/fdt/dts/arm/vsatv102-m6.dts soc2015/btw/head/sys/boot/i386/boot0/boot0.S soc2015/btw/head/sys/boot/uboot/common/main.c soc2015/btw/head/sys/boot/uboot/lib/copy.c soc2015/btw/head/sys/boot/uboot/lib/elf_freebsd.c soc2015/btw/head/sys/boot/uboot/lib/libuboot.h soc2015/btw/head/sys/boot/uboot/lib/module.c soc2015/btw/head/sys/boot/uboot/lib/net.c soc2015/btw/head/sys/cam/ctl/ctl_backend_block.c soc2015/btw/head/sys/cddl/contrib/opensolaris/ (props changed) soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c soc2015/btw/head/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c soc2015/btw/head/sys/cddl/dev/dtrace/amd64/dtrace_asm.S soc2015/btw/head/sys/cddl/dev/dtrace/amd64/dtrace_subr.c soc2015/btw/head/sys/cddl/dev/dtrace/i386/dtrace_asm.S soc2015/btw/head/sys/cddl/dev/dtrace/i386/dtrace_subr.c soc2015/btw/head/sys/cddl/dev/profile/profile.c soc2015/btw/head/sys/compat/freebsd32/freebsd32_misc.c soc2015/btw/head/sys/compat/ia32/ia32_sysvec.c soc2015/btw/head/sys/compat/linprocfs/linprocfs.c soc2015/btw/head/sys/compat/linsysfs/linsysfs.c soc2015/btw/head/sys/compat/linux/check_error.d soc2015/btw/head/sys/compat/linux/check_internal_locks.d soc2015/btw/head/sys/compat/linux/linux_emul.c soc2015/btw/head/sys/compat/linux/linux_emul.h soc2015/btw/head/sys/compat/linux/linux_file.c soc2015/btw/head/sys/compat/linux/linux_file.h soc2015/btw/head/sys/compat/linux/linux_fork.c soc2015/btw/head/sys/compat/linux/linux_futex.c soc2015/btw/head/sys/compat/linux/linux_futex.h soc2015/btw/head/sys/compat/linux/linux_getcwd.c soc2015/btw/head/sys/compat/linux/linux_ioctl.c soc2015/btw/head/sys/compat/linux/linux_ioctl.h soc2015/btw/head/sys/compat/linux/linux_ipc.c soc2015/btw/head/sys/compat/linux/linux_ipc.h soc2015/btw/head/sys/compat/linux/linux_mib.c soc2015/btw/head/sys/compat/linux/linux_mib.h soc2015/btw/head/sys/compat/linux/linux_misc.c soc2015/btw/head/sys/compat/linux/linux_misc.h soc2015/btw/head/sys/compat/linux/linux_signal.c soc2015/btw/head/sys/compat/linux/linux_signal.h soc2015/btw/head/sys/compat/linux/linux_socket.c soc2015/btw/head/sys/compat/linux/linux_socket.h soc2015/btw/head/sys/compat/linux/linux_stats.c soc2015/btw/head/sys/compat/linux/linux_sysctl.c soc2015/btw/head/sys/compat/linux/linux_time.c soc2015/btw/head/sys/compat/linux/linux_timer.c soc2015/btw/head/sys/compat/linux/linux_timer.h soc2015/btw/head/sys/compat/linux/linux_uid16.c soc2015/btw/head/sys/compat/linux/linux_util.c soc2015/btw/head/sys/compat/linux/linux_util.h soc2015/btw/head/sys/compat/linux/stats_timing.d soc2015/btw/head/sys/compat/ndis/subr_ntoskrnl.c soc2015/btw/head/sys/compat/svr4/svr4_misc.c soc2015/btw/head/sys/compat/svr4/svr4_sysvec.c soc2015/btw/head/sys/conf/ (props changed) soc2015/btw/head/sys/conf/NOTES soc2015/btw/head/sys/conf/files soc2015/btw/head/sys/conf/files.amd64 soc2015/btw/head/sys/conf/files.arm soc2015/btw/head/sys/conf/files.arm64 soc2015/btw/head/sys/conf/files.i386 soc2015/btw/head/sys/conf/files.pc98 soc2015/btw/head/sys/conf/files.powerpc soc2015/btw/head/sys/conf/options soc2015/btw/head/sys/conf/options.arm soc2015/btw/head/sys/contrib/dev/acpica/ (props changed) soc2015/btw/head/sys/contrib/dev/acpica/changes.txt soc2015/btw/head/sys/contrib/dev/acpica/common/adisasm.c soc2015/btw/head/sys/contrib/dev/acpica/common/ahpredef.c soc2015/btw/head/sys/contrib/dev/acpica/common/dmextern.c soc2015/btw/head/sys/contrib/dev/acpica/common/dmtable.c soc2015/btw/head/sys/contrib/dev/acpica/common/dmtbdump.c soc2015/btw/head/sys/contrib/dev/acpica/common/dmtbinfo.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslascii.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslcompiler.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslcompiler.l soc2015/btw/head/sys/contrib/dev/acpica/compiler/asldefine.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslfiles.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslmessages.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslmessages.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslprepkg.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslstartup.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/aslutils.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dtcompile.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dtcompiler.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/dtio.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dtsubtable.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dttable.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dttemplate.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/dttemplate.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/dtutils.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/preprocess.h soc2015/btw/head/sys/contrib/dev/acpica/compiler/prscan.c soc2015/btw/head/sys/contrib/dev/acpica/compiler/prutils.c soc2015/btw/head/sys/contrib/dev/acpica/components/debugger/dbfileio.c soc2015/btw/head/sys/contrib/dev/acpica/components/debugger/dbinput.c soc2015/btw/head/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c soc2015/btw/head/sys/contrib/dev/acpica/components/hardware/hwpci.c soc2015/btw/head/sys/contrib/dev/acpica/components/namespace/nsprepkg.c soc2015/btw/head/sys/contrib/dev/acpica/components/namespace/nsrepair.c soc2015/btw/head/sys/contrib/dev/acpica/components/parser/psopinfo.c soc2015/btw/head/sys/contrib/dev/acpica/components/utilities/utfileio.c soc2015/btw/head/sys/contrib/dev/acpica/components/utilities/uthex.c soc2015/btw/head/sys/contrib/dev/acpica/components/utilities/utxferror.c soc2015/btw/head/sys/contrib/dev/acpica/include/acdebug.h soc2015/btw/head/sys/contrib/dev/acpica/include/acdisasm.h soc2015/btw/head/sys/contrib/dev/acpica/include/aclocal.h soc2015/btw/head/sys/contrib/dev/acpica/include/acparser.h soc2015/btw/head/sys/contrib/dev/acpica/include/acpixf.h soc2015/btw/head/sys/contrib/dev/acpica/include/acpredef.h soc2015/btw/head/sys/contrib/dev/acpica/include/actbl.h soc2015/btw/head/sys/contrib/dev/acpica/include/actbl1.h soc2015/btw/head/sys/contrib/dev/acpica/include/actbl2.h soc2015/btw/head/sys/contrib/dev/acpica/include/actbl3.h soc2015/btw/head/sys/contrib/dev/acpica/include/actypes.h soc2015/btw/head/sys/contrib/dev/acpica/include/acutils.h soc2015/btw/head/sys/contrib/dev/acpica/include/platform/acenv.h soc2015/btw/head/sys/contrib/dev/acpica/include/platform/acenvex.h soc2015/btw/head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c soc2015/btw/head/sys/contrib/ipfilter/ (props changed) soc2015/btw/head/sys/contrib/ipfilter/netinet/ip_compat.h soc2015/btw/head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c (contents, props changed) soc2015/btw/head/sys/contrib/vchiq/interface/compat/vchi_bsd.c soc2015/btw/head/sys/ddb/db_access.c soc2015/btw/head/sys/ddb/db_access.h soc2015/btw/head/sys/ddb/db_break.c soc2015/btw/head/sys/ddb/db_capture.c soc2015/btw/head/sys/ddb/db_command.c soc2015/btw/head/sys/ddb/db_examine.c soc2015/btw/head/sys/ddb/db_expr.c soc2015/btw/head/sys/ddb/db_input.c soc2015/btw/head/sys/ddb/db_main.c soc2015/btw/head/sys/ddb/db_print.c soc2015/btw/head/sys/ddb/db_ps.c soc2015/btw/head/sys/ddb/db_run.c soc2015/btw/head/sys/ddb/db_script.c soc2015/btw/head/sys/ddb/db_sym.c soc2015/btw/head/sys/ddb/db_sym.h soc2015/btw/head/sys/ddb/db_textdump.c soc2015/btw/head/sys/ddb/db_thread.c soc2015/btw/head/sys/ddb/db_variables.c soc2015/btw/head/sys/ddb/db_watch.c soc2015/btw/head/sys/ddb/db_write_cmd.c soc2015/btw/head/sys/ddb/ddb.h soc2015/btw/head/sys/dev/acpi_support/acpi_ibm.c soc2015/btw/head/sys/dev/acpica/acpi.c soc2015/btw/head/sys/dev/acpica/acpi_cpu.c soc2015/btw/head/sys/dev/acpica/acpi_package.c soc2015/btw/head/sys/dev/acpica/acpi_throttle.c soc2015/btw/head/sys/dev/acpica/acpi_timer.c soc2015/btw/head/sys/dev/acpica/acpivar.h soc2015/btw/head/sys/dev/altera/jtag_uart/altera_jtag_uart_tty.c soc2015/btw/head/sys/dev/ath/if_ath.c soc2015/btw/head/sys/dev/ath/if_ath_rx.c soc2015/btw/head/sys/dev/ath/if_ath_rx.h soc2015/btw/head/sys/dev/ath/if_athvar.h soc2015/btw/head/sys/dev/atkbdc/psm.c soc2015/btw/head/sys/dev/bwi/if_bwi.c soc2015/btw/head/sys/dev/bwn/if_bwn.c soc2015/btw/head/sys/dev/bxe/bxe.c soc2015/btw/head/sys/dev/bxe/bxe_stats.c soc2015/btw/head/sys/dev/bxe/bxe_stats.h soc2015/btw/head/sys/dev/ce/if_ce.c soc2015/btw/head/sys/dev/cp/if_cp.c soc2015/btw/head/sys/dev/ctau/if_ct.c soc2015/btw/head/sys/dev/cx/if_cx.c soc2015/btw/head/sys/dev/cxgb/cxgb_main.c soc2015/btw/head/sys/dev/cxgb/cxgb_sge.c soc2015/btw/head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c soc2015/btw/head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c soc2015/btw/head/sys/dev/cxgbe/t4_main.c soc2015/btw/head/sys/dev/dcons/dcons_os.c soc2015/btw/head/sys/dev/drm2/drm_irq.c soc2015/btw/head/sys/dev/drm2/i915/intel_display.c soc2015/btw/head/sys/dev/e1000/if_em.c soc2015/btw/head/sys/dev/fdt/simplebus.c soc2015/btw/head/sys/dev/glxsb/glxsb.c soc2015/btw/head/sys/dev/gpio/gpioled.c soc2015/btw/head/sys/dev/gpio/ofw_gpiobus.c soc2015/btw/head/sys/dev/gxemul/cons/gxemul_cons.c soc2015/btw/head/sys/dev/hifn/hifn7751.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_amd.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_armv7.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_core.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_e500.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_intel.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_logging.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_mips.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_mips24k.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_mips74k.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_mod.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_mpc7xxx.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_octeon.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_piv.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_ppc970.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_ppro.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_soft.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_tsc.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_uncore.c soc2015/btw/head/sys/dev/hwpmc/hwpmc_xscale.c soc2015/btw/head/sys/dev/hwpmc/pmc_events.h soc2015/btw/head/sys/dev/hyperv/ (props changed) soc2015/btw/head/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c soc2015/btw/head/sys/dev/hyperv/storvsc/hv_vstorage.h soc2015/btw/head/sys/dev/if_ndis/if_ndis.c soc2015/btw/head/sys/dev/iicbus/iicbus.c soc2015/btw/head/sys/dev/iicbus/iicbus.h soc2015/btw/head/sys/dev/ipw/if_ipw.c soc2015/btw/head/sys/dev/isci/isci_io_request.c soc2015/btw/head/sys/dev/iscsi/icl_soft.c soc2015/btw/head/sys/dev/iwi/if_iwi.c soc2015/btw/head/sys/dev/iwn/if_iwn.c soc2015/btw/head/sys/dev/ixl/i40e_adminq.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_adminq.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_adminq_cmd.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_alloc.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_common.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_hmc.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_hmc.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_lan_hmc.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_lan_hmc.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_nvm.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_osdep.c (props changed) soc2015/btw/head/sys/dev/ixl/i40e_osdep.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_prototype.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_register.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_status.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_type.h (props changed) soc2015/btw/head/sys/dev/ixl/i40e_virtchnl.h (props changed) soc2015/btw/head/sys/dev/ixl/if_ixl.c (props changed) soc2015/btw/head/sys/dev/ixl/if_ixlv.c soc2015/btw/head/sys/dev/ixl/ixl_txrx.c (props changed) soc2015/btw/head/sys/dev/led/led.c soc2015/btw/head/sys/dev/malo/if_malo.c soc2015/btw/head/sys/dev/mfi/mfi.c soc2015/btw/head/sys/dev/mmc/mmc.c soc2015/btw/head/sys/dev/mrsas/mrsas.c soc2015/btw/head/sys/dev/mrsas/mrsas.h soc2015/btw/head/sys/dev/mrsas/mrsas_cam.c soc2015/btw/head/sys/dev/mrsas/mrsas_fp.c soc2015/btw/head/sys/dev/mrsas/mrsas_ioctl.c soc2015/btw/head/sys/dev/mrsas/mrsas_ioctl.h soc2015/btw/head/sys/dev/mrsas/mrsas_linux.c soc2015/btw/head/sys/dev/mwl/if_mwl.c soc2015/btw/head/sys/dev/nand/nandsim_chip.c soc2015/btw/head/sys/dev/netmap/netmap_mem2.c soc2015/btw/head/sys/dev/ntb/if_ntb/if_ntb.c soc2015/btw/head/sys/dev/ntb/ntb_hw/ntb_hw.c soc2015/btw/head/sys/dev/nxge/if_nxge.c soc2015/btw/head/sys/dev/oce/oce_if.c soc2015/btw/head/sys/dev/ofw/ofw_bus_subr.c soc2015/btw/head/sys/dev/ofw/ofw_bus_subr.h soc2015/btw/head/sys/dev/ofw/ofw_iicbus.c soc2015/btw/head/sys/dev/ofw/ofwbus.c soc2015/btw/head/sys/dev/patm/if_patm_attach.c soc2015/btw/head/sys/dev/pci/pci_pci.c soc2015/btw/head/sys/dev/pci/pcib_private.h soc2015/btw/head/sys/dev/psci/psci.c soc2015/btw/head/sys/dev/qlxgb/qla_os.c soc2015/btw/head/sys/dev/qlxgbe/ql_os.c soc2015/btw/head/sys/dev/qlxge/qls_os.c soc2015/btw/head/sys/dev/ral/rt2560.c soc2015/btw/head/sys/dev/ral/rt2661.c soc2015/btw/head/sys/dev/ral/rt2860.c soc2015/btw/head/sys/dev/rndtest/rndtest.c soc2015/btw/head/sys/dev/safe/safe.c soc2015/btw/head/sys/dev/sdhci/sdhci.c soc2015/btw/head/sys/dev/sdhci/sdhci.h soc2015/btw/head/sys/dev/sfxge/common/efsys.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_bootcfg.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_ev.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_filter.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_impl.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_intr.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_mac.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_mcdi.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_mcdi.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_mon.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_nic.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_nvram.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_phy.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_port.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_regs.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_regs_ef10.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_regs_mcdi.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_regs_pci.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_rx.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_sram.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_tx.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_types.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_vpd.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/efx_wol.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_flash.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_impl.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_mac.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_nic.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_nvram.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_phy.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_sram.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/common/siena_vpd.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_dma.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_ev.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_intr.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_mcdi.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_port.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_rx.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_rx.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_tx.c (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_tx.h (contents, props changed) soc2015/btw/head/sys/dev/sfxge/sfxge_version.h soc2015/btw/head/sys/dev/sound/midi/mpu401.c soc2015/btw/head/sys/dev/sound/pci/atiixp.c soc2015/btw/head/sys/dev/sound/pci/es137x.c soc2015/btw/head/sys/dev/sound/pci/hda/hdaa.c soc2015/btw/head/sys/dev/sound/pci/hda/hdac.c soc2015/btw/head/sys/dev/sound/pci/via8233.c soc2015/btw/head/sys/dev/sound/pcm/channel.c soc2015/btw/head/sys/dev/sound/pcm/channel.h soc2015/btw/head/sys/dev/sound/pcm/feeder_chain.c soc2015/btw/head/sys/dev/sound/pcm/sound.h soc2015/btw/head/sys/dev/sound/usb/uaudio.c soc2015/btw/head/sys/dev/twa/tw_osl_freebsd.c soc2015/btw/head/sys/dev/tws/tws.c soc2015/btw/head/sys/dev/uart/uart_dev_ti8250.c soc2015/btw/head/sys/dev/ubsec/ubsec.c soc2015/btw/head/sys/dev/usb/controller/dwc_otg.c soc2015/btw/head/sys/dev/usb/controller/dwc_otg.h soc2015/btw/head/sys/dev/usb/quirk/usb_quirk.c soc2015/btw/head/sys/dev/usb/quirk/usb_quirk.h soc2015/btw/head/sys/dev/usb/serial/u3g.c soc2015/btw/head/sys/dev/usb/serial/uftdi.c soc2015/btw/head/sys/dev/usb/usb_device.c soc2015/btw/head/sys/dev/usb/usb_msctest.c soc2015/btw/head/sys/dev/usb/usb_msctest.h soc2015/btw/head/sys/dev/usb/usbdevs soc2015/btw/head/sys/dev/usb/video/udl.c soc2015/btw/head/sys/dev/usb/wlan/if_rsu.c soc2015/btw/head/sys/dev/usb/wlan/if_rum.c soc2015/btw/head/sys/dev/usb/wlan/if_run.c soc2015/btw/head/sys/dev/usb/wlan/if_uath.c soc2015/btw/head/sys/dev/usb/wlan/if_upgt.c soc2015/btw/head/sys/dev/usb/wlan/if_ural.c soc2015/btw/head/sys/dev/usb/wlan/if_urtw.c soc2015/btw/head/sys/dev/usb/wlan/if_urtwn.c soc2015/btw/head/sys/dev/usb/wlan/if_urtwnreg.h soc2015/btw/head/sys/dev/usb/wlan/if_zyd.c soc2015/btw/head/sys/dev/virtio/random/virtio_random.c soc2015/btw/head/sys/dev/vt/vt.h soc2015/btw/head/sys/dev/vt/vt_core.c soc2015/btw/head/sys/dev/watchdog/watchdog.c soc2015/btw/head/sys/dev/wi/if_wi.c soc2015/btw/head/sys/dev/wi/if_wivar.h soc2015/btw/head/sys/dev/wpi/if_wpi.c soc2015/btw/head/sys/dev/wpi/if_wpivar.h soc2015/btw/head/sys/dev/wtap/if_wtap.c soc2015/btw/head/sys/dev/wtap/if_wtapvar.h soc2015/btw/head/sys/dev/wtap/wtap_hal/hal.c soc2015/btw/head/sys/dev/xen/blkback/blkback.c soc2015/btw/head/sys/dev/xen/grant_table/grant_table.c soc2015/btw/head/sys/dev/xen/netback/netback.c soc2015/btw/head/sys/dev/xen/netfront/netfront.c soc2015/btw/head/sys/dev/xen/privcmd/privcmd.c soc2015/btw/head/sys/fs/nfs/nfs_commonport.c soc2015/btw/head/sys/fs/nfsclient/nfs_clbio.c soc2015/btw/head/sys/fs/nfsclient/nfs_clrpcops.c soc2015/btw/head/sys/fs/nfsclient/nfs_clvnops.c soc2015/btw/head/sys/fs/nfsserver/nfs_nfsdkrpc.c soc2015/btw/head/sys/fs/procfs/procfs_ctl.c soc2015/btw/head/sys/fs/pseudofs/pseudofs.c soc2015/btw/head/sys/gdb/gdb_cons.c soc2015/btw/head/sys/geom/gate/g_gate.c soc2015/btw/head/sys/geom/journal/g_journal.c soc2015/btw/head/sys/geom/mirror/g_mirror.c soc2015/btw/head/sys/geom/raid3/g_raid3.c soc2015/btw/head/sys/geom/sched/gs_rr.c soc2015/btw/head/sys/geom/uncompress/g_uncompress.c soc2015/btw/head/sys/i386/acpica/acpi_machdep.c soc2015/btw/head/sys/i386/conf/GENERIC soc2015/btw/head/sys/i386/i386/db_disasm.c soc2015/btw/head/sys/i386/i386/elf_machdep.c soc2015/btw/head/sys/i386/i386/machdep.c soc2015/btw/head/sys/i386/i386/mp_watchdog.c soc2015/btw/head/sys/i386/ibcs2/ibcs2_misc.c soc2015/btw/head/sys/i386/ibcs2/ibcs2_sysvec.c soc2015/btw/head/sys/i386/include/md_var.h soc2015/btw/head/sys/i386/linux/linux.h soc2015/btw/head/sys/i386/linux/linux_dummy.c soc2015/btw/head/sys/i386/linux/linux_genassym.c soc2015/btw/head/sys/i386/linux/linux_locore.s soc2015/btw/head/sys/i386/linux/linux_machdep.c soc2015/btw/head/sys/i386/linux/linux_proto.h soc2015/btw/head/sys/i386/linux/linux_ptrace.c soc2015/btw/head/sys/i386/linux/linux_syscall.h soc2015/btw/head/sys/i386/linux/linux_syscalls.c soc2015/btw/head/sys/i386/linux/linux_sysent.c soc2015/btw/head/sys/i386/linux/linux_systrace_args.c soc2015/btw/head/sys/i386/linux/linux_sysvec.c soc2015/btw/head/sys/i386/linux/syscalls.master soc2015/btw/head/sys/kern/imgact_aout.c soc2015/btw/head/sys/kern/imgact_elf.c soc2015/btw/head/sys/kern/init_main.c soc2015/btw/head/sys/kern/kern_cons.c soc2015/btw/head/sys/kern/kern_cpuset.c soc2015/btw/head/sys/kern/kern_descrip.c soc2015/btw/head/sys/kern/kern_event.c soc2015/btw/head/sys/kern/kern_exec.c soc2015/btw/head/sys/kern/kern_exit.c soc2015/btw/head/sys/kern/kern_fork.c soc2015/btw/head/sys/kern/kern_ktr.c soc2015/btw/head/sys/kern/kern_malloc.c soc2015/btw/head/sys/kern/kern_racct.c soc2015/btw/head/sys/kern/kern_shutdown.c soc2015/btw/head/sys/kern/kern_sig.c soc2015/btw/head/sys/kern/kern_synch.c soc2015/btw/head/sys/kern/kern_thr.c soc2015/btw/head/sys/kern/kern_thread.c soc2015/btw/head/sys/kern/p1003_1b.c soc2015/btw/head/sys/kern/subr_nvlist.c soc2015/btw/head/sys/kern/subr_nvpair.c soc2015/btw/head/sys/kern/subr_taskqueue.c soc2015/btw/head/sys/kern/subr_trap.c soc2015/btw/head/sys/kern/subr_turnstile.c soc2015/btw/head/sys/kern/subr_vmem.c soc2015/btw/head/sys/kern/subr_witness.c soc2015/btw/head/sys/kern/sys_process.c soc2015/btw/head/sys/kern/uipc_domain.c soc2015/btw/head/sys/kern/uipc_mbuf.c soc2015/btw/head/sys/kern/vfs_mount.c soc2015/btw/head/sys/kern/vfs_subr.c soc2015/btw/head/sys/kern/vfs_syscalls.c soc2015/btw/head/sys/kern/vfs_vnops.c soc2015/btw/head/sys/mips/atheros/files.ar71xx soc2015/btw/head/sys/mips/beri/beri_simplebus.c soc2015/btw/head/sys/mips/cavium/octe/ethernet.c soc2015/btw/head/sys/mips/cavium/octeon_rnd.c soc2015/btw/head/sys/mips/conf/AP135 soc2015/btw/head/sys/mips/conf/AP135.hints soc2015/btw/head/sys/mips/conf/QCA955X_BASE soc2015/btw/head/sys/mips/conf/ROUTERSTATION soc2015/btw/head/sys/mips/conf/RSPRO soc2015/btw/head/sys/mips/include/intr_machdep.h soc2015/btw/head/sys/mips/mips/db_disasm.c soc2015/btw/head/sys/mips/mips/elf_machdep.c soc2015/btw/head/sys/mips/mips/freebsd32_machdep.c soc2015/btw/head/sys/mips/mips/pm_machdep.c soc2015/btw/head/sys/mips/mips/pmap.c soc2015/btw/head/sys/mips/mips/vm_machdep.c soc2015/btw/head/sys/mips/nlm/dev/net/xlpge.c soc2015/btw/head/sys/mips/rmi/dev/xlr/rge.c soc2015/btw/head/sys/modules/Makefile soc2015/btw/head/sys/modules/linprocfs/Makefile soc2015/btw/head/sys/modules/linsysfs/Makefile soc2015/btw/head/sys/modules/linux/Makefile soc2015/btw/head/sys/modules/pseudofs/Makefile soc2015/btw/head/sys/modules/sfxge/Makefile (contents, props changed) soc2015/btw/head/sys/net/if.c soc2015/btw/head/sys/net/if_bridge.c soc2015/btw/head/sys/net/if_gif.c soc2015/btw/head/sys/net/if_gif.h soc2015/btw/head/sys/net/if_gre.c soc2015/btw/head/sys/net/if_me.c soc2015/btw/head/sys/net/if_spppsubr.c soc2015/btw/head/sys/net/if_tap.c soc2015/btw/head/sys/net/sff8436.h soc2015/btw/head/sys/net/sff8472.h soc2015/btw/head/sys/net80211/ieee80211.c soc2015/btw/head/sys/net80211/ieee80211.h soc2015/btw/head/sys/net80211/ieee80211_acl.c soc2015/btw/head/sys/net80211/ieee80211_adhoc.c soc2015/btw/head/sys/net80211/ieee80211_amrr.c soc2015/btw/head/sys/net80211/ieee80211_crypto_ccmp.c soc2015/btw/head/sys/net80211/ieee80211_crypto_tkip.c soc2015/btw/head/sys/net80211/ieee80211_crypto_wep.c soc2015/btw/head/sys/net80211/ieee80211_ddb.c soc2015/btw/head/sys/net80211/ieee80211_dfs.c soc2015/btw/head/sys/net80211/ieee80211_freebsd.c soc2015/btw/head/sys/net80211/ieee80211_freebsd.h soc2015/btw/head/sys/net80211/ieee80211_hostap.c soc2015/btw/head/sys/net80211/ieee80211_ht.c soc2015/btw/head/sys/net80211/ieee80211_hwmp.c soc2015/btw/head/sys/net80211/ieee80211_input.c soc2015/btw/head/sys/net80211/ieee80211_input.h soc2015/btw/head/sys/net80211/ieee80211_ioctl.c soc2015/btw/head/sys/net80211/ieee80211_mesh.c soc2015/btw/head/sys/net80211/ieee80211_mesh.h soc2015/btw/head/sys/net80211/ieee80211_monitor.c soc2015/btw/head/sys/net80211/ieee80211_node.c soc2015/btw/head/sys/net80211/ieee80211_output.c soc2015/btw/head/sys/net80211/ieee80211_power.c soc2015/btw/head/sys/net80211/ieee80211_proto.c soc2015/btw/head/sys/net80211/ieee80211_proto.h soc2015/btw/head/sys/net80211/ieee80211_radiotap.c soc2015/btw/head/sys/net80211/ieee80211_ratectl_none.c soc2015/btw/head/sys/net80211/ieee80211_regdomain.c soc2015/btw/head/sys/net80211/ieee80211_rssadapt.c soc2015/btw/head/sys/net80211/ieee80211_scan.c soc2015/btw/head/sys/net80211/ieee80211_scan.h soc2015/btw/head/sys/net80211/ieee80211_scan_sta.c soc2015/btw/head/sys/net80211/ieee80211_scan_sw.c soc2015/btw/head/sys/net80211/ieee80211_scan_sw.h soc2015/btw/head/sys/net80211/ieee80211_sta.c soc2015/btw/head/sys/net80211/ieee80211_superg.c soc2015/btw/head/sys/net80211/ieee80211_tdma.c soc2015/btw/head/sys/net80211/ieee80211_tdma.h soc2015/btw/head/sys/net80211/ieee80211_var.h soc2015/btw/head/sys/net80211/ieee80211_wds.c soc2015/btw/head/sys/netgraph/netflow/ng_netflow.c soc2015/btw/head/sys/netgraph/netgraph.h soc2015/btw/head/sys/netinet/in_gif.c soc2015/btw/head/sys/netinet/in_pcb.c soc2015/btw/head/sys/netinet/ip_mroute.c soc2015/btw/head/sys/netinet/sctp_input.c soc2015/btw/head/sys/netinet/tcp_hostcache.c soc2015/btw/head/sys/netinet/tcp_input.c soc2015/btw/head/sys/netinet/tcp_subr.c soc2015/btw/head/sys/netinet6/in6_gif.c soc2015/btw/head/sys/netinet6/in6_rmx.c soc2015/btw/head/sys/netinet6/ip6_ipsec.c soc2015/btw/head/sys/netinet6/ip6_output.c soc2015/btw/head/sys/netinet6/nd6.h soc2015/btw/head/sys/netinet6/nd6_nbr.c soc2015/btw/head/sys/netipsec/esp.h soc2015/btw/head/sys/netipsec/key.c soc2015/btw/head/sys/netipsec/keysock.c soc2015/btw/head/sys/netpfil/ipfw/dn_sched.h soc2015/btw/head/sys/netpfil/ipfw/ip_dn_private.h soc2015/btw/head/sys/netpfil/ipfw/ip_dummynet.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw2.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw_dynamic.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw_pfil.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw_sockopt.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw_table.c soc2015/btw/head/sys/netpfil/ipfw/ip_fw_table_value.c soc2015/btw/head/sys/netpfil/pf/if_pfsync.c soc2015/btw/head/sys/netpfil/pf/pf.c soc2015/btw/head/sys/netpfil/pf/pf_if.c soc2015/btw/head/sys/netpfil/pf/pf_ioctl.c soc2015/btw/head/sys/netpfil/pf/pf_norm.c soc2015/btw/head/sys/ofed/drivers/net/mlx4/en_netdev.c soc2015/btw/head/sys/ofed/drivers/net/mlx4/port.c soc2015/btw/head/sys/ofed/include/linux/bitops.h soc2015/btw/head/sys/ofed/include/linux/jiffies.h soc2015/btw/head/sys/ofed/include/linux/mlx4/device.h soc2015/btw/head/sys/ofed/include/linux/timer.h soc2015/btw/head/sys/ofed/include/linux/workqueue.h soc2015/btw/head/sys/opencrypto/cryptodeflate.c soc2015/btw/head/sys/pc98/conf/GENERIC soc2015/btw/head/sys/powerpc/conf/GENERIC soc2015/btw/head/sys/powerpc/mambo/mambo_console.c soc2015/btw/head/sys/powerpc/mpc85xx/pci_mpc85xx.c soc2015/btw/head/sys/powerpc/ofw/ofw_pcibus.c soc2015/btw/head/sys/powerpc/powerpc/db_disasm.c soc2015/btw/head/sys/powerpc/powerpc/elf32_machdep.c soc2015/btw/head/sys/powerpc/powerpc/elf64_machdep.c soc2015/btw/head/sys/powerpc/powerpc/exec_machdep.c soc2015/btw/head/sys/powerpc/pseries/phyp_console.c soc2015/btw/head/sys/powerpc/pseries/vdevice.c soc2015/btw/head/sys/sparc64/conf/GENERIC soc2015/btw/head/sys/sparc64/sparc64/db_disasm.c soc2015/btw/head/sys/sparc64/sparc64/elf_machdep.c soc2015/btw/head/sys/sparc64/sparc64/machdep.c soc2015/btw/head/sys/sys/callout.h soc2015/btw/head/sys/sys/cdefs.h soc2015/btw/head/sys/sys/elf_common.h soc2015/btw/head/sys/sys/file.h soc2015/btw/head/sys/sys/imgact.h soc2015/btw/head/sys/sys/imgact_elf.h soc2015/btw/head/sys/sys/ktr.h soc2015/btw/head/sys/sys/ktr_class.h soc2015/btw/head/sys/sys/malloc.h soc2015/btw/head/sys/sys/module.h soc2015/btw/head/sys/sys/mouse.h soc2015/btw/head/sys/sys/nvpair_impl.h soc2015/btw/head/sys/sys/param.h soc2015/btw/head/sys/sys/pmc.h soc2015/btw/head/sys/sys/proc.h soc2015/btw/head/sys/sys/sockio.h soc2015/btw/head/sys/sys/syscallsubr.h soc2015/btw/head/sys/sys/sysent.h soc2015/btw/head/sys/sys/systm.h soc2015/btw/head/sys/sys/vnode.h soc2015/btw/head/sys/ufs/ffs/ffs_softdep.c soc2015/btw/head/sys/vm/default_pager.c soc2015/btw/head/sys/vm/device_pager.c soc2015/btw/head/sys/vm/phys_pager.c soc2015/btw/head/sys/vm/sg_pager.c soc2015/btw/head/sys/vm/swap_pager.c soc2015/btw/head/sys/vm/uma.h soc2015/btw/head/sys/vm/uma_core.c soc2015/btw/head/sys/vm/vm_meter.c soc2015/btw/head/sys/vm/vm_object.c soc2015/btw/head/sys/vm/vm_page.c soc2015/btw/head/sys/vm/vm_pageout.c soc2015/btw/head/sys/vm/vm_phys.c soc2015/btw/head/sys/vm/vm_phys.h soc2015/btw/head/sys/vm/vnode_pager.c soc2015/btw/head/sys/x86/acpica/srat.c soc2015/btw/head/sys/x86/include/acpica_machdep.h (contents, props changed) soc2015/btw/head/sys/x86/include/specialreg.h soc2015/btw/head/sys/x86/x86/cpu_machdep.c soc2015/btw/head/sys/x86/x86/mca.c soc2015/btw/head/sys/x86/xen/xen_apic.c soc2015/btw/head/sys/x86/xen/xenpv.c soc2015/btw/head/sys/xen/xen-os.h soc2015/btw/head/tests/Makefile soc2015/btw/head/tests/sys/kern/Makefile soc2015/btw/head/tools/bsdbox/Makefile.base soc2015/btw/head/tools/build/Makefile soc2015/btw/head/tools/build/mk/OptionalObsoleteFiles.inc soc2015/btw/head/tools/regression/p1003_1b/main.c soc2015/btw/head/tools/regression/p1003_1b/prutil.c soc2015/btw/head/tools/tools/ath/athaggrstats/Makefile soc2015/btw/head/tools/tools/ath/athstats/Makefile soc2015/btw/head/tools/tools/mwl/mwlstats/Makefile soc2015/btw/head/tools/tools/net80211/wlanstats/Makefile soc2015/btw/head/tools/tools/npe/npestats/Makefile soc2015/btw/head/usr.bin/Makefile soc2015/btw/head/usr.bin/bmake/Makefile soc2015/btw/head/usr.bin/bmake/unit-tests/Makefile soc2015/btw/head/usr.bin/checknr/checknr.c soc2015/btw/head/usr.bin/col/col.1 soc2015/btw/head/usr.bin/col/col.c soc2015/btw/head/usr.bin/ctlstat/ctlstat.8 soc2015/btw/head/usr.bin/elfdump/elfdump.c soc2015/btw/head/usr.bin/kdump/Makefile soc2015/btw/head/usr.bin/kdump/kdump.c soc2015/btw/head/usr.bin/m4/extern.h soc2015/btw/head/usr.bin/m4/gnum4.c soc2015/btw/head/usr.bin/m4/look.c soc2015/btw/head/usr.bin/m4/m4.1 soc2015/btw/head/usr.bin/m4/main.c soc2015/btw/head/usr.bin/m4/mdef.h soc2015/btw/head/usr.bin/m4/misc.c soc2015/btw/head/usr.bin/m4/parser.y soc2015/btw/head/usr.bin/man/man.sh soc2015/btw/head/usr.bin/mandoc/Makefile soc2015/btw/head/usr.bin/netstat/if.c soc2015/btw/head/usr.bin/netstat/route.c soc2015/btw/head/usr.bin/procstat/ (props changed) soc2015/btw/head/usr.bin/procstat/procstat.1 soc2015/btw/head/usr.bin/rctl/rctl.8 soc2015/btw/head/usr.bin/soelim/soelim.1 soc2015/btw/head/usr.bin/soelim/soelim.c soc2015/btw/head/usr.bin/ssh-copy-id/ssh-copy-id.sh soc2015/btw/head/usr.bin/tar/Makefile soc2015/btw/head/usr.bin/time/time.c soc2015/btw/head/usr.bin/vtfontcvt/vtfontcvt.c soc2015/btw/head/usr.bin/whois/whois.1 soc2015/btw/head/usr.bin/whois/whois.c soc2015/btw/head/usr.sbin/acpi/acpidb/acpidb.c soc2015/btw/head/usr.sbin/acpi/iasl/Makefile soc2015/btw/head/usr.sbin/bhyve/ (props changed) soc2015/btw/head/usr.sbin/bhyve/bhyve.8 soc2015/btw/head/usr.sbin/bhyve/block_if.c soc2015/btw/head/usr.sbin/bhyve/inout.c soc2015/btw/head/usr.sbin/bhyve/pci_ahci.c soc2015/btw/head/usr.sbin/bhyve/pci_hostbridge.c soc2015/btw/head/usr.sbin/bhyve/pci_virtio_block.c soc2015/btw/head/usr.sbin/bhyve/pci_virtio_net.c soc2015/btw/head/usr.sbin/bhyve/pci_virtio_rnd.c soc2015/btw/head/usr.sbin/bhyve/task_switch.c soc2015/btw/head/usr.sbin/bhyve/virtio.c soc2015/btw/head/usr.sbin/bhyvectl/ (props changed) soc2015/btw/head/usr.sbin/bhyvectl/bhyvectl.c soc2015/btw/head/usr.sbin/bhyveload/ (props changed) soc2015/btw/head/usr.sbin/bhyveload/bhyveload.c soc2015/btw/head/usr.sbin/bluetooth/bthidd/Makefile soc2015/btw/head/usr.sbin/bsdinstall/scripts/zfsboot soc2015/btw/head/usr.sbin/crunch/crunchide/exec_elf32.c soc2015/btw/head/usr.sbin/ctladm/ctladm.8 soc2015/btw/head/usr.sbin/ctld/ctld.8 soc2015/btw/head/usr.sbin/iostat/iostat.8 soc2015/btw/head/usr.sbin/kbdmap/kbdmap.c soc2015/btw/head/usr.sbin/mountd/mountd.c soc2015/btw/head/usr.sbin/ntp/Makefile.inc soc2015/btw/head/usr.sbin/ntp/config.h soc2015/btw/head/usr.sbin/ntp/ntp-keygen/Makefile soc2015/btw/head/usr.sbin/ntp/ntpd/Makefile soc2015/btw/head/usr.sbin/ntp/ntpdate/Makefile soc2015/btw/head/usr.sbin/ntp/ntpdc/Makefile soc2015/btw/head/usr.sbin/ntp/ntpq/Makefile soc2015/btw/head/usr.sbin/ntp/sntp/Makefile soc2015/btw/head/usr.sbin/pmcstat/pmcstat.8 soc2015/btw/head/usr.sbin/pmcstat/pmcstat.c soc2015/btw/head/usr.sbin/pmcstat/pmcstat_log.c soc2015/btw/head/usr.sbin/pw/Makefile soc2015/btw/head/usr.sbin/pw/fileupd.c soc2015/btw/head/usr.sbin/pw/grupd.c soc2015/btw/head/usr.sbin/pw/pw_conf.c soc2015/btw/head/usr.sbin/pw/pw_nis.c soc2015/btw/head/usr.sbin/pw/pw_user.c soc2015/btw/head/usr.sbin/pw/pwupd.c soc2015/btw/head/usr.sbin/pw/pwupd.h soc2015/btw/head/usr.sbin/syslogd/pathnames.h soc2015/btw/head/usr.sbin/uefisign/pe.c Modified: soc2015/btw/head/Makefile.inc1 ============================================================================== --- soc2015/btw/head/Makefile.inc1 Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/Makefile.inc1 Mon Jun 1 01:20:07 2015 (r286497) @@ -1297,7 +1297,9 @@ _lex= usr.bin/lex .endif -.if ${BOOTSTRAPPING} < 1001507 +# r277259 crunchide: Correct 64-bit section header offset +# r281674 crunchide: always include both 32- and 64-bit ELF support +.if ${BOOTSTRAPPING} < 1100071 _crunch= usr.sbin/crunch .endif @@ -1361,6 +1363,9 @@ .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} .endif +# Rebuild up-to-date libmd for xinstall +${_bt}-usr.bin/xinstall: ${_bt}-lib/libmd + bootstrap-tools: .PHONY # Please document (add comment) why something is in 'bootstrap-tools'. @@ -1463,11 +1468,6 @@ _btxld= usr.sbin/btxld .endif .endif -.if ${TARGET_ARCH} != ${MACHINE_ARCH} -.if ${MK_RESCUE} != "no" -_crunchide= usr.sbin/crunch/crunchide -.endif -.endif # If we're given an XAS, don't build binutils. .if ${XAS:M/*} == "" @@ -1502,6 +1502,9 @@ _cc= gnu/usr.bin/cc .endif .endif +.if ${MK_USB} != "no" +_usb_tools= sys/boot/usb/tools +.endif cross-tools: .MAKE .for _tool in \ @@ -1512,7 +1515,7 @@ ${_cc} \ ${_btxld} \ ${_crunchide} \ - sys/boot/usb/tools + ${_usb_tools} ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ @@ -1657,13 +1660,7 @@ # all shared libraries for ELF. # _startup_libs= gnu/lib/csu -.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf) -_startup_libs+= lib/csu/${MACHINE_ARCH}-elf -.elif exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}) -_startup_libs+= lib/csu/${MACHINE_ARCH} -.else -_startup_libs+= lib/csu/${MACHINE_CPUARCH} -.endif +_startup_libs+= lib/csu _startup_libs+= gnu/lib/libgcc _startup_libs+= lib/libcompiler_rt _startup_libs+= lib/libc @@ -1682,7 +1679,7 @@ ${_kerberos5_lib_libhdb} \ ${_kerberos5_lib_libheimbase} \ ${_kerberos5_lib_libheimntlm} \ - ${_kerberos5_lib_libheimsqlite} \ + ${_libsqlite3} \ ${_kerberos5_lib_libheimipcc} \ ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \ ${_kerberos5_lib_libroken} \ @@ -1759,6 +1756,13 @@ cddl/lib/libzfs__L: lib/libgeom__L cddl/lib/libctf__L: lib/libz__L .endif +# cddl/lib/libdtrace requires lib/libproc and lib/librtld_db; it's only built +# on select architectures though (see cddl/lib/Makefile) +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" || \ + ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "powerpc" || \ + ${MACHINE_CPUARCH} == "arm" +_prebuild_libs+= lib/libproc lib/librtld_db +.endif .if ${MK_CRYPT} != "no" .if ${MK_OPENSSL} != "no" @@ -1789,7 +1793,7 @@ kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \ kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \ - kerberos5/lib/libwind__L kerberos5/lib/libheimsqlite__L + kerberos5/lib/libwind__L lib/libsqlite3__L kerberos5/lib/libheimntlm__L: secure/lib/libcrypto__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libroken__L lib/libcom_err__L kerberos5/lib/libhx509__L: kerberos5/lib/libasn1__L lib/libcom_err__L \ @@ -1802,7 +1806,7 @@ kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L kerberos5/lib/libheimbase__L: lib/libthr__L kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L -kerberos5/lib/libheimsqlite__L: lib/libthr__L +lib/libsqlite3__L: lib/libthr__L .endif .if ${MK_GSSAPI} != "no" @@ -1818,7 +1822,7 @@ _kerberos5_lib_libhx509= kerberos5/lib/libhx509 _kerberos5_lib_libroken= kerberos5/lib/libroken _kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm -_kerberos5_lib_libheimsqlite= kerberos5/lib/libheimsqlite +_libsqlite3= lib/libsqlite3 _kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc _kerberos5_lib_libwind= kerberos5/lib/libwind _libcom_err= lib/libcom_err @@ -1832,6 +1836,16 @@ lib/libradius__L: lib/libmd__L .endif +lib/libproc__L: \ + ${_cddl_lib_libctf:D${_cddl_lib_libctf}__L} lib/libelf__L lib/librtld_db__L lib/libutil__L +.if ${MK_CXX} != "no" +.if ${MK_LIBCPLUSPLUS} != "no" +lib/libproc__L: lib/libcxxrt__L +.else # This implies MK_GNUCXX != "no"; see lib/libproc +lib/libproc__L: gnu/lib/libsupc++__L +.endif +.endif + gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L .for _lib in ${_prereq_libs} Modified: soc2015/btw/head/ObsoleteFiles.inc ============================================================================== --- soc2015/btw/head/ObsoleteFiles.inc Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/ObsoleteFiles.inc Mon Jun 1 01:20:07 2015 (r286497) @@ -38,6 +38,83 @@ # xargs -n1 | sort | uniq -d; # done +# 20150525: new clang import which bumps version from 3.6.0 to 3.6.1. +OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h +OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h +OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_pclmul.h +OLD_FILES+=usr/lib/clang/3.6.0/include/adxintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/altivec.h +OLD_FILES+=usr/lib/clang/3.6.0/include/ammintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/arm_acle.h +OLD_FILES+=usr/lib/clang/3.6.0/include/arm_neon.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx2intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512bwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512erintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512fintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlbwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avxintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/bmi2intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/bmiintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/cpuid.h +OLD_FILES+=usr/lib/clang/3.6.0/include/emmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/f16cintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/fma4intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/fmaintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/ia32intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/immintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/lzcntintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mm3dnow.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mm_malloc.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/module.modulemap +OLD_FILES+=usr/lib/clang/3.6.0/include/nmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/pmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/popcntintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/prfchwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/rdseedintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/rtmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/shaintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/smmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/tbmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/tmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/wmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/x86intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/xmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/xopintrin.h +OLD_DIRS+=usr/lib/clang/3.6.0/include +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-arm.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a +OLD_DIRS+=usr/lib/clang/3.6.0/lib/freebsd +OLD_DIRS+=usr/lib/clang/3.6.0/lib +OLD_DIRS+=usr/lib/clang/3.6.0 +# 20150521 +OLD_FILES+=usr/bin/demandoc +OLD_FILES+=usr/share/man/man1/demandoc.1.gz +OLD_FILES+=usr/share/man/man3/mandoc.3.gz +OLD_FILES+=usr/share/man/man3/mandoc_headers.3.gz +# 20150520 +OLD_FILES+=usr/lib/libheimsqlite.a +OLD_FILES+=usr/lib/libheimsqlite.so +OLD_LIBS+=usr/lib/libheimsqlite.so.11 +OLD_FILES+=usr/lib/libheimsqlite_p.a +OLD_FILES+=usr/lib32/libheimsqlite.a +OLD_FILES+=usr/lib32/libheimsqlite.so +OLD_LIBS+=usr/lib32/libheimsqlite.so.11 +OLD_FILES+=usr/lib32/libheimsqlite_p.a +# 20150506 +OLD_FILES+=usr/share/man/man9/NDHASGIANT.9.gz # 20150504 OLD_LIBS+=usr/lib32/private/libatf-c++.so.2 OLD_LIBS+=usr/lib32/private/libbsdstat.so.1 @@ -430,10 +507,6 @@ OLD_FILES+=usr/lib/debug/usr/lib32/private # 20141015: OpenSSL 1.0.1j import OLD_FILES+=usr/share/openssl/man/man3/CMS_sign_add1_signer.3.gz -.if ${MK_GCC} == "no" -# 20141009: gperf disabled by default -OLD_FILES+=usr/bin/gperf -.endif # 20140922: sleepq_calc_signal_retval.9 and sleepq_catch_signals.9 removed OLD_FILES+=usr/share/man/man9/sleepq_calc_signal_retval.9.gz OLD_FILES+=usr/share/man/man9/sleepq_catch_signals.9.gz @@ -450,6 +523,33 @@ OLD_FILES+=usr/bin/otp-sha OLD_FILES+=usr/share/man/man1/otp-sha.1.gz # 20140807: Remove private lib files that should not be installed. +OLD_FILES+=usr/lib32/private/libatf-c.a +OLD_FILES+=usr/lib32/private/libatf-c.so +OLD_FILES+=usr/lib32/private/libatf-c_p.a +OLD_FILES+=usr/lib32/private/libatf-c++.a +OLD_FILES+=usr/lib32/private/libatf-c++.so +OLD_FILES+=usr/lib32/private/libatf-c++_p.a +OLD_FILES+=usr/lib32/private/libbsdstat.a +OLD_FILES+=usr/lib32/private/libbsdstat.so +OLD_FILES+=usr/lib32/private/libbsdstat_p.a +OLD_FILES+=usr/lib32/private/libheimipcc.a +OLD_FILES+=usr/lib32/private/libheimipcc.so +OLD_FILES+=usr/lib32/private/libheimipcc_p.a +OLD_FILES+=usr/lib32/private/libheimipcs.a +OLD_FILES+=usr/lib32/private/libheimipcs.so +OLD_FILES+=usr/lib32/private/libheimipcs_p.a +OLD_FILES+=usr/lib32/private/libldns.a +OLD_FILES+=usr/lib32/private/libldns.so +OLD_FILES+=usr/lib32/private/libldns_p.a +OLD_FILES+=usr/lib32/private/libssh.a +OLD_FILES+=usr/lib32/private/libssh.so +OLD_FILES+=usr/lib32/private/libssh_p.a +OLD_FILES+=usr/lib32/private/libunbound.a +OLD_FILES+=usr/lib32/private/libunbound.so +OLD_FILES+=usr/lib32/private/libunbound_p.a +OLD_FILES+=usr/lib32/private/libucl.a +OLD_FILES+=usr/lib32/private/libucl.so +OLD_FILES+=usr/lib32/private/libucl_p.a OLD_FILES+=usr/lib/private/libatf-c.a OLD_FILES+=usr/lib/private/libatf-c.so OLD_FILES+=usr/lib/private/libatf-c_p.a @@ -470,7 +570,7 @@ OLD_FILES+=usr/lib/private/libldns_p.a OLD_FILES+=usr/lib/private/libssh.a OLD_FILES+=usr/lib/private/libssh.so -OLD_FILES+=usr/lib/private/libssh.p.a +OLD_FILES+=usr/lib/private/libssh_p.a OLD_FILES+=usr/lib/private/libunbound.a OLD_FILES+=usr/lib/private/libunbound.so OLD_FILES+=usr/lib/private/libunbound_p.a @@ -622,8 +722,12 @@ # 20140223: Remove libyaml OLD_FILES+=usr/lib/private/libyaml.a OLD_FILES+=usr/lib/private/libyaml.so -OLD_FILES+=usr/lib/private/libyaml.so.1 +OLD_LIBS+=usr/lib/private/libyaml.so.1 OLD_FILES+=usr/lib/private/libyaml_p.a +OLD_FILES+=usr/lib32/private/libyaml.a +OLD_FILES+=usr/lib32/private/libyaml.so +OLD_LIBS+=usr/lib32/private/libyaml.so.1 +OLD_FILES+=usr/lib32/private/libyaml_p.a # 20140216: new clang import which bumps version from 3.3 to 3.4. OLD_FILES+=usr/bin/llvm-prof OLD_FILES+=usr/bin/llvm-ranlib Modified: soc2015/btw/head/UPDATING ============================================================================== --- soc2015/btw/head/UPDATING Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/UPDATING Mon Jun 1 01:20:07 2015 (r286497) @@ -31,6 +31,24 @@ disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20150525: + Clang and llvm have been upgraded to 3.6.1 release. Please see the + 20141231 entry below for information about prerequisites and upgrading, + if you are not already using 3.5.0 or higher. + +20150521: + TI platform code switched to using vendor DTS files and this update + may break existing systems running on Beaglebone, Beaglebone Black, + and Pandaboard: + + - dtb files should be regenerated/reinstalled. Filenames are the + same but content is different now + - GPIO addressing was changed, now each GPIO bank (32 pins per bank) + has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old + addressing scheme is now pin 25 on /dev/gpioc3. + - Pandaboard: /etc/ttys should be updated, serial console device is + now /dev/ttyu2, not /dev/ttyu0 + 20150501: soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim. If you need the GNU extension from groff soelim(1), install groff Modified: soc2015/btw/head/bin/cp/cp.c ============================================================================== --- soc2015/btw/head/bin/cp/cp.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/cp/cp.c Mon Jun 1 01:20:07 2015 (r286497) @@ -90,7 +90,6 @@ enum op { FILE_TO_FILE, FILE_TO_DIR, DIR_TO_DNE }; static int copy(char *[], enum op, int); -static int mastercmp(const FTSENT * const *, const FTSENT * const *); static void siginfo(int __unused); int @@ -274,7 +273,7 @@ mask = ~umask(0777); umask(~mask); - if ((ftsp = fts_open(argv, fts_options, mastercmp)) == NULL) + if ((ftsp = fts_open(argv, fts_options, NULL)) == NULL) err(1, "fts_open"); for (badcp = rval = 0; (curr = fts_read(ftsp)) != NULL; badcp = 0) { switch (curr->fts_info) { @@ -488,32 +487,6 @@ return (rval); } -/* - * mastercmp -- - * The comparison function for the copy order. The order is to copy - * non-directory files before directory files. The reason for this - * is because files tend to be in the same cylinder group as their - * parent directory, whereas directories tend not to be. Copying the - * files first reduces seeking. - */ -static int -mastercmp(const FTSENT * const *a, const FTSENT * const *b) -{ - int a_info, b_info; - - a_info = (*a)->fts_info; - if (a_info == FTS_ERR || a_info == FTS_NS || a_info == FTS_DNR) - return (0); - b_info = (*b)->fts_info; - if (b_info == FTS_ERR || b_info == FTS_NS || b_info == FTS_DNR) - return (0); - if (a_info == FTS_D) - return (-1); - if (b_info == FTS_D) - return (1); - return (0); -} - static void siginfo(int sig __unused) { Modified: soc2015/btw/head/bin/date/date.1 ============================================================================== --- soc2015/btw/head/bin/date/date.1 Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/date/date.1 Mon Jun 1 01:20:07 2015 (r286497) @@ -32,7 +32,7 @@ .\" @(#)date.1 8.3 (Berkeley) 4/28/95 .\" $FreeBSD$ .\" -.Dd April 26, 2014 +.Dd May 7, 2015 .Dt DATE 1 .Os .Sh NAME @@ -41,7 +41,7 @@ .Sh SYNOPSIS .Nm .Op Fl jRu -.Op Fl r Ar seconds +.Op Fl r Ar seconds | Ar filename .Oo .Fl v .Sm off @@ -150,6 +150,9 @@ see .Xr time 3 ) , and can be specified in decimal, octal, or hex. +.It Fl r Ar filename +Print the date and time of the last modification of +.Ar filename . .It Fl t Ar minutes_west Set the system's value for minutes west of .Tn GMT . Modified: soc2015/btw/head/bin/date/date.c ============================================================================== --- soc2015/btw/head/bin/date/date.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/date/date.c Mon Jun 1 01:20:07 2015 (r286497) @@ -44,6 +44,7 @@ #include #include +#include #include #include @@ -85,6 +86,7 @@ struct vary *v; const struct vary *badv; struct tm lt; + struct stat sb; v = NULL; fmt = NULL; @@ -116,8 +118,12 @@ case 'r': /* user specified seconds */ rflag = 1; tval = strtoq(optarg, &tmp, 0); - if (*tmp != 0) - usage(); + if (*tmp != 0) { + if (stat(optarg, &sb) == 0) + tval = sb.st_mtim.tv_sec; + else + usage(); + } break; case 't': /* minutes west of UTC */ /* error check; don't allow "PST" */ Modified: soc2015/btw/head/bin/pax/ar_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/ar_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/ar_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -48,7 +48,6 @@ #include #include #include -#include #include "pax.h" #include "extern.h" Modified: soc2015/btw/head/bin/pax/buf_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/buf_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/buf_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -44,7 +44,6 @@ #include #include #include -#include #include #include "pax.h" #include "extern.h" Modified: soc2015/btw/head/bin/pax/cache.c ============================================================================== --- soc2015/btw/head/bin/pax/cache.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/cache.c Mon Jun 1 01:20:07 2015 (r286497) @@ -45,7 +45,6 @@ #include #include #include -#include #include #include "pax.h" #include "cache.h" Modified: soc2015/btw/head/bin/pax/cpio.c ============================================================================== --- soc2015/btw/head/bin/pax/cpio.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/cpio.c Mon Jun 1 01:20:07 2015 (r286497) @@ -45,8 +45,6 @@ #include #include #include -#include -#include #include "pax.h" #include "cpio.h" #include "extern.h" Modified: soc2015/btw/head/bin/pax/file_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/file_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/file_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -48,7 +48,6 @@ #include #include #include -#include #include "pax.h" #include "options.h" #include "extern.h" Modified: soc2015/btw/head/bin/pax/gen_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/gen_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/gen_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -45,8 +45,6 @@ #include #include #include -#include -#include #include #include "pax.h" #include "extern.h" Modified: soc2015/btw/head/bin/pax/getoldopt.c ============================================================================== --- soc2015/btw/head/bin/pax/getoldopt.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/getoldopt.c Mon Jun 1 01:20:07 2015 (r286497) @@ -19,8 +19,7 @@ #include #include -#include "pax.h" -#include "extern.h" +int getoldopt(int, char **, const char *); int getoldopt(int argc, char **argv, const char *optstring) Modified: soc2015/btw/head/bin/pax/pat_rep.c ============================================================================== --- soc2015/btw/head/bin/pax/pat_rep.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/pat_rep.c Mon Jun 1 01:20:07 2015 (r286497) @@ -43,9 +43,7 @@ #include #include #include -#include #include -#include #ifdef NET2_REGEX #include #else Modified: soc2015/btw/head/bin/pax/pax.c ============================================================================== --- soc2015/btw/head/bin/pax/pax.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/pax.c Mon Jun 1 01:20:07 2015 (r286497) @@ -58,7 +58,6 @@ #include #include #include -#include #include "pax.h" #include "extern.h" static int gen_init(void); Modified: soc2015/btw/head/bin/pax/sel_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/sel_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/sel_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -47,7 +47,6 @@ #include #include #include -#include #include #include "pax.h" #include "sel_subs.h" Modified: soc2015/btw/head/bin/pax/tar.c ============================================================================== --- soc2015/btw/head/bin/pax/tar.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/tar.c Mon Jun 1 01:20:07 2015 (r286497) @@ -44,8 +44,6 @@ #include #include #include -#include -#include #include "pax.h" #include "extern.h" #include "tar.h" Modified: soc2015/btw/head/bin/pax/tty_subs.c ============================================================================== --- soc2015/btw/head/bin/pax/tty_subs.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/pax/tty_subs.c Mon Jun 1 01:20:07 2015 (r286497) @@ -44,7 +44,6 @@ #include #include #include -#include #include #include "pax.h" #include "extern.h" Modified: soc2015/btw/head/bin/ps/Makefile ============================================================================== --- soc2015/btw/head/bin/ps/Makefile Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/ps/Makefile Mon Jun 1 01:20:07 2015 (r286497) @@ -11,6 +11,6 @@ # on large systems. # CFLAGS+=-DLAZY_PS -LIBADD= m kvm jail +LIBADD= m kvm jail xo .include Modified: soc2015/btw/head/bin/ps/keyword.c ============================================================================== --- soc2015/btw/head/bin/ps/keyword.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/ps/keyword.c Mon Jun 1 01:20:07 2015 (r286497) @@ -47,6 +47,7 @@ #include #include #include +#include #include "ps.h" @@ -64,116 +65,170 @@ /* PLEASE KEEP THE TABLE BELOW SORTED ALPHABETICALLY!!! */ static VAR var[] = { - {"%cpu", "%CPU", NULL, 0, pcpu, 0, CHAR, NULL, 0}, - {"%mem", "%MEM", NULL, 0, pmem, 0, CHAR, NULL, 0}, - {"acflag", "ACFLG", NULL, 0, kvar, KOFF(ki_acflag), USHORT, "x", 0}, - {"acflg", "", "acflag", 0, NULL, 0, CHAR, NULL, 0}, - {"args", "COMMAND", NULL, COMM|LJUST|USER, arguments, 0, - CHAR, NULL, 0}, - {"blocked", "", "sigmask", 0, NULL, 0, CHAR, NULL, 0}, - {"caught", "", "sigcatch", 0, NULL, 0, CHAR, NULL, 0}, - {"class", "CLASS", NULL, LJUST, loginclass, 0, CHAR, NULL, 0}, - {"comm", "COMMAND", NULL, LJUST, ucomm, 0, CHAR, NULL, 0}, - {"command", "COMMAND", NULL, COMM|LJUST|USER, command, 0, - CHAR, NULL, 0}, - {"cow", "COW", NULL, 0, kvar, KOFF(ki_cow), UINT, "u", 0}, - {"cpu", "CPU", NULL, 0, kvar, KOFF(ki_estcpu), UINT, "d", 0}, - {"cputime", "", "time", 0, NULL, 0, CHAR, NULL, 0}, - {"dsiz", "DSIZ", NULL, 0, kvar, KOFF(ki_dsize), PGTOK, "ld", 0}, - {"egid", "", "gid", 0, NULL, 0, CHAR, NULL, 0}, - {"egroup", "", "group", 0, NULL, 0, CHAR, NULL, 0}, - {"emul", "EMUL", NULL, LJUST, emulname, 0, CHAR, NULL, 0}, - {"etime", "ELAPSED", NULL, USER, elapsed, 0, CHAR, NULL, 0}, - {"etimes", "ELAPSED", NULL, USER, elapseds, 0, CHAR, NULL, 0}, - {"euid", "", "uid", 0, NULL, 0, CHAR, NULL, 0}, - {"f", "F", NULL, 0, kvar, KOFF(ki_flag), INT, "x", 0}, - {"f2", "F2", NULL, 0, kvar, KOFF(ki_flag2), INT, "08x", 0}, - {"fib", "FIB", NULL, 0, kvar, KOFF(ki_fibnum), INT, "d", 0}, - {"flags", "", "f", 0, NULL, 0, CHAR, NULL, 0}, - {"flags2", "", "f2", 0, NULL, 0, CHAR, NULL, 0}, - {"gid", "GID", NULL, 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0}, - {"group", "GROUP", NULL, LJUST, egroupname, 0, CHAR, NULL, 0}, - {"ignored", "", "sigignore", 0, NULL, 0, CHAR, NULL, 0}, - {"inblk", "INBLK", NULL, USER, rvar, ROFF(ru_inblock), LONG, "ld", 0}, - {"inblock", "", "inblk", 0, NULL, 0, CHAR, NULL, 0}, - {"jid", "JID", NULL, 0, kvar, KOFF(ki_jid), INT, "d", 0}, - {"jobc", "JOBC", NULL, 0, kvar, KOFF(ki_jobc), SHORT, "d", 0}, - {"ktrace", "KTRACE", NULL, 0, kvar, KOFF(ki_traceflag), INT, "x", 0}, - {"label", "LABEL", NULL, LJUST, label, 0, CHAR, NULL, 0}, - {"lim", "LIM", NULL, 0, maxrss, 0, CHAR, NULL, 0}, - {"lockname", "LOCK", NULL, LJUST, lockname, 0, CHAR, NULL, 0}, - {"login", "LOGIN", NULL, LJUST, logname, 0, CHAR, NULL, 0}, - {"logname", "", "login", 0, NULL, 0, CHAR, NULL, 0}, - {"lstart", "STARTED", NULL, LJUST|USER, lstarted, 0, CHAR, NULL, 0}, - {"lwp", "LWP", NULL, 0, kvar, KOFF(ki_tid), UINT, LWPFMT, 0}, - {"majflt", "MAJFLT", NULL, USER, rvar, ROFF(ru_majflt), LONG, "ld", 0}, - {"minflt", "MINFLT", NULL, USER, rvar, ROFF(ru_minflt), LONG, "ld", 0}, - {"msgrcv", "MSGRCV", NULL, USER, rvar, ROFF(ru_msgrcv), LONG, "ld", 0}, - {"msgsnd", "MSGSND", NULL, USER, rvar, ROFF(ru_msgsnd), LONG, "ld", 0}, - {"mwchan", "MWCHAN", NULL, LJUST, mwchan, 0, CHAR, NULL, 0}, - {"ni", "", "nice", 0, NULL, 0, CHAR, NULL, 0}, - {"nice", "NI", NULL, 0, kvar, KOFF(ki_nice), CHAR, "d", 0}, - {"nivcsw", "NIVCSW", NULL, USER, rvar, ROFF(ru_nivcsw), LONG, "ld", 0}, - {"nlwp", "NLWP", NULL, 0, kvar, KOFF(ki_numthreads), UINT, NLWPFMT, 0}, - {"nsignals", "", "nsigs", 0, NULL, 0, CHAR, NULL, 0}, - {"nsigs", "NSIGS", NULL, USER, rvar, ROFF(ru_nsignals), LONG, "ld", 0}, - {"nswap", "NSWAP", NULL, USER, rvar, ROFF(ru_nswap), LONG, "ld", 0}, - {"nvcsw", "NVCSW", NULL, USER, rvar, ROFF(ru_nvcsw), LONG, "ld", 0}, - {"nwchan", "NWCHAN", NULL, LJUST, nwchan, 0, CHAR, NULL, 0}, - {"oublk", "OUBLK", NULL, USER, rvar, ROFF(ru_oublock), LONG, "ld", 0}, - {"oublock", "", "oublk", 0, NULL, 0, CHAR, NULL, 0}, - {"paddr", "PADDR", NULL, 0, kvar, KOFF(ki_paddr), KPTR, "lx", 0}, - {"pagein", "PAGEIN", NULL, USER, pagein, 0, CHAR, NULL, 0}, - {"pcpu", "", "%cpu", 0, NULL, 0, CHAR, NULL, 0}, - {"pending", "", "sig", 0, NULL, 0, CHAR, NULL, 0}, - {"pgid", "PGID", NULL, 0, kvar, KOFF(ki_pgid), UINT, PIDFMT, 0}, - {"pid", "PID", NULL, 0, kvar, KOFF(ki_pid), UINT, PIDFMT, 0}, - {"pmem", "", "%mem", 0, NULL, 0, CHAR, NULL, 0}, - {"ppid", "PPID", NULL, 0, kvar, KOFF(ki_ppid), UINT, PIDFMT, 0}, - {"pri", "PRI", NULL, 0, pri, 0, CHAR, NULL, 0}, - {"re", "RE", NULL, INF127, kvar, KOFF(ki_swtime), UINT, "d", 0}, - {"rgid", "RGID", NULL, 0, kvar, KOFF(ki_rgid), UINT, UIDFMT, 0}, - {"rgroup", "RGROUP", NULL, LJUST, rgroupname, 0, CHAR, NULL, 0}, - {"rss", "RSS", NULL, 0, kvar, KOFF(ki_rssize), PGTOK, "ld", 0}, - {"rtprio", "RTPRIO", NULL, 0, priorityr, KOFF(ki_pri), CHAR, NULL, 0}, - {"ruid", "RUID", NULL, 0, kvar, KOFF(ki_ruid), UINT, UIDFMT, 0}, - {"ruser", "RUSER", NULL, LJUST, runame, 0, CHAR, NULL, 0}, - {"sid", "SID", NULL, 0, kvar, KOFF(ki_sid), UINT, PIDFMT, 0}, - {"sig", "PENDING", NULL, 0, kvar, KOFF(ki_siglist), INT, "x", 0}, - {"sigcatch", "CAUGHT", NULL, 0, kvar, KOFF(ki_sigcatch), UINT, "x", 0}, - {"sigignore", "IGNORED", NULL, 0, kvar, KOFF(ki_sigignore), - UINT, "x", 0}, - {"sigmask", "BLOCKED", NULL, 0, kvar, KOFF(ki_sigmask), UINT, "x", 0}, - {"sl", "SL", NULL, INF127, kvar, KOFF(ki_slptime), UINT, "d", 0}, - {"ssiz", "SSIZ", NULL, 0, kvar, KOFF(ki_ssize), PGTOK, "ld", 0}, - {"start", "STARTED", NULL, LJUST|USER, started, 0, CHAR, NULL, 0}, - {"stat", "", "state", 0, NULL, 0, CHAR, NULL, 0}, - {"state", "STAT", NULL, LJUST, state, 0, CHAR, NULL, 0}, - {"svgid", "SVGID", NULL, 0, kvar, KOFF(ki_svgid), UINT, UIDFMT, 0}, - {"svuid", "SVUID", NULL, 0, kvar, KOFF(ki_svuid), UINT, UIDFMT, 0}, - {"systime", "SYSTIME", NULL, USER, systime, 0, CHAR, NULL, 0}, - {"tdaddr", "TDADDR", NULL, 0, kvar, KOFF(ki_tdaddr), KPTR, "lx", 0}, - {"tdev", "TDEV", NULL, 0, tdev, 0, CHAR, NULL, 0}, - {"tdnam", "TDNAM", NULL, LJUST, tdnam, 0, CHAR, NULL, 0}, - {"time", "TIME", NULL, USER, cputime, 0, CHAR, NULL, 0}, - {"tpgid", "TPGID", NULL, 0, kvar, KOFF(ki_tpgid), UINT, PIDFMT, 0}, - {"tracer", "TRACER", NULL, 0, kvar, KOFF(ki_tracer), UINT, PIDFMT, 0}, - {"tsid", "TSID", NULL, 0, kvar, KOFF(ki_tsid), UINT, PIDFMT, 0}, - {"tsiz", "TSIZ", NULL, 0, kvar, KOFF(ki_tsize), PGTOK, "ld", 0}, - {"tt", "TT ", NULL, 0, tname, 0, CHAR, NULL, 0}, - {"tty", "TTY", NULL, LJUST, longtname, 0, CHAR, NULL, 0}, - {"ucomm", "UCOMM", NULL, LJUST, ucomm, 0, CHAR, NULL, 0}, - {"uid", "UID", NULL, 0, kvar, KOFF(ki_uid), UINT, UIDFMT, 0}, - {"upr", "UPR", NULL, 0, upr, 0, CHAR, NULL, 0}, - {"uprocp", "UPROCP", NULL, 0, kvar, KOFF(ki_paddr), KPTR, "lx", 0}, - {"user", "USER", NULL, LJUST, uname, 0, CHAR, NULL, 0}, - {"usertime", "USERTIME", NULL, USER, usertime, 0, CHAR, NULL, 0}, - {"usrpri", "", "upr", 0, NULL, 0, CHAR, NULL, 0}, - {"vsize", "", "vsz", 0, NULL, 0, CHAR, NULL, 0}, - {"vsz", "VSZ", NULL, 0, vsize, 0, CHAR, NULL, 0}, - {"wchan", "WCHAN", NULL, LJUST, wchan, 0, CHAR, NULL, 0}, - {"xstat", "XSTAT", NULL, 0, kvar, KOFF(ki_xstat), USHORT, "x", 0}, - {"", NULL, NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"%cpu", "%CPU", NULL, "percent-cpu", 0, pcpu, 0, CHAR, NULL, 0}, + {"%mem", "%MEM", NULL, "percent-memory", 0, pmem, 0, CHAR, NULL, 0}, + {"acflag", "ACFLG", NULL, "accounting-flag", 0, kvar, KOFF(ki_acflag), + USHORT, "x", 0}, + {"acflg", "", "acflag", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"args", "COMMAND", NULL, "arguments", COMM|LJUST|USER, arguments, 0, + CHAR, NULL, 0}, + {"blocked", "", "sigmask", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"caught", "", "sigcatch", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"class", "CLASS", NULL, "login-class", LJUST, loginclass, 0, CHAR, + NULL, 0}, + {"comm", "COMMAND", NULL, "command", LJUST, ucomm, 0, CHAR, NULL, 0}, + {"command", "COMMAND", NULL, "command", COMM|LJUST|USER, command, 0, + CHAR, NULL, 0}, + {"cow", "COW", NULL, "copy-on-write-faults", 0, kvar, KOFF(ki_cow), + UINT, "u", 0}, + {"cpu", "CPU", NULL, "cpu-usage", 0, kvar, KOFF(ki_estcpu), UINT, "d", + 0}, + {"cputime", "", "time", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"dsiz", "DSIZ", NULL, "data-size", 0, kvar, KOFF(ki_dsize), PGTOK, + "ld", 0}, + {"egid", "", "gid", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"egroup", "", "group", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"emul", "EMUL", NULL, "emulation-envirnment", LJUST, emulname, 0, + CHAR, NULL, 0}, + {"etime", "ELAPSED", NULL, "elapsed-time", USER, elapsed, 0, CHAR, + NULL, 0}, + {"etimes", "ELAPSED", NULL, "elapsed-times", USER, elapseds, 0, CHAR, + NULL, 0}, + {"euid", "", "uid", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"f", "F", NULL, "flags", 0, kvar, KOFF(ki_flag), INT, "x", 0}, + {"f2", "F2", NULL, "flags2", 0, kvar, KOFF(ki_flag2), INT, "08x", 0}, + {"fib", "FIB", NULL, "fib", 0, kvar, KOFF(ki_fibnum), INT, "d", 0}, + {"flags", "", "f", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"flags2", "", "f2", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"gid", "GID", NULL, "gid", 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0}, + {"group", "GROUP", NULL, "group", LJUST, egroupname, 0, CHAR, NULL, 0}, + {"ignored", "", "sigignore", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"inblk", "INBLK", NULL, "read-blocks", USER, rvar, ROFF(ru_inblock), + LONG, "ld", 0}, + {"inblock", "", "inblk", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"jid", "JID", NULL, "jail-id", 0, kvar, KOFF(ki_jid), INT, "d", 0}, + {"jobc", "JOBC", NULL, "job-control-count", 0, kvar, KOFF(ki_jobc), + SHORT, "d", 0}, + {"ktrace", "KTRACE", NULL, "ktrace", 0, kvar, KOFF(ki_traceflag), INT, + "x", 0}, + {"label", "LABEL", NULL, "label", LJUST, label, 0, CHAR, NULL, 0}, + {"lim", "LIM", NULL, "memory-limit", 0, maxrss, 0, CHAR, NULL, 0}, + {"lockname", "LOCK", NULL, "lock-name", LJUST, lockname, 0, CHAR, NULL, + 0}, + {"login", "LOGIN", NULL, "login-name", LJUST, logname, 0, CHAR, NULL, + 0}, + {"logname", "", "login", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"lstart", "STARTED", NULL, "start-time", LJUST|USER, lstarted, 0, + CHAR, NULL, 0}, + {"lwp", "LWP", NULL, "process-thread-id", 0, kvar, KOFF(ki_tid), UINT, + LWPFMT, 0}, + {"majflt", "MAJFLT", NULL, "major-faults", USER, rvar, ROFF(ru_majflt), + LONG, "ld", 0}, + {"minflt", "MINFLT", NULL, "minor-faults", USER, rvar, ROFF(ru_minflt), + LONG, "ld", 0}, + {"msgrcv", "MSGRCV", NULL, "received-messages", USER, rvar, + ROFF(ru_msgrcv), LONG, "ld", 0}, + {"msgsnd", "MSGSND", NULL, "sent-messages", USER, rvar, + ROFF(ru_msgsnd), LONG, "ld", 0}, + {"mwchan", "MWCHAN", NULL, "wait-channel", LJUST, mwchan, 0, CHAR, + NULL, 0}, + {"ni", "", "nice", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"nice", "NI", NULL, "nice", 0, kvar, KOFF(ki_nice), CHAR, "d", 0}, + {"nivcsw", "NIVCSW", NULL, "involuntary-context-switches", USER, rvar, + ROFF(ru_nivcsw), LONG, "ld", 0}, + {"nlwp", "NLWP", NULL, "threads", 0, kvar, KOFF(ki_numthreads), UINT, + NLWPFMT, 0}, + {"nsignals", "", "nsigs", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"nsigs", "NSIGS", NULL, "signals-taken", USER, rvar, + ROFF(ru_nsignals), LONG, "ld", 0}, + {"nswap", "NSWAP", NULL, "swaps", USER, rvar, ROFF(ru_nswap), LONG, + "ld", 0}, + {"nvcsw", "NVCSW", NULL, "voluntary-context-switches", USER, rvar, + ROFF(ru_nvcsw), LONG, "ld", 0}, + {"nwchan", "NWCHAN", NULL, "wait-channel-address", LJUST, nwchan, 0, + CHAR, NULL, 0}, + {"oublk", "OUBLK", NULL, "written-blocks", USER, rvar, + ROFF(ru_oublock), LONG, "ld", 0}, + {"oublock", "", "oublk", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"paddr", "PADDR", NULL, "process-address", 0, kvar, KOFF(ki_paddr), + KPTR, "lx", 0}, + {"pagein", "PAGEIN", NULL, "pageins", USER, pagein, 0, CHAR, NULL, 0}, + {"pcpu", "", "%cpu", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"pending", "", "sig", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"pgid", "PGID", NULL, "process-group", 0, kvar, KOFF(ki_pgid), UINT, + PIDFMT, 0}, + {"pid", "PID", NULL, "pid", 0, kvar, KOFF(ki_pid), UINT, PIDFMT, 0}, + {"pmem", "", "%mem", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"ppid", "PPID", NULL, "ppid", 0, kvar, KOFF(ki_ppid), UINT, PIDFMT, 0}, + {"pri", "PRI", NULL, "priority", 0, pri, 0, CHAR, NULL, 0}, + {"re", "RE", NULL, "residency-time", INF127, kvar, KOFF(ki_swtime), + UINT, "d", 0}, + {"rgid", "RGID", NULL, "real-gid", 0, kvar, KOFF(ki_rgid), UINT, + UIDFMT, 0}, + {"rgroup", "RGROUP", NULL, "real-group", LJUST, rgroupname, 0, CHAR, + NULL, 0}, + {"rss", "RSS", NULL, "rss", 0, kvar, KOFF(ki_rssize), PGTOK, "ld", 0}, + {"rtprio", "RTPRIO", NULL, "realtime-priority", 0, priorityr, + KOFF(ki_pri), CHAR, NULL, 0}, + {"ruid", "RUID", NULL, "real-uid", 0, kvar, KOFF(ki_ruid), UINT, + UIDFMT, 0}, + {"ruser", "RUSER", NULL, "real-user", LJUST, runame, 0, CHAR, NULL, 0}, + {"sid", "SID", NULL, "sid", 0, kvar, KOFF(ki_sid), UINT, PIDFMT, 0}, + {"sig", "PENDING", NULL, "signals-pending", 0, kvar, KOFF(ki_siglist), + INT, "x", 0}, + {"sigcatch", "CAUGHT", NULL, "signals-caught", 0, kvar, + KOFF(ki_sigcatch), UINT, "x", 0}, + {"sigignore", "IGNORED", NULL, "signals-ignored", 0, kvar, + KOFF(ki_sigignore), UINT, "x", 0}, + {"sigmask", "BLOCKED", NULL, "signal-mask", 0, kvar, KOFF(ki_sigmask), + UINT, "x", 0}, + {"sl", "SL", NULL, "sleep-time", INF127, kvar, KOFF(ki_slptime), UINT, + "d", 0}, + {"ssiz", "SSIZ", NULL, "stack-size", 0, kvar, KOFF(ki_ssize), PGTOK, + "ld", 0}, + {"start", "STARTED", NULL, "start-time", LJUST|USER, started, 0, CHAR, + NULL, 0}, + {"stat", "", "state", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"state", "STAT", NULL, "state", LJUST, state, 0, CHAR, NULL, 0}, + {"svgid", "SVGID", NULL, "saved-gid", 0, kvar, KOFF(ki_svgid), UINT, + UIDFMT, 0}, + {"svuid", "SVUID", NULL, "saved-uid", 0, kvar, KOFF(ki_svuid), UINT, + UIDFMT, 0}, + {"systime", "SYSTIME", NULL, "system-time", USER, systime, 0, CHAR, + NULL, 0}, + {"tdaddr", "TDADDR", NULL, "thread-address", 0, kvar, KOFF(ki_tdaddr), + KPTR, "lx", 0}, + {"tdev", "TDEV", NULL, "terminal-device", 0, tdev, 0, CHAR, NULL, 0}, + {"tdnam", "TDNAM", NULL, "terminal-device-name", LJUST, tdnam, 0, CHAR, + NULL, 0}, + {"time", "TIME", NULL, "cpu-time", USER, cputime, 0, CHAR, NULL, 0}, + {"tpgid", "TPGID", NULL, "terminal-process-gid", 0, kvar, + KOFF(ki_tpgid), UINT, PIDFMT, 0}, + {"tracer", "TRACER", NULL, "tracer", 0, kvar, KOFF(ki_tracer), UINT, + PIDFMT, 0}, + {"tsid", "TSID", NULL, "terminal-sid", 0, kvar, KOFF(ki_tsid), UINT, + PIDFMT, 0}, + {"tsiz", "TSIZ", NULL, "text-size", 0, kvar, KOFF(ki_tsize), PGTOK, + "ld", 0}, + {"tt", "TT ", NULL, "terminal-name", 0, tname, 0, CHAR, NULL, 0}, + {"tty", "TTY", NULL, "tty", LJUST, longtname, 0, CHAR, NULL, 0}, + {"ucomm", "UCOMM", NULL, "accounting-name", LJUST, ucomm, 0, CHAR, + NULL, 0}, + {"uid", "UID", NULL, "uid", 0, kvar, KOFF(ki_uid), UINT, UIDFMT, 0}, + {"upr", "UPR", NULL, "user-priority", 0, upr, 0, CHAR, NULL, 0}, + {"uprocp", "UPROCP", NULL, "process-address", 0, kvar, KOFF(ki_paddr), + KPTR, "lx", 0}, + {"user", "USER", NULL, "user", LJUST, uname, 0, CHAR, NULL, 0}, + {"usertime", "USERTIME", NULL, "user-time", USER, usertime, 0, CHAR, + NULL, 0}, + {"usrpri", "", "upr", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"vsize", "", "vsz", NULL, 0, NULL, 0, CHAR, NULL, 0}, + {"vsz", "VSZ", NULL, "virtual-size", 0, vsize, 0, CHAR, NULL, 0}, + {"wchan", "WCHAN", NULL, "wait-channel", LJUST, wchan, 0, CHAR, NULL, + 0}, + {"xstat", "XSTAT", NULL, "exit-status", 0, kvar, KOFF(ki_xstat), + USHORT, "x", 0}, + {"", NULL, NULL, NULL, 0, NULL, 0, CHAR, NULL, 0}, }; void @@ -185,16 +240,19 @@ i = 0; sep = ""; + xo_open_list("key"); for (v = var; *(p = v->name); ++v) { int len = strlen(p); if (termwidth && (i += len + 1) > termwidth) { i = len; sep = "\n"; } - (void) printf("%s%s", sep, p); + xo_emit("{P:/%s}{l:key/%s}", sep, p); sep = " "; } - (void) printf("\n"); + xo_emit("\n"); + xo_close_list("key"); + xo_finish(); } void Modified: soc2015/btw/head/bin/ps/print.c ============================================================================== --- soc2015/btw/head/bin/ps/print.c Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/ps/print.c Mon Jun 1 01:20:07 2015 (r286497) @@ -61,6 +61,7 @@ #include #include #include +#include #include "ps.h" @@ -85,15 +86,15 @@ v = vent->var; if (v->flag & LJUST) { if (STAILQ_NEXT(vent, next_ve) == NULL) /* last one */ - (void)printf("%s", vent->header); + xo_emit("{T:/%s}", vent->header); else - (void)printf("%-*s", v->width, vent->header); + xo_emit("{T:/%-*s}", v->width, vent->header); } else - (void)printf("%*s", v->width, vent->header); + xo_emit("{T:/%*s}", v->width, vent->header); if (STAILQ_NEXT(vent, next_ve) != NULL) - (void)putchar(' '); + xo_emit("{P: }"); } - (void)putchar('\n'); + xo_emit("\n"); } char * @@ -102,7 +103,7 @@ char *vis_args; if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH); if (STAILQ_NEXT(ve, next_ve) != NULL && strlen(vis_args) > ARGUMENTS_WIDTH) @@ -130,7 +131,7 @@ return (str); } if ((vis_args = malloc(strlen(k->ki_args) * 4 + 1)) == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); strvis(vis_args, k->ki_args, VIS_TAB | VIS_NL | VIS_NOSLASH); if (STAILQ_NEXT(ve, next_ve) == NULL) { @@ -139,7 +140,7 @@ if (k->ki_env) { if ((vis_env = malloc(strlen(k->ki_env) * 4 + 1)) == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); strvis(vis_env, k->ki_env, VIS_TAB | VIS_NL | VIS_NOSLASH); } else @@ -215,7 +216,7 @@ buf = malloc(16); if (buf == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); flag = k->ki_p->ki_flag; tdflags = k->ki_p->ki_tdflags; /* XXXKSE */ @@ -391,7 +392,7 @@ buf = malloc(buflen); if (buf == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); then = k->ki_p->ki_start.tv_sec; tp = localtime(&then); @@ -416,7 +417,7 @@ buf = malloc(buflen); if (buf == NULL) - errx(1, "malloc failed"); + xo_errx(1, "malloc failed"); then = k->ki_p->ki_start.tv_sec; (void)strftime(buf, buflen, "%c", localtime(&then)); @@ -762,7 +763,7 @@ (void)asprintf(&str, ofmt, ps_pgtok(*(u_long *)bp)); break; default: - errx(1, "unknown type %d", v->type); + xo_errx(1, "unknown type %d", v->type); } return (str); @@ -804,7 +805,7 @@ string = NULL; if (mac_prepare_process_label(&proclabel) == -1) { - warn("mac_prepare_process_label"); + xo_warn("mac_prepare_process_label"); goto out; } error = mac_get_pid(k->ki_p->ki_pid, proclabel); Modified: soc2015/btw/head/bin/ps/ps.1 ============================================================================== --- soc2015/btw/head/bin/ps/ps.1 Mon Jun 1 00:55:15 2015 (r286496) +++ soc2015/btw/head/bin/ps/ps.1 Mon Jun 1 01:20:07 2015 (r286497) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd December 9, 2014 +.Dd May 27, 2015 .Dt PS 1 .Os .Sh NAME @@ -37,6 +37,7 @@ .Nd process status .Sh SYNOPSIS .Nm *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 02:00:12 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E0C4ED26 for ; Mon, 1 Jun 2015 02:00:12 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CEACA165B for ; Mon, 1 Jun 2015 02:00:12 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t5120COZ071669 for ; Mon, 1 Jun 2015 02:00:12 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t5120CoU071666 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 02:00:12 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 02:00:12 GMT Message-Id: <201506010200.t5120CoU071666@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286502 - soc2015/btw/head/sys/amd64/conf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 02:00:13 -0000 Author: btw Date: Mon Jun 1 02:00:11 2015 New Revision: 286502 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286502 Log: Only few NIC drivers are enabled in this configuration file, because most drivers are still not converted to new ifnet KPI. Added: soc2015/btw/head/sys/amd64/conf/CUSTOM Added: soc2015/btw/head/sys/amd64/conf/CUSTOM ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/sys/amd64/conf/CUSTOM Mon Jun 1 02:00:11 2015 (r286502) @@ -0,0 +1,361 @@ +# +# GENERIC -- Generic kernel configuration file for FreeBSD/amd64 +# +# For more information on this file, please read the config(5) manual page, +# and/or the handbook section on Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +cpu HAMMER +ident CUSTOM + +makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols +makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support + +options SCHED_ULE # ULE scheduler +options PREEMPTION # Enable kernel thread preemption +options INET # InterNETworking +options INET6 # IPv6 communications protocols +options TCP_OFFLOAD # TCP offload +options SCTP # Stream Control Transmission Protocol +options FFS # Berkeley Fast Filesystem +options SOFTUPDATES # Enable FFS soft updates support +options UFS_ACL # Support for access control lists +options UFS_DIRHASH # Improve performance on big directories +options UFS_GJOURNAL # Enable gjournal-based UFS journaling +options QUOTA # Enable disk quotas for UFS +options MD_ROOT # MD is a potential root device +options NFSCL # Network Filesystem Client +options NFSD # Network Filesystem Server +options NFSLOCKD # Network Lock Manager +options NFS_ROOT # NFS usable as /, requires NFSCL +options MSDOSFS # MSDOS Filesystem +options CD9660 # ISO 9660 Filesystem +options PROCFS # Process filesystem (requires PSEUDOFS) +options PSEUDOFS # Pseudo-filesystem framework +options GEOM_PART_GPT # GUID Partition Tables. +options GEOM_RAID # Soft RAID functionality. +options GEOM_LABEL # Provides labelization +options COMPAT_FREEBSD32 # Compatible with i386 binaries +options COMPAT_FREEBSD4 # Compatible with FreeBSD4 +options COMPAT_FREEBSD5 # Compatible with FreeBSD5 +options COMPAT_FREEBSD6 # Compatible with FreeBSD6 +options COMPAT_FREEBSD7 # Compatible with FreeBSD7 +options COMPAT_FREEBSD9 # Compatible with FreeBSD9 +options COMPAT_FREEBSD10 # Compatible with FreeBSD10 +options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI +options KTRACE # ktrace(1) support +options STACK # stack(9) support +options SYSVSHM # SYSV-style shared memory +options SYSVMSG # SYSV-style message queues +options SYSVSEM # SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. +options KBD_INSTALL_CDEV # install a CDEV entry in /dev +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +options AUDIT # Security event auditing +options CAPABILITY_MODE # Capsicum capability mode +options CAPABILITIES # Capsicum capabilities +options MAC # TrustedBSD MAC Framework +options KDTRACE_FRAME # Ensure frames are compiled in +options KDTRACE_HOOKS # Kernel DTrace hooks +options DDB_CTF # Kernel ELF linker loads CTF data +options INCLUDE_CONFIG_FILE # Include this file in kernel + +# Debugging support. Always need this: +options KDB # Enable kernel debugger support. +options KDB_TRACE # Print a stack trace for a panic. +# For full debugger support use (turn off in stable branch): +options DDB # Support DDB. +options GDB # Support remote GDB. +options DEADLKRES # Enable the deadlock resolver +options INVARIANTS # Enable calls of extra sanity checking +options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS +options WITNESS # Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed +options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones + +# Make an SMP-capable kernel by default +options SMP # Symmetric MultiProcessor Kernel + +# CPU frequency control +device cpufreq + +# Bus support. +device acpi +options ACPI_DMAR +device pci +options PCI_IOV # PCI SR-IOV support + +# Floppy drives +device fdc + +# ATA controllers +device ahci # AHCI-compatible SATA controllers +device ata # Legacy ATA/SATA controllers +options ATA_STATIC_ID # Static device numbering +device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA +device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA + +# SCSI Controllers +device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. +device ahd # AHA39320/29320 and onboard AIC79xx devices +options AHD_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~215k to driver. +device esp # AMD Am53C974 (Tekram DC-390(T)) +device hptiop # Highpoint RocketRaid 3xxx series +device isp # Qlogic family +#device ispfw # Firmware for QLogic HBAs- normally a module +device mpt # LSI-Logic MPT-Fusion +device mps # LSI-Logic MPT-Fusion 2 +device mpr # LSI-Logic MPT-Fusion 3 +#device ncr # NCR/Symbios Logic +device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') +device trm # Tekram DC395U/UW/F DC315U adapters + +device adv # Advansys SCSI adapters +device adw # Advansys wide SCSI adapters +device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. +device bt # Buslogic/Mylex MultiMaster SCSI adapters +device isci # Intel C600 SAS controller + +# ATA/SCSI peripherals +device scbus # SCSI bus (required for ATA/SCSI) +device ch # SCSI media changers +device da # Direct Access (disks) +device sa # Sequential Access (tape etc) +device cd # CD +device pass # Passthrough device (direct ATA/SCSI access) +device ses # Enclosure Services (SES and SAF-TE) +#device ctl # CAM Target Layer + +# RAID controllers interfaced to the SCSI subsystem +device amr # AMI MegaRAID +device arcmsr # Areca SATA II RAID +device ciss # Compaq Smart RAID 5* +device dpt # DPT Smartcache III, IV - See NOTES for options +device hptmv # Highpoint RocketRAID 182x +device hptnr # Highpoint DC7280, R750 +device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx +device hpt27xx # Highpoint RocketRAID 27xx +device iir # Intel Integrated RAID +device ips # IBM (Adaptec) ServeRAID +device mly # Mylex AcceleRAID/eXtremeRAID +device twa # 3ware 9000 series PATA/SATA RAID +device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller + +# RAID controllers +device aac # Adaptec FSA RAID +device aacp # SCSI passthrough for aac (requires CAM) +device aacraid # Adaptec by PMC RAID +device ida # Compaq Smart RAID +device mfi # LSI MegaRAID SAS +device mlx # Mylex DAC960 family +device mrsas # LSI/Avago MegaRAID SAS/SATA, 6Gb/s and 12Gb/s +#XXX pointer/int warnings +#device pst # Promise Supertrak SX6000 +device twe # 3ware ATA RAID + +# atkbdc0 controls both the keyboard and the PS/2 mouse +device atkbdc # AT keyboard controller +device atkbd # AT keyboard +device psm # PS/2 mouse + +device kbdmux # keyboard multiplexer + +device vga # VGA video card driver +options VESA # Add support for VESA BIOS Extensions (VBE) + +device splash # Splash screen and screen saver support + +# syscons is the default console driver, resembling an SCO console +device sc +options SC_PIXEL_MODE # add support for the raster text mode + +# vt is the new video console driver +device vt +device vt_vga +device vt_efifb + +device agp # support several AGP chipsets + +# PCCARD (PCMCIA) support +# PCMCIA and cardbus bridge support +device cbb # cardbus (yenta) bridge +device pccard # PC Card (16-bit) bus +device cardbus # CardBus (32-bit) bus + +# Serial (COM) ports +device uart # Generic UART driver + +# Parallel port +device ppc +device ppbus # Parallel port bus (required) +device lpt # Printer +device ppi # Parallel port interface device +#device vpo # Requires scbus and da + +device puc # Multi I/O cards and multi-channel UARTs + +# # PCI Ethernet NICs. +# device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE +# device de # DEC/Intel DC21x4x (``Tulip'') +# device em # Intel PRO/1000 Gigabit Ethernet Family +# device igb # Intel PRO/1000 PCIE Server Gigabit Family +# device ix # Intel PRO/10GbE PCIE PF Ethernet +# device ixv # Intel PRO/10GbE PCIE VF Ethernet +# device ixl # Intel XL710 40Gbe PCIE Ethernet +# device ixlv # Intel XL710 40Gbe VF PCIE Ethernet +# device le # AMD Am7900 LANCE and Am79C9xx PCnet +# device ti # Alteon Networks Tigon I/II gigabit Ethernet +# device txp # 3Com 3cR990 (``Typhoon'') +# device vx # 3Com 3c590, 3c595 (``Vortex'') +# +# # PCI Ethernet NICs that use the common MII bus controller code. +# # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! +device miibus # MII bus support +# device ae # Attansic/Atheros L2 FastEthernet +# device age # Attansic/Atheros L1 Gigabit Ethernet +# device alc # Atheros AR8131/AR8132 Ethernet +# device ale # Atheros AR8121/AR8113/AR8114 Ethernet +# device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet +# device bfe # Broadcom BCM440x 10/100 Ethernet +# device bge # Broadcom BCM570xx Gigabit Ethernet +# device cas # Sun Cassini/Cassini+ and NS DP83065 Saturn +# device dc # DEC/Intel 21143 and various workalikes +# device et # Agere ET1310 10/100/Gigabit Ethernet +# device fxp # Intel EtherExpress PRO/100B (82557, 82558) +# device gem # Sun GEM/Sun ERI/Apple GMAC +# device hme # Sun HME (Happy Meal Ethernet) +# device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet +# device lge # Level 1 LXT1001 gigabit Ethernet +# device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet +# device nfe # nVidia nForce MCP on-board Ethernet +# device nge # NatSemi DP83820 gigabit Ethernet +# device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le') +device re # RealTek 8139C+/8169/8169S/8110S +# device rl # RealTek 8129/8139 +# device sf # Adaptec AIC-6915 (``Starfire'') +# device sge # Silicon Integrated Systems SiS190/191 +# device sis # Silicon Integrated Systems SiS 900/SiS 7016 +# device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet +# device ste # Sundance ST201 (D-Link DFE-550TX) +# device stge # Sundance/Tamarack TC9021 gigabit Ethernet +# device tl # Texas Instruments ThunderLAN +# device tx # SMC EtherPower II (83c170 ``EPIC'') +# device vge # VIA VT612x gigabit Ethernet +# device vr # VIA Rhine, Rhine II +# device wb # Winbond W89C840F +# device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') + +# # Wireless NIC cards +# device wlan # 802.11 support +# options IEEE80211_DEBUG # enable debug msgs +# options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's +# options IEEE80211_SUPPORT_MESH # enable 802.11s draft support +# device wlan_wep # 802.11 WEP support +# device wlan_ccmp # 802.11 CCMP support +# device wlan_tkip # 802.11 TKIP support +# device wlan_amrr # AMRR transmit rate control algorithm +# device an # Aironet 4500/4800 802.11 wireless NICs. +# device ath # Atheros NICs +# device ath_pci # Atheros pci/cardbus glue +# device ath_hal # pci/cardbus chip support +# options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors +# options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation +# options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later +# device ath_rate_sample # SampleRate tx rate control for ath +# #device bwi # Broadcom BCM430x/BCM431x wireless NICs. +# #device bwn # Broadcom BCM43xx wireless NICs. +# device ipw # Intel 2100 wireless NICs. +# device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. +# device iwn # Intel 4965/1000/5000/6000 wireless NICs. +# device malo # Marvell Libertas wireless NICs. +# device mwl # Marvell 88W8363 802.11n wireless NICs. +# device ral # Ralink Technology RT2500 wireless NICs. +# device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. +# device wpi # Intel 3945ABG wireless NICs. + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device padlock_rng # VIA Padlock RNG +device rdrand_rng # Intel Bull Mountain RNG +device ether # Ethernet support +#device vlan # 802.1Q VLAN support +#device tun # Packet tunnel. +device md # Memory "disks" +#device gif # IPv6 and IPv4 tunneling +device firmware # firmware assist module + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf # Berkeley packet filter + +# USB support +options USB_DEBUG # enable debug msgs +device uhci # UHCI PCI->USB interface +device ohci # OHCI PCI->USB interface +device ehci # EHCI PCI->USB interface (USB 2.0) +device xhci # XHCI PCI->USB interface (USB 3.0) +device usb # USB Bus (required) +device ukbd # Keyboard +device umass # Disks/Mass storage - Requires scbus and da + +# # Sound support +# device sound # Generic sound driver (required) +# device snd_cmi # CMedia CMI8338/CMI8738 +# device snd_csa # Crystal Semiconductor CS461x/428x +# device snd_emu10kx # Creative SoundBlaster Live! and Audigy +# device snd_es137x # Ensoniq AudioPCI ES137x +# device snd_hda # Intel High Definition Audio +# device snd_ich # Intel, NVidia and other ICH AC'97 Audio +# device snd_via8233 # VIA VT8233x Audio +# +# # MMC/SD +# device mmc # MMC/SD bus +# device mmcsd # MMC/SD memory card +# device sdhci # Generic PCI SD Host Controller +# +# # VirtIO support +# device virtio # Generic VirtIO bus (required) +# device virtio_pci # VirtIO PCI device +# device vtnet # VirtIO Ethernet device +# device virtio_blk # VirtIO Block device +# device virtio_scsi # VirtIO SCSI device +# device virtio_balloon # VirtIO Memory Balloon device +# +# # HyperV drivers and enchancement support +# # NOTE: HYPERV depends on hyperv. They must be added or removed together. +# options HYPERV # Hyper-V kernel infrastructure +# device hyperv # HyperV drivers +# +# # Xen HVM Guest Optimizations +# # NOTE: XENHVM depends on xenpci. They must be added or removed together. +# options XENHVM # Xen HVM kernel infrastructure +# device xenpci # Xen HVM Hypervisor services driver +# +# # VMware support +# device vmx # VMware VMXNET3 Ethernet +# +# # Netmap provides direct access to TX/RX rings on supported NICs +# device netmap # netmap(4) support + +options PCBGROUP # Connection groups +options RSS # Receive-side steering + From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 02:11:34 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6CBAEEEA for ; Mon, 1 Jun 2015 02:11:34 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 414FE19F4 for ; Mon, 1 Jun 2015 02:11:34 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t512BYRX037531 for ; Mon, 1 Jun 2015 02:11:34 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t512BY7t037403 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 02:11:34 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 02:11:34 GMT Message-Id: <201506010211.t512BY7t037403@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286503 - soc2015/btw/head/tools/tools/mq-testing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 02:11:34 -0000 Author: btw Date: Mon Jun 1 02:11:33 2015 New Revision: 286503 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286503 Log: Create a directory for the multiqueue testing. Added: soc2015/btw/head/tools/tools/mq-testing/ From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 02:59:33 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D81A9369 for ; Mon, 1 Jun 2015 02:59:33 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C56D91345 for ; Mon, 1 Jun 2015 02:59:33 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t512xXWk041721 for ; Mon, 1 Jun 2015 02:59:33 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t512xVN8041711 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 02:59:31 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 02:59:31 GMT Message-Id: <201506010259.t512xVN8041711@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286504 - in soc2015/btw/head/tools/tools/mq-testing: . udp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 02:59:33 -0000 Author: btw Date: Mon Jun 1 02:59:31 2015 New Revision: 286504 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286504 Log: Add the tools for multiqueue testing: - pktgen: a UDP packet generator based on vme; - server: a UDP server based on socket(2); Added: soc2015/btw/head/tools/tools/mq-testing/README soc2015/btw/head/tools/tools/mq-testing/udp/ soc2015/btw/head/tools/tools/mq-testing/udp/Makefile soc2015/btw/head/tools/tools/mq-testing/udp/common.h soc2015/btw/head/tools/tools/mq-testing/udp/pktgen.c soc2015/btw/head/tools/tools/mq-testing/udp/server.c Added: soc2015/btw/head/tools/tools/mq-testing/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/README Mon Jun 1 02:59:31 2015 (r286504) @@ -0,0 +1,4 @@ +$FreeBSD$ + +This directory contains the applications for multiqueue testing. + Added: soc2015/btw/head/tools/tools/mq-testing/udp/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/udp/Makefile Mon Jun 1 02:59:31 2015 (r286504) @@ -0,0 +1,12 @@ + +PROGS:= server pktgen +CFLAGS:= -Wall -Werror -O2 -lpthread + +all: ${PROGS} + +server: + +pktgen: + +clean: + rm -f *.o ${PROGS} Added: soc2015/btw/head/tools/tools/mq-testing/udp/common.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/udp/common.h Mon Jun 1 02:59:31 2015 (r286504) @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2015, Tiwei Bie + * 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 unmodified, 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. + */ + +/* $FreeBSD$ */ + +#ifndef _COMMON_H_ +#define _COMMON_H_ + +#define SERVER_PORT 8000 + +#endif Added: soc2015/btw/head/tools/tools/mq-testing/udp/pktgen.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/udp/pktgen.c Mon Jun 1 02:59:31 2015 (r286504) @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2015, Tiwei Bie + * 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 unmodified, 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. + */ + +/* $FreeBSD$ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" + +/* + * TODO: + * #1. Add supports for IPv6; + */ +#define IFCONFIG_BIN "/sbin/ifconfig " +#define IFCONFIG_ARGS "%s inet %s" + +static char vmedev[MAXPATHLEN]; +static uint8_t vmeif_ether[ETHER_ADDR_LEN]; +static in_addr_t vmeif_ip; + +static char vmeif_name[IFNAMSIZ] = "vme0"; +static char vmeif_ipstr[256] = "192.168.10.1"; +static char *payload = "hello, world!"; +static int pktsize = 100; +static int quiet = 0; +static int cpu = -1; +static uint64_t total_sent = 0; + +/* The checksum function is taken from tools/tools/netmap/pkt-gen.c */ +static uint16_t +checksum(const void *data, uint16_t len, uint32_t sum) +{ + const uint8_t *addr = data; + uint32_t i; + + /* Checksum all the pairs of bytes first... */ + for (i = 0; i < (len & ~1U); i += 2) { + sum += (uint16_t)ntohs(*(uint16_t *)(addr + i)); + if (sum > 0xFFFF) + sum -= 0xFFFF; + } + /* + * If there's a single byte left over, checksum it, too. + * Network byte order is big-endian, so the remaining byte is + * the high byte. + */ + if (i < len) { + sum += addr[i] << 8; + if (sum > 0xFFFF) + sum -= 0xFFFF; + } + return (sum); +} + +static uint16_t +wrapsum(uint32_t sum) +{ + sum = ~sum & 0xFFFF; + return (htons(sum)); +} + +static inline int +min(int a, int b) +{ + return (a < b) ? a : b; +} + +static void +build_udp_packet(uint8_t *buf, int pkt_size) +{ + struct ether_header *eh = (struct ether_header *)buf; + struct ip *ip = (struct ip *)(eh + 1); + struct udphdr *udp = (struct udphdr *)(ip + 1); + char *data = (char *)(udp + 1); + + /* Just fake an address */ + eh->ether_shost[0] = 0x01; + eh->ether_shost[1] = 0xbd; + eh->ether_shost[2] = 0xbc; + eh->ether_shost[3] = 0x4d; + eh->ether_shost[4] = 0xfb; + eh->ether_shost[5] = 0xfb; + memcpy(eh->ether_dhost, vmeif_ether, ETHER_ADDR_LEN); + eh->ether_type = htons(ETHERTYPE_IP); + + ip->ip_v = IPVERSION; + ip->ip_hl = sizeof(*ip) >> 2; + ip->ip_tos = IPTOS_LOWDELAY; + ip->ip_len = htons(pkt_size - sizeof(*eh)); + ip->ip_id = 0; + ip->ip_off = htons(IP_DF); /* XXX: Don't fragment */ + ip->ip_ttl = IPDEFTTL; + ip->ip_p = IPPROTO_UDP; + ip->ip_src.s_addr = htonl(0x0a000001 + (rand() % 0xfffffe)); + ip->ip_dst.s_addr = vmeif_ip; + + ip->ip_sum = 0; + ip->ip_sum = wrapsum(checksum(ip, sizeof(*ip), 0)); + + udp->uh_sport = htons(1 + rand() % 65535); + udp->uh_dport = htons(SERVER_PORT); + udp->uh_ulen = htons(pkt_size - sizeof(*eh) - sizeof(*ip)); + udp->uh_sum = 0; + + memcpy(data, payload, min(strlen(payload) + 1, + pkt_size - (sizeof(*eh) + sizeof(*ip) + sizeof(*udp)))); +} + +static int +get_ifaddr(const char *ifname, uint8_t *ether_addr) +{ + struct ifaddrs *ifa, *p; + struct sockaddr_dl *sdl; + char *addr; + int error = -1; + + if (getifaddrs(&ifa) != 0) + return (-1); + + for (p = ifa; p != NULL; p = p->ifa_next) { + if (strcmp(p->ifa_name, ifname) == 0 && + p->ifa_addr->sa_family == AF_LINK && + p->ifa_data != NULL) { + sdl = (struct sockaddr_dl *)p->ifa_addr; + addr = &sdl->sdl_data[sdl->sdl_nlen]; + memcpy(ether_addr, addr, ETHER_ADDR_LEN); + error = 0; + break; + } + } + + freeifaddrs(ifa); + return (error); +} + +static void +bind_cpu(int cpu) +{ + cpuset_t mask; + + CPU_ZERO(&mask); + CPU_SET(cpu, &mask); + if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) != 0) + perror("pthread_setaffinity_np"); +} + +static void +signal_handler(int arg) +{ + printf("\r%lu packets injected.\n", total_sent); + + if (arg == SIGINT) + exit(EXIT_SUCCESS); +} + +static void +usage(const char *prgname) +{ + fprintf(stderr, "%s [-a ip address] [-i vme interface] [-l pktsize] " + "[-p payload] [-q]\n", prgname); + exit(EXIT_FAILURE); +} + +int +main(int argc, char **argv) +{ + int vmefd; + char cmd[sizeof(IFCONFIG_BIN) + sizeof(vmeif_name) + + sizeof(vmeif_ipstr) + 50]; + uint8_t *buf; + int ch; + + while ((ch = getopt(argc, argv, "a:b:i:l:p:q")) != -1) { + switch (ch) { + case 'a': + strlcpy(vmeif_ipstr, optarg, sizeof(vmeif_ipstr)); + break; + case 'b': + sscanf(optarg, "%d", &cpu); + break; + case 'i': + strlcpy(vmeif_name, optarg, sizeof(vmeif_name)); + break; + case 'l': + sscanf(optarg, "%d", &pktsize); + break; + case 'p': + payload = strdup(optarg); + break; + case 'q': + quiet = 1; + break; + default: + usage(argv[0]); + break; + } + } + + if (!quiet) { + printf("vme name: %s\n", vmeif_name); + printf("vme ip: %s\n", vmeif_ipstr); + printf("packet size: %d\n", pktsize); + printf("payload: %s\n", payload); + if (cpu != -1) + printf("cpu: %d\n", cpu); + } + + if (cpu != -1) + bind_cpu(cpu); + + signal(SIGINT, signal_handler); + + snprintf(vmedev, sizeof(vmedev), "/dev/%s", vmeif_name); + + vmefd = open(vmedev, O_RDWR); + if (vmefd == -1) { + fprintf(stderr, "Failed to open %s: %s\n", vmedev, + strerror(errno)); + exit(EXIT_FAILURE); + } + + snprintf(cmd, sizeof(cmd), IFCONFIG_BIN IFCONFIG_ARGS, vmeif_name, + vmeif_ipstr); + if (system(cmd) != 0) { + fprintf(stderr, "Failed to setup %s\n", vmeif_name); + exit(EXIT_FAILURE); + } + + if ((vmeif_ip = inet_addr(vmeif_ipstr)) == INADDR_NONE) { + fprintf(stderr, "Malformed address %s specified\n", + vmeif_ipstr); + exit(EXIT_FAILURE); + } + + if (get_ifaddr(vmeif_name, vmeif_ether) != 0) { + fprintf(stderr, "Failed to get %s's MAC address\n", vmeif_name); + exit(EXIT_FAILURE); + } + + if ((buf = malloc(pktsize)) == NULL) { + perror("Failed to allocate memory for packet"); + exit(EXIT_FAILURE); + } + + /* Keep injecting packets to network stack */ + while (1) { + build_udp_packet(buf, pktsize); + if (write(vmefd, buf, pktsize) == -1) { + perror("write"); + exit(EXIT_FAILURE); + } + total_sent++; + } + + return (0); +} Added: soc2015/btw/head/tools/tools/mq-testing/udp/server.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/udp/server.c Mon Jun 1 02:59:31 2015 (r286504) @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2015, Tiwei Bie + * 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 unmodified, 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. + */ + +/* $FreeBSD$ */ + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "common.h" + +static int verbose = 0; + +static void +usage(const char *prgname) +{ + fprintf(stderr, "%s [-v]\n", prgname); + exit(EXIT_FAILURE); +} + +int +main(int argc, char **argv) +{ + int sd; + struct sockaddr_in lsin, from; + socklen_t length; + char msg[BUFSIZ]; + int n, ch, i; + + while ((ch = getopt(argc, argv, "v")) != -1) { + switch (ch) { + case 'v': + verbose = 1; + break; + default: + usage(argv[0]); + break; + } + } + + sd = socket(AF_INET, SOCK_DGRAM, 0); + if (sd < 0) { + perror("socket"); + exit(EXIT_FAILURE); + } + + memset(&lsin, 0, sizeof(lsin)); + lsin.sin_family = AF_INET; + lsin.sin_addr.s_addr = INADDR_ANY; + lsin.sin_port = htons(SERVER_PORT); + if (bind(sd, (struct sockaddr *)&lsin, sizeof(lsin)) < 0) { + perror("bind"); + exit(EXIT_FAILURE); + } + + while (1) { + length = sizeof(from); + n = recvfrom(sd, msg, sizeof(msg), 0, + (struct sockaddr *)&from, &length); + if (n < 0) { + perror("recvfrom"); + exit(EXIT_FAILURE); + } + + if (verbose) { + printf("from=%s:%d len=%d ", inet_ntoa(from.sin_addr), + ntohs(from.sin_port), n); + for (i = 0; i < n && msg[i]; i++) { + if (isprint(msg[i])) + printf("%c", msg[i]); + } + printf("\n"); + } + } + + return (0); +} From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 08:02:44 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5E83AAF6 for ; Mon, 1 Jun 2015 08:02:44 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4B9071588 for ; Mon, 1 Jun 2015 08:02:44 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t5182iVI059948 for ; Mon, 1 Jun 2015 08:02:44 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t5182hSH059944 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 08:02:43 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 08:02:43 GMT Message-Id: <201506010802.t5182hSH059944@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286515 - soc2015/btw/head/tools/tools/mq-testing/vme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 08:02:44 -0000 Author: btw Date: Mon Jun 1 08:02:42 2015 New Revision: 286515 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286515 Log: A kernel module vme (Virtual Multiqueue Ethernet interface) is created based on tap(4). It is written for the purpose of providing the same multiqueue behaviours with the hardware multiqueue NICs. The following features have already been implemented: - Calculating the RSS hash for IPv4 packets; - Multiqueue input supports; PS. vme is created to avoid adding too much unnecessary things to tap(4). Added: soc2015/btw/head/tools/tools/mq-testing/vme/ soc2015/btw/head/tools/tools/mq-testing/vme/Makefile soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.h Added: soc2015/btw/head/tools/tools/mq-testing/vme/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/vme/Makefile Mon Jun 1 08:02:42 2015 (r286515) @@ -0,0 +1,15 @@ +# Copyright (C) 1999-2000 by Maksim Yevmenkin +# +# $FreeBSD$ + +.PATH: ${.CURDIR} + +KMOD= if_vme +SRCS= if_vme.c opt_compat.h opt_inet.h opt_rss.h vnode_if.h + +.if !defined(KERNBUILDDIR) +opt_compat.h: + echo "#define COMPAT_FREEBSD6 1" > ${.TARGET} +.endif + +.include Added: soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/btw/head/tools/tools/mq-testing/vme/if_vme.c Mon Jun 1 08:02:42 2015 (r286515) @@ -0,0 +1,1168 @@ +/*- + * Copyright (C) 1999-2000 by Maksim Yevmenkin + * 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. + * + * BASED ON: + * ------------------------------------------------------------------------- + * + * Copyright (c) 1988, Julian Onions + * Nottingham University 1987. + */ + +/* + * $FreeBSD$ + * $Id: if_vme.c,v 0.21 2000/07/23 21:46:02 max Exp $ + */ + +#include "opt_compat.h" +#include "opt_rss.h" + +#ifndef RSS +#error "RSS must be enabled" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "if_vme.h" + +/* + * XXXGL: to avoid inclusion of if_var.h define if_purgeaddrs. + * This should be fixed by destroying interface clone on close(2). + */ +void if_purgeaddrs(if_t); + +#define CDEV_NAME "vme" +#define VMEDEBUG if (vmedebug) printf + +static const char vmename[] = "vme"; +#define VMEMAXUNIT 0x7fff +#define VMEMAXQUEUES 128 + +#define PRIV_NET_VME PRIV_NET_TAP + +/* module */ +static int vmemodevent(module_t, int, void *); + +/* device */ +static void vmeclone(void *, struct ucred *, char *, int, + struct cdev **); +static void vmecreate(struct cdev *); + +/* network interface */ +static int vmeifioctl(if_t, u_long, void *, struct thread *); +static int vmeiftransmit(if_t, struct mbuf *); + +static int vme_clone_create(struct if_clone *, int, caddr_t); +static void vme_clone_destroy(if_t); +static struct if_clone *vme_cloner; + +/* character device */ +static d_open_t vmeopen; +static d_close_t vmeclose; +static d_read_t vmeread; +static d_write_t vmewrite; +static d_ioctl_t vmeioctl; +static d_poll_t vmepoll; +static d_kqfilter_t vmekqfilter; + +/* kqueue(2) */ +static int vmekqread(struct knote *, long); +static int vmekqwrite(struct knote *, long); +static void vmekqdetach(struct knote *); + +/* multiqueue rss */ +static void vmersshash(struct mbuf *); + +static struct filterops vme_read_filterops = { + .f_isfd = 1, + .f_attach = NULL, + .f_detach = vmekqdetach, + .f_event = vmekqread, +}; + +static struct filterops vme_write_filterops = { + .f_isfd = 1, + .f_attach = NULL, + .f_detach = vmekqdetach, + .f_event = vmekqwrite, +}; + +static struct cdevsw vme_cdevsw = { + .d_version = D_VERSION, + .d_flags = D_NEEDMINOR, + .d_open = vmeopen, + .d_close = vmeclose, + .d_read = vmeread, + .d_write = vmewrite, + .d_ioctl = vmeioctl, + .d_poll = vmepoll, + .d_name = CDEV_NAME, + .d_kqfilter = vmekqfilter, +}; + +static struct ifdriver vme_ifdrv = { + .ifdrv_ops = { + .ifop_ioctl = vmeifioctl, + .ifop_transmit = vmeiftransmit, + }, + .ifdrv_name = vmename, + .ifdrv_type = IFT_ETHER, +}; + +/* + * vme_mtx locks vme_flags, vme_pid. vme_next locked with global vmemtx. + * Other fields locked by owning subsystems. + */ +struct vme_softc { + struct mtx vme_mtx; /* per-softc mutex */ + struct cdev *vme_dev; + struct ifnet *vme_ifp; + struct mbufq vme_queue; + uint32_t vme_ifflags; + uint32_t vme_mtu; + uint64_t vme_baudrate; + uint16_t vme_flags; /* misc flags */ +#define VME_OPEN (1 << 0) +#define VME_INITED (1 << 1) +#define VME_RWAIT (1 << 2) +#define VME_ASYNC (1 << 3) +#define VME_READY (VME_OPEN|VME_INITED) + + u_int8_t ether_addr[ETHER_ADDR_LEN]; /* remote address */ + pid_t vme_pid; /* PID of process to open */ + struct sigio *vme_sigio; /* information for async I/O */ + struct selinfo vme_rsel; /* read select */ + + SLIST_ENTRY(vme_softc) vme_next; /* next device in chain */ +}; + +/* + * All global variables in if_vme.c are locked with vmemtx, with the + * exception of vmedebug, which is accessed unlocked; vmeclones is + * static at runtime. + */ +static struct mtx vmemtx; +static int vmedebug = 0; /* debug flag */ +static int vmeuopen = 0; /* allow user open() */ +static int vmeuponopen = 0; /* IFF_UP on open() */ +static int vmedclone = 1; /* enable devfs cloning */ +static int vmenumqueues = 0; /* Number of queues */ +static SLIST_HEAD(, vme_softc) vmehead; /* first device */ +static struct clonedevs *vmeclones; + +MALLOC_DECLARE(M_VME); +MALLOC_DEFINE(M_VME, CDEV_NAME, "Ethernet tunnel interface"); +SYSCTL_INT(_debug, OID_AUTO, if_vme_debug, CTLFLAG_RW, &vmedebug, 0, ""); + +SYSCTL_DECL(_net_link); +static SYSCTL_NODE(_net_link, OID_AUTO, vme, CTLFLAG_RW, 0, + "Ethernet tunnel software network interface"); +SYSCTL_INT(_net_link_vme, OID_AUTO, user_open, CTLFLAG_RW, &vmeuopen, 0, + "Allow user to open /dev/vme (based on node permissions)"); +SYSCTL_INT(_net_link_vme, OID_AUTO, up_on_open, CTLFLAG_RW, &vmeuponopen, 0, + "Bring interface up when /dev/vme is opened"); +SYSCTL_INT(_net_link_vme, OID_AUTO, devfs_cloning, CTLFLAG_RWTUN, &vmedclone, 0, + "Enably legacy devfs interface creation"); +SYSCTL_INT(_net_link_vme, OID_AUTO, debug, CTLFLAG_RW, &vmedebug, 0, ""); +SYSCTL_INT(_net_link_vme, OID_AUTO, num_queues, CTLFLAG_RDTUN, &vmenumqueues, 0, + "Number of queues to configure, 0 indicates autoconfigure"); + +DEV_MODULE(if_vme, vmemodevent, NULL); + +static int +vme_clone_create(struct if_clone *ifc, int unit, caddr_t params) +{ + struct cdev *dev; + int i; + + /* Find any existing device, or allocate new unit number. */ + i = clone_create(&vmeclones, &vme_cdevsw, &unit, &dev, 0); + if (i) { + dev = make_dev(&vme_cdevsw, unit, UID_ROOT, GID_WHEEL, 0600, + "%s%d", vmename, unit); + } + + vmecreate(dev); + return (0); +} + +static void +vme_destroy(struct vme_softc *tp) +{ + if_t ifp = tp->vme_ifp; + + CURVNET_SET(ifp->if_vnet); + destroy_dev(tp->vme_dev); + seldrain(&tp->vme_rsel); + knlist_clear(&tp->vme_rsel.si_note, 0); + knlist_destroy(&tp->vme_rsel.si_note); + if_detach(ifp); + + mtx_destroy(&tp->vme_mtx); + free(tp, M_VME); + CURVNET_RESTORE(); +} + +static void +vme_clone_destroy(if_t ifp) +{ + struct vme_softc *tp; + + tp = if_getsoftc(ifp, IF_DRIVER_SOFTC); + + mtx_lock(&vmemtx); + SLIST_REMOVE(&vmehead, tp, vme_softc, vme_next); + mtx_unlock(&vmemtx); + vme_destroy(tp); +} + +/* + * vmemodevent + * + * module event handler + */ +static int +vmemodevent(module_t mod, int type, void *data) +{ + static eventhandler_tag eh_tag = NULL; + struct vme_softc *tp = NULL; + if_t ifp = NULL; + + switch (type) { + case MOD_LOAD: + + /* intitialize device */ + + mtx_init(&vmemtx, "vmemtx", NULL, MTX_DEF); + SLIST_INIT(&vmehead); + + clone_setup(&vmeclones); + eh_tag = EVENTHANDLER_REGISTER(dev_clone, vmeclone, 0, 1000); + if (eh_tag == NULL) { + clone_cleanup(&vmeclones); + mtx_destroy(&vmemtx); + return (ENOMEM); + } + vme_cloner = if_clone_simple(vmename, vme_clone_create, + vme_clone_destroy, 0); + + if (vmenumqueues <= 0 || vmenumqueues >= VMEMAXQUEUES) + vmenumqueues = mp_ncpus; + + return (0); + + case MOD_UNLOAD: + /* + * The EBUSY algorithm here can't quite atomically + * guarantee that this is race-free since we have to + * release the vme mtx to deregister the clone handler. + */ + mtx_lock(&vmemtx); + SLIST_FOREACH(tp, &vmehead, vme_next) { + mtx_lock(&tp->vme_mtx); + if (tp->vme_flags & VME_OPEN) { + mtx_unlock(&tp->vme_mtx); + mtx_unlock(&vmemtx); + return (EBUSY); + } + mtx_unlock(&tp->vme_mtx); + } + mtx_unlock(&vmemtx); + + EVENTHANDLER_DEREGISTER(dev_clone, eh_tag); + if_clone_detach(vme_cloner); + drain_dev_clone_events(); + + mtx_lock(&vmemtx); + while ((tp = SLIST_FIRST(&vmehead)) != NULL) { + SLIST_REMOVE_HEAD(&vmehead, vme_next); + mtx_unlock(&vmemtx); + + ifp = tp->vme_ifp; + + VMEDEBUG("detaching %s\n", if_name(ifp)); + + vme_destroy(tp); + mtx_lock(&vmemtx); + } + mtx_unlock(&vmemtx); + clone_cleanup(&vmeclones); + + mtx_destroy(&vmemtx); + + break; + + default: + return (EOPNOTSUPP); + } + + return (0); +} + +/* + * DEVFS handler + * + * We need to support a kind of devices - vme + */ +static void +vmeclone(void *arg, struct ucred *cred, char *name, int namelen, + struct cdev **dev) +{ + char devname[SPECNAMELEN + 1]; + int i, unit, append_unit; + + if (*dev != NULL) + return; + + if (!vmedclone || + (!vmeuopen && priv_check_cred(cred, PRIV_NET_IFCREATE, 0) != 0)) + return; + + unit = 0; + append_unit = 0; + + /* We're interested in only vme devices. */ + if (strcmp(name, vmename) == 0) { + unit = -1; + } else if (dev_stdclone(name, NULL, vmename, &unit) != 1) { + return; + } + + if (unit == -1) + append_unit = 1; + + CURVNET_SET(CRED_TO_VNET(cred)); + /* find any existing device, or allocate new unit number */ + i = clone_create(&vmeclones, &vme_cdevsw, &unit, dev, 0); + if (i) { + if (append_unit) { + /* + * We were passed 'tun' or 'vme', with no unit specified + * so we'll need to append it now. + */ + namelen = snprintf(devname, sizeof(devname), "%s%d", name, + unit); + name = devname; + } + + *dev = make_dev_credf(MAKEDEV_REF, &vme_cdevsw, unit, + cred, UID_ROOT, GID_WHEEL, 0600, "%s", name); + } + + if_clone_create(name, namelen, NULL); + CURVNET_RESTORE(); +} + + +/* + * vmecreate + * + * to create interface + */ +static void +vmecreate(struct cdev *dev) +{ + struct if_attach_args ifat = { + .ifat_version = IF_ATTACH_VERSION, + .ifat_mtu = ETHERMTU, + .ifat_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST, + .ifat_capabilities = IFCAP_LINKSTATE, + .ifat_capenable = IFCAP_LINKSTATE, + .ifat_nrings = vmenumqueues, + }; + if_t ifp = NULL; + struct vme_softc *tp = NULL; + unsigned short macaddr_hi; + uint32_t macaddr_mid; + int unit; + const char *name = NULL; + u_char eaddr[6]; + + /* allocate driver storage and create device */ + tp = malloc(sizeof(*tp), M_VME, M_WAITOK | M_ZERO); + mtx_init(&tp->vme_mtx, "vme_mtx", NULL, MTX_DEF); + mbufq_init(&tp->vme_queue, IFQ_MAXLEN); + mtx_lock(&vmemtx); + SLIST_INSERT_HEAD(&vmehead, tp, vme_next); + mtx_unlock(&vmemtx); + + unit = dev2unit(dev); + + name = vmename; + ifat.ifat_drv = &vme_ifdrv; + + unit &= VMEMAXUNIT; + + VMEDEBUG("vmecreate(%s%d). minor = %#x\n", name, unit, dev2unit(dev)); + + /* generate fake MAC address: 00 bd xx xx xx unit_no */ + macaddr_hi = htons(0x00bd); + macaddr_mid = (uint32_t) ticks; + bcopy(&macaddr_hi, eaddr, sizeof(short)); + bcopy(&macaddr_mid, &eaddr[2], sizeof(uint32_t)); + eaddr[5] = (u_char)unit; + + /* fill the rest and attach interface */ + ifat.ifat_softc = tp; + ifat.ifat_dunit = unit; + ifat.ifat_lla = eaddr; + ifp = tp->vme_ifp = if_attach(&ifat); + if (ifp == NULL) + panic("%s%d: can not if_attach()", name, unit); + + dev->si_drv1 = tp; + tp->vme_dev = dev; + + mtx_lock(&tp->vme_mtx); + tp->vme_flags |= VME_INITED; + mtx_unlock(&tp->vme_mtx); + + knlist_init_mtx(&tp->vme_rsel.si_note, &tp->vme_mtx); + + VMEDEBUG("interface %s is created. minor = %#x\n", + if_name(ifp), dev2unit(dev)); +} + +/* + * vmeopen + * + * to open tunnel. must be superuser + */ +static int +vmeopen(struct cdev *dev, int flag, int mode, struct thread *td) +{ + struct vme_softc *tp = NULL; + if_t ifp = NULL; + int error; + + if (vmeuopen == 0) { + error = priv_check(td, PRIV_NET_VME); + if (error) + return (error); + } + + if ((dev2unit(dev) & CLONE_UNITMASK) > VMEMAXUNIT) + return (ENXIO); + + tp = dev->si_drv1; + + mtx_lock(&tp->vme_mtx); + if (tp->vme_flags & VME_OPEN) { + mtx_unlock(&tp->vme_mtx); + return (EBUSY); + } + + bcopy(if_lladdr(tp->vme_ifp), tp->ether_addr, sizeof(tp->ether_addr)); + tp->vme_pid = td->td_proc->p_pid; + tp->vme_flags |= VME_OPEN; + ifp = tp->vme_ifp; + + if_link_state_change(ifp, LINK_STATE_UP); + mtx_unlock(&tp->vme_mtx); + + if (vmeuponopen) { + struct ifreq ifr; + + if_drvioctl(ifp, SIOCGIFFLAGS, &ifr, td); + ifr.ifr_flags |= IFF_UP; + if_drvioctl(ifp, SIOCSIFFLAGS, &ifr, td); + } + + VMEDEBUG("%s is open. minor = %#x\n", if_name(ifp), dev2unit(dev)); + + return (0); +} + +/* + * vmeclose + * + * close the device - mark i/f down & delete routing info + */ +static int +vmeclose(struct cdev *dev, int foo, int bar, struct thread *td) +{ + struct vme_softc *tp = dev->si_drv1; + if_t ifp = tp->vme_ifp; + + /* junk all pending output */ + mtx_lock(&tp->vme_mtx); + CURVNET_SET(ifp->if_vnet); + if_link_state_change(ifp, LINK_STATE_DOWN); + mbufq_drain(&tp->vme_queue); + + /* + * Bring the interface down. + */ + if ((tp->vme_ifflags & (IFF_UP | IFF_LINK0)) == IFF_UP) { + struct ifreq ifr; + + mtx_unlock(&tp->vme_mtx); + if_drvioctl(ifp, SIOCGIFFLAGS, &ifr, td); + ifr.ifr_flags &= ~IFF_UP; + if_drvioctl(ifp, SIOCSIFFLAGS, &ifr, td); + if_purgeaddrs(ifp); + mtx_lock(&tp->vme_mtx); + } + + CURVNET_RESTORE(); + + funsetown(&tp->vme_sigio); + selwakeuppri(&tp->vme_rsel, PZERO+1); + KNOTE_LOCKED(&tp->vme_rsel.si_note, 0); + + tp->vme_flags &= ~VME_OPEN; + tp->vme_pid = 0; + mtx_unlock(&tp->vme_mtx); + + VMEDEBUG("%s is closed. minor = %#x\n", if_name(ifp), dev2unit(dev)); + + return (0); +} + +/* + * vmeifioctl + * + * Process an ioctl request on network interface + */ +static int +vmeifioctl(if_t ifp, u_long cmd, void *data, struct thread *td) +{ + struct vme_softc *tp; + struct ifreq *ifr = (struct ifreq *)data; + struct ifstat *ifs = NULL; + struct ifmediareq *ifmr = NULL; + int dummy, error = 0; + + tp = if_getsoftc(ifp, IF_DRIVER_SOFTC); + + switch (cmd) { + case SIOCSIFFLAGS: + tp->vme_ifflags = ifr->ifr_flags; + break; + + case SIOCADDMULTI: + case SIOCDELMULTI: + break; + + case SIOCGIFMEDIA: + ifmr = (struct ifmediareq *)data; + dummy = ifmr->ifm_count; + ifmr->ifm_count = 1; + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; + if (tp->vme_flags & VME_OPEN) + ifmr->ifm_status |= IFM_ACTIVE; + ifmr->ifm_current = ifmr->ifm_active; + if (dummy >= 1) { + int media = IFM_ETHER; + error = copyout(&media, ifmr->ifm_ulist, + sizeof(int)); + } + break; + + case SIOCSIFMTU: + tp->vme_mtu = ifr->ifr_mtu; + break; + + case SIOCGIFSTATUS: + ifs = (struct ifstat *)data; + mtx_lock(&tp->vme_mtx); + if (tp->vme_pid != 0) + snprintf(ifs->ascii, sizeof(ifs->ascii), + "\tOpened by PID %d\n", tp->vme_pid); + else + ifs->ascii[0] = '\0'; + mtx_unlock(&tp->vme_mtx); + break; + + default: + error = EOPNOTSUPP; + break; + } + + return (error); +} + +/* + * vmeiftransmit + * + * queue packets from higher level ready to put out + */ +static int +vmeiftransmit(if_t ifp, struct mbuf *m) +{ + struct vme_softc *tp; + int error; + + VMEDEBUG("%s starting\n", if_name(ifp)); + + tp = if_getsoftc(ifp, IF_DRIVER_SOFTC); + + mtx_lock(&tp->vme_mtx); + if ((tp->vme_flags & VME_READY) != VME_READY) { + + /* Unlocked read. */ + VMEDEBUG("%s not ready, vme_flags = 0x%x\n", if_name(ifp), + tp->vme_flags); + m_freem(m); + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); + mtx_unlock(&tp->vme_mtx); + return (0); + } + + if ((error = mbufq_enqueue(&tp->vme_queue, m)) != 0) + return (error); + + if (tp->vme_flags & VME_RWAIT) { + tp->vme_flags &= ~VME_RWAIT; + wakeup(tp); + } + + if ((tp->vme_flags & VME_ASYNC) && (tp->vme_sigio != NULL)) { + mtx_unlock(&tp->vme_mtx); + pgsigio(&tp->vme_sigio, SIGIO, 0); + mtx_lock(&tp->vme_mtx); + } + + selwakeuppri(&tp->vme_rsel, PZERO+1); + KNOTE_LOCKED(&tp->vme_rsel.si_note, 0); + + mtx_unlock(&tp->vme_mtx); + + return (0); +} + +/* + * vmeioctl + * + * the cdevsw interface is now pretty minimal + */ +static int +vmeioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, + struct thread *td) +{ + struct vme_softc *tp = dev->si_drv1; + if_t ifp = tp->vme_ifp; + struct vmeinfo *vmep = NULL; + int error = 0; +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) + int ival; +#endif + + switch (cmd) { + case VMESIFINFO: + { + struct ifreq ifr; + + vmep = (struct vmeinfo *)data; + ifr.ifr_mtu = vmep->mtu; + error = if_drvioctl(ifp, SIOCSIFMTU, &ifr, td); + if (error) + break; + tp->vme_baudrate = vmep->baudrate; + if_setbaudrate(ifp, vmep->baudrate); + break; + } + + case VMEGIFINFO: + vmep = (struct vmeinfo *)data; + mtx_lock(&tp->vme_mtx); + vmep->mtu = tp->vme_mtu; + vmep->type = IFT_ETHER; + vmep->baudrate = tp->vme_baudrate; + mtx_unlock(&tp->vme_mtx); + break; + + case VMESDEBUG: + vmedebug = *(int *)data; + break; + + case VMEGDEBUG: + *(int *)data = vmedebug; + break; + + case VMEGIFNAME: + { + struct ifreq *ifr = (struct ifreq *) data; + + strlcpy(ifr->ifr_name, if_name(ifp), IFNAMSIZ); + break; + } + + case FIONBIO: + break; + + case FIOASYNC: + mtx_lock(&tp->vme_mtx); + if (*(int *)data) + tp->vme_flags |= VME_ASYNC; + else + tp->vme_flags &= ~VME_ASYNC; + mtx_unlock(&tp->vme_mtx); + break; + + case FIONREAD: + { + struct mbuf *m; + + m = mbufq_first(&tp->vme_queue); + if (m != NULL) + *(int *)data = m->m_pkthdr.len; + else + *(int *)data = 0; + break; + } + + case FIOSETOWN: + return (fsetown(*(int *)data, &tp->vme_sigio)); + + case FIOGETOWN: + *(int *)data = fgetown(&tp->vme_sigio); + return (0); + + /* this is deprecated, FIOSETOWN should be used instead */ + case TIOCSPGRP: + return (fsetown(-(*(int *)data), &tp->vme_sigio)); + + /* this is deprecated, FIOGETOWN should be used instead */ + case TIOCGPGRP: + *(int *)data = -fgetown(&tp->vme_sigio); + return (0); + +#if defined(COMPAT_FREEBSD6) || defined(COMPAT_FREEBSD5) || \ + defined(COMPAT_FREEBSD4) + case _IO('V', 0): + ival = IOCPARM_IVAL(data); + data = (caddr_t)&ival; + /* FALLTHROUGH */ +#endif + case SIOCGIFADDR: /* get MAC address of the remote side */ + mtx_lock(&tp->vme_mtx); + bcopy(tp->ether_addr, data, sizeof(tp->ether_addr)); + mtx_unlock(&tp->vme_mtx); + break; + + case SIOCSIFADDR: /* set MAC address of the remote side */ + mtx_lock(&tp->vme_mtx); + bcopy(data, tp->ether_addr, sizeof(tp->ether_addr)); + mtx_unlock(&tp->vme_mtx); + break; + + default: + return (ENOTTY); + } + + return (error); +} + +/* + * vmeread + * + * the cdevsw read interface - reads a packet at a time, or at + * least as much of a packet as can be read + */ +static int +vmeread(struct cdev *dev, struct uio *uio, int flag) +{ + struct vme_softc *tp = dev->si_drv1; + if_t ifp = tp->vme_ifp; + struct mbuf *m = NULL; + int error = 0, len; + + VMEDEBUG("%s reading, minor = %#x\n", if_name(ifp), dev2unit(dev)); + + mtx_lock(&tp->vme_mtx); + if ((tp->vme_flags & VME_READY) != VME_READY) { + mtx_unlock(&tp->vme_mtx); + + /* Unlocked read. */ + VMEDEBUG("%s not ready. minor = %#x, vme_flags = 0x%x\n", + if_name(ifp), dev2unit(dev), tp->vme_flags); + + return (EHOSTDOWN); + } + + tp->vme_flags &= ~VME_RWAIT; + + /* sleep until we get a packet */ + while ((m = mbufq_dequeue(&tp->vme_queue)) == NULL) { + if (flag & O_NONBLOCK) { + mtx_unlock(&tp->vme_mtx); + return (EWOULDBLOCK); + } + tp->vme_flags |= VME_RWAIT; + error = mtx_sleep(tp, &tp->vme_mtx, PCATCH | (PZERO + 1), + "vmerd", 0); + if (error) { + mtx_unlock(&tp->vme_mtx); + return (error); + } + } + mtx_unlock(&tp->vme_mtx); + + /* feed packet to bpf */ + if_mtap(ifp, m, NULL, 0); + + /* xfer packet to user space */ + while ((m != NULL) && (uio->uio_resid > 0) && (error == 0)) { + len = min(uio->uio_resid, m->m_len); + if (len == 0) + break; + + error = uiomove(mtod(m, void *), len, uio); + if (error != 0) + if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); + else if ((m->m_flags & M_PKTHDR) != 0) + if_inc_txcounters(ifp, m); + m = m_free(m); + } + + if (m != NULL) { + VMEDEBUG("%s dropping mbuf, minor = %#x\n", if_name(ifp), + dev2unit(dev)); + m_freem(m); + } + + return (error); +} + +/* + * vmewrite + * + * the cdevsw write interface - an atomic write is a packet - or else! + */ +static int +vmewrite(struct cdev *dev, struct uio *uio, int flag) +{ + struct ether_header *eh; + struct vme_softc *tp = dev->si_drv1; + if_t ifp = tp->vme_ifp; + struct mbuf *m; + ifring_t *ifrs; + int rid; + + VMEDEBUG("%s writing, minor = %#x\n", if_name(ifp), dev2unit(dev)); + + if (uio->uio_resid == 0) + return (0); + + if ((uio->uio_resid < 0) || (uio->uio_resid > VMEMRU)) { + VMEDEBUG("%s invalid packet len = %zd, minor = %#x\n", + if_name(ifp), uio->uio_resid, dev2unit(dev)); + + return (EIO); + } + + if ((m = m_uiotombuf(uio, M_NOWAIT, 0, ETHER_ALIGN, + M_PKTHDR)) == NULL) { + if_inc_counter(ifp, IFCOUNTER_IERRORS, 1); + return (ENOBUFS); + } + + m->m_pkthdr.rcvif = ifp; + + /* + * Only pass a unicast frame to ether_input(), if it would actually + * have been received by non-virtual hardware. + */ + if (m->m_len < sizeof(struct ether_header)) { + m_freem(m); + return (0); + } + eh = mtod(m, struct ether_header *); + + if (eh && (tp->vme_ifflags & IFF_PROMISC) == 0 && + !ETHER_IS_MULTICAST(eh->ether_dhost) && + bcmp(eh->ether_dhost, if_lladdr(ifp), ETHER_ADDR_LEN) != 0) { + m_freem(m); + return (0); + } + + vmersshash(m); + ifrs = if_getsoftc(ifp, IF_RING); + + rid = m->m_pkthdr.flowid % vmenumqueues; + m->m_pkthdr.ifring = ifrs[rid]; + + /* Pass packet up to parent. */ + CURVNET_SET(ifp->if_vnet); + if_input(ifp, m); + CURVNET_RESTORE(); + if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); /* ibytes are counted in parent */ + + return (0); +} + +/* + * vmepoll + * + * the poll interface, this is only useful on reads + * really. the write detect always returns true, write never blocks + * anyway, it either accepts the packet or drops it + */ +static int +vmepoll(struct cdev *dev, int events, struct thread *td) +{ + struct vme_softc *tp = dev->si_drv1; + if_t ifp = tp->vme_ifp; + int revents = 0; + + VMEDEBUG("%s polling, minor = %#x\n", if_name(ifp), dev2unit(dev)); + + mtx_lock(&tp->vme_mtx); + if (events & (POLLIN | POLLRDNORM)) { + if (mbufq_len(&tp->vme_queue) > 0) { + VMEDEBUG("%s have data in queue. len = %d, " \ + "minor = %#x\n", if_name(ifp), + if_snd_len(ifp), dev2unit(dev)); + + revents |= (events & (POLLIN | POLLRDNORM)); + } else { + VMEDEBUG("%s waiting for data, minor = %#x\n", + if_name(ifp), dev2unit(dev)); + + selrecord(td, &tp->vme_rsel); + } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 11:56:16 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E4E7E6F4 for ; Mon, 1 Jun 2015 11:56:16 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D27801DD6 for ; Mon, 1 Jun 2015 11:56:16 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t51BuGWw029824 for ; Mon, 1 Jun 2015 11:56:16 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t51BuDML029811 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 11:56:13 GMT (envelope-from btw@FreeBSD.org) Date: Mon, 1 Jun 2015 11:56:13 GMT Message-Id: <201506011156.t51BuDML029811@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286522 - in soc2015/btw/head/sys: kern net netinet netinet6 sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 11:56:17 -0000 Author: btw Date: Mon Jun 1 11:56:12 2015 New Revision: 286522 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286522 Log: Implement the ifring structure, and the corresponding instrumentation points in network stack. Modified: soc2015/btw/head/sys/kern/uipc_mbuf.c soc2015/btw/head/sys/net/if_ethersubr.c soc2015/btw/head/sys/net/if_var.h soc2015/btw/head/sys/net/netisr.c soc2015/btw/head/sys/netinet/ip_input.c soc2015/btw/head/sys/netinet/tcp_input.c soc2015/btw/head/sys/netinet/udp_usrreq.c soc2015/btw/head/sys/netinet6/ip6_input.c soc2015/btw/head/sys/sys/mbuf.h Modified: soc2015/btw/head/sys/kern/uipc_mbuf.c ============================================================================== --- soc2015/btw/head/sys/kern/uipc_mbuf.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/kern/uipc_mbuf.c Mon Jun 1 11:56:12 2015 (r286522) @@ -111,11 +111,11 @@ */ #if defined(__LP64__) CTASSERT(offsetof(struct mbuf, m_dat) == 32); -CTASSERT(sizeof(struct pkthdr) == 56); +CTASSERT(sizeof(struct pkthdr) == 64); CTASSERT(sizeof(struct m_ext) == 48); #else CTASSERT(offsetof(struct mbuf, m_dat) == 24); -CTASSERT(sizeof(struct pkthdr) == 48); +CTASSERT(sizeof(struct pkthdr) == 52); CTASSERT(sizeof(struct m_ext) == 28); #endif Modified: soc2015/btw/head/sys/net/if_ethersubr.c ============================================================================== --- soc2015/btw/head/sys/net/if_ethersubr.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/net/if_ethersubr.c Mon Jun 1 11:56:12 2015 (r286522) @@ -386,6 +386,8 @@ struct ether_header *eh; u_short etype; + IFRSTAT_INC(m, ifrs_ether); + if ((ifp->if_flags & IFF_UP) == 0) { m_freem(m); return; @@ -662,6 +664,7 @@ * so assert it is correct here. */ KASSERT(m->m_pkthdr.rcvif == ifp, ("%s: ifnet mismatch", __func__)); + IFRSTAT_INC(m, ifrs_ifinput); netisr_dispatch(NETISR_ETHER, m); m = mn; } Modified: soc2015/btw/head/sys/net/if_var.h ============================================================================== --- soc2015/btw/head/sys/net/if_var.h Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/net/if_var.h Mon Jun 1 11:56:12 2015 (r286522) @@ -79,6 +79,29 @@ struct ifops ift_ops; }; +struct ifrstat { + uint64_t ifrs_ifinput; + uint64_t ifrs_netisr; + uint64_t ifrs_ether; + uint64_t ifrs_ip; + uint64_t ifrs_ip6; + uint64_t ifrs_udp; + uint64_t ifrs_tcp; +} __aligned(CACHE_LINE_SIZE); + +#define IFRSTAT_ADD(m, name, val) \ +do { \ + if ((m)->m_pkthdr.ifring != NULL) \ + (m)->m_pkthdr.ifring->ifr_stats[curcpu].name += (val); \ +} while (0) +#define IFRSTAT_SUB(m, name, val) IFRSTAT_ADD((m), name, -(val)) +#define IFRSTAT_INC(m, name) IFRSTAT_ADD((m), name, 1) +#define IFRSTAT_DEC(m, name) IFRSTAT_SUB((m), name, 1) + +struct ifring { + struct ifrstat ifr_stats[MAXCPU]; /* Percpu counters */ +}; + /* * Many network stack modules want to store their software context associated * with an interface. We used to give a pointer for everyone, but that yield @@ -129,6 +152,8 @@ size_t if_linkmiblen; /* length of above data */ u_int if_refcount; /* reference count */ u_int if_fib; /* interface FIB */ + struct ifring *if_rings; /* pairs of tx and rx rings */ + int if_nrings; /* elements in if_rings */ uint8_t if_link_state; /* current link state */ uint32_t if_mtu; /* maximum transmission unit */ Modified: soc2015/btw/head/sys/net/netisr.c ============================================================================== --- soc2015/btw/head/sys/net/netisr.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/net/netisr.c Mon Jun 1 11:56:12 2015 (r286522) @@ -761,6 +761,7 @@ local_npw.nw_len--; VNET_ASSERT(m->m_pkthdr.rcvif != NULL, ("%s:%d rcvif == NULL: m=%p", __func__, __LINE__, m)); + IFRSTAT_INC(m, ifrs_netisr); CURVNET_SET(m->m_pkthdr.rcvif->if_vnet); netisr_proto[proto].np_handler(m); CURVNET_RESTORE(); Modified: soc2015/btw/head/sys/netinet/ip_input.c ============================================================================== --- soc2015/btw/head/sys/netinet/ip_input.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/netinet/ip_input.c Mon Jun 1 11:56:12 2015 (r286522) @@ -402,6 +402,7 @@ struct in_addr odst; /* original dst address */ M_ASSERTPKTHDR(m); + IFRSTAT_INC(m, ifrs_ip); if (m->m_flags & M_FASTFWD_OURS) { m->m_flags &= ~M_FASTFWD_OURS; Modified: soc2015/btw/head/sys/netinet/tcp_input.c ============================================================================== --- soc2015/btw/head/sys/netinet/tcp_input.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/netinet/tcp_input.c Mon Jun 1 11:56:12 2015 (r286522) @@ -629,6 +629,7 @@ *mp = NULL; to.to_flags = 0; TCPSTAT_INC(tcps_rcvtotal); + IFRSTAT_INC(m, ifrs_tcp); #ifdef INET6 if (isipv6) { Modified: soc2015/btw/head/sys/netinet/udp_usrreq.c ============================================================================== --- soc2015/btw/head/sys/netinet/udp_usrreq.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/netinet/udp_usrreq.c Mon Jun 1 11:56:12 2015 (r286522) @@ -395,6 +395,7 @@ ifp = m->m_pkthdr.rcvif; *mp = NULL; UDPSTAT_INC(udps_ipackets); + IFRSTAT_INC(m, ifrs_udp); /* * Strip IP options, if any; should skip this, make available to Modified: soc2015/btw/head/sys/netinet6/ip6_input.c ============================================================================== --- soc2015/btw/head/sys/netinet6/ip6_input.c Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/netinet6/ip6_input.c Mon Jun 1 11:56:12 2015 (r286522) @@ -416,6 +416,8 @@ #endif /* IPSEC */ + IFRSTAT_INC(m, ifrs_ip6); + if (m->m_flags & M_FASTFWD_OURS) { /* * Firewall changed destination to local. Modified: soc2015/btw/head/sys/sys/mbuf.h ============================================================================== --- soc2015/btw/head/sys/sys/mbuf.h Mon Jun 1 10:29:50 2015 (r286521) +++ soc2015/btw/head/sys/sys/mbuf.h Mon Jun 1 11:56:12 2015 (r286522) @@ -105,13 +105,14 @@ /* * Record/packet header in first mbuf of chain; valid only if M_PKTHDR is set. - * Size ILP32: 48 - * LP64: 56 + * Size ILP32: 52 + * LP64: 64 * Compile-time assertions in uipc_mbuf.c test these values to ensure that * they are correct. */ struct pkthdr { struct ifnet *rcvif; /* rcv interface */ + struct ifring *ifring; /* rcv ring */ SLIST_HEAD(packet_tags, m_tag) tags; /* list of packet tags */ int32_t len; /* total packet length */ From owner-svn-soc-all@FreeBSD.ORG Mon Jun 1 19:30:50 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 599E2C11 for ; Mon, 1 Jun 2015 19:30:50 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3DCE010AA for ; Mon, 1 Jun 2015 19:30:50 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t51JUoGu054201 for ; Mon, 1 Jun 2015 19:30:50 GMT (envelope-from iateaca@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t51JUnHH054175 for svn-soc-all@FreeBSD.org; Mon, 1 Jun 2015 19:30:49 GMT (envelope-from iateaca@FreeBSD.org) Date: Mon, 1 Jun 2015 19:30:49 GMT Message-Id: <201506011930.t51JUnHH054175@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to iateaca@FreeBSD.org using -f From: iateaca@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286536 - soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 19:30:50 -0000 Author: iateaca Date: Mon Jun 1 19:30:49 2015 New Revision: 286536 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286536 Log: Commit Description: implement the NE2000 registers support and an API to access the NIC registers (get and set by offset), the initialization phase of the NIC so the ED driver can probe it as a RealTek 8029 device, the Remote DMA protocol so the ED driver can store and load from the NIC's RAM memory M bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c ============================================================================== --- soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Mon Jun 1 18:49:31 2015 (r286535) +++ soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Mon Jun 1 19:30:49 2015 (r286536) @@ -1,6 +1,6 @@ #include - +#include #include "pci_emul.h" #include "if_edreg.h" @@ -18,23 +18,152 @@ #define DPRINTF(fmt, arg...) #endif +/* + * NE2000 defines + */ +#define NE2000_P0 0 +#define NE2000_P1 1 +#define NE2000_P2 2 +#define NE2000_P3 3 + +#define NE2000_MEM_SIZE 32768 +#define NE2000_PAGE_SIZE 0x10 +#define NE2000_PAGE_COUNT 4 + +#define NE2000_BAR_NIC 0 +#define NE2000_BAR_ASIC 1 + +#define ED_RTL80X9_CONFIG2 0x05 +#define ED_RTL80X9_CF2_10_T 0x40 +#define ED_RTL80X9_CONFIG3 0x06 +#define ED_RTL80X9_CF3_FUDUP 0x40 +#define ED_RTL80X9_80X9ID0 0x0a +#define ED_RTL80X9_ID0 0x50 +#define ED_RTL80X9_80X9ID1 0x0b +#define ED_RTL8029_ID1 0x43 + + +/* + * NE2000 data structures + */ +struct pci_ne2000_softc { + struct pci_devinst *asc_pi; + + /* NIC registers */ + uint8_t nic_regs[NE2000_PAGE_COUNT][NE2000_PAGE_SIZE]; + + /* ASIC registers */ + uint8_t reset; + + /* State Variables */ + uint8_t page; + + /* NIC memory is 16k */ + uint8_t ram[NE2000_MEM_SIZE]; +}; + +/* + * NE2000 module function declarations + */ +static void +ne2000_set_reg_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset, uint8_t value); +static int +ne2000_get_reg_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset); +static void +ne2000_set_field_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset, uint8_t mask, uint8_t value); + +static uint8_t +ne2000_read_nic(struct pci_ne2000_softc *sc, uint8_t offset); +static uint16_t +ne2000_read_asic(struct pci_ne2000_softc *sc, uint8_t offset); + +static int +ne2000_write_nic(struct pci_ne2000_softc *sc, uint8_t offset, uint8_t value); +static int +ne2000_write_asic(struct pci_ne2000_softc *sc, uint8_t offset, uint16_t value); + +static int +ne2000_emul_reg_page0(struct pci_ne2000_softc *sc, uint8_t offset, + uint8_t value); + +static int ne2000_reset_board(void); +static int ne2000_software_reset(struct pci_ne2000_softc *sc); + + +/* + * NE2000 module function definitions + */ +static void +ne2000_set_reg_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset, uint8_t value) +{ + assert(page < NE2000_PAGE_COUNT); + assert(offset < NE2000_PAGE_SIZE); + + sc->nic_regs[page][offset] = value; +} + +static int +ne2000_get_reg_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset) +{ + assert(page < NE2000_PAGE_COUNT); + assert(offset < NE2000_PAGE_SIZE); + + return sc->nic_regs[page][offset]; +} + +static void +ne2000_set_field_by_offset(struct pci_ne2000_softc *sc, uint8_t page, + uint8_t offset, uint8_t mask, uint8_t value) +{ + uint8_t reg_value = 0; + + reg_value = ne2000_get_reg_by_offset(sc, page, offset); + + reg_value &= ~mask; + reg_value |= value; + + ne2000_set_reg_by_offset(sc, page, offset, reg_value); +} static int pci_ne2000_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts) { + struct pci_ne2000_softc *sc = NULL; #if DEBUG_NE2000 == 1 dbg = fopen("/tmp/bhyve_ne2000.log", "w+"); #endif + assert(ctx != NULL); + assert(pi != NULL); + assert(opts != NULL); + + sc = calloc(1, sizeof(struct pci_ne2000_softc)); + pi->pi_arg = sc; + sc->asc_pi = pi; + + /* probe a RTL8029 PCI card as a generic NE2000 device */ pci_set_cfgdata16(pi, PCIR_DEVICE, 0x8029); pci_set_cfgdata16(pi, PCIR_VENDOR, 0x10ec); - pci_emul_alloc_bar(pi, 0, PCIBAR_IO, 16); // nic - pci_emul_alloc_bar(pi, 1, PCIBAR_IO, 16); // asic + /* allocate two BAR registers for both NIC and ASIC I/O bus address offsets */ + pci_emul_alloc_bar(pi, 0, PCIBAR_IO, 16); + pci_emul_alloc_bar(pi, 1, PCIBAR_IO, 16); + /* allocate an IRQ pin for our slot */ pci_lintr_request(pi); + /* set network medium type as 10BaseT and full-duplex */ + ne2000_set_reg_by_offset(sc, NE2000_P3, + ED_RTL80X9_CONFIG2, ED_RTL80X9_CF2_10_T); + ne2000_set_reg_by_offset(sc, NE2000_P3, + ED_RTL80X9_CONFIG3, ED_RTL80X9_CF3_FUDUP); + return 0; } @@ -42,13 +171,275 @@ pci_ne2000_write(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, int baridx, uint64_t offset, int size, uint64_t value) { + struct pci_ne2000_softc *sc = pi->pi_arg; + int err; + + assert(sc != NULL); + assert(offset <= 0x0f); + + switch (baridx) { + case NE2000_BAR_NIC: + assert(size == 1); + assert(value <= 0xff); + err = ne2000_write_nic(sc, offset, value); + break; + case NE2000_BAR_ASIC: + assert(size <= 2); + err = ne2000_write_asic(sc, offset, value); + break; + default: + assert(0); + } + + assert(err == 0); + return; } +static int +ne2000_write_nic(struct pci_ne2000_softc *sc, uint8_t offset, uint8_t value) +{ + int err; + + /* check is not selected a new page */ + if (offset == ED_P0_CR) { + switch (value & (ED_CR_PS0 | ED_CR_PS1)) { + case ED_CR_PAGE_0: + sc->page = NE2000_P0; + break; + case ED_CR_PAGE_1: + sc->page = NE2000_P1; + break; + case ED_CR_PAGE_2: + DPRINTF("The ED driver seleted PAGE2"); + assert(0); + break; + case ED_CR_PAGE_3: + sc->page = NE2000_P3; + break; + } + } + + ne2000_set_reg_by_offset(sc, sc->page, offset, value); + + if (sc->page == NE2000_P0) { + err = ne2000_emul_reg_page0(sc, offset, value); + assert(err == 0); + } + else if (sc->page == NE2000_P3) + DPRINTF("The ED driver wrote a register from PAGE3"); + else + assert(0); + + return 0; +} + +static int +ne2000_write_asic(struct pci_ne2000_softc *sc, uint8_t offset, uint16_t value) +{ + uint8_t dcr = 0; + uint8_t cr = 0; + uint8_t rbcr0 = 0; + uint8_t rbcr1 = 0; + uint8_t rsar0 = 0; + uint8_t rsar1 = 0; + + uint16_t rbcr = 0; + uint16_t rsar = 0; + + switch (offset) { + case ED_NOVELL_RESET: + sc->reset = value; + break; + case ED_NOVELL_DATA: + /* Write the value word into the NIC's RAM using the Remote DMA + * protocol + */ + dcr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_DCR); + if ((dcr & ED_DCR_WTS) != ED_DCR_WTS) { + DPRINTF("The NE2000 card is working only in Word mode"); + break; + } + + cr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_CR); + assert((cr & (ED_CR_RD1 | ED_CR_STA)) == + (ED_CR_RD1 | ED_CR_STA)); + + rbcr0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0); + rbcr1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1); + rbcr = rbcr0 | (rbcr1 << 8); + + rsar0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0); + rsar1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1); + rsar = rsar0 | (rsar1 << 8); + + assert(rsar < NE2000_MEM_SIZE); + + /* copy the value in LOW - HIGH order */ + sc->ram[rsar] = value; + sc->ram[rsar + 1] = value >> 8; + + rsar += 2; + rbcr -= 2; + + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0, rsar); + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1, rsar >> 8); + + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0, rbcr); + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1, rbcr >> 8); + + break; + default: + assert(0); + } + + return 0; +} + +static int +ne2000_emul_reg_page0(struct pci_ne2000_softc *sc, uint8_t offset, + uint8_t value) +{ + int err; + + switch (offset) { + case ED_P0_CR: + if (value & ED_CR_STP) { + err = ne2000_software_reset(sc); + assert(err == 0); + } + break; + } + + return 0; +} + +static int +ne2000_software_reset(struct pci_ne2000_softc *sc) +{ + uint8_t mask = 0; + uint8_t value = 0; + + mask |= ED_ISR_RST; + value |= ED_ISR_RST; + ne2000_set_field_by_offset(sc, NE2000_P0, ED_P0_ISR, mask, value); + + return 0; +} + static uint64_t pci_ne2000_read(struct vmctx *ctx, int vcpu, struct pci_devinst *pi, int baridx, uint64_t offset, int size) { + struct pci_ne2000_softc *sc = pi->pi_arg; + uint64_t value = 0; + + assert(sc != NULL); + assert(offset <= 0x0f); + + switch (baridx) { + case NE2000_BAR_NIC: + assert(size == 1); + value = ne2000_read_nic(sc, offset); + break; + case NE2000_BAR_ASIC: + assert(size <= 2); + value = ne2000_read_asic(sc, offset); + break; + default: + assert(0); + } + + return value; +} + +static uint8_t +ne2000_read_nic(struct pci_ne2000_softc *sc, uint8_t offset) +{ + uint8_t value = 0; + + /* check is not a RTL8029 Register Defined in Page0 */ + if (sc->page == NE2000_P0) { + if (offset == ED_RTL80X9_80X9ID0) + return ED_RTL80X9_ID0; + else if (offset == ED_RTL80X9_80X9ID1) + return ED_RTL8029_ID1; + } + + /* read a general NE2000 register */ + value = ne2000_get_reg_by_offset(sc, sc->page, offset); + + return value; +} + +static uint16_t +ne2000_read_asic(struct pci_ne2000_softc *sc, uint8_t offset) +{ + int err; + uint8_t dcr = 0; + uint8_t cr = 0; + uint8_t rbcr0 = 0; + uint8_t rbcr1 = 0; + uint8_t rsar0 = 0; + uint8_t rsar1 = 0; + + uint16_t rbcr = 0; + uint16_t rsar = 0; + uint16_t read_value = 0; + + switch (offset) { + case ED_NOVELL_RESET: + read_value = sc->reset; + err = ne2000_reset_board(); + assert(err == 0); + break; + case ED_NOVELL_DATA: + /* Read one word from the NIC's RAM using the Remote DMA + * protocol + */ + dcr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_DCR); + if ((dcr & ED_DCR_WTS) != ED_DCR_WTS) { + DPRINTF("The NE2000 card is working only in Word mode"); + break; + } + + cr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_CR); + assert((cr & (ED_CR_RD0 | ED_CR_STA)) == + (ED_CR_RD0 | ED_CR_STA)); + + rbcr0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0); + rbcr1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1); + rbcr = rbcr0 | (rbcr1 << 8); + + rsar0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0); + rsar1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1); + rsar = rsar0 | (rsar1 << 8); + + assert(rsar < NE2000_MEM_SIZE); + + /* copy the value in LOW - HIGH order */ + read_value = sc->ram[rsar] | (sc->ram[rsar + 1] << 8); + + rsar += 2; + rbcr -= 2; + + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0, rsar); + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1, rsar >> 8); + + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0, rbcr); + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1, rbcr >> 8); + + break; + default: + assert(0); + } + + return read_value; +} + +static int ne2000_reset_board(void) +{ + DPRINTF("The driver resets the board"); return 0; } From owner-svn-soc-all@FreeBSD.ORG Tue Jun 2 13:26:28 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 073D14D7 for ; Tue, 2 Jun 2015 13:26:28 +0000 (UTC) (envelope-from mihai@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D1D17164E for ; Tue, 2 Jun 2015 13:26:27 +0000 (UTC) (envelope-from mihai@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t52DQRNI038754 for ; Tue, 2 Jun 2015 13:26:27 GMT (envelope-from mihai@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t52DQRcH038753 for svn-soc-all@FreeBSD.org; Tue, 2 Jun 2015 13:26:27 GMT (envelope-from mihai@FreeBSD.org) Date: Tue, 2 Jun 2015 13:26:27 GMT Message-Id: <201506021326.t52DQRcH038753@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to mihai@FreeBSD.org using -f From: mihai@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286554 - soc2015/mihai/bhyve-on-arm-head/tools/test/sort/bigtest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jun 2015 13:26:28 -0000 Author: mihai Date: Tue Jun 2 13:26:26 2015 New Revision: 286554 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286554 Log: soc2015: mihai: delete invalid directory Deleted: soc2015/mihai/bhyve-on-arm-head/tools/test/sort/bigtest/q-1.024.003. From owner-svn-soc-all@FreeBSD.ORG Tue Jun 2 14:28:46 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB951506 for ; Tue, 2 Jun 2015 14:28:45 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BE5231538 for ; Tue, 2 Jun 2015 14:28:45 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t52ESjGN029760 for ; Tue, 2 Jun 2015 14:28:45 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t52ESihj029738 for svn-soc-all@FreeBSD.org; Tue, 2 Jun 2015 14:28:44 GMT (envelope-from btw@FreeBSD.org) Date: Tue, 2 Jun 2015 14:28:44 GMT Message-Id: <201506021428.t52ESihj029738@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286556 - soc2015/btw/head/sys/net MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jun 2015 14:28:46 -0000 Author: btw Date: Tue Jun 2 14:28:43 2015 New Revision: 286556 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286556 Log: Add the supports for allocating per-ring counters to ifnet KPI. Modified: soc2015/btw/head/sys/net/if.c soc2015/btw/head/sys/net/if.h soc2015/btw/head/sys/net/if_var.h Modified: soc2015/btw/head/sys/net/if.c ============================================================================== --- soc2015/btw/head/sys/net/if.c Tue Jun 2 13:07:22 2015 (r286555) +++ soc2015/btw/head/sys/net/if.c Tue Jun 2 14:28:43 2015 (r286556) @@ -514,8 +514,9 @@ struct iftype *ift; struct ifnet *ifp; struct ifaddr *ifa; + struct ifring **ifrs; struct sockaddr_dl *sdl; - int socksize, ifasize, namelen, masklen; + int socksize, ifasize, namelen, masklen, nrings; KASSERT(ifat->ifat_version == IF_ATTACH_VERSION, ("%s: version %d, expected %d", @@ -611,6 +612,18 @@ refcount_init(&ifp->if_refcount, 1); /* + * Allocate ifring to store the per-ring statistics for this + * interface. + */ + nrings = ifat->ifat_nrings; + ifrs = malloc(sizeof(struct ifring *) * nrings, M_IFNET, M_WAITOK); + for (int i = 0; i < nrings; i++) + ifrs[i] = malloc(sizeof(struct ifring), M_IFNET, + M_WAITOK | M_ZERO); + ifp->if_nrings = nrings; + ifp->if_rings = ifrs; + + /* * Allocate ifaddr to store link level address and name for this * interface. Always save enough space for any possiable name so * we can do a rename in place later. @@ -683,6 +696,10 @@ ifmedia_free(ifp); + for (int i = 0; i < ifp->if_nrings; i++) + free(ifp->if_rings[i], M_IFNET); + free(ifp->if_rings, M_IFNET); + rw_destroy(&ifp->if_lock); free(ifp, M_IFNET); } @@ -1572,6 +1589,8 @@ return (ifp->if_xname); case IF_VLAN: return (ifp->if_vlantrunk); + case IF_RING: + return (ifp->if_rings); default: /* fall through */ ; Modified: soc2015/btw/head/sys/net/if.h ============================================================================== --- soc2015/btw/head/sys/net/if.h Tue Jun 2 13:07:22 2015 (r286555) +++ soc2015/btw/head/sys/net/if.h Tue Jun 2 14:28:43 2015 (r286556) @@ -588,6 +588,7 @@ IF_VLAN, IF_TOEDEV, IF_MEDIA, + IF_RING, /* * Space above 99999 is split among different vendors. * @@ -597,6 +598,7 @@ } ift_feature; typedef struct ifnet * if_t; +typedef struct ifring * ifring_t; typedef void (*if_input_t)(if_t, struct mbuf *); typedef int (*if_transmit_t)(if_t, struct mbuf *); @@ -726,6 +728,10 @@ * later. Otherwise it inherits static iftsomax from ifdriver. */ struct iftsomax *ifat_tsomax; + /* + * Number of the tx/rx rings. + */ + int ifat_nrings; }; /* Modified: soc2015/btw/head/sys/net/if_var.h ============================================================================== --- soc2015/btw/head/sys/net/if_var.h Tue Jun 2 13:07:22 2015 (r286555) +++ soc2015/btw/head/sys/net/if_var.h Tue Jun 2 14:28:43 2015 (r286556) @@ -152,7 +152,7 @@ size_t if_linkmiblen; /* length of above data */ u_int if_refcount; /* reference count */ u_int if_fib; /* interface FIB */ - struct ifring *if_rings; /* pairs of tx and rx rings */ + struct ifring **if_rings; /* pairs of tx and rx rings */ int if_nrings; /* elements in if_rings */ uint8_t if_link_state; /* current link state */ From owner-svn-soc-all@FreeBSD.ORG Wed Jun 3 18:09:57 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7A51D2B9 for ; Wed, 3 Jun 2015 18:09:57 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6813F1D67 for ; Wed, 3 Jun 2015 18:09:57 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t53I9vXc047233 for ; Wed, 3 Jun 2015 18:09:57 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t53I9uPR046509 for svn-soc-all@FreeBSD.org; Wed, 3 Jun 2015 18:09:56 GMT (envelope-from kczekirda@FreeBSD.org) Date: Wed, 3 Jun 2015 18:09:56 GMT Message-Id: <201506031809.t53I9uPR046509@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286606 - soc2015/kczekirda/ipxe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 18:09:57 -0000 Author: kczekirda Date: Wed Jun 3 18:09:56 2015 New Revision: 286606 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286606 Log: style Modified: soc2015/kczekirda/ipxe/Makefile Modified: soc2015/kczekirda/ipxe/Makefile ============================================================================== --- soc2015/kczekirda/ipxe/Makefile Wed Jun 3 17:45:45 2015 (r286605) +++ soc2015/kczekirda/ipxe/Makefile Wed Jun 3 18:09:56 2015 (r286606) @@ -15,30 +15,23 @@ ONLY_FOR_ARCHS_REASON= not yet ported to anything other than amd64/i386 BUILD_DEPENDS+= bash:${PORTSDIR}/shells/bash \ - mkisofs:${PORTSDIR}/sysutils/cdrtools \ - gcc:${PORTSDIR}/lang/gcc49 + mkisofs:${PORTSDIR}/sysutils/cdrtools \ + gcc48:${PORTSDIR}/lang/gcc48 MAKE_JOBS_SAFE= yes USES= gmake -USE_GCC= yes +USE_GCC= any WRKSRC= ${WRKDIR}/${DISTNAME}/src .include .if ${ARCH} == "amd64" -MAKE_ARGS+= ARCH=i386 +MAKE_ARGS+= ARCH=i386 .endif -.if exists(/usr/local/bin/gcc49) -GCC=gcc49 -CC=gcc49 -.endif - -BINLIST= bin/undionly.kpxe bin/undionly.kkpxe bin/ipxe.iso bin/ipxe.usb - -ALL_TARGET?= ${BINLIST} +BINLIST= bin/undionly.kpxe bin/undionly.kkpxe bin/ipxe.iso bin/ipxe.usb -INSTALL_DATA= install -m 444 +ALL_TARGET?= ${BINLIST} do-install: ${MKDIR} ${STAGEDIR}${DATADIR} From owner-svn-soc-all@FreeBSD.ORG Wed Jun 3 19:23:49 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AAF7E84A for ; Wed, 3 Jun 2015 19:23:49 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7F12E10E2 for ; Wed, 3 Jun 2015 19:23:49 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t53JNnQV045078 for ; Wed, 3 Jun 2015 19:23:49 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t53JNmr6045060 for svn-soc-all@FreeBSD.org; Wed, 3 Jun 2015 19:23:48 GMT (envelope-from kczekirda@FreeBSD.org) Date: Wed, 3 Jun 2015 19:23:48 GMT Message-Id: <201506031923.t53JNmr6045060@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286609 - soc2015/kczekirda/ipxe/files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 19:23:49 -0000 Author: kczekirda Date: Wed Jun 3 19:23:47 2015 New Revision: 286609 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286609 Log: patches Added: soc2015/kczekirda/ipxe/files/ soc2015/kczekirda/ipxe/files/patch-Makefile soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile soc2015/kczekirda/ipxe/files/patch-util_geniso Added: soc2015/kczekirda/ipxe/files/patch-Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/files/patch-Makefile Wed Jun 3 19:23:47 2015 (r286609) @@ -0,0 +1,20 @@ +--- Makefile.orig 2015-06-03 19:17:57 UTC ++++ Makefile +@@ -14,7 +14,7 @@ MAKEDEPS := Makefile + # + # Locations of tools + # +-HOST_CC := gcc ++HOST_CC := gcc48 + RM := rm -f + TOUCH := touch + MKDIR := mkdir +@@ -23,7 +23,7 @@ ECHO := echo + PRINTF := printf + PERL := perl + TRUE := true +-CC := $(CROSS_COMPILE)gcc ++CC := $(CROSS_COMPILE)gcc48 + CPP := $(CC) -E + AS := $(CROSS_COMPILE)as + LD := $(CROSS_COMPILE)ld Added: soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile Wed Jun 3 19:23:47 2015 (r286609) @@ -0,0 +1,12 @@ +--- arch/i386/Makefile.orig 2015-06-03 19:18:27 UTC ++++ arch/i386/Makefile +@@ -94,7 +94,8 @@ ISOLINUX_BIN_LIST := \ + /usr/share/syslinux/bios/isolinux.bin \ + /usr/local/share/syslinux/isolinux.bin \ + /usr/local/share/syslinux/bios/isolinux.bin \ +- /usr/lib/ISOLINUX/isolinux.bin ++ /usr/local/share/syslinux/bios/core/isolinux.bin \ ++/usr/lib/ISOLINUX/isolinux.bin + ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST))) + + # i386-specific directories containing source files Added: soc2015/kczekirda/ipxe/files/patch-util_geniso ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/files/patch-util_geniso Wed Jun 3 19:23:47 2015 (r286609) @@ -0,0 +1,11 @@ +--- util/geniso.orig 2015-06-03 19:19:11 UTC ++++ util/geniso +@@ -123,7 +123,7 @@ case "${LEGACY}" in + cp ${ISOLINUX_BIN} ${dir} + + # syslinux 6.x needs a file called ldlinux.c32 +- LDLINUX_C32=$(dirname ${ISOLINUX_BIN})/ldlinux.c32 ++ LDLINUX_C32=/usr/local/share/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32 + if [ -s ${LDLINUX_C32} ]; then + cp ${LDLINUX_C32} ${dir} + fi From owner-svn-soc-all@FreeBSD.ORG Wed Jun 3 19:26:25 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EF8B68A7 for ; Wed, 3 Jun 2015 19:26:25 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DD3CB10FD for ; Wed, 3 Jun 2015 19:26:25 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t53JQPCH046284 for ; Wed, 3 Jun 2015 19:26:25 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t53JQPdk046279 for svn-soc-all@FreeBSD.org; Wed, 3 Jun 2015 19:26:25 GMT (envelope-from kczekirda@FreeBSD.org) Date: Wed, 3 Jun 2015 19:26:25 GMT Message-Id: <201506031926.t53JQPdk046279@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286610 - soc2015/kczekirda/ipxe/files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 19:26:26 -0000 Author: kczekirda Date: Wed Jun 3 19:26:24 2015 New Revision: 286610 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286610 Log: style Modified: soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile Modified: soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile ============================================================================== --- soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile Wed Jun 3 19:23:47 2015 (r286609) +++ soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile Wed Jun 3 19:26:24 2015 (r286610) @@ -6,7 +6,7 @@ /usr/local/share/syslinux/bios/isolinux.bin \ - /usr/lib/ISOLINUX/isolinux.bin + /usr/local/share/syslinux/bios/core/isolinux.bin \ -+/usr/lib/ISOLINUX/isolinux.bin ++ /usr/lib/ISOLINUX/isolinux.bin ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST))) # i386-specific directories containing source files From owner-svn-soc-all@FreeBSD.ORG Wed Jun 3 22:54:36 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 39DB4223 for ; Wed, 3 Jun 2015 22:54:36 +0000 (UTC) (envelope-from clord@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 24BDD15AF for ; Wed, 3 Jun 2015 22:54:36 +0000 (UTC) (envelope-from clord@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t53MsaH1019261 for ; Wed, 3 Jun 2015 22:54:36 GMT (envelope-from clord@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t53MsUM5019192 for svn-soc-all@FreeBSD.org; Wed, 3 Jun 2015 22:54:30 GMT (envelope-from clord@FreeBSD.org) Date: Wed, 3 Jun 2015 22:54:30 GMT Message-Id: <201506032254.t53MsUM5019192@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to clord@FreeBSD.org using -f From: clord@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286620 - in soc2015/clord/head: . bin/ps contrib/diff/src contrib/elftoolchain contrib/elftoolchain/common contrib/elftoolchain/elfcopy contrib/elftoolchain/libdwarf contrib/elftool... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jun 2015 22:54:36 -0000 Author: clord Date: Wed Jun 3 22:54:29 2015 New Revision: 286620 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286620 Log: Merge with head Added: soc2015/clord/head/lib/libutil/kinfo_getvmobject.3 - copied unchanged from r286619, mirror/FreeBSD/head/lib/libutil/kinfo_getvmobject.3 soc2015/clord/head/lib/libutil/kinfo_getvmobject.c - copied unchanged from r286619, mirror/FreeBSD/head/lib/libutil/kinfo_getvmobject.c soc2015/clord/head/release/arm/CUBOX-HUMMINGBOARD.conf - copied unchanged from r286619, mirror/FreeBSD/head/release/arm/CUBOX-HUMMINGBOARD.conf soc2015/clord/head/share/man/man4/ig4.4 - copied unchanged from r286619, mirror/FreeBSD/head/share/man/man4/ig4.4 soc2015/clord/head/share/man/man9/PCI_IOV_ADD_VF.9 - copied unchanged from r286619, mirror/FreeBSD/head/share/man/man9/PCI_IOV_ADD_VF.9 soc2015/clord/head/share/man/man9/PCI_IOV_INIT.9 - copied unchanged from r286619, mirror/FreeBSD/head/share/man/man9/PCI_IOV_INIT.9 soc2015/clord/head/share/man/man9/PCI_IOV_UNINIT.9 - copied unchanged from r286619, mirror/FreeBSD/head/share/man/man9/PCI_IOV_UNINIT.9 soc2015/clord/head/sys/dev/ichiic/ - copied from r286619, mirror/FreeBSD/head/sys/dev/ichiic/ soc2015/clord/head/sys/dev/pci/pci_iov.h - copied unchanged from r286619, mirror/FreeBSD/head/sys/dev/pci/pci_iov.h soc2015/clord/head/sys/dev/pci/pci_iov_if.m - copied unchanged from r286619, mirror/FreeBSD/head/sys/dev/pci/pci_iov_if.m soc2015/clord/head/sys/dev/usb/template/usb_template_midi.c - copied unchanged from r286619, mirror/FreeBSD/head/sys/dev/usb/template/usb_template_midi.c soc2015/clord/head/sys/modules/i2c/controllers/ichiic/ - copied from r286619, mirror/FreeBSD/head/sys/modules/i2c/controllers/ichiic/ soc2015/clord/head/tools/build/options/WITHOUT_MANDOCDB - copied unchanged from r286619, mirror/FreeBSD/head/tools/build/options/WITHOUT_MANDOCDB Deleted: soc2015/clord/head/etc/tests/ soc2015/clord/head/lib/libc/arm/sys/fork.S soc2015/clord/head/lib/libc/mips/sys/fork.S soc2015/clord/head/share/man/man9/PCI_ADD_VF.9 soc2015/clord/head/share/man/man9/PCI_INIT_IOV.9 soc2015/clord/head/share/man/man9/PCI_UNINIT_IOV.9 Modified: soc2015/clord/head/ (props changed) soc2015/clord/head/Makefile.inc1 soc2015/clord/head/ObsoleteFiles.inc soc2015/clord/head/bin/ps/ps.1 soc2015/clord/head/bin/ps/ps.c soc2015/clord/head/contrib/diff/src/context.c soc2015/clord/head/contrib/elftoolchain/ (props changed) soc2015/clord/head/contrib/elftoolchain/common/_elftc.h soc2015/clord/head/contrib/elftoolchain/common/elfdefinitions.h soc2015/clord/head/contrib/elftoolchain/elfcopy/elfcopy.h soc2015/clord/head/contrib/elftoolchain/elfcopy/main.c soc2015/clord/head/contrib/elftoolchain/elfcopy/sections.c soc2015/clord/head/contrib/elftoolchain/elfcopy/symbols.c soc2015/clord/head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c soc2015/clord/head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c soc2015/clord/head/contrib/elftoolchain/libelftc/os.Linux.mk soc2015/clord/head/contrib/elftoolchain/readelf/readelf.1 soc2015/clord/head/contrib/elftoolchain/readelf/readelf.c soc2015/clord/head/contrib/gcc/ (props changed) soc2015/clord/head/contrib/gcc/config/arm/lib1funcs.asm soc2015/clord/head/contrib/mdocml/ (props changed) soc2015/clord/head/contrib/mdocml/read.c soc2015/clord/head/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c soc2015/clord/head/contrib/netbsd-tests/lib/libc/c063/t_openat.c soc2015/clord/head/contrib/netbsd-tests/lib/libc/c063/t_readlinkat.c soc2015/clord/head/contrib/netbsd-tests/lib/libc/c063/t_unlinkat.c soc2015/clord/head/contrib/netbsd-tests/lib/libc/string/t_memmem.c soc2015/clord/head/contrib/traceroute/traceroute.8 soc2015/clord/head/contrib/traceroute/traceroute.c soc2015/clord/head/crypto/openssh/ (props changed) soc2015/clord/head/crypto/openssh/moduli soc2015/clord/head/etc/ (props changed) soc2015/clord/head/games/grdc/grdc.c soc2015/clord/head/lib/libc/ (props changed) soc2015/clord/head/lib/libc/arm/SYS.h soc2015/clord/head/lib/libc/arm/aeabi/aeabi_asm_double.S soc2015/clord/head/lib/libc/arm/aeabi/aeabi_asm_float.S soc2015/clord/head/lib/libc/arm/gen/_setjmp.S soc2015/clord/head/lib/libc/arm/gen/setjmp.S soc2015/clord/head/lib/libc/arm/string/ffs.S soc2015/clord/head/lib/libc/arm/string/memmove.S soc2015/clord/head/lib/libc/arm/string/memset.S soc2015/clord/head/lib/libc/arm/string/strcmp.S soc2015/clord/head/lib/libc/arm/string/strlen.S soc2015/clord/head/lib/libc/arm/string/strncmp.S soc2015/clord/head/lib/libc/gen/fpclassify.c soc2015/clord/head/lib/libc/gen/isinf.c soc2015/clord/head/lib/libc/mips/sys/Makefile.inc soc2015/clord/head/lib/libc/string/memmem.3 soc2015/clord/head/lib/libc/string/memmem.c soc2015/clord/head/lib/libc/xdr/xdr.c soc2015/clord/head/lib/libc/xdr/xdr_array.c soc2015/clord/head/lib/libc/xdr/xdr_float.c soc2015/clord/head/lib/libc/xdr/xdr_mem.c soc2015/clord/head/lib/libc/xdr/xdr_rec.c soc2015/clord/head/lib/libc/xdr/xdr_reference.c soc2015/clord/head/lib/libc/xdr/xdr_sizeof.c soc2015/clord/head/lib/libc/xdr/xdr_stdio.c soc2015/clord/head/lib/libdpv/dpv.c soc2015/clord/head/lib/libelftc/elftc_version.c soc2015/clord/head/lib/libgssapi/gss_accept_sec_context.c soc2015/clord/head/lib/libprocstat/libprocstat.c soc2015/clord/head/lib/libutil/ (props changed) soc2015/clord/head/lib/libutil/Makefile soc2015/clord/head/lib/libutil/kinfo_getallproc.3 soc2015/clord/head/lib/libutil/kinfo_getfile.3 soc2015/clord/head/lib/libutil/kinfo_getproc.3 soc2015/clord/head/lib/libutil/kinfo_getvmmap.3 soc2015/clord/head/lib/libutil/libutil.h soc2015/clord/head/lib/libutil/pw_util.3 soc2015/clord/head/lib/libutil/pw_util.c soc2015/clord/head/libexec/ypxfr/ypxfr_main.c soc2015/clord/head/release/Makefile.ec2 soc2015/clord/head/release/Makefile.mirrors soc2015/clord/head/release/arm/PANDABOARD.conf soc2015/clord/head/release/arm/RPI2.conf soc2015/clord/head/release/arm/WANDBOARD.conf soc2015/clord/head/release/tools/arm.subr soc2015/clord/head/sbin/ (props changed) soc2015/clord/head/sbin/camcontrol/camcontrol.c soc2015/clord/head/sbin/camcontrol/persist.c soc2015/clord/head/sbin/dhclient/dhclient.c soc2015/clord/head/sbin/dumpfs/dumpfs.c soc2015/clord/head/share/ (props changed) soc2015/clord/head/share/doc/papers/bufbio/bio.ms soc2015/clord/head/share/man/man3/pthread_setspecific.3 soc2015/clord/head/share/man/man4/ (props changed) soc2015/clord/head/share/man/man4/Makefile soc2015/clord/head/share/man/man4/em.4 soc2015/clord/head/share/man/man4/gre.4 soc2015/clord/head/share/man/man5/src.conf.5 soc2015/clord/head/share/man/man8/Makefile soc2015/clord/head/share/man/man9/Makefile soc2015/clord/head/share/man/man9/pci.9 soc2015/clord/head/share/man/man9/pci_iov_schema.9 soc2015/clord/head/share/mk/bsd.lib.mk soc2015/clord/head/share/mk/src.libnames.mk soc2015/clord/head/share/mk/src.opts.mk soc2015/clord/head/share/mk/src.sys.mk soc2015/clord/head/sys/ (props changed) soc2015/clord/head/sys/Makefile soc2015/clord/head/sys/amd64/amd64/pmap.c soc2015/clord/head/sys/amd64/amd64/trap.c soc2015/clord/head/sys/amd64/amd64/vm_machdep.c soc2015/clord/head/sys/amd64/ia32/ia32_reg.c soc2015/clord/head/sys/amd64/include/vmm.h (contents, props changed) soc2015/clord/head/sys/amd64/vmm/ (props changed) soc2015/clord/head/sys/amd64/vmm/amd/svm.c soc2015/clord/head/sys/amd64/vmm/intel/vmx.c soc2015/clord/head/sys/amd64/vmm/vmm.c soc2015/clord/head/sys/amd64/vmm/vmm_stat.c soc2015/clord/head/sys/amd64/vmm/vmm_stat.h soc2015/clord/head/sys/arm/arm/copystr.S soc2015/clord/head/sys/arm/arm/cpu_asm-v6.S soc2015/clord/head/sys/arm/arm/elf_trampoline.c soc2015/clord/head/sys/arm/arm/exception.S soc2015/clord/head/sys/arm/arm/machdep.c soc2015/clord/head/sys/arm/arm/stack_machdep.c soc2015/clord/head/sys/arm/arm/sys_machdep.c soc2015/clord/head/sys/arm/arm/trap-v6.c soc2015/clord/head/sys/arm/broadcom/bcm2835/bcm2835_spi.c soc2015/clord/head/sys/arm/include/_types.h soc2015/clord/head/sys/arm/include/asm.h soc2015/clord/head/sys/arm/include/proc.h soc2015/clord/head/sys/boot/ (props changed) soc2015/clord/head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi soc2015/clord/head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi soc2015/clord/head/sys/boot/forth/support.4th soc2015/clord/head/sys/boot/uboot/lib/module.c soc2015/clord/head/sys/boot/userboot/userboot/conf.c soc2015/clord/head/sys/cddl/contrib/opensolaris/ (props changed) soc2015/clord/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c soc2015/clord/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c soc2015/clord/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c soc2015/clord/head/sys/compat/linprocfs/linprocfs.c soc2015/clord/head/sys/conf/ (props changed) soc2015/clord/head/sys/conf/NOTES soc2015/clord/head/sys/conf/files soc2015/clord/head/sys/conf/files.pc98 soc2015/clord/head/sys/conf/kmod.mk soc2015/clord/head/sys/conf/options soc2015/clord/head/sys/contrib/dev/acpica/ (props changed) soc2015/clord/head/sys/contrib/dev/acpica/common/ahuuids.c soc2015/clord/head/sys/contrib/dev/acpica/include/acuuid.h soc2015/clord/head/sys/dev/acpi_support/acpi_ibm.c soc2015/clord/head/sys/dev/ahci/ahci.h soc2015/clord/head/sys/dev/ath/ath_rate/sample/sample.c soc2015/clord/head/sys/dev/ath/if_ath.c soc2015/clord/head/sys/dev/ath/if_ath_rx.c soc2015/clord/head/sys/dev/ath/if_ath_tdma.c soc2015/clord/head/sys/dev/ath/if_ath_tx.c soc2015/clord/head/sys/dev/bwi/bwimac.c soc2015/clord/head/sys/dev/bwi/bwimac.h soc2015/clord/head/sys/dev/bwi/if_bwi.c soc2015/clord/head/sys/dev/bwi/if_bwi_pci.c soc2015/clord/head/sys/dev/cxgbe/t4_main.c soc2015/clord/head/sys/dev/cxgbe/t4_sge.c soc2015/clord/head/sys/dev/dwc/if_dwc.c soc2015/clord/head/sys/dev/e1000/e1000_defines.h soc2015/clord/head/sys/dev/e1000/if_em.c soc2015/clord/head/sys/dev/e1000/if_em.h soc2015/clord/head/sys/dev/hwpmc/hwpmc_mod.c soc2015/clord/head/sys/dev/iwi/if_iwi.c soc2015/clord/head/sys/dev/ixgbe/if_ix.c soc2015/clord/head/sys/dev/ixgbe/if_ixv.c soc2015/clord/head/sys/dev/ixgbe/ix_txrx.c soc2015/clord/head/sys/dev/ixgbe/ixgbe.h soc2015/clord/head/sys/dev/ixgbe/ixgbe_mbx.h soc2015/clord/head/sys/dev/ixgbe/ixgbe_vf.c soc2015/clord/head/sys/dev/ixl/if_ixl.c soc2015/clord/head/sys/dev/ixl/ixl.h soc2015/clord/head/sys/dev/mmc/mmcsd.c soc2015/clord/head/sys/dev/mpr/mpi/mpi2.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_cnfg.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_hbd.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_history.txt soc2015/clord/head/sys/dev/mpr/mpi/mpi2_init.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_ioc.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_ra.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_raid.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_sas.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_targ.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_tool.h soc2015/clord/head/sys/dev/mpr/mpi/mpi2_type.h soc2015/clord/head/sys/dev/mpr/mpr.c soc2015/clord/head/sys/dev/mpr/mpr_config.c soc2015/clord/head/sys/dev/mpr/mpr_ioctl.h soc2015/clord/head/sys/dev/mpr/mpr_mapping.c soc2015/clord/head/sys/dev/mpr/mpr_mapping.h soc2015/clord/head/sys/dev/mpr/mpr_pci.c soc2015/clord/head/sys/dev/mpr/mpr_sas.c soc2015/clord/head/sys/dev/mpr/mpr_sas.h soc2015/clord/head/sys/dev/mpr/mpr_sas_lsi.c soc2015/clord/head/sys/dev/mpr/mpr_user.c soc2015/clord/head/sys/dev/mpr/mprvar.h soc2015/clord/head/sys/dev/netmap/if_em_netmap.h soc2015/clord/head/sys/dev/pci/pci.c soc2015/clord/head/sys/dev/pci/pci_if.m soc2015/clord/head/sys/dev/pci/pci_iov.c soc2015/clord/head/sys/dev/pci/pcivar.h soc2015/clord/head/sys/dev/sfxge/sfxge_port.c soc2015/clord/head/sys/dev/sfxge/sfxge_version.h soc2015/clord/head/sys/dev/uart/uart_dev_ns8250.c soc2015/clord/head/sys/dev/usb/controller/dwc_otg.c soc2015/clord/head/sys/dev/usb/template/usb_template.c soc2015/clord/head/sys/dev/usb/template/usb_template.h soc2015/clord/head/sys/dev/usb/usb_ioctl.h soc2015/clord/head/sys/fs/ext2fs/ext2_vnops.c soc2015/clord/head/sys/fs/nfs/nfs.h soc2015/clord/head/sys/fs/nfs/nfsdport.h soc2015/clord/head/sys/fs/nfs/nfsrvstate.h soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdkrpc.c soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdport.c soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdserv.c soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdsocket.c soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdstate.c soc2015/clord/head/sys/fs/nfsserver/nfs_nfsdsubs.c soc2015/clord/head/sys/fs/procfs/procfs_ctl.c soc2015/clord/head/sys/fs/procfs/procfs_map.c soc2015/clord/head/sys/kern/kern_exit.c soc2015/clord/head/sys/kern/kern_proc.c soc2015/clord/head/sys/kern/kern_sig.c soc2015/clord/head/sys/kern/kern_synch.c soc2015/clord/head/sys/kern/subr_trap.c soc2015/clord/head/sys/kern/sys_process.c soc2015/clord/head/sys/kern/vfs_cluster.c soc2015/clord/head/sys/kern/vfs_init.c soc2015/clord/head/sys/kern/vfs_mount.c soc2015/clord/head/sys/kern/vfs_subr.c soc2015/clord/head/sys/kern/vfs_vnops.c soc2015/clord/head/sys/libkern/arm/memcpy.S soc2015/clord/head/sys/mips/include/pcpu.h soc2015/clord/head/sys/modules/Makefile soc2015/clord/head/sys/modules/em/Makefile soc2015/clord/head/sys/modules/i2c/controllers/Makefile soc2015/clord/head/sys/modules/ixl/Makefile (contents, props changed) soc2015/clord/head/sys/modules/ixv/Makefile soc2015/clord/head/sys/modules/sfxge/Makefile soc2015/clord/head/sys/modules/usb/template/Makefile soc2015/clord/head/sys/net80211/ieee80211.h soc2015/clord/head/sys/net80211/ieee80211_crypto.c soc2015/clord/head/sys/net80211/ieee80211_crypto_ccmp.c soc2015/clord/head/sys/net80211/ieee80211_crypto_none.c soc2015/clord/head/sys/net80211/ieee80211_crypto_tkip.c soc2015/clord/head/sys/net80211/ieee80211_crypto_wep.c soc2015/clord/head/sys/net80211/ieee80211_freebsd.h soc2015/clord/head/sys/net80211/ieee80211_hwmp.c soc2015/clord/head/sys/net80211/ieee80211_ratectl_none.c soc2015/clord/head/sys/netinet/sctp_asconf.c soc2015/clord/head/sys/netinet/sctp_cc_functions.c soc2015/clord/head/sys/netinet/sctp_constants.h soc2015/clord/head/sys/netinet/sctp_indata.c soc2015/clord/head/sys/netinet/sctp_input.c soc2015/clord/head/sys/netinet/sctp_output.c soc2015/clord/head/sys/netinet/sctp_pcb.c soc2015/clord/head/sys/netinet/sctp_timer.c soc2015/clord/head/sys/netinet/sctp_usrreq.c soc2015/clord/head/sys/netinet/sctputil.c soc2015/clord/head/sys/netinet6/in6.c soc2015/clord/head/sys/netinet6/nd6.c soc2015/clord/head/sys/netinet6/sctp6_usrreq.c soc2015/clord/head/sys/ofed/drivers/net/mlx4/en_netdev.c soc2015/clord/head/sys/ofed/drivers/net/mlx4/port.c soc2015/clord/head/sys/ofed/include/linux/mlx4/device.h soc2015/clord/head/sys/sys/nlist_aout.h soc2015/clord/head/sys/sys/param.h soc2015/clord/head/sys/sys/proc.h soc2015/clord/head/sys/sys/systm.h soc2015/clord/head/sys/sys/user.h soc2015/clord/head/sys/sys/vnode.h soc2015/clord/head/sys/ufs/ffs/ffs_softdep.c soc2015/clord/head/sys/ufs/ffs/ffs_suspend.c soc2015/clord/head/sys/ufs/ffs/ffs_vfsops.c soc2015/clord/head/sys/ufs/ffs/ffs_vnops.c soc2015/clord/head/sys/ufs/ufs/ufs_bmap.c soc2015/clord/head/sys/ufs/ufs/ufs_dirhash.c soc2015/clord/head/sys/vm/vm_object.c soc2015/clord/head/sys/vm/vm_object.h soc2015/clord/head/sys/vm/vm_page.c soc2015/clord/head/sys/x86/iommu/busdma_dmar.c soc2015/clord/head/sys/x86/iommu/intel_idpgtbl.c soc2015/clord/head/sys/x86/iommu/intel_qi.c soc2015/clord/head/tests/Makefile soc2015/clord/head/tests/sys/kern/ptrace_test.c soc2015/clord/head/usr.bin/Makefile soc2015/clord/head/usr.bin/man/Makefile soc2015/clord/head/usr.bin/mandoc/Makefile soc2015/clord/head/usr.bin/vmstat/vmstat.8 soc2015/clord/head/usr.bin/vmstat/vmstat.c soc2015/clord/head/usr.sbin/bhyve/ (props changed) soc2015/clord/head/usr.sbin/bhyve/bhyverun.c soc2015/clord/head/usr.sbin/ctld/login.c soc2015/clord/head/usr.sbin/pmcstat/pmcstat.8 soc2015/clord/head/usr.sbin/pmcstat/pmcstat.c soc2015/clord/head/usr.sbin/pw/Makefile soc2015/clord/head/usr.sbin/pw/grupd.c soc2015/clord/head/usr.sbin/pw/pw.8 soc2015/clord/head/usr.sbin/pw/pw.c soc2015/clord/head/usr.sbin/pw/pw_conf.c soc2015/clord/head/usr.sbin/pw/pw_group.c soc2015/clord/head/usr.sbin/pw/pw_user.c soc2015/clord/head/usr.sbin/pw/pwupd.c soc2015/clord/head/usr.sbin/pw/pwupd.h soc2015/clord/head/usr.sbin/yppoll/yppoll.8 soc2015/clord/head/usr.sbin/yppoll/yppoll.c soc2015/clord/head/usr.sbin/yppush/yppush_main.c Modified: soc2015/clord/head/Makefile.inc1 ============================================================================== --- soc2015/clord/head/Makefile.inc1 Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/Makefile.inc1 Wed Jun 3 22:54:29 2015 (r286620) @@ -1276,8 +1276,8 @@ .endif .if ${BOOTSTRAPPING} < 1000002 -_m4= lib/libohash \ - usr.bin/m4 +_libohash= lib/libohash +_m4= usr.bin/m4 ${_bt}-usr.bin/m4: ${_bt}-lib/libohash .endif @@ -1363,6 +1363,15 @@ .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} .endif +.if ${MK_MANDOCDB} != "no" +_libohash?= lib/libohash +_makewhatis= lib/libsqlite3 \ + usr.bin/mandoc +${_bt}-usr.bin/mandoc: ${_bt}-lib/libohash ${_bt}-lib/libsqlite3 +.else +_makewhatis=usr.bin/makewhatis +.endif + # Rebuild up-to-date libmd for xinstall ${_bt}-usr.bin/xinstall: ${_bt}-lib/libmd @@ -1383,7 +1392,8 @@ ${_awk} \ ${_cat} \ usr.bin/lorder \ - usr.bin/makewhatis \ + ${_libohash} \ + ${_makewhatis} \ usr.bin/rpcgen \ ${_sed} \ ${_yacc} \ @@ -1755,6 +1765,7 @@ cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L cddl/lib/libzfs__L: lib/libgeom__L cddl/lib/libctf__L: lib/libz__L +.endif # cddl/lib/libdtrace requires lib/libproc and lib/librtld_db; it's only built # on select architectures though (see cddl/lib/Makefile) .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" || \ @@ -1762,7 +1773,6 @@ ${MACHINE_CPUARCH} == "arm" _prebuild_libs+= lib/libproc lib/librtld_db .endif -.endif .if ${MK_CRYPT} != "no" .if ${MK_OPENSSL} != "no" @@ -1806,9 +1816,10 @@ kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L kerberos5/lib/libheimbase__L: lib/libthr__L kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L -lib/libsqlite3__L: lib/libthr__L .endif +lib/libsqlite3__L: lib/libthr__L + .if ${MK_GSSAPI} != "no" _lib_libgssapi= lib/libgssapi .endif Modified: soc2015/clord/head/ObsoleteFiles.inc ============================================================================== --- soc2015/clord/head/ObsoleteFiles.inc Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/ObsoleteFiles.inc Wed Jun 3 22:54:29 2015 (r286620) @@ -38,6 +38,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20150528: PCI IOV device driver methods moved to a separate kobj interface. +OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9 +OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9 +OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9 # 20150525: new clang import which bumps version from 3.6.0 to 3.6.1. OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h Modified: soc2015/clord/head/bin/ps/ps.1 ============================================================================== --- soc2015/clord/head/bin/ps/ps.1 Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/bin/ps/ps.1 Wed Jun 3 22:54:29 2015 (r286620) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd May 22, 2015 +.Dd May 27, 2015 .Dt PS 1 .Os .Sh NAME @@ -350,6 +350,9 @@ .In sys/proc.h : .Bl -column P2_INHERIT_PROTECTED 0x00000001 .It Dv "P2_INHERIT_PROTECTED" Ta No "0x00000001" Ta "New children get P_PROTECTED" +.It Dv "P2_NOTRACE" Ta No "0x00000002" Ta "No ptrace(2) attach or coredumps" +.It Dv "P2_NOTRACE_EXEC" Ta No "0x00000004" Ta "Keep P2_NOPTRACE on exec(2)" +.It Dv "P2_AST_SU" Ta No "0x00000008" Ta "Handles SU ast for kthreads" .El .It Cm label The MAC label of the process. Modified: soc2015/clord/head/bin/ps/ps.c ============================================================================== --- soc2015/clord/head/bin/ps/ps.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/bin/ps/ps.c Wed Jun 3 22:54:29 2015 (r286620) @@ -180,7 +180,7 @@ KINFO_STR *ks; struct varent *vent; struct winsize ws = { .ws_row = 0 }; - const char *nlistf, *memf, *fmtstr, *str; + const char *nlistf, *memf, *str; char *cols; int all, ch, elem, flag, _fmt, i, lineno, linelen, left; int descendancy, nentries, nkept, nselectors; @@ -649,11 +649,6 @@ linelen = 0; xo_open_instance("process"); STAILQ_FOREACH(vent, &varlist, next_ve) { - if (vent->var->flag & LJUST) - fmtstr = "%-*s"; - else - fmtstr = "%*s"; - ks = STAILQ_FIRST(&kinfo[i].ki_ks); STAILQ_REMOVE_HEAD(&kinfo[i].ki_ks, ks_next); /* Truncate rightmost column if necessary. */ Modified: soc2015/clord/head/contrib/diff/src/context.c ============================================================================== --- soc2015/clord/head/contrib/diff/src/context.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/diff/src/context.c Wed Jun 3 22:54:29 2015 (r286620) @@ -62,7 +62,7 @@ { time_t sec = inf->stat.st_mtime; verify (info_preserved, sizeof inf->stat.st_mtime <= sizeof sec); - sprintf (buf, "%jd.%.9d", (intmax_t)sec, nsec); + sprintf (buf, "%jd.%.9ld", (intmax_t)sec, nsec); } fprintf (outfile, "%s %s\t%s\n", mark, inf->name, buf); } Modified: soc2015/clord/head/contrib/elftoolchain/common/_elftc.h ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/common/_elftc.h Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/common/_elftc.h Wed Jun 3 22:54:29 2015 (r286620) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _elftc.h 3175 2015-03-27 17:21:24Z emaste $ + * $Id: _elftc.h 3209 2015-05-17 13:40:46Z kaiwang27 $ */ /** @@ -342,12 +342,13 @@ #if defined(__GLIBC__) || defined(__linux__) - +#ifndef _GNU_SOURCE /* * GLIBC based systems have a global 'char *' pointer referencing * the executable's name. */ extern const char *program_invocation_short_name; +#endif /* !_GNU_SOURCE */ #define ELFTC_GETPROGNAME() program_invocation_short_name Modified: soc2015/clord/head/contrib/elftoolchain/common/elfdefinitions.h ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/common/elfdefinitions.h Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/common/elfdefinitions.h Wed Jun 3 22:54:29 2015 (r286620) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 3178 2015-03-30 18:29:13Z emaste $ + * $Id: elfdefinitions.h 3198 2015-05-14 18:36:19Z emaste $ */ /* @@ -565,6 +565,7 @@ _ELF_DEFINE_EM(EM_386, 3, "Intel 80386") \ _ELF_DEFINE_EM(EM_68K, 4, "Motorola 68000") \ _ELF_DEFINE_EM(EM_88K, 5, "Motorola 88000") \ +_ELF_DEFINE_EM(EM_IAMCU, 6, "Intel MCU") \ _ELF_DEFINE_EM(EM_860, 7, "Intel 80860") \ _ELF_DEFINE_EM(EM_MIPS, 8, "MIPS I Architecture") \ _ELF_DEFINE_EM(EM_S370, 9, "IBM System/370 Processor") \ Modified: soc2015/clord/head/contrib/elftoolchain/elfcopy/elfcopy.h ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/elfcopy/elfcopy.h Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/elfcopy/elfcopy.h Wed Jun 3 22:54:29 2015 (r286620) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfcopy.h 3173 2015-03-27 16:46:13Z emaste $ + * $Id: elfcopy.h 3221 2015-05-24 23:42:43Z kaiwang27 $ */ #include @@ -237,6 +237,7 @@ uint64_t *secndx; /* section index map. */ uint64_t *symndx; /* symbol index map. */ unsigned char *v_rel; /* symbols needed by relocation. */ + unsigned char *v_grp; /* symbols refered by section group. */ unsigned char *v_secsym; /* sections with section symbol. */ STAILQ_HEAD(, segment) v_seg; /* list of segments. */ STAILQ_HEAD(, sec_action) v_sac;/* list of section operations. */ Modified: soc2015/clord/head/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/elfcopy/main.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/elfcopy/main.c Wed Jun 3 22:54:29 2015 (r286620) @@ -39,7 +39,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: main.c 3174 2015-03-27 17:13:41Z emaste $"); +ELFTC_VCSID("$Id: main.c 3216 2015-05-23 21:16:36Z kaiwang27 $"); enum options { @@ -404,8 +404,19 @@ * Insert SHDR table into the internal section list as a "pseudo" * section, so later it will get sorted and resynced just as "normal" * sections. + * + * Under FreeBSD, Binutils objcopy always put the section header + * at the end of all the sections. We want to do the same here. + * + * However, note that the behaviour is still different with Binutils: + * elfcopy checks the FreeBSD OSABI tag to tell whether it needs to + * move the section headers, while Binutils is probably configured + * this way when it's compiled on FreeBSD. */ - shtab = insert_shtab(ecp, 0); + if (oeh.e_ident[EI_OSABI] == ELFOSABI_FREEBSD) + shtab = insert_shtab(ecp, 1); + else + shtab = insert_shtab(ecp, 0); /* * Resync section offsets in the output object. This is needed @@ -485,6 +496,11 @@ free(sec); } } + + if (ecp->secndx != NULL) { + free(ecp->secndx); + ecp->secndx = NULL; + } } /* Create a temporary file. */ Modified: soc2015/clord/head/contrib/elftoolchain/elfcopy/sections.c ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/elfcopy/sections.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/elfcopy/sections.c Wed Jun 3 22:54:29 2015 (r286620) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 3185 2015-04-11 08:56:34Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3220 2015-05-24 23:42:39Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); @@ -56,6 +56,7 @@ static void print_section(struct section *s); static void *read_section(struct section *s, size_t *size); static void update_reloc(struct elfcopy *ecp, struct section *s); +static void update_section_group(struct elfcopy *ecp, struct section *s); int is_remove_section(struct elfcopy *ecp, const char *name) @@ -552,6 +553,14 @@ (s->type == SHT_REL || s->type == SHT_RELA)) filter_reloc(ecp, s); + /* + * The section indices in the SHT_GROUP section needs + * to be updated since we might have stripped some + * sections and changed section numbering. + */ + if (s->type == SHT_GROUP) + update_section_group(ecp, s); + if (is_modify_section(ecp, s->name)) modify_section(ecp, s); @@ -571,6 +580,71 @@ } } + +/* + * Update section group section. The section indices in the SHT_GROUP + * section need update after section numbering changed. + */ +static void +update_section_group(struct elfcopy *ecp, struct section *s) +{ + GElf_Shdr ish; + Elf_Data *id; + uint32_t *ws, *wd; + uint64_t n; + size_t ishnum; + int i, j; + + if (!elf_getshnum(ecp->ein, &ishnum)) + errx(EXIT_FAILURE, "elf_getshnum failed: %s", + elf_errmsg(-1)); + + if (gelf_getshdr(s->is, &ish) == NULL) + errx(EXIT_FAILURE, "gelf_getehdr() failed: %s", + elf_errmsg(-1)); + + if ((id = elf_getdata(s->is, NULL)) == NULL) + errx(EXIT_FAILURE, "elf_getdata() failed: %s", + elf_errmsg(-1)); + + if (ish.sh_size == 0) + return; + + if (ish.sh_entsize == 0) + ish.sh_entsize = 4; + + ws = id->d_buf; + + /* We only support COMDAT section. */ +#ifndef GRP_COMDAT +#define GRP_COMDAT 0x1 +#endif + if ((*ws & GRP_COMDAT) == 0) + return; + + if ((s->buf = malloc(ish.sh_size)) == NULL) + err(EXIT_FAILURE, "malloc failed"); + + s->sz = ish.sh_size; + + wd = s->buf; + + /* Copy the flag word as-is. */ + *wd = *ws; + + /* Update the section indices. */ + n = ish.sh_size / ish.sh_entsize; + for(i = 1, j = 1; (uint64_t)i < n; i++) { + if (ws[i] != SHN_UNDEF && ws[i] < ishnum && + ecp->secndx[ws[i]] != 0) + wd[j++] = ecp->secndx[ws[i]]; + else + s->sz -= 4; + } + + s->nocopy = 1; +} + /* * Filter relocation entries, only keep those entries whose * symbol is in the keep list. @@ -1028,8 +1102,11 @@ osh.sh_flags |= SHF_WRITE; if (sec_flags & SF_CODE) osh.sh_flags |= SHF_EXECINSTR; - } else + } else { osh.sh_flags = ish.sh_flags; + if (ish.sh_type == SHT_REL || ish.sh_type == SHT_RELA) + osh.sh_flags |= SHF_INFO_LINK; + } } if (name == NULL) Modified: soc2015/clord/head/contrib/elftoolchain/elfcopy/symbols.c ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/elfcopy/symbols.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/elfcopy/symbols.c Wed Jun 3 22:54:29 2015 (r286620) @@ -33,7 +33,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: symbols.c 3191 2015-05-04 17:07:01Z jkoshy $"); +ELFTC_VCSID("$Id: symbols.c 3222 2015-05-24 23:47:23Z kaiwang27 $"); /* Symbol table buffer structure. */ struct symbuf { @@ -77,7 +77,8 @@ static int lookup_exact_string(hash_head *hash, const char *buf, const char *s); static int generate_symbols(struct elfcopy *ecp); -static void mark_symbols(struct elfcopy *ecp, size_t sc); +static void mark_reloc_symbols(struct elfcopy *ecp, size_t sc); +static void mark_section_group_symbols(struct elfcopy *ecp, size_t sc); static int match_wildcard(const char *name, const char *pattern); uint32_t str_hash(const char *s); @@ -160,6 +161,10 @@ if (BIT_ISSET(ecp->v_rel, i)) return (1); + /* Symbols refered by COMDAT sections are needed. */ + if (BIT_ISSET(ecp->v_grp, i)) + return (1); + /* * For relocatable files (.o files), global and weak symbols * are needed. @@ -207,7 +212,10 @@ return (1); if (ecp->v_rel == NULL) - mark_symbols(ecp, sc); + mark_reloc_symbols(ecp, sc); + + if (ecp->v_grp == NULL) + mark_section_group_symbols(ecp, sc); if (is_needed_symbol(ecp, i, s)) return (0); @@ -233,7 +241,7 @@ * Mark symbols refered by relocation entries. */ static void -mark_symbols(struct elfcopy *ecp, size_t sc) +mark_reloc_symbols(struct elfcopy *ecp, size_t sc) { const char *name; Elf_Data *d; @@ -311,6 +319,49 @@ elf_errmsg(elferr)); } +static void +mark_section_group_symbols(struct elfcopy *ecp, size_t sc) +{ + const char *name; + Elf_Scn *s; + GElf_Shdr sh; + size_t indx; + int elferr; + + ecp->v_grp = calloc((sc + 7) / 8, 1); + if (ecp->v_grp == NULL) + err(EXIT_FAILURE, "calloc failed"); + + if (elf_getshstrndx(ecp->ein, &indx) == 0) + errx(EXIT_FAILURE, "elf_getshstrndx failed: %s", + elf_errmsg(-1)); + + s = NULL; + while ((s = elf_nextscn(ecp->ein, s)) != NULL) { + if (gelf_getshdr(s, &sh) != &sh) + errx(EXIT_FAILURE, "elf_getshdr failed: %s", + elf_errmsg(-1)); + + if (sh.sh_type != SHT_GROUP) + continue; + + if ((name = elf_strptr(ecp->ein, indx, sh.sh_name)) == NULL) + errx(EXIT_FAILURE, "elf_strptr failed: %s", + elf_errmsg(-1)); + if (is_remove_section(ecp, name)) + continue; + + if (sh.sh_info > 0 && sh.sh_info < sc) + BIT_SET(ecp->v_grp, sh.sh_info); + else if (sh.sh_info != 0) + warnx("invalid symbox index"); + } + elferr = elf_errno(); + if (elferr != 0) + errx(EXIT_FAILURE, "elf_nextscn failed: %s", + elf_errmsg(elferr)); +} + static int generate_symbols(struct elfcopy *ecp) { @@ -351,6 +402,8 @@ ecp->symtab->buf = sy_buf; ecp->strtab->buf = st_buf; + gsym = NULL; + /* * Create bit vector v_secsym, which is used to mark sections * that already have corresponding STT_SECTION symbols. @@ -384,7 +437,7 @@ /* Symbol table should exist if this function is called. */ if (symndx == 0) { warnx("can't find .strtab section"); - return (0); + goto clean; } /* Locate .symtab of input object. */ @@ -413,7 +466,6 @@ * output object, it is used by update_reloc() later to update * relocation information. */ - gsym = NULL; sc = ish.sh_size / ish.sh_entsize; if (sc > 0) { ecp->symndx = calloc(sc, sizeof(*ecp->symndx)); @@ -427,7 +479,7 @@ if (elferr != 0) errx(EXIT_FAILURE, "elf_getdata failed: %s", elf_errmsg(elferr)); - return (0); + goto clean; } } else return (0); @@ -523,7 +575,7 @@ * check if that only local symbol is the reserved symbol. */ if (sy_buf->nls <= 1 && sy_buf->ngs == 0) - return (0); + goto clean; /* * Create STT_SECTION symbols for sections that do not already @@ -550,6 +602,7 @@ sym.st_value = s->vma; sym.st_size = 0; sym.st_info = GELF_ST_INFO(STB_LOCAL, STT_SECTION); + sym.st_other = STV_DEFAULT; /* * Don't let add_to_symtab() touch sym.st_shndx. * In this case, we know the index already. @@ -583,6 +636,12 @@ } return (1); + +clean: + free(gsym); + free_symtab(ecp); + + return (0); } void @@ -624,7 +683,9 @@ if (((ecp->flags & SYMTAB_INTACT) == 0) && !generate_symbols(ecp)) { TAILQ_REMOVE(&ecp->v_sec, ecp->symtab, sec_list); TAILQ_REMOVE(&ecp->v_sec, ecp->strtab, sec_list); + free(ecp->symtab->buf); free(ecp->symtab); + free(ecp->strtab->buf); free(ecp->strtab); ecp->symtab = NULL; ecp->strtab = NULL; @@ -697,6 +758,23 @@ } } } + + if (ecp->symndx != NULL) { + free(ecp->symndx); + ecp->symndx = NULL; + } + if (ecp->v_rel != NULL) { + free(ecp->v_rel); + ecp->v_rel = NULL; + } + if (ecp->v_grp != NULL) { + free(ecp->v_grp); + ecp->v_grp = NULL; + } + if (ecp->v_secsym != NULL) { + free(ecp->v_secsym); + ecp->v_secsym = NULL; + } } void Modified: soc2015/clord/head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c Wed Jun 3 22:54:29 2015 (r286620) @@ -26,7 +26,7 @@ #include "_libdwarf.h" -ELFTC_VCSID("$Id: libdwarf_reloc.c 3149 2015-02-15 19:00:06Z emaste $"); +ELFTC_VCSID("$Id: libdwarf_reloc.c 3198 2015-05-14 18:36:19Z emaste $"); Dwarf_Unsigned _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64) @@ -75,6 +75,7 @@ return (4); break; case EM_386: + case EM_IAMCU: if (rel_type == R_386_32) return (4); break; Modified: soc2015/clord/head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c ============================================================================== --- soc2015/clord/head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c Wed Jun 3 20:48:28 2015 (r286619) +++ soc2015/clord/head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c Wed Jun 3 22:54:29 2015 (r286620) @@ -36,7 +36,7 @@ #include "_libelftc.h" -ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3194 2015-05-05 17:55:16Z emaste $"); +ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3212 2015-05-17 13:40:55Z kaiwang27 $"); /** * @file cpp_demangle.c @@ -50,7 +50,7 @@ enum type_qualifier { TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT, - TYPE_CST + TYPE_CST, TYPE_VEC }; struct vector_type_qualifier { @@ -84,6 +84,7 @@ int func_type; const char *cur; /* current mangled name ptr */ const char *last_sname; /* last source name */ + int push_head; }; #define CPP_DEMANGLE_TRY_LIMIT 128 @@ -112,6 +113,8 @@ static int cpp_demangle_read_encoding(struct cpp_demangle_data *); static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); static int cpp_demangle_read_expression(struct cpp_demangle_data *); +static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, const char *, size_t); static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, @@ -123,8 +126,12 @@ static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); static int cpp_demangle_read_local_name(struct cpp_demangle_data *); static int cpp_demangle_read_name(struct cpp_demangle_data *); +static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, + char**); static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); +static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); @@ -138,6 +145,8 @@ static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); static int cpp_demangle_read_type(struct cpp_demangle_data *, int); +static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_uqname(struct cpp_demangle_data *); static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); static char *decode_fp_to_double(const char *, size_t); @@ -156,8 +165,6 @@ static int vector_type_qualifier_push(struct vector_type_qualifier *, enum type_qualifier); -static int cpp_demangle_gnu3_push_head; - /** * @brief Decode the input string by IA-64 C++ ABI style. * @@ -190,7 +197,6 @@ if (!cpp_demangle_data_init(&ddata, org + 2)) return (NULL); - cpp_demangle_gnu3_push_head = 0; rtn = NULL; if (!cpp_demangle_read_encoding(&ddata)) @@ -277,6 +283,7 @@ d->func_type = 0; d->cur = cur; d->last_sname = NULL; + d->push_head = 0; return (1); @@ -309,7 +316,6 @@ fp = ddata->cur; while (*ddata->cur != 'E') ++ddata->cur; - ++ddata->cur; if ((f = decoder(fp, ddata->cur - fp)) == NULL) return (0); @@ -320,6 +326,8 @@ free(f); + ++ddata->cur; + return (rtn); } @@ -331,7 +339,7 @@ if (ddata == NULL || str == NULL || len == 0) return (0); - if (cpp_demangle_gnu3_push_head > 0) + if (ddata->push_head > 0) return (vector_str_push(&ddata->output_tmp, str, len)); return (vector_str_push(&ddata->output, str, len)); @@ -403,7 +411,8 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, "*", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -414,7 +423,8 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, "&", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -425,7 +435,8 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, " complex", 8)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -434,23 +445,26 @@ if (!cpp_demangle_push_str(ddata, " imaginary", 10)) goto clean; if (type_str != NULL) { - if (!vector_str_push(&subst_v, " imaginary", 10)) + if (!vector_str_push(&subst_v, " imaginary", + 10)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; case TYPE_EXT: - if (e_idx > v->ext_name.size - 1) + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) goto clean; - if ((e_len = strlen(v->ext_name.container[e_idx])) == 0) + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) goto clean; - if ((buf = malloc(sizeof(char) * (e_len + 1))) == NULL) + if ((buf = malloc(e_len + 2)) == NULL) goto clean; - - memcpy(buf, " ", 1); - memcpy(buf + 1, v->ext_name.container[e_idx], e_len); + snprintf(buf, e_len + 2, " %s", + v->ext_name.container[e_idx]); if (!cpp_demangle_push_str(ddata, buf, e_len + 1)) { free(buf); @@ -463,7 +477,8 @@ free(buf); goto clean; } - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) { + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { free(buf); goto clean; } @@ -478,7 +493,8 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, " restrict", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -489,7 +505,8 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, " volatile", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -500,11 +517,42 @@ if (type_str != NULL) { if (!vector_str_push(&subst_v, " const", 6)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; + case TYPE_VEC: + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) + goto clean; + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) + goto clean; + if ((buf = malloc(e_len + 12)) == NULL) + goto clean; + snprintf(buf, e_len + 12, " __vector(%s)", + v->ext_name.container[e_idx]); + if (!cpp_demangle_push_str(ddata, buf, e_len + 11)) { + free(buf); + goto clean; + } + if (type_str != NULL) { + if (!vector_str_push(&subst_v, buf, + e_len + 11)) { + free(buf); + goto clean; + } + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { + free(buf); + goto clean; + } + } + free(buf); + ++e_idx; + break; }; --idx; } @@ -655,10 +703,14 @@ switch (*ddata->cur) { case 'b': + if (*(ddata->cur + 2) != 'E') + return (0); switch (*(++ddata->cur)) { case '0': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "false", 5)); case '1': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "true", 4)); default: return (0); @@ -707,7 +759,8 @@ ++ddata->cur; } ++ddata->cur; - return (cpp_demangle_push_str(ddata, num, ddata->cur - num)); + return (cpp_demangle_push_str(ddata, num, + ddata->cur - num - 1)); default: return (0); @@ -999,6 +1052,38 @@ } static int +cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, exp_len; + char *exp; + + output = ddata->push_head > 0 ? &ddata->output_tmp : + &ddata->output; + + p_idx = output->size; + + if (!cpp_demangle_read_expression(ddata)) + return (0); + + if ((exp = vector_str_substr(output, p_idx, output->size - 1, + &exp_len)) == NULL) + return (0); + + idx = output->size; + for (i = p_idx; i < idx; ++i) { + if (!vector_str_pop(output)) { + free(exp); + return (0); + } + } + + *str = exp; + + return (1); +} + +static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, const char *name, size_t len) { @@ -1127,12 +1212,65 @@ static int cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) { + char *name, *type, *num_str; + long offset; + int rtn; if (ddata == NULL || *ddata->cur == '\0') return (0); /* special name */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('G', 'A'): + if (!cpp_demangle_push_str(ddata, "hidden alias for ", 17)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_encoding(ddata)); + + case SIMPLE_HASH('G', 'R'): + if (!cpp_demangle_push_str(ddata, "reference temporary #", 21)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_name_flat(ddata, &name)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number_as_string(ddata, &num_str)) + goto clean1; + if (!cpp_demangle_push_str(ddata, num_str, strlen(num_str))) + goto clean2; + if (!cpp_demangle_push_str(ddata, " for ", 5)) + goto clean2; + if (!cpp_demangle_push_str(ddata, name, strlen(name))) + goto clean2; + rtn = 1; + clean2: + free(num_str); + clean1: + free(name); + return (rtn); + + case SIMPLE_HASH('G', 'T'): + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + switch (*ddata->cur) { + case 'n': + if (!cpp_demangle_push_str(ddata, + "non-transaction clone for ", 26)) + return (0); + case 't': + default: + if (!cpp_demangle_push_str(ddata, + "transaction clone for ", 22)) + return (0); + } + ++ddata->cur; + return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('G', 'V'): /* sentry object for 1 time init */ if (!cpp_demangle_push_str(ddata, "guard variable for ", 20)) @@ -1154,14 +1292,49 @@ return (0); return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('T', 'C'): + /* construction vtable */ + if (!cpp_demangle_push_str(ddata, "construction vtable for ", + 24)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_type_flat(ddata, &type)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number(ddata, &offset)) + goto clean3; + if (*ddata->cur++ != '_') + goto clean3; + if (!cpp_demangle_read_type(ddata, 0)) + goto clean3; + if (!cpp_demangle_push_str(ddata, "-in-", 4)) + goto clean3; + if (!cpp_demangle_push_str(ddata, type, strlen(type))) + goto clean3; + rtn = 1; + clean3: + free(type); + return (rtn); + case SIMPLE_HASH('T', 'D'): /* typeinfo common proxy */ break; + case SIMPLE_HASH('T', 'F'): + /* typeinfo fn */ + if (!cpp_demangle_push_str(ddata, "typeinfo fn for ", 16)) + return (0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-soc-all@FreeBSD.ORG Thu Jun 4 02:29:04 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 757CA7A8 for ; Thu, 4 Jun 2015 02:29:04 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 615BC1473 for ; Thu, 4 Jun 2015 02:29:04 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t542T4uq073529 for ; Thu, 4 Jun 2015 02:29:04 GMT (envelope-from pratiksinghal@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t542T1jw073492 for svn-soc-all@FreeBSD.org; Thu, 4 Jun 2015 02:29:01 GMT (envelope-from pratiksinghal@FreeBSD.org) Date: Thu, 4 Jun 2015 02:29:01 GMT Message-Id: <201506040229.t542T1jw073492@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to pratiksinghal@FreeBSD.org using -f From: pratiksinghal@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286624 - in soc2015/pratiksinghal/cubie-head/sys/arm: allwinner broadcom/bcm2835 conf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jun 2015 02:29:04 -0000 Author: pratiksinghal Date: Thu Jun 4 02:29:01 2015 New Revision: 286624 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286624 Log: Made changes in the DMA API Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.c soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.h soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_dma.c soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.c Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.c Thu Jun 4 02:29:01 2015 (r286624) @@ -34,15 +34,19 @@ int a10_dma_mem_rid ; int a10_dma_irq_rid ; void* a10_dma_intrhand ; - #define BUFF_SIZE 64 +#define BUFF_SIZE 64 } ; struct a10_dma_channel { - bus_dma_tag_t a10_dma_tag ; - bus_dmamap_t a10_dma_map ; - uint32_t buff ; - uint32_t a10_dma_busaddr ; + uint32_t ch_no ; + bus_dmamap_t* dma_map ; + void* buff ; + uint32_t config ; + uint32_t src ; + uint32_t dest ; enum a10_dma_channel_type a10_dma_channel_type ; + void (*intr) (void* args) ; + void* args ; uint8_t in_use ; } ; @@ -59,6 +63,8 @@ static MALLOC_DEFINE(M_DMA_CONT, "memory for dma controller", "memory for dma controller") ; +uint8_t a10_config_src(uint8_t , uint32_t , uint32_t) ; +uint8_t a10_config_dest(uint8_t, uint32_t, uint32_t) ; static int a10_dma_probe(device_t) ; static int a10_dma_attach(device_t) ; static int a10_dma_detach(device_t) ; @@ -100,7 +106,7 @@ sc->a10_dma_bsh = rman_get_bushandle(sc->a10_dma_mem_resource) ; sc->a10_dma_irq_resource = bus_alloc_resource_any(sc->a10_dma_dev, SYS_RES_IRQ, &sc->a10_dma_irq_rid, RF_ACTIVE | RF_SHAREABLE) ; - + if(sc->a10_dma_irq_resource == NULL) { device_printf(dev, "Cannot allocate irq resource!\n") ; a10_dma_release_resources(dev) ; @@ -115,7 +121,7 @@ sc->a10_dma_intrhand = a10_dma_intr ; - + a10_dma_cnt = malloc(sizeof(struct a10_dma_controller), M_DMA_CONT, M_ZERO | M_WAITOK ) ; a10_dma_cnt->sc = sc ; @@ -132,11 +138,11 @@ return (0) ; } -static void + static void a10_dma_release_resources(device_t dev) { struct a10_dma_softc* sc = device_get_softc(dev) ; - + if(sc->a10_dma_mem_resource != NULL) bus_release_resource(dev, SYS_RES_MEMORY,sc->a10_dma_mem_rid, sc->a10_dma_mem_resource) ; @@ -148,15 +154,18 @@ free(a10_dma_cnt, M_DMA_CONT) ; } -/* Not implemented yet. */ static void a10_dma_intr(void* ptr) { struct a10_dma_softc* sc = (struct a10_dma_softc*) ptr ; - if(DMA_READ(sc, DMA_IRQ_PEND_STA_REG)&DDMA_IRQ_FULL_ENABLE(0)) - device_printf(sc->a10_dma_dev, "DDMA channel 0 end transfer interrupt received on the dma controller.") ; - else - device_printf(sc->a10_dma_dev, "Unexpected interrupt received in a10_dma_intr") ; + int i=0; + uint32_t val = DMA_READ(sc, DMA_IRQ_PEND_STA_REG) ; + for(i=0; ia10_dma_dev, "DDMA channel %d end transfer interrupt received on the dma controller",i) ; + sc->ddma_channels[i].intr(sc->ddma_channels[i].args) ; + } return ; } @@ -198,22 +207,10 @@ device_printf(a10_dma_cnt->sc->a10_dma_dev, "Freed DDMA Channel no %u\n", pos) ; } -/* -void -a10_temp_setup_dma(int count, void* src, void* dest) -{ - struct a10_dma_softc* sc = a10_dma_cnt->sc ; - DMA_WRITE(sc, DMA_IRQ_EN_REG,DDMA_IRQ_FULL_ENABLE(0)) ; - DMA_WRITE(sc, DDMA_SRC_START_ADDR_REG(0),src) ; - DMA_WRITE(sc, DDMA_DEST_START_ADDR_REG(0), dest) ; - DMA_WRITE(sc, DDMA_BC_REG(0),4) ; - DMA_WRITE(sc, DMA_CFG_REG(0),BIT_SET(31)|BIT_SET(30)|BIT_SET(29)|BIT_SET(28)|BIT_SET(26)|BIT_SET(15)|BIT_SET(12)|BIT_SET(10)|BIT_SET(0)) ; -} */ - -/* The address supplied to this method are physical addresses not virtual addresses */ +/* The address supplied is the bus address */ uint8_t -a10_ddma_config_channel(uint8_t pos, void* src, void* dest, int32_t count, int32_t cfg) +a10_ddma_config_channel(uint8_t pos, uint32_t src, uint32_t dest, int32_t count, int32_t cfg, void* buff, bus_dmamap_t* map, void (*ptr) (void* arg), void* args) { if((pos >=8) || (pos < 0)) { device_printf(a10_dma_cnt->sc->a10_dma_dev, "Invalid position supplied in a10_ddma_set_src pos: %d\n", pos) ; @@ -223,13 +220,84 @@ device_printf(a10_dma_cnt->sc->a10_dma_dev, "DMA channel currently not allocated pos: %d\n", pos) ; return 1 ; } - DMA_WRITE(a10_dma_cnt->sc, DDMA_SRC_START_ADDR_REG(pos), (uint32_t)src) ; - DMA_WRITE(a10_dma_cnt->sc, DDMA_DEST_START_ADDR_REG(pos), (uint32_t)dest) ; + + a10_dma_cnt->ddma_channels[pos].src = src ; + a10_dma_cnt->ddma_channels[pos].dest = dest ; + a10_dma_cnt->ddma_channels[pos].config = cfg ; + a10_dma_cnt->ddma_channels[pos].buff = buff ; + a10_dma_cnt->ddma_channels[pos].dma_map = map ; + a10_dma_cnt->ddma_channels[pos].ptr = ptr ; + a10_dma_cnt->ddma_channels[pos].args = args ; + DMA_WRITE(a10_dma_cnt->sc, DDMA_SRC_ADDR_REG(pos), src) ; + DMA_WRITE(a10_dma_cnt->sc, DDMA_DEST_ADDR_REG(pos), dest) ; DMA_WRITE(a10_dma_cnt->sc, DDMA_BC_REG(pos), count) ; DMA_WRITE(a10_dma_cnt->sc, DDMA_CFG_REG(pos), cfg) ; return (0) ; } +/* Supply the correct macro from a10_dma.h in this functions type parameter. */ +uint8_t +a10_config_src(uint8_t pos, uint32_t src, uint32_t type) +{ + if((pos < 0) || (pos >= NDDMA)) { + device_printf(a10_dma_cnt->sc->a10_dma_dev,"Invalid channel number supplied in a10_config_src ch_no = %d\n", pos) ; + return 1 ; + } + + if(a10_dma_cnt->ddma_channels[pos].in_use == 0) { + device_printf(a10_dma_cnt->sc->a10_dma_dev,"Invalid channel number supplied (not in use) ch_no = %d\n", pos) ; + return (2) ; + } + + a10_dma_cnt->ddma_channels[pos].src = src ; + a10_dma_cnt->ddma_channels[pos].config |= (DMA_SRC_NON_SEC | DMA_SRC_DATA_4 | DMA_SRC_BURST_4 | DMA_SRC_ADDR_LIN | type) ; + + return (0) ; + +} + +/* type parameter supplied should always be from a constant defined in a10_dma.h file. */ +uint8_t +a10_config_dest(uint8_t pos, uint32_t dest, uint32_t type) +{ + if((pos < 0)&&(pos >= NDDMA)) + { + device_printf(a10_dma_cnt->sc->a10_dma_dev, "Invalid channel number supplied in a10_config_dest ch_no = %d\n", pos) ; + return (1) ; + } + + if(a10_dma_cnt->ddma_channels[pos].in_use == 0) { + device_printf(a10_dma_cnt->sc->a10_dma_dev,"Invalid channel number supplied (not in use) ch_no = %d\n", pos) ; + return (2) ; + } + + a10_dma_cnt->ddma_channels[pos].dest = dest ; + a10_dma_cnt->ddma_channels[pos].config |= (DMA_LOADING | DMA_IDLE | DMA_CONT_MOD_EN | DMA_DEST_DATA_2 | DMA_DEST_BURST_4 | DMA_DEST_ADDR_LIN | BC_MODE_NORMAL | type) ; + + return (0) ; +} + +/* How to start the transfer ? */ +void +a10_dma_sync_registers(uint8_t pos, uint32_t bc) +{ + if((pos < 0) || (pos >= NDDMA)) { + device_printf(a10_dma_cnt->sc->a10_dma_dev, "Invalid channel number supplied in sync_dma_registers ch_no = %d\n",pos) ; + } + + if(a10_dma_cnt->ddma_channels[pos].in_use == 0) { + device_printf(a10_dma_cnt->sc->a10_dma_dev,"Invalid channel number supplied (not in use) ch_no = %d\n", pos) ; + } + + uint32_t intm = 0 ; + intm |= DMA_IRQ_FULL_ENABLE(pos) ; + DMA_WRITE(a10_dma_cnt->sc,DDMA_SRC_ADDR_REG(pos), a10_dma_cnt->ddma_channels[pos].src) ; + DMA_WRITE(a10_dma_cnt->sc,DDMA_DEST_ADDR_REG(pos), a10_dma_cnt->ddma_channels[pos].dest) ; + DMA_WRITE(a10_dma_cnt->sc,DDMA_BC_REG(pos), bc) ; + DMA_WRITE(a10_dma_cnt->sc,DDMA_CFG_REG(pos), a10_dma_cnt->ddma_channels[pos].config) ; + DMA_WRITE(a10_dma_cnt->sc, DDMA_IRQ_EN_REG, intm) ; +} + static device_method_t a10_dma_methods[] = { DEVMETHOD(device_probe, a10_dma_probe), DEVMETHOD(device_attach, a10_dma_attach), Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.h ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.h Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_dma.h Thu Jun 4 02:29:01 2015 (r286624) @@ -6,6 +6,10 @@ #include +/* How to determine the buffer size ? */ +#define DMA_BUFF_SIZE 512 +#define DMA_NSEGS 2 + /*Total no of channels for Dedicated and Normal DMA */ #define NNDMA 8 #define NDDMA 8 @@ -25,8 +29,8 @@ /* These are macros of Dedicated DMA */ #define DDMA_CFG_REG(n) (0x300 + ((n)*0x20) ) -#define DDMA_SRC_START_ADDR_REG(n) (0x300 + ((n)*0x20) + 4) -#define DDMA_DEST_START_ADDR_REG(n) (0x300 + ((n)*0x20) + 8) +#define DDMA_SRC_ADDR_REG(n) (0x300 + ((n)*0x20) + 4) +#define DDMA_DEST_ADDR_REG(n) (0x300 + ((n)*0x20) + 8) #define DDMA_BC_REG(n) (0x300 + ((n)*0x20 ) + 0x0C ) #define DDMA_PARA_REG(n) (0x300 + ((n)*0x20) + 0x18) @@ -60,7 +64,8 @@ /* Useful constants. */ #define DMA_LOADING (1U << 31) -#define DMA_BUSY (1U << 30) +#define DMA_BUSY (1U << 30) +#define DMA_IDLE (0U << 30) #define DMA_CONT_MOD_EN (1U << 29) #define DMA_DEST_NON_SEC (1U << 28) #define DMA_DEST_DATA_2 (1U << 25) @@ -88,7 +93,7 @@ #define DMA_DEST_SPI_3 (30U << 16) #define BC_MODE_NORMAL (0U << 15) #define BC_MODE_REMAIN (1U << 15) -#define DMA_SRC_SEC (0U << 12) +#define DMA_SRC_SEC (0U << 12) #define DMA_SRC_NON_SEC (1U << 12) #define DMA_SRC_DATA_1 (0U << 9) #define DMA_SRC_DATA_2 (1U << 9) @@ -112,10 +117,12 @@ #define DMA_SRC_SPI_0 (27U) #define DMA_SRC_SPI_2 (29U) #define DMA_SRC_SPI_3 (31U) + /* Function prototypes */ /* Currently these two methods are implemented for only DDMA */ uint8_t a10_get_ddma_channel(void) ; -uint8_t a10_ddma_config_channel(uint8_t, void*, void*, int32_t, int32_t) ; +uint8_t a10_ddma_config_channel(uint8_t pos, uint32_t src, uint32_t dest, int32_t count, int32_t cfg, void* buff, bus_dmamap_t* map) ; void a10_free_dma_channel(uint8_t) ; +void a10_dma_sync_registers(uint8_t, uint32_t ) ; #endif /* _A10_DMA_H_ */ Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Thu Jun 4 02:29:01 2015 (r286624) @@ -51,6 +51,8 @@ #include #include +#include "a10_dma.h" + #define A10_MMC_MEMRES 0 #define A10_MMC_IRQRES 1 #define A10_MMC_RESSZ 2 @@ -72,14 +74,13 @@ uint32_t a10_intr; uint32_t a10_intr_wait; void * a10_intrhand; + void* a10_dma_buff ; bus_dma_tag_t a10_mmc_dmat ; bus_dma_segment_t a10_mmc_dma_segments ; bus_dmamap_t a10_mmc_dmamap ; - bus_size_t buf_size ; - bus_dma_segment_t a10_mmc_dmasegs[1] ; - void * a10_mmc_buff ; /* Pointer to the buffer */ - uint32_t a10_mmc_nseg ; /* No of segments */ - bus_addr_t a10_mmc_seg ; /* Address of the first descriptor */ + bus_addr_t a10_dma_buff_addr; /* Device visible physical address. */ + int32_t a10_use_dma ; /* Whether to use dma or not */ + uint32_t a10_dma_ch[2] ; }; static struct resource_spec a10_mmc_res_spec[] = { @@ -94,7 +95,7 @@ static int a10_mmc_reset(struct a10_mmc_softc *); static void a10_mmc_intr(void *); static int a10_mmc_update_clock(struct a10_mmc_softc *); -static int a10_mmc_init_dma(struct a10_mmc_softc *, struct mmc_command *) ; /* Not defined yet */ +static int a10_mmc_init_dma(struct a10_mmc_softc *, struct mmc_data *, int read) ; /* Not defined yet */ static void a10_mmc_dma_callback(void *, bus_dma_segment_t *,int , int) ; static int a10_mmc_update_ios(device_t, device_t); @@ -110,7 +111,7 @@ #define A10_MMC_WRITE_4(_sc, _reg, _value) \ bus_space_write_4((_sc)->a10_bst, (_sc)->a10_bsh, _reg, _value) -static int + static int a10_mmc_probe(device_t dev) { @@ -123,7 +124,7 @@ return (BUS_PROBE_DEFAULT); } -static int + static int a10_mmc_attach(device_t dev) { device_t child; @@ -146,8 +147,8 @@ sc->a10_bst = rman_get_bustag(sc->a10_res[A10_MMC_MEMRES]); sc->a10_bsh = rman_get_bushandle(sc->a10_res[A10_MMC_MEMRES]); if (bus_setup_intr(dev, sc->a10_res[A10_MMC_IRQRES], - INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, - &sc->a10_intrhand)) { + INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, + &sc->a10_intrhand)) { bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot setup interrupt handler\n"); return (ENXIO); @@ -156,7 +157,7 @@ /* Activate the module clock. */ if (a10_clk_mmc_activate(sc->a10_id) != 0) { bus_teardown_intr(dev, sc->a10_res[A10_MMC_IRQRES], - sc->a10_intrhand); + sc->a10_intrhand); bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot activate mmc clock\n"); return (ENXIO); @@ -166,9 +167,9 @@ ctx = device_get_sysctl_ctx(dev); tree = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, - &sc->a10_timeout, 0, "Request timeout in seconds"); + &sc->a10_timeout, 0, "Request timeout in seconds"); mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", - MTX_DEF); + MTX_DEF); callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* Reset controller. */ @@ -194,30 +195,29 @@ goto fail; } - /* Create the tag. */ - uint32_t err = bus_dma_tag_create(bus_get_dma_tag(dev), 4096, - 0,BUS_SPACE_MAXADDR,BUS_SPACE_MAXADDR, - NULL,NULL,sizeof(struct a10_mmc_dma_desc)*2, - 1,PAGE_SIZE,0, - NULL,NULL,&sc->a10_mmc_dmat) ; - - if(err) { - device_printf(dev, "Could not create dma tag.\n"); - goto fail ; - } - /* Allocate buffer */ - bus_dmamem_alloc(sc->a10_mmc_dmat, &sc->a10_mmc_buff,BUS_DMA_WAITOK|BUS_DMA_ZERO|BUS_DMA_COHERENT, &sc->a10_mmc_dmamap) ; - - err = bus_dmamap_load(sc->a10_mmc_dmat, sc->a10_mmc_dmamap, sc->a10_mmc_buff, sizeof(struct a10_mmc_dma_desc)*2, a10_mmc_dma_callback, - &sc->a10_mmc_seg, BUS_DMA_NOWAIT) ; + /* Since, max segments is 2 we can use only 2 channels. */ + sc->a10_dma_ch[0] = a10_get_ddma_channel() ; + sc->a10_dma_ch[1] = a10_get_ddma_channel() ; + if((sc->a10_dma_ch[0] >= NDDMA + 1) || (sc->a10_dma_ch[1] >= NDDMA + 1)) + sc->a10_use_dma = 0 ; + else + sc->a10_use_dma = 1 ; - if(err) + if(sc->a10_use_dma == 1) { - device_printf(sc->a10_dev, "Error while loading dma map! code = %d\n", err) ; - goto fail ; + /* Create the tag. */ + uint32_t err = bus_dma_tag_create(bus_get_dma_tag(dev), 4096, + 0,BUS_SPACE_MAXADDR,BUS_SPACE_MAXADDR, + NULL,NULL,DMA_BUFF_SIZE, + DMA_NSEGS,DMA_BUFF_SIZE,0, + NULL,NULL,&sc->a10_mmc_dmat) ; + + if(err) { + device_printf(dev, "Could not create dma tag.\n"); + sc->a10_use_dma = 0 ; + goto fail ; + } } - - device_printf(sc->a10_dev, "dma_map loaded succesfully!\n") ; return (0); fail: @@ -229,20 +229,20 @@ return (ENXIO); } -static int + static int a10_mmc_detach(device_t dev) { return (EBUSY); } -static int + static int a10_mmc_reset(struct a10_mmc_softc *sc) { int timeout; A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); timeout = 1000; while (--timeout > 0) { if ((A10_MMC_READ_4(sc, A10_MMC_GCTRL) & A10_MMC_RESET) == 0) @@ -259,23 +259,24 @@ A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); /* Unmask interrupts. */ A10_MMC_WRITE_4(sc, A10_MMC_IMASK, - A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | - A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); + A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | + A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); /* Enable interrupts and AHB access. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | - A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | + A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); return (0); } -static void + static void a10_mmc_req_done(struct a10_mmc_softc *sc) { struct mmc_command *cmd; struct mmc_request *req; + device_printf(sc->a10_dev,"a10_mmc_req_done called\n") ; cmd = sc->a10_req->cmd; if (cmd->error != MMC_ERR_NONE) { /* Reset the controller. */ @@ -284,7 +285,7 @@ } /* Reset the FIFO. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); req = sc->a10_req; callout_stop(&sc->a10_timeoutc); @@ -295,13 +296,14 @@ req->done(req); } -static void + static void a10_mmc_req_ok(struct a10_mmc_softc *sc) { int timeout; struct mmc_command *cmd; uint32_t status; + device_printf(sc->a10_dev, "a10_mmc_req_ok called\n") ; timeout = 1000; while (--timeout > 0) { status = A10_MMC_READ_4(sc, A10_MMC_STAS); @@ -330,27 +332,29 @@ a10_mmc_req_done(sc); } -static void + static void a10_mmc_timeout(void *arg) { struct a10_mmc_softc *sc; sc = (struct a10_mmc_softc *)arg; + device_printf(sc->a10_dev, "a10_mmc_timeout called\n") ; if (sc->a10_req != NULL) { device_printf(sc->a10_dev, "controller timeout\n"); sc->a10_req->cmd->error = MMC_ERR_TIMEOUT; a10_mmc_req_done(sc); } else device_printf(sc->a10_dev, - "Spurious timeout - no active request\n"); + "Spurious timeout - no active request\n"); } -static int + static int a10_mmc_pio_transfer(struct a10_mmc_softc *sc, struct mmc_data *data) { int i, write; uint32_t bit, *buf; + device_printf(sc->a10_dev, "a10_mmc_pio_transfer called\n") ; buf = (uint32_t *)data->data; write = (data->flags & MMC_DATA_WRITE) ? 1 : 0; bit = write ? A10_MMC_FIFO_FULL : A10_MMC_FIFO_EMPTY; @@ -367,7 +371,7 @@ return (0); } -static void + static void a10_mmc_intr(void *arg) { struct a10_mmc_softc *sc; @@ -375,6 +379,7 @@ uint32_t imask, rint; sc = (struct a10_mmc_softc *)arg; + device_printf(sc->a10_dev, "a10_mmc_intr called\n") ; A10_MMC_LOCK(sc); rint = A10_MMC_READ_4(sc, A10_MMC_RINTR); imask = A10_MMC_READ_4(sc, A10_MMC_IMASK); @@ -387,8 +392,8 @@ #endif if (sc->a10_req == NULL) { device_printf(sc->a10_dev, - "Spurious interrupt - no active request, rint: 0x%08X\n", - rint); + "Spurious interrupt - no active request, rint: 0x%08X\n", + rint); A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); A10_MMC_UNLOCK(sc); return; @@ -408,16 +413,19 @@ sc->a10_intr |= rint; data = sc->a10_req->cmd->data; if (data != NULL && (rint & (A10_MMC_DATA_OVER | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) - a10_mmc_pio_transfer(sc, data); - if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) - a10_mmc_req_ok(sc); + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) { + if(sc->a10_use_dma == 0) + a10_mmc_pio_transfer(sc, data); + else + a10_mmc_init_dma(sc, data, 1) ; + if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) + a10_mmc_req_ok(sc); - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); - A10_MMC_UNLOCK(sc); + A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); + A10_MMC_UNLOCK(sc); + } } - -static int + static int a10_mmc_request(device_t bus, device_t child, struct mmc_request *req) { int blksz; @@ -426,6 +434,7 @@ uint32_t cmdreg; sc = device_get_softc(bus); + device_printf(sc->a10_dev, "a10_mmc_request called\n") ; A10_MMC_LOCK(sc); if (sc->a10_req) { A10_MMC_UNLOCK(sc); @@ -464,113 +473,113 @@ A10_MMC_WRITE_4(sc, A10_MMC_CARG, cmd->arg); A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg | cmd->opcode); callout_reset(&sc->a10_timeoutc, sc->a10_timeout * hz, - a10_mmc_timeout, sc); + a10_mmc_timeout, sc); A10_MMC_UNLOCK(sc); return (0); } -static int + static int a10_mmc_read_ivar(device_t bus, device_t child, int which, - uintptr_t *result) + uintptr_t *result) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); switch (which) { - default: - return (EINVAL); - case MMCBR_IVAR_BUS_MODE: - *(int *)result = sc->a10_host.ios.bus_mode; - break; - case MMCBR_IVAR_BUS_WIDTH: - *(int *)result = sc->a10_host.ios.bus_width; - break; - case MMCBR_IVAR_CHIP_SELECT: - *(int *)result = sc->a10_host.ios.chip_select; - break; - case MMCBR_IVAR_CLOCK: - *(int *)result = sc->a10_host.ios.clock; - break; - case MMCBR_IVAR_F_MIN: - *(int *)result = sc->a10_host.f_min; - break; - case MMCBR_IVAR_F_MAX: - *(int *)result = sc->a10_host.f_max; - break; - case MMCBR_IVAR_HOST_OCR: - *(int *)result = sc->a10_host.host_ocr; - break; - case MMCBR_IVAR_MODE: - *(int *)result = sc->a10_host.mode; - break; - case MMCBR_IVAR_OCR: - *(int *)result = sc->a10_host.ocr; - break; - case MMCBR_IVAR_POWER_MODE: - *(int *)result = sc->a10_host.ios.power_mode; - break; - case MMCBR_IVAR_VDD: - *(int *)result = sc->a10_host.ios.vdd; - break; - case MMCBR_IVAR_CAPS: - *(int *)result = sc->a10_host.caps; - break; - case MMCBR_IVAR_MAX_DATA: - *(int *)result = 65535; - break; + default: + return (EINVAL); + case MMCBR_IVAR_BUS_MODE: + *(int *)result = sc->a10_host.ios.bus_mode; + break; + case MMCBR_IVAR_BUS_WIDTH: + *(int *)result = sc->a10_host.ios.bus_width; + break; + case MMCBR_IVAR_CHIP_SELECT: + *(int *)result = sc->a10_host.ios.chip_select; + break; + case MMCBR_IVAR_CLOCK: + *(int *)result = sc->a10_host.ios.clock; + break; + case MMCBR_IVAR_F_MIN: + *(int *)result = sc->a10_host.f_min; + break; + case MMCBR_IVAR_F_MAX: + *(int *)result = sc->a10_host.f_max; + break; + case MMCBR_IVAR_HOST_OCR: + *(int *)result = sc->a10_host.host_ocr; + break; + case MMCBR_IVAR_MODE: + *(int *)result = sc->a10_host.mode; + break; + case MMCBR_IVAR_OCR: + *(int *)result = sc->a10_host.ocr; + break; + case MMCBR_IVAR_POWER_MODE: + *(int *)result = sc->a10_host.ios.power_mode; + break; + case MMCBR_IVAR_VDD: + *(int *)result = sc->a10_host.ios.vdd; + break; + case MMCBR_IVAR_CAPS: + *(int *)result = sc->a10_host.caps; + break; + case MMCBR_IVAR_MAX_DATA: + *(int *)result = 65535; + break; } return (0); } -static int + static int a10_mmc_write_ivar(device_t bus, device_t child, int which, - uintptr_t value) + uintptr_t value) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); switch (which) { - default: - return (EINVAL); - case MMCBR_IVAR_BUS_MODE: - sc->a10_host.ios.bus_mode = value; - break; - case MMCBR_IVAR_BUS_WIDTH: - sc->a10_host.ios.bus_width = value; - break; - case MMCBR_IVAR_CHIP_SELECT: - sc->a10_host.ios.chip_select = value; - break; - case MMCBR_IVAR_CLOCK: - sc->a10_host.ios.clock = value; - break; - case MMCBR_IVAR_MODE: - sc->a10_host.mode = value; - break; - case MMCBR_IVAR_OCR: - sc->a10_host.ocr = value; - break; - case MMCBR_IVAR_POWER_MODE: - sc->a10_host.ios.power_mode = value; - break; - case MMCBR_IVAR_VDD: - sc->a10_host.ios.vdd = value; - break; - /* These are read-only */ - case MMCBR_IVAR_CAPS: - case MMCBR_IVAR_HOST_OCR: - case MMCBR_IVAR_F_MIN: - case MMCBR_IVAR_F_MAX: - case MMCBR_IVAR_MAX_DATA: - return (EINVAL); + default: + return (EINVAL); + case MMCBR_IVAR_BUS_MODE: + sc->a10_host.ios.bus_mode = value; + break; + case MMCBR_IVAR_BUS_WIDTH: + sc->a10_host.ios.bus_width = value; + break; + case MMCBR_IVAR_CHIP_SELECT: + sc->a10_host.ios.chip_select = value; + break; + case MMCBR_IVAR_CLOCK: + sc->a10_host.ios.clock = value; + break; + case MMCBR_IVAR_MODE: + sc->a10_host.mode = value; + break; + case MMCBR_IVAR_OCR: + sc->a10_host.ocr = value; + break; + case MMCBR_IVAR_POWER_MODE: + sc->a10_host.ios.power_mode = value; + break; + case MMCBR_IVAR_VDD: + sc->a10_host.ios.vdd = value; + break; + /* These are read-only */ + case MMCBR_IVAR_CAPS: + case MMCBR_IVAR_HOST_OCR: + case MMCBR_IVAR_F_MIN: + case MMCBR_IVAR_F_MAX: + case MMCBR_IVAR_MAX_DATA: + return (EINVAL); } return (0); } -static int + static int a10_mmc_update_clock(struct a10_mmc_softc *sc) { uint32_t cmdreg; @@ -596,9 +605,22 @@ /* This function will map the buffer into a device visible address space and will be called before the actual transfer of data takes place. */ +/* Currently valid for only reading data */ static int -a10_mmc_init_dma(struct a10_mmc_softc* sc, struct mmc_command* cmd) +a10_mmc_init_dma(struct a10_mmc_softc* sc, struct mmc_data* data, int read) { + bus_dmamem_alloc(sc->a10_mmc_dmat, &sc->a10_dma_buff,BUS_DMA_WAITOK|BUS_DMA_ZERO|BUS_DMA_COHERENT, &sc->a10_mmc_dmamap) ; + + uint32_t err = bus_dmamap_load(sc->a10_mmc_dmat, sc->a10_mmc_dmamap, sc->a10_dma_buff, DMA_BUFF_SIZE, + a10_mmc_dma_callback,&sc->a10_dma_buff_addr,BUS_DMA_NOWAIT) ; + + if(err) + { + device_printf(sc->a10_dev, "Error while loading dma map! code = %d\n", err) ; + sc->a10_use_dma = 0 ; + } + + device_printf(sc->a10_dev, "dma_map loaded succesfully!\n") ; return (0) ; } @@ -609,9 +631,10 @@ printf("a10_mmc : Error in the callback function code = %d\n", error) ; return ; } - *(bus_addr_t*)arg = segs[0].ds_addr ; + printf("a10_mmc: The number of segments allocated is %d\n",nsegs) ; + *(bus_addr_t*)arg = segs[0].ds_addr ; /* Device visible address space */ } -static int + static int a10_mmc_update_ios(device_t bus, device_t child) { int error; @@ -620,6 +643,7 @@ uint32_t clkcr; sc = device_get_softc(bus); + device_printf(sc->a10_dev, "a10_mmc_update_ios called\n") ; clkcr = A10_MMC_READ_4(sc, A10_MMC_CLKCR); if (clkcr & A10_MMC_CARD_CLK_ON) { /* Disable clock. */ @@ -654,34 +678,35 @@ /* Set the bus width. */ switch (ios->bus_width) { - case bus_width_1: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH1); - break; - case bus_width_4: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH4); - break; - case bus_width_8: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH8); - break; + case bus_width_1: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH1); + break; + case bus_width_4: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH4); + break; + case bus_width_8: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH8); + break; } return (0); } -static int + static int a10_mmc_get_ro(device_t bus, device_t child) { return (0); } -static int + static int a10_mmc_acquire_host(device_t bus, device_t child) { struct a10_mmc_softc *sc; int error; sc = device_get_softc(bus); + device_printf(sc->a10_dev, "a10_mmc_acquire_host called\n") ; A10_MMC_LOCK(sc); while (sc->a10_bus_busy) { error = msleep(sc, &sc->a10_mtx, PCATCH, "mmchw", 0); @@ -696,12 +721,13 @@ return (0); } -static int + static int a10_mmc_release_host(device_t bus, device_t child) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); + device_printf(sc->a10_dev, "a10_mmc_release_host called\n") ; A10_MMC_LOCK(sc); sc->a10_bus_busy--; wakeup(sc); Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h Thu Jun 4 02:29:01 2015 (r286624) @@ -60,6 +60,8 @@ #define A10_MMC_CBDA 0x94 #define A10_MMC_FIFO 0x100 /* FIFO Access Address */ +#define A10_MMC_BUFF_ADDR 0xFFF /* Some random access */ + /* A10_MMC_GCTRL */ #define A10_MMC_SOFT_RESET (1U << 0) #define A10_MMC_FIFO_RESET (1U << 1) @@ -72,6 +74,7 @@ #define A10_MMC_ACCESS_BY_AHB (1U << 31) #define A10_MMC_RESET \ (A10_MMC_SOFT_RESET | A10_MMC_FIFO_RESET | A10_MMC_DMA_RESET) +#define A10_MMC_DMA_FTRGLEVEL_A20 0x20070008 /* A10_MMC_CLKCR */ #define A10_MMC_CARD_CLK_ON (1U << 16) Modified: soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_dma.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_dma.c Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_dma.c Thu Jun 4 02:29:01 2015 (r286624) @@ -556,6 +556,7 @@ bus_write_4(sc->sc_mem, BCM_DMA_CBADDR(ch), sc->sc_dma_ch[ch].vc_cb); + /* Is this the chip select signal with which we enable the DMA transfer operations ? */ bus_write_4(sc->sc_mem, BCM_DMA_CS(ch), CS_ACTIVE); #ifdef DEBUG Modified: soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Thu Jun 4 02:29:01 2015 (r286624) @@ -103,6 +103,7 @@ static int bcm_sdhci_get_ro(device_t, device_t); static void bcm_sdhci_dma_intr(int ch, void *arg); +/* This is the callback function */ static void bcm_sdhci_dmacb(void *arg, bus_dma_segment_t *segs, int nseg, int err) { Modified: soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Thu Jun 4 01:52:17 2015 (r286623) +++ soc2015/pratiksinghal/cubie-head/sys/arm/conf/CUBIEBOARD Thu Jun 4 02:29:01 2015 (r286624) @@ -101,7 +101,7 @@ device emac #DMA controller -#device dma +device dma # USB ethernet support, requires miibus device miibus From owner-svn-soc-all@FreeBSD.ORG Thu Jun 4 18:35:30 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3368F313 for ; Thu, 4 Jun 2015 18:35:30 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 21EA41025 for ; Thu, 4 Jun 2015 18:35:30 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t54IZUXW045181 for ; Thu, 4 Jun 2015 18:35:30 GMT (envelope-from iateaca@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t54IZTVp045165 for svn-soc-all@FreeBSD.org; Thu, 4 Jun 2015 18:35:29 GMT (envelope-from iateaca@FreeBSD.org) Date: Thu, 4 Jun 2015 18:35:29 GMT Message-Id: <201506041835.t54IZTVp045165@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to iateaca@FreeBSD.org using -f From: iateaca@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286647 - soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jun 2015 18:35:30 -0000 Author: iateaca Date: Thu Jun 4 18:35:29 2015 New Revision: 286647 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286647 Log: add a static MAC address for the NE2000 card Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c ============================================================================== --- soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Thu Jun 4 17:54:41 2015 (r286646) +++ soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Thu Jun 4 18:35:29 2015 (r286647) @@ -164,6 +164,14 @@ ne2000_set_reg_by_offset(sc, NE2000_P3, ED_RTL80X9_CONFIG3, ED_RTL80X9_CF3_FUDUP); + /* the NE2000 card has his MAC address located in the first 6 words of the RAM memory */ + sc->ram[0] = 0x00; + sc->ram[2] = 0xa0; + sc->ram[4] = 0x98; + sc->ram[6] = 0x4a; + sc->ram[8] = 0x0e; + sc->ram[10] = 0xee; + return 0; } From owner-svn-soc-all@FreeBSD.ORG Fri Jun 5 18:37:40 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A759347D for ; Fri, 5 Jun 2015 18:37:40 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 88B401C58 for ; Fri, 5 Jun 2015 18:37:40 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t55IbeOv054782 for ; Fri, 5 Jun 2015 18:37:40 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t55Ibc4v054745 for svn-soc-all@FreeBSD.org; Fri, 5 Jun 2015 18:37:38 GMT (envelope-from kczekirda@FreeBSD.org) Date: Fri, 5 Jun 2015 18:37:38 GMT Message-Id: <201506051837.t55Ibc4v054745@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286696 - in soc2015/kczekirda/ipxe: . files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jun 2015 18:37:40 -0000 Author: kczekirda Date: Fri Jun 5 18:37:38 2015 New Revision: 286696 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286696 Log: remove bash from dependencies Added: soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile.pcbios soc2015/kczekirda/ipxe/files/patch-util_gensdsk Modified: soc2015/kczekirda/ipxe/Makefile soc2015/kczekirda/ipxe/files/patch-util_geniso Modified: soc2015/kczekirda/ipxe/Makefile ============================================================================== --- soc2015/kczekirda/ipxe/Makefile Fri Jun 5 17:26:07 2015 (r286695) +++ soc2015/kczekirda/ipxe/Makefile Fri Jun 5 18:37:38 2015 (r286696) @@ -14,8 +14,8 @@ ONLY_FOR_ARCHS= amd64 i386 ONLY_FOR_ARCHS_REASON= not yet ported to anything other than amd64/i386 -BUILD_DEPENDS+= bash:${PORTSDIR}/shells/bash \ - mkisofs:${PORTSDIR}/sysutils/cdrtools \ +BUILD_DEPENDS+= mkisofs:${PORTSDIR}/sysutils/cdrtools \ + syslinux:${PORTSDIR}/sysutils/syslinux \ gcc48:${PORTSDIR}/lang/gcc48 MAKE_JOBS_SAFE= yes Added: soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile.pcbios ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/files/patch-arch_i386_Makefile.pcbios Fri Jun 5 18:37:38 2015 (r286696) @@ -0,0 +1,25 @@ +--- arch/i386/Makefile.pcbios.orig 2015-06-04 19:07:30 UTC ++++ arch/i386/Makefile.pcbios +@@ -57,19 +57,19 @@ LIST_NAME_isarom := ROMS + NON_AUTO_MEDIA += iso + %iso: %lkrn util/geniso + $(QM)$(ECHO) " [GENISO] $@" +- $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) VERSION="$(VERSION)" bash util/geniso -o $@ $< ++ $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) VERSION="$(VERSION)" sh util/geniso -o $@ $< + + # rule to make a floppy emulation ISO boot image + NON_AUTO_MEDIA += liso + %liso: %lkrn util/geniso + $(QM)$(ECHO) " [GENISO] $@" +- $(Q)VERSION="$(VERSION)" bash util/geniso -l -o $@ $< ++ $(Q)VERSION="$(VERSION)" sh util/geniso -l -o $@ $< + + # rule to make a syslinux floppy image (mountable, bootable) + NON_AUTO_MEDIA += sdsk + %sdsk: %lkrn util/gensdsk + $(QM)$(ECHO) " [GENSDSK] $@" +- $(Q)bash util/gensdsk $@ $< ++ $(Q)sh util/gensdsk $@ $< + + # rule to write disk images to /dev/fd0 + NON_AUTO_MEDIA += fd0 Modified: soc2015/kczekirda/ipxe/files/patch-util_geniso ============================================================================== --- soc2015/kczekirda/ipxe/files/patch-util_geniso Fri Jun 5 17:26:07 2015 (r286695) +++ soc2015/kczekirda/ipxe/files/patch-util_geniso Fri Jun 5 18:37:38 2015 (r286696) @@ -1,6 +1,55 @@ ---- util/geniso.orig 2015-06-03 19:19:11 UTC +--- util/geniso.orig 2015-06-05 17:32:45 UTC +++ util/geniso -@@ -123,7 +123,7 @@ case "${LEGACY}" in +@@ -2,7 +2,7 @@ + # + # Generate a isolinux ISO boot image + +-function help() { ++help() { + echo "usage: ${0} [OPTIONS] foo.lkrn [bar.lkrn,...]" + echo + echo "where OPTIONS are:" +@@ -40,7 +40,7 @@ fi + # There should either be mkisofs or the compatible genisoimage program + for command in genisoimage mkisofs; do + if ${command} --version >/dev/null 2>/dev/null; then +- mkisofs=(${command}) ++ mkisofs=${command} + break + fi + done +@@ -53,9 +53,9 @@ fi + dir=$(mktemp -d bin/iso.dir.XXXXXX) + cfg=${dir}/isolinux.cfg + +-mkisofs+=(-quiet -l -volid "iPXE" -preparer "iPXE build system" +- -appid "iPXE ${VERSION} - Open Source Network Boot Firmware" +- -publisher "http://ipxe.org/" -c boot.cat) ++mkisofs="$mkisofs -quiet -l -volid \"iPXE\" -preparer \"iPXE build system\"" ++mkisofs="$mkisofs -appid \"iPXE ${VERSION} - Open Source Network Boot Firmware\"" ++mkisofs="$mkisofs -publisher \"http://ipxe.org/\" -c boot.cat" + + # generate the config + cat > ${cfg} </dev/null 2>/dev/null; then Added: soc2015/kczekirda/ipxe/files/patch-util_gensdsk ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/files/patch-util_gensdsk Fri Jun 5 18:37:38 2015 (r286696) @@ -0,0 +1,18 @@ +--- util/gensdsk.orig 2015-06-05 17:32:57 UTC ++++ util/gensdsk +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # + # Generate a syslinux floppy that loads a iPXE image + # +@@ -44,8 +44,7 @@ do + # shorten name for 8.3 filesystem + b=$(basename $f) + g=${b%.lkrn} +- g=${g//[^a-z0-9]} +- g=${g:0:8}.krn ++ g=$(echo $g | sed -e 's/[^a-z0-9]//g' | cut -c1-8).krn + case "$first" in + "") + echo DEFAULT $g From owner-svn-soc-all@FreeBSD.ORG Fri Jun 5 20:50:32 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3ED2DA47 for ; Fri, 5 Jun 2015 20:50:32 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2117F1BFB for ; Fri, 5 Jun 2015 20:50:32 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t55KoVd5077268 for ; Fri, 5 Jun 2015 20:50:31 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t55KoUhb076688 for svn-soc-all@FreeBSD.org; Fri, 5 Jun 2015 20:50:30 GMT (envelope-from kczekirda@FreeBSD.org) Date: Fri, 5 Jun 2015 20:50:30 GMT Message-Id: <201506052050.t55KoUhb076688@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286698 - in soc2015/kczekirda/ipxe: . files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jun 2015 20:50:32 -0000 Author: kczekirda Date: Fri Jun 5 20:50:30 2015 New Revision: 286698 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286698 Log: Permission denied: isolinux.bin and cleaning Modified: soc2015/kczekirda/ipxe/Makefile soc2015/kczekirda/ipxe/files/patch-util_geniso soc2015/kczekirda/ipxe/pkg-descr Modified: soc2015/kczekirda/ipxe/Makefile ============================================================================== --- soc2015/kczekirda/ipxe/Makefile Fri Jun 5 18:16:10 2015 (r286697) +++ soc2015/kczekirda/ipxe/Makefile Fri Jun 5 20:50:30 2015 (r286698) @@ -1,5 +1,4 @@ -# Created by: Andrzej Tobola -# and Kamil Czekirda +# Created by: Andrzej Tobola , Kamil Czekirda # $FreeBSD$ # Date created: 2015-05-28 @@ -7,8 +6,10 @@ PORTVERSION= 1.0.0+ CATEGORIES= net MASTER_SITES= http://ipxe.pl/freebsd/ -MAINTAINER= kczekirda@freebsd.org,ato@iem.pw.edu.pl -COMMENT= Open Source (GPL) implementation of the Preboot eXecution Environment (PXE) client firmware and bootloader + +MAINTAINER= kczekirda@freebsd.org +COMMENT= Open Source (GPL) implementation of the PXE client and bootloader + LICENSE= GPLv2 ONLY_FOR_ARCHS= amd64 i386 @@ -36,7 +37,7 @@ do-install: ${MKDIR} ${STAGEDIR}${DATADIR} cd ${WRKSRC} && ${INSTALL_DATA} ${BINLIST} ${STAGEDIR}${DATADIR} - ${INSTALL_DATA} ${EMBEDED_SCR} ${STAGEDIR}${DATADIR} +# ${INSTALL_DATA} ${EMBEDED_SCR} ${STAGEDIR}${DATADIR} ${LN} -sfh ${PORTVERSION} ${STAGEDIR}${DATADIR}/VER .include Modified: soc2015/kczekirda/ipxe/files/patch-util_geniso ============================================================================== --- soc2015/kczekirda/ipxe/files/patch-util_geniso Fri Jun 5 18:16:10 2015 (r286697) +++ soc2015/kczekirda/ipxe/files/patch-util_geniso Fri Jun 5 20:50:30 2015 (r286698) @@ -1,4 +1,4 @@ ---- util/geniso.orig 2015-06-05 17:32:45 UTC +--- util/geniso.orig 2015-06-05 20:26:05 UTC +++ util/geniso @@ -2,7 +2,7 @@ # @@ -41,7 +41,7 @@ case "${FIRST}" in "") echo "DEFAULT ${b}" -@@ -116,20 +115,20 @@ case "${LEGACY}" in +@@ -116,20 +115,21 @@ case "${LEGACY}" in fi # generate the iso image @@ -51,6 +51,7 @@ 0) # copy isolinux bootloader cp ${ISOLINUX_BIN} ${dir} ++ chmod +w $dir/isolinux.bin # syslinux 6.x needs a file called ldlinux.c32 - LDLINUX_C32=$(dirname ${ISOLINUX_BIN})/ldlinux.c32 Modified: soc2015/kczekirda/ipxe/pkg-descr ============================================================================== --- soc2015/kczekirda/ipxe/pkg-descr Fri Jun 5 18:16:10 2015 (r286697) +++ soc2015/kczekirda/ipxe/pkg-descr Fri Jun 5 20:50:30 2015 (r286698) @@ -1,5 +1,8 @@ iPXE is an open-source PXE implementation and bootloader. -Create network booting code that allows computers to load their operating system from a network or to extend an existing PXE implementation with support for additional protocols, such iSCSI, HTTP, TFTP, NFS, FTP and ATA over Ethernet. +Create network booting code that allows computers to load their operating +system from a network or to extend an existing PXE implementation with support +for additional protocols, such iSCSI, HTTP, TFTP, NFS, FTP +and ATA over Ethernet. WWW: http://www.ipxe.org/ From owner-svn-soc-all@FreeBSD.ORG Fri Jun 5 20:51:41 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4A4D1A72 for ; Fri, 5 Jun 2015 20:51:41 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3924C1D6C for ; Fri, 5 Jun 2015 20:51:41 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t55KpfQ8080044 for ; Fri, 5 Jun 2015 20:51:41 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t55KpelO079990 for svn-soc-all@FreeBSD.org; Fri, 5 Jun 2015 20:51:40 GMT (envelope-from kczekirda@FreeBSD.org) Date: Fri, 5 Jun 2015 20:51:40 GMT Message-Id: <201506052051.t55KpelO079990@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286699 - soc2015/kczekirda/ipxe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jun 2015 20:51:41 -0000 Author: kczekirda Date: Fri Jun 5 20:51:40 2015 New Revision: 286699 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286699 Log: pkg-plist added Added: soc2015/kczekirda/ipxe/pkg-plist Added: soc2015/kczekirda/ipxe/pkg-plist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/kczekirda/ipxe/pkg-plist Fri Jun 5 20:51:40 2015 (r286699) @@ -0,0 +1,6 @@ +%%DATADIR%%/VER +%%DATADIR%%/ipxe.iso +%%DATADIR%%/ipxe.usb +%%DATADIR%%/undionly.kkpxe +%%DATADIR%%/undionly.kpxe + From owner-svn-soc-all@FreeBSD.ORG Sat Jun 6 03:48:00 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EBBE8B7B for ; Sat, 6 Jun 2015 03:48:00 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D68F91C5D for ; Sat, 6 Jun 2015 03:48:00 +0000 (UTC) (envelope-from pratiksinghal@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t563m0J2077747 for ; Sat, 6 Jun 2015 03:48:00 GMT (envelope-from pratiksinghal@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t563lxdQ077718 for svn-soc-all@FreeBSD.org; Sat, 6 Jun 2015 03:47:59 GMT (envelope-from pratiksinghal@FreeBSD.org) Date: Sat, 6 Jun 2015 03:47:59 GMT Message-Id: <201506060347.t563lxdQ077718@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to pratiksinghal@FreeBSD.org using -f From: pratiksinghal@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286707 - soc2015/pratiksinghal/cubie-head/sys/arm/allwinner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jun 2015 03:48:01 -0000 Author: pratiksinghal Date: Sat Jun 6 03:47:59 2015 New Revision: 286707 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286707 Log: Implemented the prepare and init functions and removed unused code Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Sat Jun 6 01:18:28 2015 (r286706) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.c Sat Jun 6 03:47:59 2015 (r286707) @@ -51,12 +51,11 @@ #include #include -#include "a10_dma.h" - #define A10_MMC_MEMRES 0 #define A10_MMC_IRQRES 1 #define A10_MMC_RESSZ 2 - +#define A10_MMC_NDESC 16 +#define AWIN_MMC_DMA_FTRGLEVEL_A20 0x20070008 struct a10_mmc_softc { bus_space_handle_t a10_bsh; @@ -74,13 +73,19 @@ uint32_t a10_intr; uint32_t a10_intr_wait; void * a10_intrhand; - void* a10_dma_buff ; - bus_dma_tag_t a10_mmc_dmat ; - bus_dma_segment_t a10_mmc_dma_segments ; - bus_dmamap_t a10_mmc_dmamap ; - bus_addr_t a10_dma_buff_addr; /* Device visible physical address. */ - int32_t a10_use_dma ; /* Whether to use dma or not */ - uint32_t a10_dma_ch[2] ; + int a10_use_dma ; + + /* Fields required for DMA access */ + uint32_t a10_dma_xfer_len ; + bus_dma_segment_t* a10_dma_segs ; + int a10_dma_nsegs ; + bus_size_t a10_dma_size ; + int a10_dma_cb_arg ; /* Stores the number of segments */ + bus_dmamap_t a10_dma_map ; + bus_dma_tag_t a10_dma_tag ; + int a10_dma_ndesc; + void* a10_dma_desc ; + }; static struct resource_spec a10_mmc_res_spec[] = { @@ -91,13 +96,14 @@ static int a10_mmc_probe(device_t); static int a10_mmc_attach(device_t); +static int a10_mmc_setup_dma(struct a10_mmc_softc*, device_t) ; +static int a10_mmc_prepare_dma(struct a10_mmc_softc*) ; static int a10_mmc_detach(device_t); static int a10_mmc_reset(struct a10_mmc_softc *); static void a10_mmc_intr(void *); static int a10_mmc_update_clock(struct a10_mmc_softc *); -static int a10_mmc_init_dma(struct a10_mmc_softc *, struct mmc_data *, int read) ; /* Not defined yet */ -static void a10_mmc_dma_callback(void *, bus_dma_segment_t *,int , int) ; +static void a10_dma_cb(void*, bus_dma_segment_t*, int, int) ; static int a10_mmc_update_ios(device_t, device_t); static int a10_mmc_request(device_t, device_t, struct mmc_request *); static int a10_mmc_get_ro(device_t, device_t); @@ -111,7 +117,7 @@ #define A10_MMC_WRITE_4(_sc, _reg, _value) \ bus_space_write_4((_sc)->a10_bst, (_sc)->a10_bsh, _reg, _value) - static int +static int a10_mmc_probe(device_t dev) { @@ -124,7 +130,7 @@ return (BUS_PROBE_DEFAULT); } - static int +static int a10_mmc_attach(device_t dev) { device_t child; @@ -133,6 +139,7 @@ struct sysctl_oid_list *tree; sc = device_get_softc(dev); + sc->a10_use_dma = 1 ; sc->a10_dev = dev; sc->a10_req = NULL; sc->a10_id = device_get_unit(dev); @@ -147,8 +154,8 @@ sc->a10_bst = rman_get_bustag(sc->a10_res[A10_MMC_MEMRES]); sc->a10_bsh = rman_get_bushandle(sc->a10_res[A10_MMC_MEMRES]); if (bus_setup_intr(dev, sc->a10_res[A10_MMC_IRQRES], - INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, - &sc->a10_intrhand)) { + INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, + &sc->a10_intrhand)) { bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot setup interrupt handler\n"); return (ENXIO); @@ -157,7 +164,7 @@ /* Activate the module clock. */ if (a10_clk_mmc_activate(sc->a10_id) != 0) { bus_teardown_intr(dev, sc->a10_res[A10_MMC_IRQRES], - sc->a10_intrhand); + sc->a10_intrhand); bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); device_printf(dev, "cannot activate mmc clock\n"); return (ENXIO); @@ -167,9 +174,9 @@ ctx = device_get_sysctl_ctx(dev); tree = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, - &sc->a10_timeout, 0, "Request timeout in seconds"); + &sc->a10_timeout, 0, "Request timeout in seconds"); mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", - MTX_DEF); + MTX_DEF); callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* Reset controller. */ @@ -195,27 +202,10 @@ goto fail; } - /* Since, max segments is 2 we can use only 2 channels. */ - sc->a10_dma_ch[0] = a10_get_ddma_channel() ; - sc->a10_dma_ch[1] = a10_get_ddma_channel() ; - if((sc->a10_dma_ch[0] >= NDDMA + 1) || (sc->a10_dma_ch[1] >= NDDMA + 1)) - sc->a10_use_dma = 0 ; - else - sc->a10_use_dma = 1 ; - - if(sc->a10_use_dma == 1) - { - /* Create the tag. */ - uint32_t err = bus_dma_tag_create(bus_get_dma_tag(dev), 4096, - 0,BUS_SPACE_MAXADDR,BUS_SPACE_MAXADDR, - NULL,NULL,DMA_BUFF_SIZE, - DMA_NSEGS,DMA_BUFF_SIZE,0, - NULL,NULL,&sc->a10_mmc_dmat) ; - - if(err) { - device_printf(dev, "Could not create dma tag.\n"); + if(sc->a10_use_dma == 1) { + if(a10_mmc_setup_dma(sc,dev) != 0) { + device_printf(sc->a10_dev, "Couldn't setup DMA!\n") ; sc->a10_use_dma = 0 ; - goto fail ; } } return (0); @@ -229,20 +219,143 @@ return (ENXIO); } - static int +/*TODO :- Add the dismantling DMA part also with goto statements */ +static int +a10_mmc_setup_dma(struct a10_mmc_softc* sc, device_t dev) +{ + sc->a10_dma_ndesc = A10_MMC_NDESC ; + sc->a10_dma_size = sizeof(struct a10_mmc_dma_desc)*(sc->a10_dma_ndesc) ; + + uint32_t error ; + /* First create the tag */ + error = bus_dma_tag_create(bus_get_dma_tag(dev),1, + sc->a10_dma_size,BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, + NULL,NULL,sc->a10_dma_size, + 1,sc->a10_dma_size,0, + NULL,NULL,&sc->a10_dma_tag) ; + if(error) + return (error) ; + + /* Allocate the memory and map at kva sc->a10_dma_desc*/ + + error = bus_dmamem_alloc(sc->a10_dma_tag,&sc->a10_dma_desc,BUS_DMA_WAITOK,&sc->a10_dma_map) ; + if(error) + return (error) ; + + /* Load the map */ + error = bus_dmamap_load(sc->a10_dma_tag, sc->a10_dma_map,sc->a10_dma_desc,sc->a10_dma_size,a10_dma_cb, &sc->a10_dma_cb_arg,0) ; + + if((error != 0)&&(error != EINPROGRESS)) + return (error) ; + + return(0) ; + +} + +static int +a10_mmc_prepare_dma(struct a10_mmc_softc* sc) +{ + struct a10_mmc_dma_desc* dma = sc->a10_dma_desc ; + struct mmc_command* cmd = sc->a10_req->cmd ; + int read = (sc->a10_req->cmd->data->flags & MMC_DATA_WRITE) ? 0 : 1 ; + bus_addr_t desc_paddr = sc->a10_dma_map->segments[0].ds_addr ; + bus_size_t off ; + int desc, rem,seg ; + uint32_t val ; + + desc = 0 ; + + /* Pick a segment and program all the descriptors in the segment. */ + for(seg = 0; seg < sc->a10_dma_cb_arg ; seg++) + { + bus_addr_t paddr = sc->a10_dma_map->segments[seg].ds_addr; + bus_size_t len = sc->a10_dma_map->segments[seg].ds_len ; + rem = min(len,cmd->data->len) ; + while(rem > 0) + { + if(desc == sc->a10_dma_ndesc) + break ; + len = min(sc->a10_dma_xfer_len, rem) ; + dma[desc].buff_size = hotle32(len) ; + dma[desc].addr = hotle32(paddr + off) ; + dma[desc].config = htole32(A10_MMC_DMA_CONFIG_CH|A10_MMC_DMA_CONFIG_OWN) ; + + cmd->data->len -= len ; + rem -= len ; + off += len ; + if(desc == 0) { + dma[desc].config |= htole32(A10_MMC_DMA_CONFIG_FD) ; + } + + if(cmd->data->len == 0) { + dma[desc].config |= htole32(A10_MMC_DMA_CONFIG_LD) ; + dma[desc].config |= htole32(A10_MMC_DMA_CONFIG_ER) ; + dma[desc].next = 0 ; + } + else { + dma[desc].config |= htole32(A10_MMC_DMA_CONFIG_DIC) ; + dma[desc].next = htole32(desc_paddr + ((desc+1)*sizeof(struct a10_mmc_dma_desc))) + } + desc++ ; + } + } + + if(desc == sc->a10_dma_ndesc) { + device_printf(sc->a10_dev, "Couldn't find enough descriptors for DMA transfer") ; + } + + val = A10_MMC_READ_4(sc, A10_MMC_GCTRL) ; + val |= A10_MMC_DMA_ENABLE ; + val |= A10_MMC_INT_ENABLE ; + A10_MMC_WRITE_4(sc, A10_MMC_GCTRL,val) ; + val |= A10_MMC_DMA_RESET ; + A10_MMC_WRITE_4(sc, A10_MMC_GCTRL,val) ; + A10_MMC_WRITE_4(sc, A10_MMC_DMAC,A10_MMC_IDMAC_SOFT_RST) ; + A10_MMC_WRITE_4(sc, A10_MMC_DMAC,A10_MMC_IDMAC_IDMA_ON | A10_MMC_IDMAC_FIX_BURST) ; + val = A10_MMC_READ_4(sc,A10_MMC_IDIE) ; + val &= ~(A10_MMC_IDMAC_RECEIVE_INT | A10_MMC_IDMAC_TRANSMIT_INT) ; + + if(read == 1) { + val |= A10_MMC_IDMAC_RECEIVE_INT ; + } + else { + val |= A10_MMC_IDMAC_TRANSMIT_INT ; + } + + A10_MMC_WRITE_4(sc, A10_MMC_IDIE,val) ; + A10_MMC_WRITE_4(sc, A10_MMC_DLBA,desc_paddr) ; + A10_MMC_WRITE_4(sc, A10_MMC_FTRGL,A10_MMC_DMA_FTRGLEVEL_A20) ; + + return (0) ; +} + + +static void +a10_dma_cb(void* arg, bus_dma_segment_t* segs, int nsegs, int error) +{ + if(error) { + printf("a10_mmc: Error in a10_dma_callback function, code = %d\n",error) ; + return ; + } + + /* This is because, we can't get the number of segments alloted from bus_dmamap_t */ + *(int*)arg = nsegs ; +} + +static int a10_mmc_detach(device_t dev) { return (EBUSY); } - static int +static int a10_mmc_reset(struct a10_mmc_softc *sc) { int timeout; A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); timeout = 1000; while (--timeout > 0) { if ((A10_MMC_READ_4(sc, A10_MMC_GCTRL) & A10_MMC_RESET) == 0) @@ -259,24 +372,23 @@ A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); /* Unmask interrupts. */ A10_MMC_WRITE_4(sc, A10_MMC_IMASK, - A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | - A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); + A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | + A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE | + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); /* Enable interrupts and AHB access. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | - A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | + A10_MMC_INT_ENABLE | A10_MMC_ACCESS_BY_AHB); return (0); } - static void +static void a10_mmc_req_done(struct a10_mmc_softc *sc) { struct mmc_command *cmd; struct mmc_request *req; - device_printf(sc->a10_dev,"a10_mmc_req_done called\n") ; cmd = sc->a10_req->cmd; if (cmd->error != MMC_ERR_NONE) { /* Reset the controller. */ @@ -285,7 +397,7 @@ } /* Reset the FIFO. */ A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); + A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); req = sc->a10_req; callout_stop(&sc->a10_timeoutc); @@ -296,14 +408,13 @@ req->done(req); } - static void +static void a10_mmc_req_ok(struct a10_mmc_softc *sc) { int timeout; struct mmc_command *cmd; uint32_t status; - device_printf(sc->a10_dev, "a10_mmc_req_ok called\n") ; timeout = 1000; while (--timeout > 0) { status = A10_MMC_READ_4(sc, A10_MMC_STAS); @@ -332,29 +443,27 @@ a10_mmc_req_done(sc); } - static void +static void a10_mmc_timeout(void *arg) { struct a10_mmc_softc *sc; sc = (struct a10_mmc_softc *)arg; - device_printf(sc->a10_dev, "a10_mmc_timeout called\n") ; if (sc->a10_req != NULL) { device_printf(sc->a10_dev, "controller timeout\n"); sc->a10_req->cmd->error = MMC_ERR_TIMEOUT; a10_mmc_req_done(sc); } else device_printf(sc->a10_dev, - "Spurious timeout - no active request\n"); + "Spurious timeout - no active request\n"); } - static int +static int a10_mmc_pio_transfer(struct a10_mmc_softc *sc, struct mmc_data *data) { int i, write; uint32_t bit, *buf; - device_printf(sc->a10_dev, "a10_mmc_pio_transfer called\n") ; buf = (uint32_t *)data->data; write = (data->flags & MMC_DATA_WRITE) ? 1 : 0; bit = write ? A10_MMC_FIFO_FULL : A10_MMC_FIFO_EMPTY; @@ -371,7 +480,7 @@ return (0); } - static void +static void a10_mmc_intr(void *arg) { struct a10_mmc_softc *sc; @@ -379,7 +488,6 @@ uint32_t imask, rint; sc = (struct a10_mmc_softc *)arg; - device_printf(sc->a10_dev, "a10_mmc_intr called\n") ; A10_MMC_LOCK(sc); rint = A10_MMC_READ_4(sc, A10_MMC_RINTR); imask = A10_MMC_READ_4(sc, A10_MMC_IMASK); @@ -392,8 +500,8 @@ #endif if (sc->a10_req == NULL) { device_printf(sc->a10_dev, - "Spurious interrupt - no active request, rint: 0x%08X\n", - rint); + "Spurious interrupt - no active request, rint: 0x%08X\n", + rint); A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); A10_MMC_UNLOCK(sc); return; @@ -413,19 +521,20 @@ sc->a10_intr |= rint; data = sc->a10_req->cmd->data; if (data != NULL && (rint & (A10_MMC_DATA_OVER | - A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) { - if(sc->a10_use_dma == 0) + A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ)) != 0) { + if(sc->a10_use_dma == 0) a10_mmc_pio_transfer(sc, data); - else - a10_mmc_init_dma(sc, data, 1) ; - if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) - a10_mmc_req_ok(sc); + else { + a10_mmc_prepare_dma(sc) ; + } + if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) + a10_mmc_req_ok(sc); - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); - A10_MMC_UNLOCK(sc); - } + A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); + A10_MMC_UNLOCK(sc); } - static int + +static int a10_mmc_request(device_t bus, device_t child, struct mmc_request *req) { int blksz; @@ -434,7 +543,6 @@ uint32_t cmdreg; sc = device_get_softc(bus); - device_printf(sc->a10_dev, "a10_mmc_request called\n") ; A10_MMC_LOCK(sc); if (sc->a10_req) { A10_MMC_UNLOCK(sc); @@ -473,120 +581,120 @@ A10_MMC_WRITE_4(sc, A10_MMC_CARG, cmd->arg); A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg | cmd->opcode); callout_reset(&sc->a10_timeoutc, sc->a10_timeout * hz, - a10_mmc_timeout, sc); + a10_mmc_timeout, sc); A10_MMC_UNLOCK(sc); return (0); } - static int +static int a10_mmc_read_ivar(device_t bus, device_t child, int which, - uintptr_t *result) + uintptr_t *result) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); switch (which) { - default: - return (EINVAL); - case MMCBR_IVAR_BUS_MODE: - *(int *)result = sc->a10_host.ios.bus_mode; - break; - case MMCBR_IVAR_BUS_WIDTH: - *(int *)result = sc->a10_host.ios.bus_width; - break; - case MMCBR_IVAR_CHIP_SELECT: - *(int *)result = sc->a10_host.ios.chip_select; - break; - case MMCBR_IVAR_CLOCK: - *(int *)result = sc->a10_host.ios.clock; - break; - case MMCBR_IVAR_F_MIN: - *(int *)result = sc->a10_host.f_min; - break; - case MMCBR_IVAR_F_MAX: - *(int *)result = sc->a10_host.f_max; - break; - case MMCBR_IVAR_HOST_OCR: - *(int *)result = sc->a10_host.host_ocr; - break; - case MMCBR_IVAR_MODE: - *(int *)result = sc->a10_host.mode; - break; - case MMCBR_IVAR_OCR: - *(int *)result = sc->a10_host.ocr; - break; - case MMCBR_IVAR_POWER_MODE: - *(int *)result = sc->a10_host.ios.power_mode; - break; - case MMCBR_IVAR_VDD: - *(int *)result = sc->a10_host.ios.vdd; - break; - case MMCBR_IVAR_CAPS: - *(int *)result = sc->a10_host.caps; - break; - case MMCBR_IVAR_MAX_DATA: - *(int *)result = 65535; - break; + default: + return (EINVAL); + case MMCBR_IVAR_BUS_MODE: + *(int *)result = sc->a10_host.ios.bus_mode; + break; + case MMCBR_IVAR_BUS_WIDTH: + *(int *)result = sc->a10_host.ios.bus_width; + break; + case MMCBR_IVAR_CHIP_SELECT: + *(int *)result = sc->a10_host.ios.chip_select; + break; + case MMCBR_IVAR_CLOCK: + *(int *)result = sc->a10_host.ios.clock; + break; + case MMCBR_IVAR_F_MIN: + *(int *)result = sc->a10_host.f_min; + break; + case MMCBR_IVAR_F_MAX: + *(int *)result = sc->a10_host.f_max; + break; + case MMCBR_IVAR_HOST_OCR: + *(int *)result = sc->a10_host.host_ocr; + break; + case MMCBR_IVAR_MODE: + *(int *)result = sc->a10_host.mode; + break; + case MMCBR_IVAR_OCR: + *(int *)result = sc->a10_host.ocr; + break; + case MMCBR_IVAR_POWER_MODE: + *(int *)result = sc->a10_host.ios.power_mode; + break; + case MMCBR_IVAR_VDD: + *(int *)result = sc->a10_host.ios.vdd; + break; + case MMCBR_IVAR_CAPS: + *(int *)result = sc->a10_host.caps; + break; + case MMCBR_IVAR_MAX_DATA: + *(int *)result = 65535; + break; } return (0); } - static int +static int a10_mmc_write_ivar(device_t bus, device_t child, int which, - uintptr_t value) + uintptr_t value) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); switch (which) { - default: - return (EINVAL); - case MMCBR_IVAR_BUS_MODE: - sc->a10_host.ios.bus_mode = value; - break; - case MMCBR_IVAR_BUS_WIDTH: - sc->a10_host.ios.bus_width = value; - break; - case MMCBR_IVAR_CHIP_SELECT: - sc->a10_host.ios.chip_select = value; - break; - case MMCBR_IVAR_CLOCK: - sc->a10_host.ios.clock = value; - break; - case MMCBR_IVAR_MODE: - sc->a10_host.mode = value; - break; - case MMCBR_IVAR_OCR: - sc->a10_host.ocr = value; - break; - case MMCBR_IVAR_POWER_MODE: - sc->a10_host.ios.power_mode = value; - break; - case MMCBR_IVAR_VDD: - sc->a10_host.ios.vdd = value; - break; - /* These are read-only */ - case MMCBR_IVAR_CAPS: - case MMCBR_IVAR_HOST_OCR: - case MMCBR_IVAR_F_MIN: - case MMCBR_IVAR_F_MAX: - case MMCBR_IVAR_MAX_DATA: - return (EINVAL); + default: + return (EINVAL); + case MMCBR_IVAR_BUS_MODE: + sc->a10_host.ios.bus_mode = value; + break; + case MMCBR_IVAR_BUS_WIDTH: + sc->a10_host.ios.bus_width = value; + break; + case MMCBR_IVAR_CHIP_SELECT: + sc->a10_host.ios.chip_select = value; + break; + case MMCBR_IVAR_CLOCK: + sc->a10_host.ios.clock = value; + break; + case MMCBR_IVAR_MODE: + sc->a10_host.mode = value; + break; + case MMCBR_IVAR_OCR: + sc->a10_host.ocr = value; + break; + case MMCBR_IVAR_POWER_MODE: + sc->a10_host.ios.power_mode = value; + break; + case MMCBR_IVAR_VDD: + sc->a10_host.ios.vdd = value; + break; + /* These are read-only */ + case MMCBR_IVAR_CAPS: + case MMCBR_IVAR_HOST_OCR: + case MMCBR_IVAR_F_MIN: + case MMCBR_IVAR_F_MAX: + case MMCBR_IVAR_MAX_DATA: + return (EINVAL); } return (0); } - static int +static int a10_mmc_update_clock(struct a10_mmc_softc *sc) { uint32_t cmdreg; int retry; cmdreg = A10_MMC_START | A10_MMC_UPCLK_ONLY | - A10_MMC_WAIT_PREOVER; + A10_MMC_WAIT_PREOVER; A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg); retry = 0xfffff; while (--retry > 0) { @@ -602,39 +710,7 @@ return (ETIMEDOUT); } -/* This function will map the buffer into a device visible address space and will be called before the actual transfer of data takes place. -*/ - -/* Currently valid for only reading data */ -static int -a10_mmc_init_dma(struct a10_mmc_softc* sc, struct mmc_data* data, int read) -{ - bus_dmamem_alloc(sc->a10_mmc_dmat, &sc->a10_dma_buff,BUS_DMA_WAITOK|BUS_DMA_ZERO|BUS_DMA_COHERENT, &sc->a10_mmc_dmamap) ; - - uint32_t err = bus_dmamap_load(sc->a10_mmc_dmat, sc->a10_mmc_dmamap, sc->a10_dma_buff, DMA_BUFF_SIZE, - a10_mmc_dma_callback,&sc->a10_dma_buff_addr,BUS_DMA_NOWAIT) ; - - if(err) - { - device_printf(sc->a10_dev, "Error while loading dma map! code = %d\n", err) ; - sc->a10_use_dma = 0 ; - } - - device_printf(sc->a10_dev, "dma_map loaded succesfully!\n") ; - return (0) ; -} - -static void -a10_mmc_dma_callback(void* arg, bus_dma_segment_t* segs, int nsegs, int error) -{ - if(error) { - printf("a10_mmc : Error in the callback function code = %d\n", error) ; - return ; - } - printf("a10_mmc: The number of segments allocated is %d\n",nsegs) ; - *(bus_addr_t*)arg = segs[0].ds_addr ; /* Device visible address space */ -} - static int +static int a10_mmc_update_ios(device_t bus, device_t child) { int error; @@ -643,7 +719,6 @@ uint32_t clkcr; sc = device_get_softc(bus); - device_printf(sc->a10_dev, "a10_mmc_update_ios called\n") ; clkcr = A10_MMC_READ_4(sc, A10_MMC_CLKCR); if (clkcr & A10_MMC_CARD_CLK_ON) { /* Disable clock. */ @@ -678,35 +753,34 @@ /* Set the bus width. */ switch (ios->bus_width) { - case bus_width_1: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH1); - break; - case bus_width_4: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH4); - break; - case bus_width_8: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH8); - break; + case bus_width_1: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH1); + break; + case bus_width_4: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH4); + break; + case bus_width_8: + A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH8); + break; } return (0); } - static int +static int a10_mmc_get_ro(device_t bus, device_t child) { return (0); } - static int +static int a10_mmc_acquire_host(device_t bus, device_t child) { struct a10_mmc_softc *sc; int error; sc = device_get_softc(bus); - device_printf(sc->a10_dev, "a10_mmc_acquire_host called\n") ; A10_MMC_LOCK(sc); while (sc->a10_bus_busy) { error = msleep(sc, &sc->a10_mtx, PCATCH, "mmchw", 0); @@ -721,13 +795,12 @@ return (0); } - static int +static int a10_mmc_release_host(device_t bus, device_t child) { struct a10_mmc_softc *sc; sc = device_get_softc(bus); - device_printf(sc->a10_dev, "a10_mmc_release_host called\n") ; A10_MMC_LOCK(sc); sc->a10_bus_busy--; wakeup(sc); Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h ============================================================================== --- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h Sat Jun 6 01:18:28 2015 (r286706) +++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_mmc.h Sat Jun 6 03:47:59 2015 (r286707) @@ -29,8 +29,6 @@ #ifndef _A10_MMC_H_ #define _A10_MMC_H_ -#define A10_MMC_BASE 0x01c0f000 /* Base module address */ - #define A10_MMC_GCTRL 0x00 /* Global Control Register */ #define A10_MMC_CLKCR 0x04 /* Clock Control Register */ #define A10_MMC_TIMEOUT 0x08 /* Timeout Register */ @@ -60,8 +58,6 @@ #define A10_MMC_CBDA 0x94 #define A10_MMC_FIFO 0x100 /* FIFO Access Address */ -#define A10_MMC_BUFF_ADDR 0xFFF /* Some random access */ - /* A10_MMC_GCTRL */ #define A10_MMC_SOFT_RESET (1U << 0) #define A10_MMC_FIFO_RESET (1U << 1) @@ -74,7 +70,6 @@ #define A10_MMC_ACCESS_BY_AHB (1U << 31) #define A10_MMC_RESET \ (A10_MMC_SOFT_RESET | A10_MMC_FIFO_RESET | A10_MMC_DMA_RESET) -#define A10_MMC_DMA_FTRGLEVEL_A20 0x20070008 /* A10_MMC_CLKCR */ #define A10_MMC_CARD_CLK_ON (1U << 16) @@ -181,11 +176,18 @@ #define A10_MMC_IDMAC_WR (7U << 13) #define A10_MMC_IDMAC_DESC_CLOSE (8U << 13) +/* Used to make the descriptor table for suppoting DMA Access */ struct a10_mmc_dma_desc { - uint32_t dma_config ; - uint32_t size ; - uint32_t addr ; - uint32_t next ; + uint32_t config ; +#define A10_MMC_DMA_CONFIG_DIC (1U << 1) +#define A10_MMC_DMA_CONFIG_LD (1U << 2) +#define A10_MMC_DMA_CONFIG_FD (1U << 3) +#define A10_MMC_DMA_CONFIG_CH (1U << 4) +#define A10_MMC_DMA_CONFIG_ER (1U << 5) +#define A10_MMC_DMA_CONFIG_CES (1U << 30) +#define A10_MMC_DMA_CONFIG_OWN (1U << 31) + uint32_t buff_size ; + uint32_t buff_addr ; + uint32_t next; } ; - #endif /* _A10_MMC_H_ */ From owner-svn-soc-all@FreeBSD.ORG Sat Jun 6 18:08:33 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CF7EC5D8 for ; Sat, 6 Jun 2015 18:08:33 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B0CBC1C34 for ; Sat, 6 Jun 2015 18:08:33 +0000 (UTC) (envelope-from iateaca@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t56I8XM3045382 for ; Sat, 6 Jun 2015 18:08:33 GMT (envelope-from iateaca@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t56I8XEn044757 for svn-soc-all@FreeBSD.org; Sat, 6 Jun 2015 18:08:33 GMT (envelope-from iateaca@FreeBSD.org) Date: Sat, 6 Jun 2015 18:08:33 GMT Message-Id: <201506061808.t56I8XEn044757@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to iateaca@FreeBSD.org using -f From: iateaca@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286746 - soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jun 2015 18:08:34 -0000 Author: iateaca Date: Sat Jun 6 18:08:32 2015 New Revision: 286746 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286746 Log: - improve the Remote DMA protocol with a better error checking and assert ED_ISR_RDC flag in ISR register when Write is complete - emulate ISR register Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Modified: soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c ============================================================================== --- soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Sat Jun 6 17:25:45 2015 (r286745) +++ soc2015/iateaca/bhyve-ne2000-head/usr.sbin/bhyve/pci_ne2000.c Sat Jun 6 18:08:32 2015 (r286746) @@ -57,12 +57,26 @@ /* State Variables */ uint8_t page; + uint8_t remote_read; + uint8_t remote_write; /* NIC memory is 16k */ uint8_t ram[NE2000_MEM_SIZE]; }; /* + * NE2000 debug functions + */ +void vm_inject_fault(void *vm, int vcpuid, int vector, int errcode_valid, + int errcode); + +static void +pci_ne2000_inject_ud(struct pci_ne2000_softc *sc) +{ + vm_inject_fault(sc->asc_pi->pi_vmctx, 0, 6, 0, 0); +} + +/* * NE2000 module function declarations */ static void @@ -88,6 +102,9 @@ static int ne2000_emul_reg_page0(struct pci_ne2000_softc *sc, uint8_t offset, uint8_t value); +static int +ne2000_emul_reg_page1(struct pci_ne2000_softc *sc, uint8_t offset, + uint8_t value); static int ne2000_reset_board(void); static int ne2000_software_reset(struct pci_ne2000_softc *sc); @@ -233,8 +250,10 @@ if (sc->page == NE2000_P0) { err = ne2000_emul_reg_page0(sc, offset, value); assert(err == 0); - } - else if (sc->page == NE2000_P3) + } else if (sc->page == NE2000_P1) { + err = ne2000_emul_reg_page1(sc, offset, value); + assert(err == 0); + } else if (sc->page == NE2000_P3) DPRINTF("The ED driver wrote a register from PAGE3"); else assert(0); @@ -246,7 +265,6 @@ ne2000_write_asic(struct pci_ne2000_softc *sc, uint8_t offset, uint16_t value) { uint8_t dcr = 0; - uint8_t cr = 0; uint8_t rbcr0 = 0; uint8_t rbcr1 = 0; uint8_t rsar0 = 0; @@ -266,12 +284,11 @@ dcr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_DCR); if ((dcr & ED_DCR_WTS) != ED_DCR_WTS) { DPRINTF("The NE2000 card is working only in Word mode"); + sc->remote_write = 0; break; } - cr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_CR); - assert((cr & (ED_CR_RD1 | ED_CR_STA)) == - (ED_CR_RD1 | ED_CR_STA)); + assert(sc->remote_write); rbcr0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0); rbcr1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1); @@ -290,6 +307,12 @@ rsar += 2; rbcr -= 2; + if (rbcr == 0) { + sc->remote_write = 0; + ne2000_set_field_by_offset(sc, NE2000_P0, ED_P0_ISR, + ED_ISR_RDC, ED_ISR_RDC); + } + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0, rsar); ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1, rsar >> 8); @@ -309,6 +332,13 @@ uint8_t value) { int err; + uint8_t rbcr0 = 0; + uint8_t rbcr1 = 0; + uint8_t rsar0 = 0; + uint8_t rsar1 = 0; + + uint16_t rbcr = 0; + uint16_t rsar = 0; switch (offset) { case ED_P0_CR: @@ -316,6 +346,36 @@ err = ne2000_software_reset(sc); assert(err == 0); } + if (value & ED_CR_RD2) + assert(!(sc->remote_read || sc->remote_write)); + if (value & (ED_CR_RD0 | ED_CR_RD1)) { + assert(value & ED_CR_STA); + + if (value & ED_CR_RD0) + sc->remote_read = 1; + else + sc->remote_write = 1; + + rbcr0 = ne2000_get_reg_by_offset(sc, NE2000_P0, + ED_P0_RBCR0); + rbcr1 = ne2000_get_reg_by_offset(sc, NE2000_P0, + ED_P0_RBCR1); + rbcr = rbcr0 | (rbcr1 << 8); + + rsar0 = ne2000_get_reg_by_offset(sc, NE2000_P0, + ED_P0_RSAR0); + rsar1 = ne2000_get_reg_by_offset(sc, NE2000_P0, + ED_P0_RSAR1); + rsar = rsar0 | (rsar1 << 8); + + DPRINTF("ED driver started a Remote DMA %s op from %d address of %d bytes", + sc->remote_read ? "read" : "write", rsar, rbcr); + } + if (value & ED_CR_TXP) { + } + break; + case ED_P0_ISR: + ne2000_set_field_by_offset(sc, NE2000_P0, ED_P0_ISR, value, 0); break; } @@ -323,14 +383,20 @@ } static int -ne2000_software_reset(struct pci_ne2000_softc *sc) +ne2000_emul_reg_page1(struct pci_ne2000_softc *sc, uint8_t offset, + uint8_t value) { - uint8_t mask = 0; - uint8_t value = 0; + if (offset == ED_P1_CR) + return ne2000_emul_reg_page0(sc, offset, value); + + return 0; +} - mask |= ED_ISR_RST; - value |= ED_ISR_RST; - ne2000_set_field_by_offset(sc, NE2000_P0, ED_P0_ISR, mask, value); +static int +ne2000_software_reset(struct pci_ne2000_softc *sc) +{ + ne2000_set_field_by_offset(sc, NE2000_P0, ED_P0_ISR, + ED_ISR_RST, ED_ISR_RST); return 0; } @@ -385,7 +451,6 @@ { int err; uint8_t dcr = 0; - uint8_t cr = 0; uint8_t rbcr0 = 0; uint8_t rbcr1 = 0; uint8_t rsar0 = 0; @@ -408,12 +473,11 @@ dcr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_DCR); if ((dcr & ED_DCR_WTS) != ED_DCR_WTS) { DPRINTF("The NE2000 card is working only in Word mode"); + sc->remote_read = 0; break; } - cr = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_CR); - assert((cr & (ED_CR_RD0 | ED_CR_STA)) == - (ED_CR_RD0 | ED_CR_STA)); + assert(sc->remote_read); rbcr0 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR0); rbcr1 = ne2000_get_reg_by_offset(sc, NE2000_P0, ED_P0_RBCR1); @@ -431,6 +495,9 @@ rsar += 2; rbcr -= 2; + if (rbcr == 0) + sc->remote_read = 0; + ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR0, rsar); ne2000_set_reg_by_offset(sc, NE2000_P0, ED_P0_RSAR1, rsar >> 8); From owner-svn-soc-all@FreeBSD.ORG Sat Jun 6 20:33:39 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 34CA478D for ; Sat, 6 Jun 2015 20:33:39 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 15AED1ED6 for ; Sat, 6 Jun 2015 20:33:39 +0000 (UTC) (envelope-from kczekirda@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t56KXcvM006723 for ; Sat, 6 Jun 2015 20:33:38 GMT (envelope-from kczekirda@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t56KXc1b006719 for svn-soc-all@FreeBSD.org; Sat, 6 Jun 2015 20:33:38 GMT (envelope-from kczekirda@FreeBSD.org) Date: Sat, 6 Jun 2015 20:33:38 GMT Message-Id: <201506062033.t56KXc1b006719@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kczekirda@FreeBSD.org using -f From: kczekirda@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286756 - soc2015/kczekirda/ipxe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jun 2015 20:33:39 -0000 Author: kczekirda Date: Sat Jun 6 20:33:38 2015 New Revision: 286756 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286756 Log: options init Modified: soc2015/kczekirda/ipxe/Makefile Modified: soc2015/kczekirda/ipxe/Makefile ============================================================================== --- soc2015/kczekirda/ipxe/Makefile Sat Jun 6 19:43:41 2015 (r286755) +++ soc2015/kczekirda/ipxe/Makefile Sat Jun 6 20:33:38 2015 (r286756) @@ -24,6 +24,158 @@ USE_GCC= any WRKSRC= ${WRKDIR}/${DISTNAME}/src +OPTIONS_DEFINE= NET_PROTO_IPV4 NET_PROTO_IPV6 NET_PROTO_FCOE \ + PXE_STACK PXE_MENU \ + DOWNLOAD_PROTO_TFTP DOWNLOAD_PROTO_HTTP \ + DOWNLOAD_PROTO_HTTPS DOWNLOAD_PROTO_FTP \ + DOWNLOAD_PROTO_SLAM DOWNLOAD_PROTO_NFS \ + SANBOOT_PROTO_ISCSI SANBOOT_PROTO_AOE SANBOOT_PROTO_IB_SRP \ + SANBOOT_PROTO_FCP \ + CRYPTO_80211_WEP CRYPTO_80211_WPA CRYPTO_80211_WPA2 \ + DNS_RESOLVER \ + IMAGE_NBI IMAGE_ELF IMAGE_MULTIBOOT IMAGE_PXE \ + IMAGE_SCRIPT IMAGE_BZIMAGE IMAGE_COMBOOT IMAGE_EFI \ + IMAGE_SDI IMAGE_PNM IMAGE_PNG \ + CMD_AUTOBOOT CMD_NVO CMD_CONFIG CMD_IFMGMT CMD_IWMGMT \ + CMD_FCMGMT CMD_ROUTE CMD_IMAGE CMD_DHCP CMD_SANBOOT \ + CMD_MENU CMD_LOGIN CMD_SYNC CMD_NSLOOKUP CMD_TIME \ + CMD_DIGEST CMD_LOTEST CMD_VLAN CMD_PXE CMD_REBOOT \ + CMD_POWEROFF CMD_IMAGE_TRUST CMD_PCI CMD_PARAM \ + CMD_NEIGHBOUR CMD_PING CMD_CONSOLE CMD_IPSTAT CMD_PROFSTAT \ + ERRMSG_80211 \ + CONF_PCI_SETTINGS CONF_CPUID_SETTINGS \ + CONF_MEMMAP_SETTINGS CONF_VMWARE_SETTINGS \ + CONF_VRAM_SETTINGS \ + USB_HCD_XHCI USB_HCD_EHCI USB_HCD_UHCI USB_KEYBOARD \ + CON_PCBIOS CON_SERIAL CON_DIRECT_VGA CON_PC_KBD \ + CON_SYSLOG CON_SYSLOGS CON_VMWARE CON_DEBUGCON CON_VESAFB \ + CON_INT13 + + +#OPTIONS_DEFAULT= VMXNET3 TIME_CMD IMGTRUST_CMD VLAN_CMD \ +# DOWNLOAD_PROTO_FTP IMAGE_COMBOOT + +#DEBUG_DESC= with DEBUG=$$DEBUG e.g =dhcp,tcp +#VIRTUALBOX_DESC= build VirtualBox PXE-ROM images +#VMXNET3_DESC= build vmxnet3 ROM + +# Network protocols: + +NET_PROTO_IPV4_DESC= IPv4 protocol +NET_PROTO_IPV6_DESC= IPv6 protocol +NET_PROTO_FCOE_DESC= Fibre Channel over Ethernet protocol + +# PXE support + +PXE_STACK_DESC= PXE stack in iPXE - you want this! +PXE_MENU_DESC= PXE menu booting + +# Download protocols + +DOWNLOAD_PROTO_TFTP_DESC= Trivial File Transfer Protocol +DOWNLOAD_PROTO_HTTP_DESC= Hypertext Transfer Protocol +DOWNLOAD_PROTO_HTTPS_DESC= Secure Hypertext Transfer Protocol +DOWNLOAD_PROTO_FTP_DESC= File Transfer Protocol +DOWNLOAD_PROTO_SLAM_DESC= Scalable Local Area Multicast +DOWNLOAD_PROTO_NFS_DESC= Network File System Protocol + +# SAN boot protocols + +SANBOOT_PROTO_ISCSI_DESC= iSCSI protocol +SANBOOT_PROTO_AOE_DESC= AoE protocol +SANBOOT_PROTO_IB_SRP_DESC= Infiniband SCSI RDMA protocol +SANBOOT_PROTO_FCP_DESC= Fibre Channel protocol + +# 802.11 cryptosystems and handshaking protocols + +CRYPTO_80211_WEP_DESC= WEP encryption (deprecated and insecure!) +CRYPTO_80211_WPA_DESC= WPA Personal, authenticating with passphrase +CRYPTO_80211_WPA2_DESC= Add support for stronger WPA cryptography + +# Name resolution modules + +DNS_RESOLVER_DESC= DNS Resolver + +# Image types + +IMAGE_NBI_DESC= NBI image support +IMAGE_ELF_DESC= ELF image support +IMAGE_MULTIBOOT_DESC= MultiBoot image support +IMAGE_PXE_DESC= PXE image support +IMAGE_SCRIPT_DESC= iPXE script image support +IMAGE_BZIMAGE_DESC= Linux bzImage image support +IMAGE_COMBOOT_DESC= SYSLINUX COMBOOT image support +IMAGE_EFI_DESC= EFI image support +IMAGE_SDI_DESC= SDI image support +IMAGE_PNM_DESC= PNM image support +IMAGE_PNG_DESC= PNG image support + +# Command-line commands to include + +CMD_AUTOBOOT_DESC= Automatic booting +CMD_NVO_DESC= Non-volatile option storage commands +CMD_CONFIG_DESC= Option configuration console +CMD_IFMGMT_DESC= Interface management commands +CMD_IWMGMT_DESC= Wireless interface management commands +CMD_FCMGMT_DESC= Fibre Channel management commands +CMD_ROUTE_DESC= Routing table management commands +CMD_IMAGE_DESC= Image management commands +CMD_DHCP_DESC= DHCP management commands +CMD_SANBOOT_DESC= SAN boot commands +CMD_MENU_DESC= Menu commands +CMD_LOGIN_DESC= Login command +CMD_SYNC_DESC= Sync command +CMD_NSLOOKUP_DESC= DNS resolving command +CMD_TIME_DESC= Time commands +CMD_DIGEST_DESC= Image crypto digest commands +CMD_LOTEST_DESC= Loopback testing commands +CMD_VLAN_DESC= VLAN commands +CMD_PXE_DESC= PXE commands +CMD_REBOOT_DESC= Reboot command +CMD_POWEROFF_DESC= Power off command +CMD_IMAGE_TRUST_DESC= Image trust management commands +CMD_PCI_DESC= PCI commands +CMD_PARAM_DESC= Form parameter commands +CMD_NEIGHBOUR_DESC= Neighbour management commands +CMD_PING_DESC= Ping command +CMD_CONSOLE_DESC= Console command +CMD_IPSTAT_DESC= IP statistics commands +CMD_PROFSTAT_DESC= Profiling commands + +# Error message tables to include + +ERRMSG_80211_DESC= All 802.11 error descriptions (~3.3kb) + +# Configuration settings + +CONF_PCI_SETTINGS_DESC= PCI device settings +CONF_CPUID_SETTINGS_DESC= CPUID settings +CONF_MEMMAP_SETTINGS_DESC= Memory map settings +CONF_VMWARE_SETTINGS_DESC= VMware GuestInfo settings +CONF_VRAM_SETTINGS_DESC= Video RAM dump settings + +# USB configuration + +# USB host controllers (all enabled by default) +USB_HCD_XHCI_DESC= xHCI USB host controller +USB_HCD_EHCI_DESC= EHCI USB host controller +USB_HCD_UHCI_DESC= UHCI USB host controller +# USB peripherals +USB_KEYBOARD_DESC= USB keyboards + +#Console configuration + +CON_PCBIOS_DESC= Default BIOS console +CON_SERIAL_DESC= Serial port +CON_DIRECT_VGA_DESC= Direct access to VGA card +CON_PC_KBD_DESC= Direct access to PC keyboard +CON_SYSLOG_DESC= Syslog console +CON_SYSLOGS_DESC= Encrypted syslog console +CON_VMWARE_DESC= VMware logfile console +CON_DEBUGCON_DESC= Debug port console +CON_VESAFB_DESC= VESA framebuffer console +CON_INT13_DESC= INT13 disk log console + .include .if ${ARCH} == "amd64"