From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 14:01:26 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5708D1065672; Sun, 8 Jul 2012 14:01:26 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3EC6F8FC14; Sun, 8 Jul 2012 14:01:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68E1QM5055541; Sun, 8 Jul 2012 14:01:26 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68E1PEc055529; Sun, 8 Jul 2012 14:01:25 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207081401.q68E1PEc055529@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 14:01:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238245 - in user/attilio/vmc-playground/sys: cddl/compat/opensolaris/sys cddl/contrib/opensolaris/uts/common/fs/zfs fs/tmpfs kern vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 14:01:26 -0000 Author: attilio Date: Sun Jul 8 14:01:25 2012 New Revision: 238245 URL: http://svn.freebsd.org/changeset/base/238245 Log: - Split the cached and resident pages tree into 2 distinct ones. This makes the RED/BLACK support go away and simplifies a lot vmradix functions used here. This happens because with patricia trie support the trie will be little enough that keeping 2 diffetnt will be efficient too. - Reduce differences with head, in places like backing scan where the optimizazions used shuffled the code a little bit around. Tested by: flo, Andrea Barberio Modified: user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/vnode.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/attilio/vmc-playground/sys/fs/tmpfs/tmpfs_vnops.c user/attilio/vmc-playground/sys/kern/uipc_shm.c user/attilio/vmc-playground/sys/vm/vm_mmap.c user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vm_object.h user/attilio/vmc-playground/sys/vm/vm_page.c user/attilio/vmc-playground/sys/vm/vm_page.h user/attilio/vmc-playground/sys/vm/vm_radix.c user/attilio/vmc-playground/sys/vm/vm_radix.h user/attilio/vmc-playground/sys/vm/vm_reserv.c user/attilio/vmc-playground/sys/vm/vnode_pager.c Modified: user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/vnode.h ============================================================================== --- user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/vnode.h Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/cddl/compat/opensolaris/sys/vnode.h Sun Jul 8 14:01:25 2012 (r238245) @@ -75,7 +75,7 @@ vn_is_readonly(vnode_t *vp) #define vn_mountedvfs(vp) ((vp)->v_mountedhere) #define vn_has_cached_data(vp) \ ((vp)->v_object != NULL && \ - (vp)->v_object->cached_page_count > 0) + !vm_object_cache_is_empty((vp)->v_object)) #define vn_exists(vp) do { } while (0) #define vn_invalid(vp) do { } while (0) #define vn_renamepath(tdvp, svp, tnm, lentnm) do { } while (0) Modified: user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Sun Jul 8 14:01:25 2012 (r238245) @@ -330,32 +330,29 @@ page_lookup(vnode_t *vp, int64_t start, VM_OBJECT_LOCK_ASSERT(obj, MA_OWNED); for (;;) { - pp = vm_radix_lookup(&obj->rtree, OFF_TO_IDX(start), - VM_RADIX_ANY); - if (pp != NULL) { - if (vm_page_is_valid(pp, (vm_offset_t)off, nbytes)) { - if ((pp->oflags & VPO_BUSY) != 0) { - /* - * Reference the page before unlocking - * and sleeping so that the page - * daemon is less likely to reclaim it. - */ - vm_page_reference(pp); - vm_page_sleep(pp, "zfsmwb"); - continue; - } - vm_page_busy(pp); - vm_page_undirty(pp); - } else { - if (obj->cached_page_count != 0 && - (pp->flags & PG_CACHED) != 0) { - mtx_lock(&vm_page_queue_free_mtx); - if (pp->object == obj) - vm_page_cache_free(pp); - mtx_unlock(&vm_page_queue_free_mtx); - } - pp = NULL; + if ((pp = vm_page_lookup(obj, OFF_TO_IDX(start))) != NULL && + vm_page_is_valid(pp, (vm_offset_t)off, nbytes)) { + if ((pp->oflags & VPO_BUSY) != 0) { + /* + * Reference the page before unlocking and + * sleeping so that the page daemon is less + * likely to reclaim it. + */ + vm_page_reference(pp); + vm_page_sleep(pp, "zfsmwb"); + continue; + } + vm_page_busy(pp); + vm_page_undirty(pp); + } else { + pp = vm_page_is_cached(obj, OFF_TO_IDX(start)); + if (pp != NULL) { + mtx_lock(&vm_page_queue_free_mtx); + if (pp->object == obj) + vm_page_cache_free(pp); + mtx_unlock(&vm_page_queue_free_mtx); } + pp = NULL; } break; } Modified: user/attilio/vmc-playground/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- user/attilio/vmc-playground/sys/fs/tmpfs/tmpfs_vnops.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/fs/tmpfs/tmpfs_vnops.c Sun Jul 8 14:01:25 2012 (r238245) @@ -514,7 +514,7 @@ tmpfs_mappedread(vm_object_t vobj, vm_ob goto nocache; VM_OBJECT_LOCK(vobj); - if (vobj->resident_page_count == 0 && vobj->cached_page_count == 0) { + if (vobj->resident_page_count == 0 && vm_object_cache_is_empty(vobj)) { VM_OBJECT_UNLOCK(vobj); goto nocache; } @@ -647,41 +647,38 @@ tmpfs_mappedwrite(vm_object_t vobj, vm_o } VM_OBJECT_LOCK(vobj); - if (vobj->resident_page_count == 0 && vobj->cached_page_count == 0) { + if (vobj->resident_page_count == 0 && vm_object_cache_is_empty(vobj)) { VM_OBJECT_UNLOCK(vobj); vpg = NULL; goto nocache; } lookupvpg: - vpg = vm_radix_lookup(&vobj->rtree, idx, VM_RADIX_ANY); - if (vpg != NULL) { - if (vm_page_is_valid(vpg, offset, tlen)) { - if ((vpg->oflags & VPO_BUSY) != 0) { - /* - * Reference the page before unlocking and - * sleeping so that the page daemon is less - * likely to reclaim it. - */ - vm_page_reference(vpg); - vm_page_sleep(vpg, "tmfsmw"); - goto lookupvpg; - } - vm_page_busy(vpg); - vm_page_undirty(vpg); - VM_OBJECT_UNLOCK(vobj); - error = uiomove_fromphys(&vpg, offset, tlen, uio); - } else { - if (vpg->flags & PG_CACHED) { - mtx_lock(&vm_page_queue_free_mtx); - if (vpg->object == vobj) - vm_page_cache_free(vpg); - mtx_unlock(&vm_page_queue_free_mtx); - } - VM_OBJECT_UNLOCK(vobj); - vpg = NULL; + if (((vpg = vm_radix_lookup(&vobj->rtree, idx)) != NULL) && + vm_page_is_valid(vpg, offset, tlen)) { + if ((vpg->oflags & VPO_BUSY) != 0) { + /* + * Reference the page before unlocking and sleeping so + * that the page daemon is less likely to reclaim it. + */ + vm_page_reference(vpg); + vm_page_sleep(vpg, "tmfsmw"); + goto lookupvpg; } - } else + vm_page_busy(vpg); + vm_page_undirty(vpg); VM_OBJECT_UNLOCK(vobj); + error = uiomove_fromphys(&vpg, offset, tlen, uio); + } else { + vpg = vm_page_is_cached(vobj, idx); + if (vpg != NULL) { + mtx_lock(&vm_page_queue_free_mtx); + if (vpg->object == vobj) + vm_page_cache_free(vpg); + mtx_unlock(&vm_page_queue_free_mtx); + } + VM_OBJECT_UNLOCK(vobj); + vpg = NULL; + } nocache: VM_OBJECT_LOCK(tobj); tpg = vm_page_grab(tobj, idx, VM_ALLOC_WIRED | Modified: user/attilio/vmc-playground/sys/kern/uipc_shm.c ============================================================================== --- user/attilio/vmc-playground/sys/kern/uipc_shm.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/kern/uipc_shm.c Sun Jul 8 14:01:25 2012 (r238245) @@ -278,8 +278,7 @@ shm_dotruncate(struct shmfd *shmfd, off_ if (base != 0) { idx = OFF_TO_IDX(length); retry: - m = vm_radix_lookup(&object->rtree, idx, - VM_RADIX_BLACK); + m = vm_radix_lookup(&object->rtree, idx); if (m != NULL) { if ((m->oflags & VPO_BUSY) != 0 || m->busy != 0) { Modified: user/attilio/vmc-playground/sys/vm/vm_mmap.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_mmap.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_mmap.c Sun Jul 8 14:01:25 2012 (r238245) @@ -81,7 +81,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #ifdef HWPMC_HOOKS @@ -888,15 +887,10 @@ RestartScan: object->type == OBJT_VNODE) { pindex = OFF_TO_IDX(current->offset + (addr - current->start)); - m = vm_radix_lookup(&object->rtree, - pindex, VM_RADIX_ANY); - - /* Lock just for consistency. */ - mtx_lock(&vm_page_queue_free_mtx); - if (m != NULL && - (m->flags & PG_CACHED) != 0) + m = vm_page_lookup(object, pindex); + if (m == NULL && + vm_page_is_cached(object, pindex)) mincoreinfo = MINCORE_INCORE; - mtx_unlock(&vm_page_queue_free_mtx); if (m != NULL && m->valid == 0) m = NULL; if (m != NULL) Modified: user/attilio/vmc-playground/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_object.c Sun Jul 8 14:01:25 2012 (r238245) @@ -164,9 +164,6 @@ vm_object_zdtor(void *mem, int size, voi vm_object_t object; object = (vm_object_t)mem; - KASSERT(object->resident_page_count == 0, - ("object %p resident_page_count = %d", - object, object->resident_page_count)); KASSERT(TAILQ_EMPTY(&object->memq), ("object %p has resident pages", object)); @@ -175,12 +172,15 @@ vm_object_zdtor(void *mem, int size, voi ("object %p has reservations", object)); #endif - KASSERT(object->cached_page_count == 0, + KASSERT(vm_object_cache_is_empty(object), ("object %p has cached pages", object)); KASSERT(object->paging_in_progress == 0, ("object %p paging_in_progress = %d", object, object->paging_in_progress)); + KASSERT(object->resident_page_count == 0, + ("object %p resident_page_count = %d", + object, object->resident_page_count)); KASSERT(object->shadow_count == 0, ("object %p shadow_count = %d", object, object->shadow_count)); @@ -211,7 +211,6 @@ _vm_object_allocate(objtype_t type, vm_p LIST_INIT(&object->shadow_head); object->rtree.rt_root = 0; - object->cache.rt_root = 0; object->type = type; object->size = size; object->generation = 1; @@ -229,6 +228,7 @@ _vm_object_allocate(objtype_t type, vm_p #if VM_NRESERVLEVEL > 0 LIST_INIT(&object->rvq); #endif + object->cache.rt_root = 0; mtx_lock(&vm_object_list_mtx); TAILQ_INSERT_TAIL(&vm_object_list, object, object_list); @@ -680,6 +680,8 @@ vm_object_terminate(vm_object_t object) vm_page_t pa[VM_RADIX_STACK]; vm_page_t p; vm_pindex_t start; + struct vnode *vp; + u_int exhausted; int n, i; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); @@ -726,32 +728,15 @@ vm_object_terminate(vm_object_t object) * the object, the page and object are reset to any empty state. */ start = 0; - while ((n = vm_radix_lookupn(&object->rtree, start, 0, VM_RADIX_ANY, - (void **)pa, VM_RADIX_STACK, &start)) != 0) { + exhausted = 0; + while (exhausted == 0 && (n = vm_radix_lookupn(&object->rtree, start, + 0, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; - /* - * Another thread may allocate this cached page from - * the queue before we acquire the page queue free - * mtx. - */ - if (p->flags & PG_CACHED) { - mtx_lock(&vm_page_queue_free_mtx); - if (p->object == object) { - p->object = NULL; - p->valid = 0; - /* Clear PG_CACHED and set PG_FREE. */ - p->flags ^= PG_CACHED | PG_FREE; - cnt.v_cache_count--; - cnt.v_free_count++; - } - mtx_unlock(&vm_page_queue_free_mtx); - continue; - } else if (p->object != object) - continue; KASSERT(!p->busy && (p->oflags & VPO_BUSY) == 0, ("vm_object_terminate: freeing busy page %p", p)); vm_page_lock(p); + /* * Optimize the page's removal from the object by * resetting its "object" field. Specifically, if @@ -774,7 +759,40 @@ vm_object_terminate(vm_object_t object) break; } vm_radix_reclaim_allnodes(&object->rtree); - vm_radix_reclaim_allnodes(&object->cache); + vp = NULL; + if (!vm_object_cache_is_empty(object)) { + mtx_lock(&vm_page_queue_free_mtx); + start = 0; + exhausted = 0; + while (exhausted == 0 && (n = vm_radix_lookupn(&object->cache, + start, 0, (void **)pa, VM_RADIX_STACK, &start, + &exhausted)) != 0) { + for (i = 0; i < n; i++) { + p = pa[i]; + MPASS(p->object == object); + p->object = NULL; + p->valid = 0; + + /* Clear PG_CACHED and set PG_FREE. */ + p->flags ^= PG_CACHED | PG_FREE; + cnt.v_cache_count--; + cnt.v_free_count++; + + /* + * At least one cached page was removed and + * in the end all the cached pages will be + * reclaimed. If the object is a vnode, + * drop a reference to it. + */ + if (object->type == OBJT_VNODE) + vp = object->handle; + } + if (n < VM_RADIX_STACK) + break; + } + vm_radix_reclaim_allnodes(&object->cache); + mtx_unlock(&vm_page_queue_free_mtx); + } /* * If the object contained any pages, then reset it to an empty state. * None of the object's fields, including "resident_page_count", were @@ -786,11 +804,8 @@ vm_object_terminate(vm_object_t object) if (object->type == OBJT_VNODE) vdrop(object->handle); } - if (object->cached_page_count != 0) { - object->cached_page_count = 0; - if (object->type == OBJT_VNODE) - vdrop(object->handle); - } + if (vp) + vdrop(vp); #if VM_NRESERVLEVEL > 0 if (__predict_false(!LIST_EMPTY(&object->rvq))) @@ -1317,6 +1332,7 @@ vm_object_split(vm_map_entry_t entry) vm_object_t orig_object, new_object, source; vm_pindex_t idx, offidxstart, start; vm_size_t size; + u_int exhausted; int i, n; orig_object = entry->object.vm_object; @@ -1372,21 +1388,14 @@ vm_object_split(vm_map_entry_t entry) } start = offidxstart; retry: - while ((n = vm_radix_lookupn(&orig_object->rtree, start, - offidxstart + size, VM_RADIX_ANY, (void **)ma, VM_RADIX_STACK, - &start)) != 0) { + exhausted = 0; + while (exhausted == 0 && (n = vm_radix_lookupn(&orig_object->rtree, + start, offidxstart + size, (void **)ma, VM_RADIX_STACK, &start, + &exhausted)) != 0) { for (i = 0; i < n; i++) { m = ma[i]; idx = m->pindex - offidxstart; - if (m->flags & PG_CACHED) { - mtx_lock(&vm_page_queue_free_mtx); - if (m->object == orig_object) - vm_page_cache_rename(m, new_object, - idx); - mtx_unlock(&vm_page_queue_free_mtx); - continue; - } else if (m->object != orig_object) - continue; + /* * We must wait for pending I/O to complete before * we can rename the page. @@ -1438,6 +1447,29 @@ retry: * and new_object's locks are released and reacquired. */ swap_pager_copy(orig_object, new_object, offidxstart, 0); + + /* + * Transfer any cached pages from orig_object to new_object. + */ + if (!vm_object_cache_is_empty(orig_object)) { + start = offidxstart; + exhausted = 0; + mtx_lock(&vm_page_queue_free_mtx); + while (exhausted == 0 && + (n = vm_radix_lookupn(&orig_object->cache, start, + offidxstart + size, (void **)ma, VM_RADIX_STACK, + &start, &exhausted)) != 0) { + for (i = 0; i < n; i++) { + m = ma[i]; + idx = m->pindex - offidxstart; + vm_page_cache_rename(m, new_object, + idx); + } + if (n < VM_RADIX_STACK) + break; + } + mtx_unlock(&vm_page_queue_free_mtx); + } } VM_OBJECT_UNLOCK(orig_object); TAILQ_FOREACH(m, &new_object->memq, listq) @@ -1461,7 +1493,8 @@ vm_object_backing_scan(vm_object_t objec vm_object_t backing_object; vm_pindex_t backing_offset_index, new_pindex; vm_pindex_t start; - int color, i, n; + u_int exhausted; + int i, n; int r = 1; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); @@ -1490,37 +1523,25 @@ vm_object_backing_scan(vm_object_t objec if (op & OBSC_COLLAPSE_WAIT) { vm_object_set_flag(backing_object, OBJ_DEAD); } - color = VM_RADIX_BLACK; - if (op & OBSC_COLLAPSE_WAIT) - color |= VM_RADIX_RED; /* * Our scan */ restart: start = 0; i = n = VM_RADIX_STACK; + exhausted = 0; for (;;) { if (i == n) { if (n < VM_RADIX_STACK) break; - if ((n = vm_radix_lookupn(&backing_object->rtree, - start, 0, color, (void **)pa, VM_RADIX_STACK, - &start)) == 0) + if (exhausted != 0 || + (n = vm_radix_lookupn(&backing_object->rtree, + start, 0, (void **)pa, VM_RADIX_STACK, + &start, &exhausted)) == 0) break; i = 0; } p = pa[i++]; - /* - * Free cached pages. XXX Why? Emulating old behavior here. - */ - if (p->flags & PG_CACHED) { - mtx_lock(&vm_page_queue_free_mtx); - if (p->object == backing_object) - vm_page_cache_free(p); - mtx_unlock(&vm_page_queue_free_mtx); - continue; - } else if (p->object != backing_object) - continue; new_pindex = p->pindex - backing_offset_index; if (op & OBSC_TEST_ALL_SHADOWED) { @@ -1716,6 +1737,11 @@ vm_object_qcollapse(vm_object_t object) void vm_object_collapse(vm_object_t object) { + vm_page_t pa[VM_RADIX_STACK]; + vm_pindex_t start; + u_int exhausted; + int i, n; + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); while (TRUE) { @@ -1792,7 +1818,30 @@ vm_object_collapse(vm_object_t object) backing_object, object, OFF_TO_IDX(object->backing_object_offset), TRUE); + + if (!vm_object_cache_is_empty(backing_object)) { + + /* + * Free any cached pages from + * backing_object. + */ + start = 0; + exhausted = 0; + mtx_lock(&vm_page_queue_free_mtx); + while (exhausted == 0 && (n = + vm_radix_lookupn(&backing_object->cache, + start, 0, (void **)pa, + VM_RADIX_STACK, &start, + &exhausted)) != 0) { + for (i = 0; i < n; i++) + vm_page_cache_free(pa[i]); + if (n < VM_RADIX_STACK) + break; + } + mtx_unlock(&vm_page_queue_free_mtx); + } } + /* * Object now shadows whatever backing_object did. * Note that the reference to @@ -1914,7 +1963,9 @@ vm_object_page_remove(vm_object_t object { struct vnode *vp; vm_page_t pa[VM_RADIX_STACK]; + vm_pindex_t cstart; vm_page_t p; + u_int exhausted; int i, n; int wirings; @@ -1922,32 +1973,19 @@ vm_object_page_remove(vm_object_t object KASSERT((object->type != OBJT_DEVICE && object->type != OBJT_PHYS) || (options & (OBJPR_CLEANONLY | OBJPR_NOTMAPPED)) == OBJPR_NOTMAPPED, ("vm_object_page_remove: illegal options for object %p", object)); - if (object->resident_page_count == 0 && object->cached_page_count == 0) + if (object->resident_page_count == 0 && + vm_object_cache_is_empty(object)) return; vp = NULL; vm_object_pip_add(object, 1); + cstart = start; restart: - while ((n = vm_radix_lookupn(&object->rtree, start, end, VM_RADIX_ANY, - (void **)pa, VM_RADIX_STACK, &start)) != 0) { + exhausted = 0; + while (exhausted == 0 && (n = vm_radix_lookupn(&object->rtree, start, + end, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; - /* - * Another thread may allocate this cached page from - * the queue before we acquire the page queue free - * mtx. - */ - if (p->flags & PG_CACHED) { - mtx_lock(&vm_page_queue_free_mtx); - if (p->object == object) { - vm_page_cache_free(p); - if (object->type == OBJT_VNODE && - object->cached_page_count == 0) - vp = object->handle; - } - mtx_unlock(&vm_page_queue_free_mtx); - continue; - } else if (p->object != object) - continue; + /* * If the page is wired for any reason besides * the existence of managed, wired mappings, then @@ -1978,7 +2016,7 @@ restart: continue; } if (vm_page_sleep_if_busy(p, TRUE, "vmopar")) { - start = 0; + start = cstart; goto restart; } KASSERT((p->flags & PG_FICTITIOUS) == 0, @@ -2005,6 +2043,25 @@ restart: break; } vm_object_pip_wakeup(object); + if (!vm_object_cache_is_empty(object)) { + start = cstart; + exhausted = 0; + mtx_lock(&vm_page_queue_free_mtx); + while (exhausted == 0 && (n = vm_radix_lookupn(&object->cache, + start, end, (void **)pa, VM_RADIX_STACK, &start, + &exhausted)) != 0) { + for (i = 0; i < n; i++) { + p = pa[i]; + vm_page_cache_free(p); + if (vm_object_cache_is_empty(object) && + object->type == OBJT_VNODE) + vp = object->handle; + } + if (n < VM_RADIX_STACK) + break; + } + mtx_unlock(&vm_page_queue_free_mtx); + } if (vp) vdrop(vp); } @@ -2240,6 +2297,13 @@ vm_object_set_writeable_dirty(vm_object_ vm_object_set_flag(object, OBJ_MIGHTBEDIRTY); } +int +vm_object_cache_is_empty(vm_object_t object) +{ + + return (__predict_true(object->cache.rt_root == 0)); +} + #include "opt_ddb.h" #ifdef DDB #include Modified: user/attilio/vmc-playground/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.h Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_object.h Sun Jul 8 14:01:25 2012 (r238245) @@ -101,7 +101,6 @@ struct vm_object { u_short pg_color; /* (c) color of first page in obj */ u_int paging_in_progress; /* Paging (in or out) so don't collapse or destroy */ int resident_page_count; /* number of resident pages */ - int cached_page_count; /* number of cached pages */ struct vm_object *backing_object; /* object that I'm a shadow of */ vm_ooffset_t backing_object_offset;/* Offset in backing object */ TAILQ_ENTRY(vm_object) pager_object_list; /* list of all objects of this pager type */ @@ -222,6 +221,7 @@ vm_object_t vm_object_allocate (objtype_ void _vm_object_allocate (objtype_t, vm_pindex_t, vm_object_t); boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t); +int vm_object_cache_is_empty (vm_object_t); void vm_object_collapse (vm_object_t); void vm_object_deallocate (vm_object_t); void vm_object_destroy (vm_object_t); Modified: user/attilio/vmc-playground/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_page.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_page.c Sun Jul 8 14:01:25 2012 (r238245) @@ -298,7 +298,7 @@ vm_page_startup(vm_offset_t vaddr) mtx_init(&vm_page_queue_mtx, "vm page queue mutex", NULL, MTX_DEF | MTX_RECURSE); mtx_init(&vm_page_queue_free_mtx, "vm page queue free mutex", NULL, - MTX_DEF); + MTX_DEF | MTX_RECURSE); /* Setup page locks. */ for (i = 0; i < PA_LOCK_COUNT; i++) @@ -835,8 +835,7 @@ vm_page_insert(vm_page_t m, vm_object_t if (object->resident_page_count == 0) { TAILQ_INSERT_TAIL(&object->memq, m, listq); } else { - neighbor = vm_radix_lookup_ge(&object->rtree, pindex, - VM_RADIX_BLACK); + neighbor = vm_radix_lookup_ge(&object->rtree, pindex); if (neighbor != NULL) { KASSERT(pindex < neighbor->pindex, ("vm_page_insert: offset %ju not minor than %ju", @@ -893,7 +892,7 @@ vm_page_remove(vm_page_t m) vm_page_flash(m); } - vm_radix_remove(&object->rtree, m->pindex, VM_RADIX_BLACK); + vm_radix_remove(&object->rtree, m->pindex); TAILQ_REMOVE(&object->memq, m, listq); /* @@ -925,7 +924,7 @@ vm_page_lookup(vm_object_t object, vm_pi VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - return vm_radix_lookup(&object->rtree, pindex, VM_RADIX_BLACK); + return vm_radix_lookup(&object->rtree, pindex); } /* @@ -943,8 +942,7 @@ vm_page_find_least(vm_object_t object, v VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); if (object->resident_page_count) - return vm_radix_lookup_ge(&object->rtree, pindex, - VM_RADIX_BLACK); + return (vm_radix_lookup_ge(&object->rtree, pindex)); return (NULL); } @@ -1026,8 +1024,8 @@ vm_page_cache_lookup(vm_object_t object, VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); - if (object->cached_page_count != 0) - return vm_radix_lookup(&object->rtree, pindex, VM_RADIX_RED); + if (!vm_object_cache_is_empty(object)) + return (vm_radix_lookup(&object->cache, pindex)); return (NULL); } @@ -1044,8 +1042,7 @@ vm_page_cache_remove(vm_page_t m) mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); KASSERT((m->flags & PG_CACHED) != 0, ("vm_page_cache_remove: page %p is not cached", m)); - vm_radix_remove(&m->object->rtree, m->pindex, VM_RADIX_RED); - m->object->cached_page_count--; + vm_radix_remove(&m->object->cache, m->pindex); m->object = NULL; cnt.v_cache_count--; } @@ -1071,8 +1068,7 @@ vm_page_cache_free(vm_page_t m) * Replicate vm_page_cache_remove with a version that can collapse * internal nodes since the object lock is held. */ - vm_radix_remove(&object->rtree, m->pindex, VM_RADIX_ANY); - object->cached_page_count--; + vm_radix_remove(&object->cache, m->pindex); m->object = NULL; m->valid = 0; /* Clear PG_CACHED and set PG_FREE. */ @@ -1094,23 +1090,36 @@ vm_page_cache_rename(vm_page_t m, vm_obj VM_OBJECT_LOCK_ASSERT(orig_object, MA_OWNED); VM_OBJECT_LOCK_ASSERT(new_object, MA_OWNED); mtx_assert(&vm_page_queue_free_mtx, MA_OWNED); - /* - * If the insert fails we simply free the cached page. - */ - if (vm_radix_insert(&new_object->rtree, idx, m) != 0) { - vm_page_cache_free(m); - return; - } - vm_radix_color(&new_object->rtree, idx, VM_RADIX_RED); - /* - * We use any color here though we know it's red so that tree - * compaction will still work. - */ - vm_radix_remove(&orig_object->rtree, m->pindex, VM_RADIX_ANY); + vm_radix_remove(&orig_object->cache, m->pindex); + if (vm_radix_insert(&new_object->cache, idx, m) != 0) + panic("vm_page_cache_rename: failed vm_radix_insert"); m->object = new_object; m->pindex = idx; - new_object->cached_page_count++; - orig_object->cached_page_count--; +} + +/* + * Returns a pointer to the cached page associated with the given object + * and offset, NULL otherwise. + * + * The object must be locked. + */ +vm_page_t +vm_page_is_cached(vm_object_t object, vm_pindex_t pindex) +{ + vm_page_t m; + + /* + * Insertion into an object's collection of cached pages requires the + * object to be locked. Therefore, if the object is locked and the + * object's collection is empty, there is no need to acquire the free + * page queues lock in order to prove that the specified page doesn't + * exist. + */ + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); + mtx_lock(&vm_page_queue_free_mtx); + m = vm_page_cache_lookup(object, pindex); + mtx_unlock(&vm_page_queue_free_mtx); + return (m); } /* @@ -1245,7 +1254,7 @@ vm_page_alloc(vm_object_t object, vm_pin m_object = m->object; vm_page_cache_remove(m); if (m_object->type == OBJT_VNODE && - m_object->cached_page_count == 0) + vm_object_cache_is_empty(m_object)) vp = m_object->handle; } else { KASSERT(VM_PAGE_IS_FREE(m), @@ -1505,7 +1514,7 @@ vm_page_alloc_init(vm_page_t m) m_object = m->object; vm_page_cache_remove(m); if (m_object->type == OBJT_VNODE && - m_object->cached_page_count == 0) + vm_object_cache_is_empty(m_object)) drop = m_object->handle; } else { KASSERT(VM_PAGE_IS_FREE(m), @@ -2085,7 +2094,7 @@ void vm_page_cache(vm_page_t m) { vm_object_t object; - int old_cached; + int old_empty_cache; vm_page_lock_assert(m, MA_OWNED); object = m->object; @@ -2116,7 +2125,7 @@ vm_page_cache(vm_page_t m) */ vm_pageq_remove(m); - vm_radix_color(&object->rtree, m->pindex, VM_RADIX_RED); + vm_radix_remove(&object->rtree, m->pindex); TAILQ_REMOVE(&object->memq, m, listq); object->resident_page_count--; @@ -2133,9 +2142,10 @@ vm_page_cache(vm_page_t m) m->flags &= ~PG_ZERO; mtx_lock(&vm_page_queue_free_mtx); m->flags |= PG_CACHED; - old_cached = object->cached_page_count; - object->cached_page_count++; + old_empty_cache = vm_object_cache_is_empty(object); cnt.v_cache_count++; + if (vm_radix_insert(&object->cache, m->pindex, m) != 0) + panic("vm_page_cache: vm_radix_insert failed"); #if VM_NRESERVLEVEL > 0 if (!vm_reserv_free_page(m)) { #else @@ -2153,9 +2163,10 @@ vm_page_cache(vm_page_t m) * the object's only resident page. */ if (object->type == OBJT_VNODE) { - if (old_cached == 0 && object->resident_page_count != 0) + if (old_empty_cache != 0 && object->resident_page_count != 0) vhold(object->handle); - else if (old_cached != 0 && object->resident_page_count == 0) + else if (old_empty_cache == 0 && + object->resident_page_count == 0) vdrop(object->handle); } } Modified: user/attilio/vmc-playground/sys/vm/vm_page.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_page.h Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_page.h Sun Jul 8 14:01:25 2012 (r238245) @@ -379,6 +379,7 @@ vm_page_t vm_page_find_least(vm_object_t vm_page_t vm_page_getfake(vm_paddr_t paddr, vm_memattr_t memattr); void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr); void vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t); +vm_page_t vm_page_is_cached(vm_object_t object, vm_pindex_t pindex); vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t); vm_page_t vm_page_next(vm_page_t m); int vm_page_pa_tryrelock(pmap_t, vm_paddr_t, vm_paddr_t *); Modified: user/attilio/vmc-playground/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Jul 8 12:39:02 2012 (r238244) +++ user/attilio/vmc-playground/sys/vm/vm_radix.c Sun Jul 8 14:01:25 2012 (r238245) @@ -293,14 +293,12 @@ vm_radix_setroot(struct vm_radix *rtree, } static inline void * -vm_radix_match(void *child, int color) +vm_radix_match(void *child) { uintptr_t c; c = (uintptr_t)child; - if ((c & color) == 0) - return (NULL); return ((void *)(c & ~VM_RADIX_FLAGS)); } @@ -429,9 +427,8 @@ vm_radix_insert(struct vm_radix *rtree, KASSERT(rnode->rn_child[slot] == NULL, ("vm_radix_insert: Duplicate value %p at index: %lu\n", rnode->rn_child[slot], (u_long)index)); - val = (void *)((uintptr_t)val | VM_RADIX_BLACK); rnode->rn_child[slot] = val; - atomic_add_32(&rnode->rn_count, 1); + rnode->rn_count++; CTR5(KTR_VM, "insert: tree %p, " KFRMT64(index) ", level %d, slot %d", rtree, KSPLT64L(index), KSPLT64H(index), level, slot); @@ -446,7 +443,7 @@ vm_radix_insert(struct vm_radix *rtree, * NULL is returned. */ void * -vm_radix_lookup(struct vm_radix *rtree, vm_pindex_t index, int color) +vm_radix_lookup(struct vm_radix *rtree, vm_pindex_t index) { struct vm_radix_node *rnode; int slot; @@ -465,7 +462,7 @@ vm_radix_lookup(struct vm_radix *rtree, CTR2(KTR_VM, "lookup: rnode %p, child %p", rnode, rnode->rn_child[slot]); if (level == 0) - return vm_radix_match(rnode->rn_child[slot], color); + return vm_radix_match(rnode->rn_child[slot]); rnode = rnode->rn_child[slot]; level--; } @@ -475,40 +472,6 @@ vm_radix_lookup(struct vm_radix *rtree, return NULL; } -void * -vm_radix_color(struct vm_radix *rtree, vm_pindex_t index, int color) -{ - struct vm_radix_node *rnode; - uintptr_t child; - int slot; - int level; - - level = vm_radix_height(rtree, &rnode); - if (index > VM_RADIX_MAX(level)) - return NULL; - level--; - while (rnode) { - slot = vm_radix_slot(index, level); - CTR6(KTR_VM, - "color: tree %p, " KFRMT64(index) ", level %d, slot %d, rnode %p", - rtree, KSPLT64L(index), KSPLT64H(index), level, slot, - rnode); - CTR2(KTR_VM, "color: rnode %p, child %p", rnode, - rnode->rn_child[slot]); - if (level == 0) - break; - rnode = rnode->rn_child[slot]; - level--; - } - if (rnode == NULL || rnode->rn_child[slot] == NULL) - return (NULL); - child = (uintptr_t)rnode->rn_child[slot]; - child &= ~VM_RADIX_FLAGS; - rnode->rn_child[slot] = (void *)(child | color); - - return (void *)child; -} - /* * Find the first leaf with a valid node between *startp and end. Return * the index of the first valid item in the leaf in *startp. @@ -598,7 +561,7 @@ out: */ int vm_radix_lookupn(struct vm_radix *rtree, vm_pindex_t start, - vm_pindex_t end, int color, void **out, int cnt, vm_pindex_t *next) + vm_pindex_t end, void **out, int cnt, vm_pindex_t *next, u_int *exhausted) { struct vm_radix_node *rnode; void *val; @@ -608,6 +571,8 @@ vm_radix_lookupn(struct vm_radix *rtree, CTR5(KTR_VM, "lookupn: tree %p, " KFRMT64(start) ", " KFRMT64(end), rtree, KSPLT64L(start), KSPLT64H(start), KSPLT64L(end), KSPLT64H(end)); + if (end == 0) + *exhausted = 0; if (rtree->rt_root == 0) return (0); outidx = 0; @@ -616,7 +581,7 @@ vm_radix_lookupn(struct vm_radix *rtree, for (; slot < VM_RADIX_COUNT; slot++, start++) { if (end != 0 && start >= end) goto out; - val = vm_radix_match(rnode->rn_child[slot], color); + val = vm_radix_match(rnode->rn_child[slot]); if (val == NULL) { /* @@ -632,6 +597,8 @@ vm_radix_lookupn(struct vm_radix *rtree, */ if ((VM_RADIX_MAXVAL - start) == 0) { start++; + if (end == 0) + *exhausted = 1; goto out; } continue; @@ -640,10 +607,11 @@ vm_radix_lookupn(struct vm_radix *rtree, "lookupn: tree %p " KFRMT64(index) " slot %d found child %p", rtree, KSPLT64L(start), KSPLT64H(start), slot, val); out[outidx] = val; - if (++outidx == cnt) - goto out; - if ((VM_RADIX_MAXVAL - start) == 0) { + if (++outidx == cnt || + (VM_RADIX_MAXVAL - start) == 0) { start++; + if ((VM_RADIX_MAXVAL - start) == 0 && end == 0) + *exhausted = 1; goto out; } } @@ -656,38 +624,11 @@ out: return (outidx); } -#if 0 -void -vm_radix_foreach(struct vm_radix *rtree, vm_pindex_t start, vm_pindex_t end, - int color, void (*iter)(void *)) -{ - struct vm_radix_node *rnode; - void *val; - int slot; - - if (rtree->rt_root == 0) - return; - while ((rnode = vm_radix_leaf(rtree, &start, end)) != NULL) { - slot = vm_radix_slot(start, 0); - for (; slot < VM_RADIX_COUNT; slot++, start++) { - if (end != 0 && start >= end) - return; - val = vm_radix_match(rnode->rn_child[slot], color); - if (val) - iter(val); - } - if (end != 0 && start >= end) - return; - } -} -#endif - - /* * Look up any entry at a position less than or equal to index. */ void * -vm_radix_lookup_le(struct vm_radix *rtree, vm_pindex_t index, int color) +vm_radix_lookup_le(struct vm_radix *rtree, vm_pindex_t index) { struct vm_radix_node *rnode; struct vm_radix_node *child; @@ -751,7 +692,7 @@ restart: } if (rnode) { for (; slot >= 0; slot--, index--) { - val = vm_radix_match(rnode->rn_child[slot], color); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 14:06:27 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 951BA106566B; Sun, 8 Jul 2012 14:06:27 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 40E6C8FC08; Sun, 8 Jul 2012 14:06:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68E6Rmv055818; Sun, 8 Jul 2012 14:06:27 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68E6Qnh055792; Sun, 8 Jul 2012 14:06:26 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207081406.q68E6Qnh055792@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 14:06:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238246 - in user/attilio/vmcontention: sbin/mdconfig share/syscons/keymaps sys/cam/scsi sys/dev/acpica sys/dev/e1000 sys/dev/md sys/geom sys/geom/mountver sys/geom/nop sys/kern sys/net... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 14:06:27 -0000 Author: attilio Date: Sun Jul 8 14:06:26 2012 New Revision: 238246 URL: http://svn.freebsd.org/changeset/base/238246 Log: MFC Modified: user/attilio/vmcontention/sbin/mdconfig/mdconfig.8 user/attilio/vmcontention/sbin/mdconfig/mdconfig.c user/attilio/vmcontention/share/syscons/keymaps/INDEX.keymaps user/attilio/vmcontention/sys/cam/scsi/scsi_da.c user/attilio/vmcontention/sys/dev/acpica/acpi_cpu.c user/attilio/vmcontention/sys/dev/e1000/if_em.c user/attilio/vmcontention/sys/dev/e1000/if_igb.c user/attilio/vmcontention/sys/dev/md/md.c user/attilio/vmcontention/sys/geom/geom.h user/attilio/vmcontention/sys/geom/geom_disk.c user/attilio/vmcontention/sys/geom/geom_disk.h user/attilio/vmcontention/sys/geom/geom_subr.c user/attilio/vmcontention/sys/geom/mountver/g_mountver.c user/attilio/vmcontention/sys/geom/nop/g_nop.c user/attilio/vmcontention/sys/geom/nop/g_nop.h user/attilio/vmcontention/sys/kern/kern_descrip.c user/attilio/vmcontention/sys/kern/kern_exec.c user/attilio/vmcontention/sys/netinet6/in6.c user/attilio/vmcontention/sys/sys/file.h user/attilio/vmcontention/sys/sys/mdioctl.h user/attilio/vmcontention/sys/sys/vmmeter.h user/attilio/vmcontention/sys/vm/uma_core.c user/attilio/vmcontention/sys/vm/vm_pageout.c user/attilio/vmcontention/usr.sbin/ancontrol/ancontrol.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sys/ (props changed) Modified: user/attilio/vmcontention/sbin/mdconfig/mdconfig.8 ============================================================================== --- user/attilio/vmcontention/sbin/mdconfig/mdconfig.8 Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sbin/mdconfig/mdconfig.8 Sun Jul 8 14:06:26 2012 (r238246) @@ -64,6 +64,11 @@ .Fl u Ar unit .Op Fl o Oo Cm no Oc Ns Ar force .Nm +.Fl r +.Fl u Ar unit +.Fl s Ar size +.Op Fl o Oo Cm no Oc Ns Ar force +.Nm .Fl l .Op Fl n .Op Fl v @@ -85,6 +90,8 @@ This will configure and attach a memory parameters specified and attach it to the system. .It Fl d Detach a memory disk from the system and release all resources. +.It Fl r +Resize a memory disk. .It Fl t Ar type Select the type of the memory disk. .Bl -tag -width "malloc" Modified: user/attilio/vmcontention/sbin/mdconfig/mdconfig.c ============================================================================== --- user/attilio/vmcontention/sbin/mdconfig/mdconfig.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sbin/mdconfig/mdconfig.c Sun Jul 8 14:06:26 2012 (r238246) @@ -54,7 +54,7 @@ #include static struct md_ioctl mdio; -static enum {UNSET, ATTACH, DETACH, LIST} action = UNSET; +static enum {UNSET, ATTACH, DETACH, RESIZE, LIST} action = UNSET; static int nflag; static void usage(void); @@ -81,6 +81,7 @@ usage(void) " [-s size] [-S sectorsize] [-u unit]\n" " [-x sectors/track] [-y heads/cylinder]\n" " mdconfig -d -u unit [-o [no]force]\n" +" mdconfig -r -u unit -s size [-o [no]force]\n" " mdconfig -l [-v] [-n] [-u unit]\n" " mdconfig file\n"); fprintf(stderr, "\t\ttype = {malloc, preload, vnode, swap}\n"); @@ -96,7 +97,7 @@ main(int argc, char **argv) { int ch, fd, i, vflag; char *p; - char *fflag = NULL, *tflag = NULL, *uflag = NULL; + char *fflag = NULL, *sflag = NULL, *tflag = NULL, *uflag = NULL; bzero(&mdio, sizeof(mdio)); mdio.md_file = malloc(PATH_MAX); @@ -108,25 +109,32 @@ main(int argc, char **argv) if (argc == 1) usage(); - while ((ch = getopt(argc, argv, "ab:df:lno:s:S:t:u:vx:y:")) != -1) { + while ((ch = getopt(argc, argv, "ab:df:lno:rs:S:t:u:vx:y:")) != -1) { switch (ch) { case 'a': if (action != UNSET && action != ATTACH) - errx(1, - "-a is mutually exclusive with -d and -l"); + errx(1, "-a is mutually exclusive " + "with -d, -r, and -l"); action = ATTACH; break; case 'd': if (action != UNSET && action != DETACH) - errx(1, - "-d is mutually exclusive with -a and -l"); + errx(1, "-d is mutually exclusive " + "with -a, -r, and -l"); action = DETACH; mdio.md_options |= MD_AUTOUNIT; break; + case 'r': + if (action != UNSET && action != RESIZE) + errx(1, "-r is mutually exclusive " + "with -a, -d, and -l"); + action = RESIZE; + mdio.md_options |= MD_AUTOUNIT; + break; case 'l': if (action != UNSET && action != LIST) - errx(1, - "-l is mutually exclusive with -a and -d"); + errx(1, "-l is mutually exclusive " + "with -a, -r, and -d"); action = LIST; mdio.md_options |= MD_AUTOUNIT; break; @@ -188,6 +196,9 @@ main(int argc, char **argv) mdio.md_sectorsize = strtoul(optarg, &p, 0); break; case 's': + if (sflag != NULL) + errx(1, "-s can be passed only once"); + sflag = optarg; mdio.md_mediasize = (off_t)strtoumax(optarg, &p, 0); if (p == NULL || *p == '\0') mdio.md_mediasize *= DEV_BSIZE; @@ -242,7 +253,7 @@ main(int argc, char **argv) mdio.md_type = MD_VNODE; mdio.md_options |= MD_CLUSTER | MD_AUTOUNIT | MD_COMPRESS; - } else if (mdio.md_mediasize != 0) { + } else if (sflag != NULL) { /* Imply ``-t swap'' */ mdio.md_type = MD_SWAP; mdio.md_options |= MD_CLUSTER | MD_AUTOUNIT | @@ -276,15 +287,15 @@ main(int argc, char **argv) } if ((mdio.md_type == MD_MALLOC || mdio.md_type == MD_SWAP) && - mdio.md_mediasize == 0) + sflag == NULL) errx(1, "must specify -s for -t malloc or -t swap"); if (mdio.md_type == MD_VNODE && mdio.md_file[0] == '\0') errx(1, "must specify -f for -t vnode"); } else { if (mdio.md_sectorsize != 0) errx(1, "-S can only be used with -a"); - if (mdio.md_mediasize != 0) - errx(1, "-s can only be used with -a"); + if (action != RESIZE && sflag != NULL) + errx(1, "-s can only be used with -a and -r"); if (mdio.md_fwsectors != 0) errx(1, "-x can only be used with -a"); if (mdio.md_fwheads != 0) @@ -295,13 +306,20 @@ main(int argc, char **argv) errx(1, "-t can only be used with -a"); if (argc > 0) errx(1, "file can only be used with -a"); - if (action != DETACH && (mdio.md_options & ~MD_AUTOUNIT) != 0) - errx(1, "-o can only be used with -a and -d"); + if ((action != DETACH && action != RESIZE) && + (mdio.md_options & ~MD_AUTOUNIT) != 0) + errx(1, "-o can only be used with -a, -d, and -r"); if (action == DETACH && (mdio.md_options & ~(MD_FORCE | MD_AUTOUNIT)) != 0) errx(1, "only -o [no]force can be used with -d"); + if (action == RESIZE && + (mdio.md_options & ~(MD_FORCE | MD_RESERVE | MD_AUTOUNIT)) != 0) + errx(1, "only -o [no]force and -o [no]reserve can be used with -r"); } + if (action == RESIZE && sflag == NULL) + errx(1, "must specify -s for -r"); + if (action != LIST && vflag == OPT_VERBOSE) errx(1, "-v can only be used with -l"); @@ -333,6 +351,12 @@ main(int argc, char **argv) i = ioctl(fd, MDIOCDETACH, &mdio); if (i < 0) err(1, "ioctl(/dev/%s)", MDCTL_NAME); + } else if (action == RESIZE) { + if (mdio.md_options & MD_AUTOUNIT) + errx(1, "-r requires -u"); + i = ioctl(fd, MDIOCRESIZE, &mdio); + if (i < 0) + err(1, "ioctl(/dev/%s)", MDCTL_NAME); } else if (action == LIST) { if (mdio.md_options & MD_AUTOUNIT) { /* @@ -342,7 +366,6 @@ main(int argc, char **argv) md_list(NULL, OPT_LIST | vflag); } else return (md_query(uflag)); - } else usage(); close(fd); Modified: user/attilio/vmcontention/share/syscons/keymaps/INDEX.keymaps ============================================================================== --- user/attilio/vmcontention/share/syscons/keymaps/INDEX.keymaps Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/share/syscons/keymaps/INDEX.keymaps Sun Jul 8 14:06:26 2012 (r238246) @@ -378,6 +378,8 @@ ru.koi8-r.win.kbd:pt:Russo koi8-r (winke ru.koi8-r.win.kbd:es:Ruso koi8-r (winkeys) ru.koi8-r.win.kbd:uk:Рос╕йська koi8-r (winkeys) +spanish.dvorak.kbd:en:Spanish Dvorak + spanish.iso.kbd:en:Spanish ISO-8859-1 spanish.iso.kbd:de:Spanisch ISO-8859-1 spanish.iso.kbd:fr:Espagnol ISO-8859-1 Modified: user/attilio/vmcontention/sys/cam/scsi/scsi_da.c ============================================================================== --- user/attilio/vmcontention/sys/cam/scsi/scsi_da.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/cam/scsi/scsi_da.c Sun Jul 8 14:06:26 2012 (r238246) @@ -2644,6 +2644,8 @@ dasetgeom(struct cam_periph *periph, uin softc->disk->d_flags |= DISKFLAG_CANDELETE; else softc->disk->d_flags &= ~DISKFLAG_CANDELETE; + + disk_resize(softc->disk); } static void Modified: user/attilio/vmcontention/sys/dev/acpica/acpi_cpu.c ============================================================================== --- user/attilio/vmcontention/sys/dev/acpica/acpi_cpu.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/dev/acpica/acpi_cpu.c Sun Jul 8 14:06:26 2012 (r238246) @@ -918,14 +918,12 @@ acpi_cpu_startup_cx(struct acpi_cpu_soft (void *)sc, 0, acpi_cpu_usage_sysctl, "A", "percent usage for each Cx state"); -#ifdef notyet /* Signal platform that we can handle _CST notification. */ if (!cpu_cx_generic && cpu_cst_cnt != 0) { ACPI_LOCK(acpi); AcpiOsWritePort(cpu_smi_cmd, cpu_cst_cnt, 8); ACPI_UNLOCK(acpi); } -#endif } /* Modified: user/attilio/vmcontention/sys/dev/e1000/if_em.c ============================================================================== --- user/attilio/vmcontention/sys/dev/e1000/if_em.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/dev/e1000/if_em.c Sun Jul 8 14:06:26 2012 (r238246) @@ -289,6 +289,7 @@ static void em_handle_link(void *context static void em_set_sysctl_value(struct adapter *, const char *, const char *, int *, int); static int em_set_flowcntl(SYSCTL_HANDLER_ARGS); +static int em_sysctl_eee(SYSCTL_HANDLER_ARGS); static __inline void em_rx_discard(struct rx_ring *, int); @@ -389,7 +390,7 @@ SYSCTL_INT(_hw_em, OID_AUTO, rx_process_ "at a time, -1 means unlimited"); /* Energy efficient ethernet - default to OFF */ -static int eee_setting = 0; +static int eee_setting = 1; TUNABLE_INT("hw.em.eee_setting", &eee_setting); SYSCTL_INT(_hw_em, OID_AUTO, eee_setting, CTLFLAG_RDTUN, &eee_setting, 0, "Enable Energy Efficient Ethernet"); @@ -636,9 +637,12 @@ em_attach(device_t dev) " due to SOL/IDER session.\n"); /* Sysctl for setting Energy Efficient Ethernet */ - em_set_sysctl_value(adapter, "eee_control", - "enable Energy Efficient Ethernet", - (int *)&hw->dev_spec.ich8lan.eee_disable, eee_setting); + hw->dev_spec.ich8lan.eee_disable = eee_setting; + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "eee_control", CTLTYPE_INT|CTLFLAG_RW, + adapter, 0, em_sysctl_eee, "I", + "Disable Energy Efficient Ethernet"); /* ** Start from a known state, this is @@ -5695,6 +5699,27 @@ em_set_flowcntl(SYSCTL_HANDLER_ARGS) return (error); } +/* +** Manage Energy Efficient Ethernet: +** Control values: +** 0/1 - enabled/disabled +*/ +static int +em_sysctl_eee(SYSCTL_HANDLER_ARGS) +{ + struct adapter *adapter = (struct adapter *) arg1; + int error, value; + + value = adapter->hw.dev_spec.ich8lan.eee_disable; + error = sysctl_handle_int(oidp, &value, 0, req); + if (error || req->newptr == NULL) + return (error); + EM_CORE_LOCK(adapter); + adapter->hw.dev_spec.ich8lan.eee_disable = (value != 0); + em_init_locked(adapter); + EM_CORE_UNLOCK(adapter); + return (0); +} static int em_sysctl_debug_info(SYSCTL_HANDLER_ARGS) Modified: user/attilio/vmcontention/sys/dev/e1000/if_igb.c ============================================================================== --- user/attilio/vmcontention/sys/dev/e1000/if_igb.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/dev/e1000/if_igb.c Sun Jul 8 14:06:26 2012 (r238246) @@ -277,6 +277,7 @@ static void igb_set_sysctl_value(struct const char *, int *, int); static int igb_set_flowcntl(SYSCTL_HANDLER_ARGS); static int igb_sysctl_dmac(SYSCTL_HANDLER_ARGS); +static int igb_sysctl_eee(SYSCTL_HANDLER_ARGS); #ifdef DEVICE_POLLING static poll_handler_t igb_poll; @@ -586,10 +587,11 @@ igb_attach(device_t dev) SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "dmac", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, igb_sysctl_dmac, "I", "DMA Coalesce"); - igb_set_sysctl_value(adapter, "eee_disabled", - "enable Energy Efficient Ethernet", - (int *)&adapter->hw.dev_spec._82575.eee_disable, - TRUE); + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), + OID_AUTO, "eee_disabled", CTLTYPE_INT|CTLFLAG_RW, + adapter, 0, igb_sysctl_eee, "I", + "Disable Energy Efficient Ethernet"); if (adapter->hw.phy.media_type == e1000_media_type_copper) e1000_set_eee_i350(&adapter->hw); } @@ -5988,3 +5990,25 @@ igb_sysctl_dmac(SYSCTL_HANDLER_ARGS) igb_init(adapter); return (error); } + +/* +** Manage Energy Efficient Ethernet: +** Control values: +** 0/1 - enabled/disabled +*/ +static int +igb_sysctl_eee(SYSCTL_HANDLER_ARGS) +{ + struct adapter *adapter = (struct adapter *) arg1; + int error, value; + + value = adapter->hw.dev_spec._82575.eee_disable; + error = sysctl_handle_int(oidp, &value, 0, req); + if (error || req->newptr == NULL) + return (error); + IGB_CORE_LOCK(adapter); + adapter->hw.dev_spec._82575.eee_disable = (value != 0); + igb_init_locked(adapter); + IGB_CORE_UNLOCK(adapter); + return (0); +} Modified: user/attilio/vmcontention/sys/dev/md/md.c ============================================================================== --- user/attilio/vmcontention/sys/dev/md/md.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/dev/md/md.c Sun Jul 8 14:06:26 2012 (r238246) @@ -1081,6 +1081,64 @@ mddestroy(struct md_s *sc, struct thread } static int +mdresize(struct md_s *sc, struct md_ioctl *mdio) +{ + int error, res; + vm_pindex_t oldpages, newpages; + + switch (sc->type) { + case MD_VNODE: + break; + case MD_SWAP: + if (mdio->md_mediasize == 0 || + (mdio->md_mediasize % PAGE_SIZE) != 0) + return (EDOM); + oldpages = OFF_TO_IDX(round_page(sc->mediasize)); + newpages = OFF_TO_IDX(round_page(mdio->md_mediasize)); + if (newpages < oldpages) { + VM_OBJECT_LOCK(sc->object); + vm_object_page_remove(sc->object, newpages, 0, 0); + swap_pager_freespace(sc->object, newpages, + oldpages - newpages); + swap_release_by_cred(IDX_TO_OFF(oldpages - + newpages), sc->cred); + sc->object->charge = IDX_TO_OFF(newpages); + sc->object->size = newpages; + VM_OBJECT_UNLOCK(sc->object); + } else if (newpages > oldpages) { + res = swap_reserve_by_cred(IDX_TO_OFF(newpages - + oldpages), sc->cred); + if (!res) + return (ENOMEM); + if ((mdio->md_options & MD_RESERVE) || + (sc->flags & MD_RESERVE)) { + error = swap_pager_reserve(sc->object, + oldpages, newpages - oldpages); + if (error < 0) { + swap_release_by_cred( + IDX_TO_OFF(newpages - oldpages), + sc->cred); + return (EDOM); + } + } + VM_OBJECT_LOCK(sc->object); + sc->object->charge = IDX_TO_OFF(newpages); + sc->object->size = newpages; + VM_OBJECT_UNLOCK(sc->object); + } + break; + default: + return (EOPNOTSUPP); + } + + sc->mediasize = mdio->md_mediasize; + g_topology_lock(); + g_resize_provider(sc->pp, sc->mediasize); + g_topology_unlock(); + return (0); +} + +static int mdcreate_swap(struct md_s *sc, struct md_ioctl *mdio, struct thread *td) { vm_ooffset_t npage; @@ -1108,7 +1166,7 @@ mdcreate_swap(struct md_s *sc, struct md VM_PROT_DEFAULT, 0, td->td_ucred); if (sc->object == NULL) return (ENOMEM); - sc->flags = mdio->md_options & MD_FORCE; + sc->flags = mdio->md_options & (MD_FORCE | MD_RESERVE); if (mdio->md_options & MD_RESERVE) { if (swap_pager_reserve(sc->object, 0, npage) < 0) { error = EDOM; @@ -1217,6 +1275,18 @@ xmdctlioctl(struct cdev *dev, u_long cmd !(mdio->md_options & MD_FORCE)) return (EBUSY); return (mddestroy(sc, td)); + case MDIOCRESIZE: + if ((mdio->md_options & ~(MD_FORCE | MD_RESERVE)) != 0) + return (EINVAL); + + sc = mdfind(mdio->md_unit); + if (sc == NULL) + return (ENOENT); + if (mdio->md_mediasize < sc->mediasize && + !(sc->flags & MD_FORCE) && + !(mdio->md_options & MD_FORCE)) + return (EBUSY); + return (mdresize(sc, mdio)); case MDIOCQUERY: sc = mdfind(mdio->md_unit); if (sc == NULL) Modified: user/attilio/vmcontention/sys/geom/geom.h ============================================================================== --- user/attilio/vmcontention/sys/geom/geom.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/geom.h Sun Jul 8 14:06:26 2012 (r238246) @@ -79,6 +79,7 @@ typedef void g_attrchanged_t (struct g_c typedef void g_provgone_t (struct g_provider *); typedef void g_dumpconf_t (struct sbuf *, const char *indent, struct g_geom *, struct g_consumer *, struct g_provider *); +typedef void g_resize_t(struct g_consumer *cp); /* * The g_class structure describes a transformation class. In other words @@ -108,7 +109,7 @@ struct g_class { g_orphan_t *orphan; g_ioctl_t *ioctl; g_provgone_t *providergone; - void *spare2; + g_resize_t *resize; /* * The remaining elements are private */ @@ -139,7 +140,7 @@ struct g_geom { g_orphan_t *orphan; g_ioctl_t *ioctl; g_provgone_t *providergone; - void *spare1; + g_resize_t *resize; void *softc; unsigned flags; #define G_GEOM_WITHER 1 @@ -265,6 +266,7 @@ int g_handleattr_str(struct bio *bp, con struct g_consumer * g_new_consumer(struct g_geom *gp); struct g_geom * g_new_geomf(struct g_class *mp, const char *fmt, ...); struct g_provider * g_new_providerf(struct g_geom *gp, const char *fmt, ...); +void g_resize_provider(struct g_provider *pp, off_t size); int g_retaste(struct g_class *mp); void g_spoil(struct g_provider *pp, struct g_consumer *cp); int g_std_access(struct g_provider *pp, int dr, int dw, int de); Modified: user/attilio/vmcontention/sys/geom/geom_disk.c ============================================================================== --- user/attilio/vmcontention/sys/geom/geom_disk.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/geom_disk.c Sun Jul 8 14:06:26 2012 (r238246) @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -65,6 +66,7 @@ struct g_disk_softc { struct sysctl_oid *sysctl_tree; char led[64]; uint32_t state; + struct task resize_task; }; static struct mtx g_disk_done_mtx; @@ -445,6 +447,27 @@ g_disk_dumpconf(struct sbuf *sb, const c } static void +g_disk_resize_task(void *context, int pending) +{ + struct g_geom *gp; + struct g_provider *pp; + struct disk *dp; + struct g_disk_softc *sc; + + sc = (struct g_disk_softc *)context; + dp = sc->dp; + gp = dp->d_geom; + + LIST_FOREACH(pp, &gp->provider, provider) { + if (pp->sectorsize != 0 && + pp->sectorsize != dp->d_sectorsize) + g_wither_provider(pp, ENXIO); + else + g_resize_provider(pp, dp->d_mediasize); + } +} + +static void g_disk_create(void *arg, int flag) { struct g_geom *gp; @@ -484,6 +507,7 @@ g_disk_create(void *arg, int flag) CTLFLAG_RW | CTLFLAG_TUN, sc->led, sizeof(sc->led), "LED name"); } + TASK_INIT(&sc->resize_task, 0, g_disk_resize_task, sc); pp->private = sc; dp->d_geom = gp; g_error_provider(pp, 0); @@ -635,6 +659,24 @@ disk_attr_changed(struct disk *dp, const (void)g_attr_changed(pp, attr, flag); } +void +disk_resize(struct disk *dp) +{ + struct g_geom *gp; + struct g_disk_softc *sc; + int error; + + gp = dp->d_geom; + + if (gp == NULL) + return; + + sc = gp->softc; + + error = taskqueue_enqueue(taskqueue_thread, &sc->resize_task); + KASSERT(error == 0, ("taskqueue_enqueue(9) failed.")); +} + static void g_kern_disks(void *p, int flag __unused) { Modified: user/attilio/vmcontention/sys/geom/geom_disk.h ============================================================================== --- user/attilio/vmcontention/sys/geom/geom_disk.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/geom_disk.h Sun Jul 8 14:06:26 2012 (r238246) @@ -109,6 +109,7 @@ void disk_create(struct disk *disk, int void disk_destroy(struct disk *disk); void disk_gone(struct disk *disk); void disk_attr_changed(struct disk *dp, const char *attr, int flag); +void disk_resize(struct disk *dp); #define DISK_VERSION_00 0x58561059 #define DISK_VERSION_01 0x5856105a Modified: user/attilio/vmcontention/sys/geom/geom_subr.c ============================================================================== --- user/attilio/vmcontention/sys/geom/geom_subr.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/geom_subr.c Sun Jul 8 14:06:26 2012 (r238246) @@ -68,9 +68,11 @@ static struct g_tailq_head geoms = TAILQ char *g_wait_event, *g_wait_up, *g_wait_down, *g_wait_sim; struct g_hh00 { - struct g_class *mp; - int error; - int post; + struct g_class *mp; + struct g_provider *pp; + off_t size; + int error; + int post; }; /* @@ -356,6 +358,7 @@ g_new_geomf(struct g_class *mp, const ch gp->access = mp->access; gp->orphan = mp->orphan; gp->ioctl = mp->ioctl; + gp->resize = mp->resize; return (gp); } @@ -601,6 +604,76 @@ g_error_provider(struct g_provider *pp, pp->error = error; } +static void +g_resize_provider_event(void *arg, int flag) +{ + struct g_hh00 *hh; + struct g_class *mp; + struct g_geom *gp; + struct g_provider *pp; + struct g_consumer *cp, *cp2; + off_t size; + + g_topology_assert(); + if (flag == EV_CANCEL) + return; + if (g_shutdown) + return; + + hh = arg; + pp = hh->pp; + size = hh->size; + + G_VALID_PROVIDER(pp); + g_trace(G_T_TOPOLOGY, "g_resize_provider_event(%p)", pp); + + LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { + gp = cp->geom; + if (gp->resize == NULL && size < pp->mediasize) + cp->geom->orphan(cp); + } + + pp->mediasize = size; + + LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, cp2) { + gp = cp->geom; + if (gp->resize != NULL) + gp->resize(cp); + } + + /* + * After resizing, the previously invalid GEOM class metadata + * might become valid. This means we should retaste. + */ + LIST_FOREACH(mp, &g_classes, class) { + if (mp->taste == NULL) + continue; + LIST_FOREACH(cp, &pp->consumers, consumers) + if (cp->geom->class == mp) + break; + if (cp != NULL) + continue; + mp->taste(mp, pp, 0); + g_topology_assert(); + } +} + +void +g_resize_provider(struct g_provider *pp, off_t size) +{ + struct g_hh00 *hh; + + G_VALID_PROVIDER(pp); + + if (size == pp->mediasize) + return; + + hh = g_malloc(sizeof *hh, M_WAITOK | M_ZERO); + hh->pp = pp; + hh->size = size; + g_post_event(g_resize_provider_event, hh, M_WAITOK, NULL); +} + struct g_provider * g_provider_by_name(char const *arg) { Modified: user/attilio/vmcontention/sys/geom/mountver/g_mountver.c ============================================================================== --- user/attilio/vmcontention/sys/geom/mountver/g_mountver.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/mountver/g_mountver.c Sun Jul 8 14:06:26 2012 (r238246) @@ -59,6 +59,7 @@ static eventhandler_tag g_mountver_pre_s static void g_mountver_queue(struct bio *bp); static void g_mountver_orphan(struct g_consumer *cp); +static void g_mountver_resize(struct g_consumer *cp); static int g_mountver_destroy(struct g_geom *gp, boolean_t force); static g_taste_t g_mountver_taste; static int g_mountver_destroy_geom(struct gctl_req *req, struct g_class *mp, @@ -257,6 +258,7 @@ g_mountver_create(struct gctl_req *req, gp->softc = sc; gp->start = g_mountver_start; gp->orphan = g_mountver_orphan; + gp->resize = g_mountver_resize; gp->access = g_mountver_access; gp->dumpconf = g_mountver_dumpconf; @@ -457,6 +459,18 @@ g_mountver_orphan(struct g_consumer *cp) G_MOUNTVER_DEBUG(0, "%s is offline. Mount verification in progress.", sc->sc_provider_name); } +static void +g_mountver_resize(struct g_consumer *cp) +{ + struct g_geom *gp; + struct g_provider *pp; + + gp = cp->geom; + + LIST_FOREACH(pp, &gp->provider, provider) + g_resize_provider(pp, cp->provider->mediasize); +} + static int g_mountver_ident_matches(struct g_geom *gp) { Modified: user/attilio/vmcontention/sys/geom/nop/g_nop.c ============================================================================== --- user/attilio/vmcontention/sys/geom/nop/g_nop.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/nop/g_nop.c Sun Jul 8 14:06:26 2012 (r238246) @@ -72,6 +72,30 @@ g_nop_orphan(struct g_consumer *cp) } static void +g_nop_resize(struct g_consumer *cp) +{ + struct g_nop_softc *sc; + struct g_geom *gp; + struct g_provider *pp; + off_t size; + + g_topology_assert(); + + gp = cp->geom; + sc = gp->softc; + + if (sc->sc_explicitsize != 0) + return; + if (cp->provider->mediasize < sc->sc_offset) { + g_nop_destroy(gp, 1); + return; + } + size = cp->provider->mediasize - sc->sc_offset; + LIST_FOREACH(pp, &gp->provider, provider) + g_resize_provider(pp, size); +} + +static void g_nop_start(struct bio *bp) { struct g_nop_softc *sc; @@ -146,6 +170,7 @@ g_nop_create(struct gctl_req *req, struc struct g_consumer *cp; char name[64]; int error; + off_t explicitsize; g_topology_assert(); @@ -165,6 +190,7 @@ g_nop_create(struct gctl_req *req, struc gctl_error(req, "Invalid offset for provider %s.", pp->name); return (EINVAL); } + explicitsize = size; if (size == 0) size = pp->mediasize - offset; if (offset + size > pp->mediasize) { @@ -192,6 +218,7 @@ g_nop_create(struct gctl_req *req, struc gp = g_new_geomf(mp, name); sc = g_malloc(sizeof(*sc), M_WAITOK); sc->sc_offset = offset; + sc->sc_explicitsize = explicitsize; sc->sc_error = ioerror; sc->sc_rfailprob = rfailprob; sc->sc_wfailprob = wfailprob; @@ -202,6 +229,7 @@ g_nop_create(struct gctl_req *req, struc gp->softc = sc; gp->start = g_nop_start; gp->orphan = g_nop_orphan; + gp->resize = g_nop_resize; gp->access = g_nop_access; gp->dumpconf = g_nop_dumpconf; Modified: user/attilio/vmcontention/sys/geom/nop/g_nop.h ============================================================================== --- user/attilio/vmcontention/sys/geom/nop/g_nop.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/geom/nop/g_nop.h Sun Jul 8 14:06:26 2012 (r238246) @@ -57,6 +57,7 @@ struct g_nop_softc { int sc_error; off_t sc_offset; + off_t sc_explicitsize; u_int sc_rfailprob; u_int sc_wfailprob; uintmax_t sc_reads; Modified: user/attilio/vmcontention/sys/kern/kern_descrip.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_descrip.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/kern/kern_descrip.c Sun Jul 8 14:06:26 2012 (r238246) @@ -2340,11 +2340,11 @@ _fget(struct thread *td, int fd, struct /* * FREAD and FWRITE failure return EBADF as per POSIX. - * - * Only one flag, or 0, may be specified. */ if ((flags == FREAD && (fp->f_flag & FREAD) == 0) || - (flags == FWRITE && (fp->f_flag & FWRITE) == 0)) { + (flags == FWRITE && (fp->f_flag & FWRITE) == 0) || + (flags == (FREAD | FEXEC) && + (((fp->f_flag & flags) == 0) || ((fp->f_flag & FWRITE) != 0)))) { fdrop(fp, td); return (EBADF); } @@ -2444,6 +2444,13 @@ fgetvp_read(struct thread *td, int fd, c return (_fgetvp(td, fd, FREAD, rights, NULL, vpp)); } +int +fgetvp_exec(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp) +{ + + return (_fgetvp(td, fd, FREAD | FEXEC, rights, NULL, vpp)); +} + #ifdef notyet int fgetvp_write(struct thread *td, int fd, cap_rights_t rights, Modified: user/attilio/vmcontention/sys/kern/kern_exec.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_exec.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/kern/kern_exec.c Sun Jul 8 14:06:26 2012 (r238246) @@ -443,8 +443,10 @@ interpret: /* * Some might argue that CAP_READ and/or CAP_MMAP should also * be required here; such arguments will be entertained. + * + * Descriptors opened only with O_EXEC or O_RDONLY are allowed. */ - error = fgetvp_read(td, args->fd, CAP_FEXECVE, &binvp); + error = fgetvp_exec(td, args->fd, CAP_FEXECVE, &binvp); if (error) goto exec_fail; vfslocked = VFS_LOCK_GIANT(binvp->v_mount); Modified: user/attilio/vmcontention/sys/netinet6/in6.c ============================================================================== --- user/attilio/vmcontention/sys/netinet6/in6.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/netinet6/in6.c Sun Jul 8 14:06:26 2012 (r238246) @@ -1367,7 +1367,9 @@ in6_purgeaddr_mc(struct ifnet *ifp, stru sin6.sin6_family = AF_INET6; memcpy(&sin6.sin6_addr, &satosin6(ifa0->ifa_addr)->sin6_addr, sizeof(sin6.sin6_addr)); - in6_setscope(&sin6.sin6_addr, ifa0->ifa_ifp, NULL); + error = in6_setscope(&sin6.sin6_addr, ifa0->ifa_ifp, NULL); + if (error != 0) + return (error); } rt = in6_rtalloc1((struct sockaddr *)&mltaddr, 0, 0UL, RT_DEFAULT_FIB); Modified: user/attilio/vmcontention/sys/sys/file.h ============================================================================== --- user/attilio/vmcontention/sys/sys/file.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/sys/file.h Sun Jul 8 14:06:26 2012 (r238246) @@ -238,6 +238,8 @@ fo_chown_t invfo_chown; void finit(struct file *, u_int, short, void *, struct fileops *); int fgetvp(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp); +int fgetvp_exec(struct thread *td, int fd, cap_rights_t rights, + struct vnode **vpp); int fgetvp_rights(struct thread *td, int fd, cap_rights_t need, cap_rights_t *have, struct vnode **vpp); int fgetvp_read(struct thread *td, int fd, cap_rights_t rights, Modified: user/attilio/vmcontention/sys/sys/mdioctl.h ============================================================================== --- user/attilio/vmcontention/sys/sys/mdioctl.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/sys/mdioctl.h Sun Jul 8 14:06:26 2012 (r238246) @@ -79,6 +79,7 @@ struct md_ioctl { #define MDIOCDETACH _IOWR('m', 1, struct md_ioctl) /* detach disk */ #define MDIOCQUERY _IOWR('m', 2, struct md_ioctl) /* query status */ #define MDIOCLIST _IOWR('m', 3, struct md_ioctl) /* query status */ +#define MDIOCRESIZE _IOWR('m', 4, struct md_ioctl) /* resize disk */ #define MD_CLUSTER 0x01 /* Don't cluster */ #define MD_RESERVE 0x02 /* Pre-reserve swap */ Modified: user/attilio/vmcontention/sys/sys/vmmeter.h ============================================================================== --- user/attilio/vmcontention/sys/sys/vmmeter.h Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/sys/vmmeter.h Sun Jul 8 14:06:26 2012 (r238246) @@ -79,7 +79,7 @@ struct vmmeter { u_int v_pdpages; /* (q) pages analyzed by daemon */ u_int v_tcached; /* (p) total pages cached */ - u_int v_dfree; /* (q) pages freed by daemon */ + u_int v_dfree; /* (p) pages freed by daemon */ u_int v_pfree; /* (p) pages freed by exiting processes */ u_int v_tfree; /* (p) total pages freed */ /* Modified: user/attilio/vmcontention/sys/vm/uma_core.c ============================================================================== --- user/attilio/vmcontention/sys/vm/uma_core.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/vm/uma_core.c Sun Jul 8 14:06:26 2012 (r238246) @@ -2193,6 +2193,7 @@ keg_fetch_slab(uma_keg_t keg, uma_zone_t zone->uz_flags |= UMA_ZFLAG_FULL; if (flags & M_NOWAIT) break; + zone->uz_sleeps++; msleep(keg, &keg->uk_lock, PVM, "keglimit", 0); continue; } Modified: user/attilio/vmcontention/sys/vm/vm_pageout.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 14:01:25 2012 (r238245) +++ user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 14:06:26 2012 (r238246) @@ -743,6 +743,7 @@ vm_pageout_scan(int pass) int actcount; int vnodes_skipped = 0; int maxlaunder; + boolean_t queues_locked; /* * Decrease registered cache sizes. @@ -784,6 +785,7 @@ vm_pageout_scan(int pass) if (pass) maxlaunder = 10000; vm_page_lock_queues(); + queues_locked = TRUE; rescan0: addl_page_shortage = addl_page_shortage_init; maxscan = cnt.v_inactive_count; @@ -791,6 +793,8 @@ rescan0: for (m = TAILQ_FIRST(&vm_page_queues[PQ_INACTIVE].pl); m != NULL && maxscan-- > 0 && page_shortage > 0; m = next) { + KASSERT(queues_locked, ("unlocked queues")); + mtx_assert(&vm_page_queue_mtx, MA_OWNED); cnt.v_pdpages++; @@ -850,6 +854,16 @@ rescan0: } /* + * We unlock vm_page_queue_mtx, invalidating the + * 'next' pointer. Use our marker to remember our + * place. + */ + TAILQ_INSERT_AFTER(&vm_page_queues[PQ_INACTIVE].pl, + m, &marker, pageq); + vm_page_unlock_queues(); + queues_locked = FALSE; + + /* * If the object is not being used, we ignore previous * references. */ @@ -873,7 +887,7 @@ rescan0: vm_page_unlock(m); m->act_count += actcount + ACT_ADVANCE; VM_OBJECT_UNLOCK(object); - continue; + goto relock_queues; } /* @@ -889,7 +903,7 @@ rescan0: vm_page_unlock(m); m->act_count += actcount + ACT_ADVANCE + 1; VM_OBJECT_UNLOCK(object); - continue; + goto relock_queues; } /* @@ -924,7 +938,7 @@ rescan0: * Invalid pages can be easily freed */ vm_page_free(m); - cnt.v_dfree++; + PCPU_INC(cnt.v_dfree); --page_shortage; } else if (m->dirty == 0) { /* @@ -947,6 +961,8 @@ rescan0: * the thrash point for a heavily loaded machine. */ m->flags |= PG_WINATCFLS; + vm_page_lock_queues(); + queues_locked = TRUE; vm_page_requeue(m); } else if (maxlaunder > 0) { /* @@ -976,21 +992,13 @@ rescan0: if (!swap_pageouts_ok || (object->flags & OBJ_DEAD)) { vm_page_unlock(m); VM_OBJECT_UNLOCK(object); + vm_page_lock_queues(); + queues_locked = TRUE; vm_page_requeue(m); - continue; + goto relock_queues; } /* - * Following operations may unlock - * vm_page_queue_mtx, invalidating the 'next' - * pointer. To prevent an inordinate number - * of restarts we use our marker to remember - * our place. - * - */ - TAILQ_INSERT_AFTER(&vm_page_queues[PQ_INACTIVE].pl, - m, &marker, pageq); - /* * The object is already known NOT to be dead. It * is possible for the vget() to block the whole * pageout daemon, but the new low-memory handling @@ -1014,7 +1022,6 @@ rescan0: * of time. */ if (object->type == OBJT_VNODE) { - vm_page_unlock_queues(); vm_page_unlock(m); vp = object->handle; if (vp->v_type == VREG && @@ -1044,6 +1051,7 @@ rescan0: VM_OBJECT_LOCK(object); vm_page_lock(m); vm_page_lock_queues(); + queues_locked = TRUE; /* * The page might have been moved to another * queue during potential blocking in vget() @@ -1075,6 +1083,8 @@ rescan0: * be undergoing I/O, so skip it */ if (m->hold_count) { + vm_page_lock_queues(); + queues_locked = TRUE; vm_page_unlock(m); vm_page_requeue(m); if (object->flags & OBJ_MIGHTBEDIRTY) @@ -1093,32 +1103,37 @@ rescan0: * the (future) cleaned page. Otherwise we could wind * up laundering or cleaning too many pages. */ - vm_page_unlock_queues(); if (vm_pageout_clean(m) != 0) { --page_shortage; --maxlaunder; } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 16:13:01 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DD47C1065670; Sun, 8 Jul 2012 16:13:01 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C0ABC8FC1A; Sun, 8 Jul 2012 16:13:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68GD11U061394; Sun, 8 Jul 2012 16:13:01 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68GD1Gc061380; Sun, 8 Jul 2012 16:13:01 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207081613.q68GD1Gc061380@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 16:13:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238252 - in user/attilio/vmc-playground: . bin/rcp bin/rm cddl/compat/opensolaris/misc cddl/contrib/dtracetoolkit cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize cddl/co... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 16:13:02 -0000 Author: attilio Date: Sun Jul 8 16:12:59 2012 New Revision: 238252 URL: http://svn.freebsd.org/changeset/base/238252 Log: Merge from vmcontention Added: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ - copied from r238247, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zhack/ - copied from r238247, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zhack/ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5 - copied unchanged from r238247, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5 user/attilio/vmc-playground/cddl/usr.sbin/zhack/ - copied from r238247, user/attilio/vmcontention/cddl/usr.sbin/zhack/ user/attilio/vmc-playground/lib/libc/amd64/sys/__vdso_gettc.c - copied unchanged from r238247, user/attilio/vmcontention/lib/libc/amd64/sys/__vdso_gettc.c user/attilio/vmc-playground/lib/libc/i386/sys/__vdso_gettc.c - copied unchanged from r238247, user/attilio/vmcontention/lib/libc/i386/sys/__vdso_gettc.c user/attilio/vmc-playground/lib/libc/sys/__vdso_gettimeofday.c - copied unchanged from r238247, user/attilio/vmcontention/lib/libc/sys/__vdso_gettimeofday.c user/attilio/vmc-playground/lib/libc/sys/clock_gettime.c - copied unchanged from r238247, user/attilio/vmcontention/lib/libc/sys/clock_gettime.c user/attilio/vmc-playground/lib/libc/sys/gettimeofday.c - copied unchanged from r238247, user/attilio/vmcontention/lib/libc/sys/gettimeofday.c user/attilio/vmc-playground/lib/libz/test/ - copied from r238247, user/attilio/vmcontention/lib/libz/test/ user/attilio/vmc-playground/sbin/camcontrol/progress.c - copied unchanged from r238247, user/attilio/vmcontention/sbin/camcontrol/progress.c user/attilio/vmc-playground/sbin/camcontrol/progress.h - copied unchanged from r238247, user/attilio/vmcontention/sbin/camcontrol/progress.h user/attilio/vmc-playground/share/man/man4/acpi_asus_wmi.4 - copied unchanged from r238247, user/attilio/vmcontention/share/man/man4/acpi_asus_wmi.4 user/attilio/vmc-playground/share/man/man4/bxe.4 - copied unchanged from r238247, user/attilio/vmcontention/share/man/man4/bxe.4 user/attilio/vmc-playground/share/man/man4/est.4 - copied unchanged from r238247, user/attilio/vmcontention/share/man/man4/est.4 user/attilio/vmc-playground/sys/amd64/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/amd64/include/vdso.h user/attilio/vmc-playground/sys/arm/at91/at91sam9x25.c - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/at91/at91sam9x25.c user/attilio/vmc-playground/sys/arm/at91/at91sam9x25reg.h - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/at91/at91sam9x25reg.h user/attilio/vmc-playground/sys/arm/at91/board_sam9x25ek.c - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/at91/board_sam9x25ek.c user/attilio/vmc-playground/sys/arm/at91/std.atmel - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/at91/std.atmel user/attilio/vmc-playground/sys/arm/at91/std.sam9x25ek - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/at91/std.sam9x25ek user/attilio/vmc-playground/sys/arm/conf/ATMEL - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/conf/ATMEL user/attilio/vmc-playground/sys/arm/conf/SAM9X25EK - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/conf/SAM9X25EK user/attilio/vmc-playground/sys/arm/conf/SAM9X25EK.hints - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/conf/SAM9X25EK.hints user/attilio/vmc-playground/sys/arm/include/atags.h - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/include/atags.h user/attilio/vmc-playground/sys/arm/include/board.h - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/include/board.h user/attilio/vmc-playground/sys/arm/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/arm/include/vdso.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/bptree.h - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/bptree.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c - copied unchanged from r238247, user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/ahpredef.c - copied unchanged from r238247, user/attilio/vmcontention/sys/contrib/dev/acpica/common/ahpredef.c user/attilio/vmc-playground/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.3.fw.uu - copied unchanged from r238247, user/attilio/vmcontention/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.3.fw.uu user/attilio/vmc-playground/sys/contrib/dev/iwn/iwlwifi-6000g2b-18.168.6.1.fw.uu - copied unchanged from r238247, user/attilio/vmcontention/sys/contrib/dev/iwn/iwlwifi-6000g2b-18.168.6.1.fw.uu user/attilio/vmc-playground/sys/dev/acpi_support/acpi_asus_wmi.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/acpi_support/acpi_asus_wmi.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_btcoex.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_btcoex.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_btcoex.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_btcoex.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/ath_hal/ar9002/ar9285_btcoex.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar9003/ar9300_btcoex.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/ath_hal/ar9003/ar9300_btcoex.h user/attilio/vmc-playground/sys/dev/ath/if_ath_rx_edma.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/if_ath_rx_edma.c user/attilio/vmc-playground/sys/dev/ath/if_ath_rx_edma.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/ath/if_ath_rx_edma.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ib_intfc.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ib_intfc.h user/attilio/vmc-playground/sys/dev/cxgbe/tom/ - copied from r238247, user/attilio/vmcontention/sys/dev/cxgbe/tom/ user/attilio/vmc-playground/sys/dev/e1000/e1000_i210.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/e1000/e1000_i210.c user/attilio/vmc-playground/sys/dev/e1000/e1000_i210.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/e1000/e1000_i210.h user/attilio/vmc-playground/sys/dev/nand/nfc_fsl.c - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/nand/nfc_fsl.c user/attilio/vmc-playground/sys/dev/nand/nfc_fsl.h - copied unchanged from r238247, user/attilio/vmcontention/sys/dev/nand/nfc_fsl.h user/attilio/vmc-playground/sys/i386/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/i386/include/vdso.h user/attilio/vmc-playground/sys/ia64/ia64/physmem.c - copied unchanged from r238247, user/attilio/vmcontention/sys/ia64/ia64/physmem.c user/attilio/vmc-playground/sys/ia64/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/ia64/include/vdso.h user/attilio/vmc-playground/sys/kern/kern_sharedpage.c - copied unchanged from r238247, user/attilio/vmcontention/sys/kern/kern_sharedpage.c user/attilio/vmc-playground/sys/kern/subr_dummy_vdso_tc.c - copied unchanged from r238247, user/attilio/vmcontention/sys/kern/subr_dummy_vdso_tc.c user/attilio/vmc-playground/sys/mips/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/mips/include/vdso.h user/attilio/vmc-playground/sys/modules/acpi/acpi_asus_wmi/ - copied from r238247, user/attilio/vmcontention/sys/modules/acpi/acpi_asus_wmi/ user/attilio/vmc-playground/sys/modules/cxgbe/tom/ - copied from r238247, user/attilio/vmcontention/sys/modules/cxgbe/tom/ user/attilio/vmc-playground/sys/modules/nand/ - copied from r238247, user/attilio/vmcontention/sys/modules/nand/ user/attilio/vmc-playground/sys/modules/toecore/ - copied from r238247, user/attilio/vmcontention/sys/modules/toecore/ user/attilio/vmc-playground/sys/netinet/toecore.c - copied unchanged from r238247, user/attilio/vmcontention/sys/netinet/toecore.c user/attilio/vmc-playground/sys/netinet/toecore.h - copied unchanged from r238247, user/attilio/vmcontention/sys/netinet/toecore.h user/attilio/vmc-playground/sys/pc98/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/pc98/include/vdso.h user/attilio/vmc-playground/sys/powerpc/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/powerpc/include/vdso.h user/attilio/vmc-playground/sys/sparc64/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/sparc64/include/vdso.h user/attilio/vmc-playground/sys/sys/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/sys/vdso.h user/attilio/vmc-playground/sys/x86/acpica/acpi_wakeup.c - copied unchanged from r238247, user/attilio/vmcontention/sys/x86/acpica/acpi_wakeup.c user/attilio/vmc-playground/sys/x86/include/vdso.h - copied unchanged from r238247, user/attilio/vmcontention/sys/x86/include/vdso.h user/attilio/vmc-playground/tools/build/options/WITHOUT_PKGBOOTSTRAP - copied unchanged from r238247, user/attilio/vmcontention/tools/build/options/WITHOUT_PKGBOOTSTRAP user/attilio/vmc-playground/tools/build/options/WITH_GNU_SORT - copied unchanged from r238247, user/attilio/vmcontention/tools/build/options/WITH_GNU_SORT user/attilio/vmc-playground/tools/build/options/WITH_INSTALL_AS_USER - copied unchanged from r238247, user/attilio/vmcontention/tools/build/options/WITH_INSTALL_AS_USER user/attilio/vmc-playground/tools/regression/usr.bin/make/syntax/funny-targets/ - copied from r238247, user/attilio/vmcontention/tools/regression/usr.bin/make/syntax/funny-targets/ user/attilio/vmc-playground/tools/regression/usr.bin/make/variables/modifier_t/ - copied from r238247, user/attilio/vmcontention/tools/regression/usr.bin/make/variables/modifier_t/ user/attilio/vmc-playground/tools/tools/ath/athaggrstats/ - copied from r238247, user/attilio/vmcontention/tools/tools/ath/athaggrstats/ Deleted: user/attilio/vmc-playground/etc/auth.conf user/attilio/vmc-playground/lib/libutil/auth.3 user/attilio/vmc-playground/lib/libutil/auth.conf.5 user/attilio/vmc-playground/lib/libz/example.c user/attilio/vmc-playground/lib/libz/minigzip.c user/attilio/vmc-playground/sys/amd64/acpica/acpi_switch.S user/attilio/vmc-playground/sys/amd64/acpica/acpi_wakeup.c user/attilio/vmc-playground/sys/arm/at91/files.at91sam9 user/attilio/vmc-playground/sys/dev/cxgb/cxgb_offload.c user/attilio/vmc-playground/sys/dev/cxgb/t3cdev.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/toecore/ user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_ddp.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_defs.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_t3_ddp.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tcp.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tom_sysctl.c user/attilio/vmc-playground/sys/i386/acpica/acpi_wakeup.c user/attilio/vmc-playground/sys/modules/cxgb/toecore/ user/attilio/vmc-playground/sys/netinet/toedev.h user/attilio/vmc-playground/tools/build/options/WITH_BSD_SORT Modified: user/attilio/vmc-playground/Makefile user/attilio/vmc-playground/Makefile.inc1 user/attilio/vmc-playground/ObsoleteFiles.inc user/attilio/vmc-playground/UPDATING user/attilio/vmc-playground/bin/rcp/rcp.1 user/attilio/vmc-playground/bin/rm/rm.c user/attilio/vmc-playground/cddl/compat/opensolaris/misc/deviceid.c user/attilio/vmc-playground/cddl/contrib/dtracetoolkit/dtruss user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool.8 user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/ztest/ztest.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libnvpair/libnvpair.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_config.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_status.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c user/attilio/vmc-playground/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/attilio/vmc-playground/cddl/lib/libnvpair/Makefile user/attilio/vmc-playground/cddl/lib/libzfs/Makefile user/attilio/vmc-playground/cddl/sbin/zpool/Makefile user/attilio/vmc-playground/cddl/usr.bin/ztest/Makefile user/attilio/vmc-playground/cddl/usr.sbin/Makefile user/attilio/vmc-playground/contrib/binutils/gas/config/tc-i386.c user/attilio/vmc-playground/contrib/binutils/opcodes/i386-dis.c user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.h user/attilio/vmc-playground/contrib/binutils/opcodes/i386-opc.tbl user/attilio/vmc-playground/contrib/binutils/opcodes/i386-tbl.h user/attilio/vmc-playground/contrib/bsnmp/lib/bsnmpclient.3 user/attilio/vmc-playground/contrib/bsnmp/lib/bsnmplib.3 user/attilio/vmc-playground/contrib/bsnmp/snmp_target/snmp_target.3 user/attilio/vmc-playground/contrib/bsnmp/snmp_usm/snmp_usm.3 user/attilio/vmc-playground/contrib/bsnmp/snmp_vacm/snmp_vacm.3 user/attilio/vmc-playground/contrib/gcc/ChangeLog.gcc43 user/attilio/vmc-playground/contrib/gcc/config/arm/freebsd.h user/attilio/vmc-playground/contrib/gcc/fold-const.c user/attilio/vmc-playground/contrib/gcc/gimplify.c user/attilio/vmc-playground/contrib/gcc/tree-ssa-ccp.c user/attilio/vmc-playground/contrib/gcc/tree-ssa-pre.c user/attilio/vmc-playground/contrib/less/LICENSE user/attilio/vmc-playground/contrib/less/Makefile.aut user/attilio/vmc-playground/contrib/less/NEWS user/attilio/vmc-playground/contrib/less/README user/attilio/vmc-playground/contrib/less/brac.c user/attilio/vmc-playground/contrib/less/ch.c user/attilio/vmc-playground/contrib/less/charset.c user/attilio/vmc-playground/contrib/less/charset.h user/attilio/vmc-playground/contrib/less/cmd.h user/attilio/vmc-playground/contrib/less/cmdbuf.c user/attilio/vmc-playground/contrib/less/command.c user/attilio/vmc-playground/contrib/less/configure user/attilio/vmc-playground/contrib/less/configure.ac user/attilio/vmc-playground/contrib/less/cvt.c user/attilio/vmc-playground/contrib/less/decode.c user/attilio/vmc-playground/contrib/less/defines.ds user/attilio/vmc-playground/contrib/less/defines.h.in user/attilio/vmc-playground/contrib/less/defines.o2 user/attilio/vmc-playground/contrib/less/defines.o9 user/attilio/vmc-playground/contrib/less/defines.wn user/attilio/vmc-playground/contrib/less/edit.c user/attilio/vmc-playground/contrib/less/filename.c user/attilio/vmc-playground/contrib/less/forwback.c user/attilio/vmc-playground/contrib/less/help.c user/attilio/vmc-playground/contrib/less/ifile.c user/attilio/vmc-playground/contrib/less/input.c user/attilio/vmc-playground/contrib/less/jump.c user/attilio/vmc-playground/contrib/less/less.h user/attilio/vmc-playground/contrib/less/less.hlp user/attilio/vmc-playground/contrib/less/less.man user/attilio/vmc-playground/contrib/less/less.nro user/attilio/vmc-playground/contrib/less/lessecho.c user/attilio/vmc-playground/contrib/less/lessecho.man user/attilio/vmc-playground/contrib/less/lessecho.nro user/attilio/vmc-playground/contrib/less/lesskey.c user/attilio/vmc-playground/contrib/less/lesskey.h user/attilio/vmc-playground/contrib/less/lesskey.man user/attilio/vmc-playground/contrib/less/lesskey.nro user/attilio/vmc-playground/contrib/less/lglob.h user/attilio/vmc-playground/contrib/less/line.c user/attilio/vmc-playground/contrib/less/linenum.c user/attilio/vmc-playground/contrib/less/lsystem.c user/attilio/vmc-playground/contrib/less/main.c user/attilio/vmc-playground/contrib/less/mark.c user/attilio/vmc-playground/contrib/less/mkhelp.c user/attilio/vmc-playground/contrib/less/optfunc.c user/attilio/vmc-playground/contrib/less/option.c user/attilio/vmc-playground/contrib/less/option.h user/attilio/vmc-playground/contrib/less/opttbl.c user/attilio/vmc-playground/contrib/less/os.c user/attilio/vmc-playground/contrib/less/output.c user/attilio/vmc-playground/contrib/less/pattern.c user/attilio/vmc-playground/contrib/less/pattern.h user/attilio/vmc-playground/contrib/less/pckeys.h user/attilio/vmc-playground/contrib/less/position.c user/attilio/vmc-playground/contrib/less/position.h user/attilio/vmc-playground/contrib/less/prompt.c user/attilio/vmc-playground/contrib/less/screen.c user/attilio/vmc-playground/contrib/less/scrsize.c user/attilio/vmc-playground/contrib/less/search.c user/attilio/vmc-playground/contrib/less/signal.c user/attilio/vmc-playground/contrib/less/tags.c user/attilio/vmc-playground/contrib/less/ttyin.c user/attilio/vmc-playground/contrib/less/version.c user/attilio/vmc-playground/contrib/libstdc++/include/bits/locale_facets.tcc user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_bvector.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_deque.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_list.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_map.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_multimap.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_multiset.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_set.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_tree.h user/attilio/vmc-playground/contrib/libstdc++/include/bits/stl_vector.h user/attilio/vmc-playground/contrib/telnet/telnet/telnet.1 user/attilio/vmc-playground/contrib/top/display.c user/attilio/vmc-playground/contrib/top/layout.h user/attilio/vmc-playground/contrib/top/machine.h user/attilio/vmc-playground/contrib/top/top.c user/attilio/vmc-playground/contrib/traceroute/traceroute.8 user/attilio/vmc-playground/crypto/openssh/ssh-keyscan.1 user/attilio/vmc-playground/crypto/openssh/ssh-keyscan.c user/attilio/vmc-playground/crypto/openssl/CHANGES user/attilio/vmc-playground/crypto/openssl/Configure user/attilio/vmc-playground/crypto/openssl/FAQ user/attilio/vmc-playground/crypto/openssl/LICENSE user/attilio/vmc-playground/crypto/openssl/Makefile user/attilio/vmc-playground/crypto/openssl/NEWS user/attilio/vmc-playground/crypto/openssl/README user/attilio/vmc-playground/crypto/openssl/apps/Makefile user/attilio/vmc-playground/crypto/openssl/apps/asn1pars.c user/attilio/vmc-playground/crypto/openssl/apps/cms.c user/attilio/vmc-playground/crypto/openssl/apps/openssl.cnf user/attilio/vmc-playground/crypto/openssl/apps/pkcs12.c user/attilio/vmc-playground/crypto/openssl/apps/s_client.c user/attilio/vmc-playground/crypto/openssl/apps/s_server.c user/attilio/vmc-playground/crypto/openssl/apps/x509.c user/attilio/vmc-playground/crypto/openssl/config user/attilio/vmc-playground/crypto/openssl/crypto/asn1/a_object.c user/attilio/vmc-playground/crypto/openssl/crypto/asn1/a_strex.c user/attilio/vmc-playground/crypto/openssl/crypto/asn1/a_strnid.c user/attilio/vmc-playground/crypto/openssl/crypto/asn1/asn1.h user/attilio/vmc-playground/crypto/openssl/crypto/asn1/asn_mime.c user/attilio/vmc-playground/crypto/openssl/crypto/asn1/x_name.c user/attilio/vmc-playground/crypto/openssl/crypto/asn1/x_pubkey.c user/attilio/vmc-playground/crypto/openssl/crypto/bio/bf_buff.c user/attilio/vmc-playground/crypto/openssl/crypto/bio/bio.h user/attilio/vmc-playground/crypto/openssl/crypto/bio/bss_dgram.c user/attilio/vmc-playground/crypto/openssl/crypto/bn/asm/mo-586.pl user/attilio/vmc-playground/crypto/openssl/crypto/bn/asm/ppc.pl user/attilio/vmc-playground/crypto/openssl/crypto/bn/bn_blind.c user/attilio/vmc-playground/crypto/openssl/crypto/bn/bn_gf2m.c user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms.h user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms_enc.c user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms_env.c user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms_io.c user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms_lcl.h user/attilio/vmc-playground/crypto/openssl/crypto/cms/cms_smime.c user/attilio/vmc-playground/crypto/openssl/crypto/comp/c_rle.c user/attilio/vmc-playground/crypto/openssl/crypto/conf/conf_api.c user/attilio/vmc-playground/crypto/openssl/crypto/cryptlib.c user/attilio/vmc-playground/crypto/openssl/crypto/crypto.h user/attilio/vmc-playground/crypto/openssl/crypto/ec/ec2_smpl.c user/attilio/vmc-playground/crypto/openssl/crypto/ec/ec_key.c user/attilio/vmc-playground/crypto/openssl/crypto/ec/ecp_smpl.c user/attilio/vmc-playground/crypto/openssl/crypto/ecdsa/ecdsatest.c user/attilio/vmc-playground/crypto/openssl/crypto/ecdsa/ecs_ossl.c user/attilio/vmc-playground/crypto/openssl/crypto/evp/evp_test.c user/attilio/vmc-playground/crypto/openssl/crypto/ocsp/ocsp_lib.c user/attilio/vmc-playground/crypto/openssl/crypto/opensslv.h user/attilio/vmc-playground/crypto/openssl/crypto/perlasm/cbc.pl user/attilio/vmc-playground/crypto/openssl/crypto/pkcs7/pk7_smime.c user/attilio/vmc-playground/crypto/openssl/crypto/rc4/asm/rc4-x86_64.pl user/attilio/vmc-playground/crypto/openssl/crypto/rc4/rc4_skey.c user/attilio/vmc-playground/crypto/openssl/crypto/rsa/rsa_eay.c user/attilio/vmc-playground/crypto/openssl/crypto/x509/x509_vfy.c user/attilio/vmc-playground/crypto/openssl/crypto/x509v3/v3_addr.c user/attilio/vmc-playground/crypto/openssl/crypto/x509v3/v3_asid.c user/attilio/vmc-playground/crypto/openssl/doc/HOWTO/proxy_certificates.txt user/attilio/vmc-playground/crypto/openssl/doc/apps/ca.pod user/attilio/vmc-playground/crypto/openssl/doc/apps/dgst.pod user/attilio/vmc-playground/crypto/openssl/doc/crypto/engine.pod user/attilio/vmc-playground/crypto/openssl/doc/ssl/SSL_clear.pod user/attilio/vmc-playground/crypto/openssl/engines/e_capi.c user/attilio/vmc-playground/crypto/openssl/engines/e_capi_err.h user/attilio/vmc-playground/crypto/openssl/fips/fips_canister.c user/attilio/vmc-playground/crypto/openssl/openssl.spec user/attilio/vmc-playground/crypto/openssl/ssl/bio_ssl.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_both.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_clnt.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_enc.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_lib.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_pkt.c user/attilio/vmc-playground/crypto/openssl/ssl/d1_srvr.c user/attilio/vmc-playground/crypto/openssl/ssl/s2_srvr.c user/attilio/vmc-playground/crypto/openssl/ssl/s3_clnt.c user/attilio/vmc-playground/crypto/openssl/ssl/s3_lib.c user/attilio/vmc-playground/crypto/openssl/ssl/s3_srvr.c user/attilio/vmc-playground/crypto/openssl/ssl/ssl.h user/attilio/vmc-playground/crypto/openssl/ssl/ssl_ciph.c user/attilio/vmc-playground/crypto/openssl/ssl/ssl_err.c user/attilio/vmc-playground/crypto/openssl/ssl/ssl_lib.c user/attilio/vmc-playground/crypto/openssl/ssl/ssl_locl.h user/attilio/vmc-playground/crypto/openssl/ssl/t1_lib.c user/attilio/vmc-playground/crypto/openssl/util/fipslink.pl user/attilio/vmc-playground/crypto/openssl/util/mkerr.pl user/attilio/vmc-playground/crypto/openssl/util/pl/VC-32.pl user/attilio/vmc-playground/etc/Makefile user/attilio/vmc-playground/etc/login.conf user/attilio/vmc-playground/etc/mtree/BSD.include.dist user/attilio/vmc-playground/etc/periodic/daily/400.status-disks user/attilio/vmc-playground/etc/rc.d/jail user/attilio/vmc-playground/etc/syslog.conf user/attilio/vmc-playground/gnu/lib/libgomp/config.h user/attilio/vmc-playground/gnu/lib/libstdc++/config.h user/attilio/vmc-playground/gnu/lib/libsupc++/Version.map user/attilio/vmc-playground/gnu/usr.bin/sort/Makefile user/attilio/vmc-playground/include/Makefile user/attilio/vmc-playground/include/paths.h user/attilio/vmc-playground/include/printf.h user/attilio/vmc-playground/include/wchar.h user/attilio/vmc-playground/lib/libc/amd64/sys/Makefile.inc user/attilio/vmc-playground/lib/libc/arm/Symbol.map user/attilio/vmc-playground/lib/libc/gen/arc4random.c user/attilio/vmc-playground/lib/libc/gen/aux.c user/attilio/vmc-playground/lib/libc/gen/directory.3 user/attilio/vmc-playground/lib/libc/gen/fstab.c user/attilio/vmc-playground/lib/libc/gen/getnetgrent.c user/attilio/vmc-playground/lib/libc/gen/signal.3 user/attilio/vmc-playground/lib/libc/gen/sysconf.c user/attilio/vmc-playground/lib/libc/gen/syslog.c user/attilio/vmc-playground/lib/libc/i386/sys/Makefile.inc user/attilio/vmc-playground/lib/libc/include/libc_private.h user/attilio/vmc-playground/lib/libc/locale/collate.c user/attilio/vmc-playground/lib/libc/locale/ctype_l.3 user/attilio/vmc-playground/lib/libc/locale/setrunelocale.c user/attilio/vmc-playground/lib/libc/net/Makefile.inc user/attilio/vmc-playground/lib/libc/stdio/xprintf.c user/attilio/vmc-playground/lib/libc/stdlib/Makefile.inc user/attilio/vmc-playground/lib/libc/stdlib/getopt_long.c user/attilio/vmc-playground/lib/libc/stdlib/strfmon.3 user/attilio/vmc-playground/lib/libc/stdtime/Makefile.inc user/attilio/vmc-playground/lib/libc/stdtime/strftime.3 user/attilio/vmc-playground/lib/libc/stdtime/strftime.c user/attilio/vmc-playground/lib/libc/stdtime/strptime.3 user/attilio/vmc-playground/lib/libc/string/Makefile.inc user/attilio/vmc-playground/lib/libc/string/strcasecmp.3 user/attilio/vmc-playground/lib/libc/string/strcoll.3 user/attilio/vmc-playground/lib/libc/string/strstr.3 user/attilio/vmc-playground/lib/libc/string/strxfrm.3 user/attilio/vmc-playground/lib/libc/sys/Makefile.inc user/attilio/vmc-playground/lib/libc/sys/posix_fadvise.2 user/attilio/vmc-playground/lib/libcrypt/Makefile user/attilio/vmc-playground/lib/libcrypt/crypt.3 user/attilio/vmc-playground/lib/libcrypt/crypt.c user/attilio/vmc-playground/lib/libcxxrt/Version.map user/attilio/vmc-playground/lib/libedit/chared.c user/attilio/vmc-playground/lib/libedit/chared.h user/attilio/vmc-playground/lib/libedit/common.c user/attilio/vmc-playground/lib/libedit/editline.3 user/attilio/vmc-playground/lib/libedit/editrc.5 user/attilio/vmc-playground/lib/libedit/el.c user/attilio/vmc-playground/lib/libedit/histedit.h user/attilio/vmc-playground/lib/libedit/history.c user/attilio/vmc-playground/lib/libedit/key.c user/attilio/vmc-playground/lib/libedit/key.h user/attilio/vmc-playground/lib/libedit/prompt.c user/attilio/vmc-playground/lib/libedit/prompt.h user/attilio/vmc-playground/lib/libedit/read.c user/attilio/vmc-playground/lib/libedit/refresh.c user/attilio/vmc-playground/lib/libedit/search.c user/attilio/vmc-playground/lib/libedit/sig.c user/attilio/vmc-playground/lib/libedit/sig.h user/attilio/vmc-playground/lib/libedit/term.c user/attilio/vmc-playground/lib/libedit/term.h user/attilio/vmc-playground/lib/libedit/tty.c user/attilio/vmc-playground/lib/libedit/vi.c user/attilio/vmc-playground/lib/libelf/Makefile user/attilio/vmc-playground/lib/libgssapi/gss_accept_sec_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_acquire_cred.3 user/attilio/vmc-playground/lib/libgssapi/gss_add_cred.3 user/attilio/vmc-playground/lib/libgssapi/gss_add_oid_set_member.3 user/attilio/vmc-playground/lib/libgssapi/gss_canonicalize_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_compare_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_context_time.3 user/attilio/vmc-playground/lib/libgssapi/gss_create_empty_oid_set.3 user/attilio/vmc-playground/lib/libgssapi/gss_delete_sec_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_display_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_display_status.3 user/attilio/vmc-playground/lib/libgssapi/gss_duplicate_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_export_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_export_sec_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_get_mic.3 user/attilio/vmc-playground/lib/libgssapi/gss_import_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_import_sec_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_indicate_mechs.3 user/attilio/vmc-playground/lib/libgssapi/gss_init_sec_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_inquire_context.3 user/attilio/vmc-playground/lib/libgssapi/gss_inquire_cred.3 user/attilio/vmc-playground/lib/libgssapi/gss_inquire_cred_by_mech.3 user/attilio/vmc-playground/lib/libgssapi/gss_inquire_mechs_for_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_inquire_names_for_mech.3 user/attilio/vmc-playground/lib/libgssapi/gss_process_context_token.3 user/attilio/vmc-playground/lib/libgssapi/gss_release_buffer.3 user/attilio/vmc-playground/lib/libgssapi/gss_release_cred.3 user/attilio/vmc-playground/lib/libgssapi/gss_release_name.3 user/attilio/vmc-playground/lib/libgssapi/gss_release_oid_set.3 user/attilio/vmc-playground/lib/libgssapi/gss_test_oid_set_member.3 user/attilio/vmc-playground/lib/libgssapi/gss_unwrap.3 user/attilio/vmc-playground/lib/libgssapi/gss_verify_mic.3 user/attilio/vmc-playground/lib/libgssapi/gss_wrap.3 user/attilio/vmc-playground/lib/libgssapi/gss_wrap_size_limit.3 user/attilio/vmc-playground/lib/libgssapi/gssapi.3 user/attilio/vmc-playground/lib/libgssapi/mech.5 user/attilio/vmc-playground/lib/libkiconv/Makefile user/attilio/vmc-playground/lib/libstand/Makefile user/attilio/vmc-playground/lib/libusb/Makefile user/attilio/vmc-playground/lib/libusb/libusb10.c user/attilio/vmc-playground/lib/libusb/libusb10_io.c user/attilio/vmc-playground/lib/libutil/Makefile user/attilio/vmc-playground/lib/libutil/auth.c user/attilio/vmc-playground/lib/libutil/login.conf.5 user/attilio/vmc-playground/lib/libutil/property.3 user/attilio/vmc-playground/lib/libutil/pw_util.c user/attilio/vmc-playground/lib/libz/ChangeLog user/attilio/vmc-playground/lib/libz/FAQ user/attilio/vmc-playground/lib/libz/FREEBSD-upgrade (contents, props changed) user/attilio/vmc-playground/lib/libz/Makefile (contents, props changed) user/attilio/vmc-playground/lib/libz/README user/attilio/vmc-playground/lib/libz/Symbol.map (contents, props changed) user/attilio/vmc-playground/lib/libz/Versions.def (contents, props changed) user/attilio/vmc-playground/lib/libz/adler32.c user/attilio/vmc-playground/lib/libz/contrib/asm686/match.S (contents, props changed) user/attilio/vmc-playground/lib/libz/crc32.c user/attilio/vmc-playground/lib/libz/crc32.h user/attilio/vmc-playground/lib/libz/deflate.c user/attilio/vmc-playground/lib/libz/deflate.h user/attilio/vmc-playground/lib/libz/doc/algorithm.txt (contents, props changed) user/attilio/vmc-playground/lib/libz/gzguts.h (contents, props changed) user/attilio/vmc-playground/lib/libz/gzlib.c user/attilio/vmc-playground/lib/libz/gzread.c user/attilio/vmc-playground/lib/libz/gzwrite.c user/attilio/vmc-playground/lib/libz/infback.c user/attilio/vmc-playground/lib/libz/inffixed.h user/attilio/vmc-playground/lib/libz/inflate.c user/attilio/vmc-playground/lib/libz/inftrees.c user/attilio/vmc-playground/lib/libz/trees.c user/attilio/vmc-playground/lib/libz/zconf.h user/attilio/vmc-playground/lib/libz/zlib.3 user/attilio/vmc-playground/lib/libz/zlib.h user/attilio/vmc-playground/lib/libz/zopen.c (contents, props changed) user/attilio/vmc-playground/lib/libz/zutil.c user/attilio/vmc-playground/lib/libz/zutil.h user/attilio/vmc-playground/libexec/rshd/rshd.8 user/attilio/vmc-playground/libexec/rtld-elf/map_object.c user/attilio/vmc-playground/libexec/rtld-elf/rtld.c user/attilio/vmc-playground/release/doc/en_US.ISO8859-1/hardware/article.sgml user/attilio/vmc-playground/release/doc/share/misc/dev.archlist.txt user/attilio/vmc-playground/release/picobsd/tinyware/passwd/passwd.c user/attilio/vmc-playground/sbin/camcontrol/Makefile user/attilio/vmc-playground/sbin/camcontrol/camcontrol.8 user/attilio/vmc-playground/sbin/camcontrol/camcontrol.c user/attilio/vmc-playground/sbin/camcontrol/camcontrol.h user/attilio/vmc-playground/sbin/camcontrol/fwdownload.c user/attilio/vmc-playground/sbin/devfs/devfs.8 user/attilio/vmc-playground/sbin/fsck_ffs/suj.c user/attilio/vmc-playground/sbin/geom/class/eli/geli.8 user/attilio/vmc-playground/sbin/geom/class/raid/graid.8 user/attilio/vmc-playground/sbin/growfs/growfs.c user/attilio/vmc-playground/sbin/hastd/primary.c user/attilio/vmc-playground/sbin/hastd/proto_common.c user/attilio/vmc-playground/sbin/hastd/synch.h user/attilio/vmc-playground/sbin/ifconfig/ifconfig.c user/attilio/vmc-playground/sbin/ipfw/ipfw.8 user/attilio/vmc-playground/sbin/mdconfig/Makefile user/attilio/vmc-playground/sbin/mdconfig/mdconfig.8 user/attilio/vmc-playground/sbin/mdconfig/mdconfig.c user/attilio/vmc-playground/sbin/natd/natd.8 user/attilio/vmc-playground/sbin/ping/ping.c user/attilio/vmc-playground/secure/lib/libcrypto/Makefile.inc user/attilio/vmc-playground/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ASN1_STRING_length.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ASN1_STRING_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ASN1_generate_nconf.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_ctrl.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_base64.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_buffer.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_cipher.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_md.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_null.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_f_ssl.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_find_type.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_push.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_read.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_accept.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_bio.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_connect.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_fd.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_file.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_mem.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_null.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_s_socket.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_set_callback.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BIO_should_retry.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_BLINDING_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_CTX_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_CTX_start.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_add.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_add_word.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_bn2bin.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_cmp.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_copy.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_generate_prime.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_mod_inverse.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_num_bytes.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_rand.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_set_bit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_swap.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/BN_zero.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/CONF_modules_free.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/CONF_modules_load_file.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_generate_key.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_generate_parameters.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_set_method.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DH_size.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_SIG_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_do_sign.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_dup_DH.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_generate_key.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_generate_parameters.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_set_method.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_sign.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/DSA_size.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_GET_LIB.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_clear_error.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_error_string.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_get_error.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_load_strings.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_print_errors.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_put_error.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_remove_state.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ERR_set_mark.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_BytesToKey.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_DigestInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_EncryptInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_OpenInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_PKEY_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_SealInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_SignInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/EVP_VerifyInit.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OBJ_nid2obj.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OPENSSL_Applink.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OPENSSL_config.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS12_create.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS12_parse.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS7_decrypt.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS7_encrypt.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS7_sign.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/PKCS7_verify.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_add.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_bytes.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_cleanup.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_egd.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_load_file.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RAND_set_rand_method.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_blinding_on.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_check_key.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_generate_key.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_print.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_private_encrypt.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_public_encrypt.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_set_method.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_sign.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/RSA_size.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/X509_NAME_print_ex.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/X509_new.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/bio.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/blowfish.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/bn.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/bn_internal.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/buffer.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/crypto.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_DHparams.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509_CRL.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509_NAME.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509_REQ.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/d2i_X509_SIG.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/des.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/dh.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/dsa.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ecdsa.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/engine.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/err.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/evp.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/hmac.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/lh_stats.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/lhash.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/md5.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/mdc2.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/pem.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/rand.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/rc4.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ripemd.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/rsa.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/sha.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/threads.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ui.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/ui_compat.3 user/attilio/vmc-playground/secure/lib/libcrypto/man/x509.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CIPHER_get_name.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_add_session.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_ctrl.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_free.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_new.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_sess_number.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_sessions.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_mode.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_options.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_timeout.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_set_verify.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_CTX_use_certificate.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_SESSION_free.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_SESSION_get_time.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_accept.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_alert_type_string.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_clear.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_connect.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_do_handshake.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_free.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_SSL_CTX.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_ciphers.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_client_CA_list.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_current_cipher.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_default_timeout.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_error.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_ex_new_index.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_fd.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_peer_certificate.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_rbio.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_session.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_verify_result.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_get_version.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_library_init.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_load_client_CA_file.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_new.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_pending.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_read.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_rstate_string.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_session_reused.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_bio.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_connect_state.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_fd.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_session.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_shutdown.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_set_verify_result.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_shutdown.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_state_string.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_want.3 user/attilio/vmc-playground/secure/lib/libssl/man/SSL_write.3 user/attilio/vmc-playground/secure/lib/libssl/man/d2i_SSL_SESSION.3 user/attilio/vmc-playground/secure/lib/libssl/man/ssl.3 user/attilio/vmc-playground/secure/usr.bin/openssl/man/CA.pl.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/asn1parse.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/ca.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/ciphers.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/crl.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/crl2pkcs7.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/dgst.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/dhparam.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/dsa.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/dsaparam.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/ec.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/ecparam.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/enc.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/errstr.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/gendsa.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/genrsa.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/nseq.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/ocsp.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/openssl.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/passwd.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/pkcs12.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/pkcs7.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/pkcs8.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/rand.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/req.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/rsa.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/rsautl.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/s_client.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/s_server.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/s_time.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/sess_id.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/smime.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/speed.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/spkac.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/verify.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/version.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/x509.1 user/attilio/vmc-playground/secure/usr.bin/openssl/man/x509v3_config.1 user/attilio/vmc-playground/share/examples/csh/dot.cshrc user/attilio/vmc-playground/share/examples/etc/README.examples user/attilio/vmc-playground/share/examples/mdoc/example.4 user/attilio/vmc-playground/share/examples/pf/faq-example1 user/attilio/vmc-playground/share/examples/pf/pf.conf user/attilio/vmc-playground/share/examples/scsi_target/scsi_target.c user/attilio/vmc-playground/share/man/man4/Makefile user/attilio/vmc-playground/share/man/man4/acpi_asus.4 user/attilio/vmc-playground/share/man/man4/acpi_ibm.4 user/attilio/vmc-playground/share/man/man4/ahci.4 user/attilio/vmc-playground/share/man/man4/ata.4 user/attilio/vmc-playground/share/man/man4/cpufreq.4 user/attilio/vmc-playground/share/man/man4/hptrr.4 user/attilio/vmc-playground/share/man/man4/ip.4 user/attilio/vmc-playground/share/man/man4/mac_lomac.4 user/attilio/vmc-playground/share/man/man4/mps.4 user/attilio/vmc-playground/share/man/man4/ng_netflow.4 user/attilio/vmc-playground/share/man/man5/passwd.5 user/attilio/vmc-playground/share/man/man5/src.conf.5 user/attilio/vmc-playground/share/man/man7/build.7 user/attilio/vmc-playground/share/man/man9/cd.9 user/attilio/vmc-playground/share/man/man9/disk.9 user/attilio/vmc-playground/share/man/man9/locking.9 user/attilio/vmc-playground/share/man/man9/rmlock.9 user/attilio/vmc-playground/share/man/man9/rtalloc.9 user/attilio/vmc-playground/share/misc/committers-doc.dot user/attilio/vmc-playground/share/misc/committers-ports.dot user/attilio/vmc-playground/share/misc/committers-src.dot user/attilio/vmc-playground/share/misc/organization.dot user/attilio/vmc-playground/share/mk/bsd.crunchgen.mk user/attilio/vmc-playground/share/mk/bsd.lib.mk user/attilio/vmc-playground/share/mk/bsd.own.mk user/attilio/vmc-playground/share/syscons/keymaps/INDEX.keymaps user/attilio/vmc-playground/sys/amd64/acpica/acpi_wakecode.S user/attilio/vmc-playground/sys/amd64/amd64/cpu_switch.S user/attilio/vmc-playground/sys/amd64/amd64/db_disasm.c user/attilio/vmc-playground/sys/amd64/amd64/fpu.c user/attilio/vmc-playground/sys/amd64/amd64/genassym.c user/attilio/vmc-playground/sys/amd64/amd64/mp_machdep.c user/attilio/vmc-playground/sys/amd64/amd64/pmap.c user/attilio/vmc-playground/sys/amd64/amd64/trap.c user/attilio/vmc-playground/sys/amd64/conf/GENERIC user/attilio/vmc-playground/sys/amd64/include/cpufunc.h user/attilio/vmc-playground/sys/amd64/include/elf.h user/attilio/vmc-playground/sys/amd64/include/pcb.h user/attilio/vmc-playground/sys/amd64/include/pmap.h user/attilio/vmc-playground/sys/amd64/include/smp.h user/attilio/vmc-playground/sys/arm/arm/bcopyinout_xscale.S user/attilio/vmc-playground/sys/arm/arm/bootconfig.c user/attilio/vmc-playground/sys/arm/arm/busdma_machdep.c user/attilio/vmc-playground/sys/arm/arm/cpufunc.c user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_arm10.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_arm11.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_arm7tdmi.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_arm8.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_arm9.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_armv4.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_armv5.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_sa1.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_xscale.S user/attilio/vmc-playground/sys/arm/arm/cpufunc_asm_xscale_c3.S user/attilio/vmc-playground/sys/arm/arm/db_disasm.c user/attilio/vmc-playground/sys/arm/arm/db_interface.c user/attilio/vmc-playground/sys/arm/arm/db_trace.c user/attilio/vmc-playground/sys/arm/arm/disassem.c user/attilio/vmc-playground/sys/arm/arm/dump_machdep.c user/attilio/vmc-playground/sys/arm/arm/elf_trampoline.c user/attilio/vmc-playground/sys/arm/arm/exception.S user/attilio/vmc-playground/sys/arm/arm/gdb_machdep.c user/attilio/vmc-playground/sys/arm/arm/in_cksum.c user/attilio/vmc-playground/sys/arm/arm/intr.c user/attilio/vmc-playground/sys/arm/arm/irq_dispatch.S user/attilio/vmc-playground/sys/arm/arm/machdep.c user/attilio/vmc-playground/sys/arm/arm/mem.c user/attilio/vmc-playground/sys/arm/arm/nexus.c user/attilio/vmc-playground/sys/arm/arm/pmap.c user/attilio/vmc-playground/sys/arm/arm/support.S user/attilio/vmc-playground/sys/arm/arm/swtch.S user/attilio/vmc-playground/sys/arm/arm/sys_machdep.c user/attilio/vmc-playground/sys/arm/arm/trap.c user/attilio/vmc-playground/sys/arm/arm/undefined.c user/attilio/vmc-playground/sys/arm/arm/vectors.S user/attilio/vmc-playground/sys/arm/arm/vm_machdep.c user/attilio/vmc-playground/sys/arm/at91/at91.c user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c user/attilio/vmc-playground/sys/arm/at91/at91_mci.c user/attilio/vmc-playground/sys/arm/at91/at91_pio.c user/attilio/vmc-playground/sys/arm/at91/at91_pio_rm9200.h user/attilio/vmc-playground/sys/arm/at91/at91_pit.c user/attilio/vmc-playground/sys/arm/at91/at91_pitreg.h user/attilio/vmc-playground/sys/arm/at91/at91_pmcvar.h user/attilio/vmc-playground/sys/arm/at91/at91_reset.S user/attilio/vmc-playground/sys/arm/at91/at91_rst.c user/attilio/vmc-playground/sys/arm/at91/at91_spi.c user/attilio/vmc-playground/sys/arm/at91/at91_ssc.c user/attilio/vmc-playground/sys/arm/at91/at91_st.c user/attilio/vmc-playground/sys/arm/at91/at91_twi.c user/attilio/vmc-playground/sys/arm/at91/at91_wdtreg.h user/attilio/vmc-playground/sys/arm/at91/at91board.h user/attilio/vmc-playground/sys/arm/at91/at91reg.h user/attilio/vmc-playground/sys/arm/at91/at91rm9200.c user/attilio/vmc-playground/sys/arm/at91/at91rm92reg.h user/attilio/vmc-playground/sys/arm/at91/at91sam9260.c user/attilio/vmc-playground/sys/arm/at91/at91sam9260reg.h user/attilio/vmc-playground/sys/arm/at91/at91sam9g20.c user/attilio/vmc-playground/sys/arm/at91/at91sam9g20reg.h user/attilio/vmc-playground/sys/arm/at91/at91var.h user/attilio/vmc-playground/sys/arm/at91/board_bwct.c user/attilio/vmc-playground/sys/arm/at91/board_ethernut5.c user/attilio/vmc-playground/sys/arm/at91/board_hl200.c user/attilio/vmc-playground/sys/arm/at91/board_hl201.c user/attilio/vmc-playground/sys/arm/at91/board_kb920x.c user/attilio/vmc-playground/sys/arm/at91/board_qila9g20.c user/attilio/vmc-playground/sys/arm/at91/board_sam9g20ek.c user/attilio/vmc-playground/sys/arm/at91/board_tsc4370.c user/attilio/vmc-playground/sys/arm/at91/files.at91 user/attilio/vmc-playground/sys/arm/at91/if_macb.c user/attilio/vmc-playground/sys/arm/at91/std.at91 user/attilio/vmc-playground/sys/arm/at91/std.at91sam9 user/attilio/vmc-playground/sys/arm/at91/std.ethernut5 user/attilio/vmc-playground/sys/arm/at91/std.hl201 user/attilio/vmc-playground/sys/arm/at91/std.qila9g20 user/attilio/vmc-playground/sys/arm/at91/std.sam9g20ek user/attilio/vmc-playground/sys/arm/at91/uart_cpu_at91rm9200usart.c user/attilio/vmc-playground/sys/arm/conf/AVILA user/attilio/vmc-playground/sys/arm/conf/BWCT user/attilio/vmc-playground/sys/arm/conf/CAMBRIA user/attilio/vmc-playground/sys/arm/conf/CNS11XXNAS user/attilio/vmc-playground/sys/arm/conf/CRB user/attilio/vmc-playground/sys/arm/conf/EP80219 user/attilio/vmc-playground/sys/arm/conf/GUMSTIX user/attilio/vmc-playground/sys/arm/conf/GUMSTIX-QEMU user/attilio/vmc-playground/sys/arm/conf/HL200 user/attilio/vmc-playground/sys/arm/conf/HL201 user/attilio/vmc-playground/sys/arm/conf/IQ31244 user/attilio/vmc-playground/sys/arm/conf/KB920X user/attilio/vmc-playground/sys/arm/conf/LN2410SBC user/attilio/vmc-playground/sys/arm/conf/NSLU user/attilio/vmc-playground/sys/arm/conf/QILA9G20 user/attilio/vmc-playground/sys/arm/conf/QILA9G20.hints user/attilio/vmc-playground/sys/arm/conf/SAM9G20EK user/attilio/vmc-playground/sys/arm/conf/SAM9G20EK.hints user/attilio/vmc-playground/sys/arm/conf/SIMICS user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c user/attilio/vmc-playground/sys/arm/include/_stdint.h user/attilio/vmc-playground/sys/arm/include/_types.h user/attilio/vmc-playground/sys/arm/include/armreg.h user/attilio/vmc-playground/sys/arm/include/asmacros.h user/attilio/vmc-playground/sys/arm/include/atomic.h user/attilio/vmc-playground/sys/arm/include/blockio.h user/attilio/vmc-playground/sys/arm/include/cpufunc.h user/attilio/vmc-playground/sys/arm/include/elf.h user/attilio/vmc-playground/sys/arm/include/endian.h user/attilio/vmc-playground/sys/arm/include/fdt.h user/attilio/vmc-playground/sys/arm/include/fp.h user/attilio/vmc-playground/sys/arm/include/frame.h user/attilio/vmc-playground/sys/arm/include/ieee.h user/attilio/vmc-playground/sys/arm/include/in_cksum.h user/attilio/vmc-playground/sys/arm/include/intr.h user/attilio/vmc-playground/sys/arm/include/katelib.h user/attilio/vmc-playground/sys/arm/include/machdep.h user/attilio/vmc-playground/sys/arm/include/param.h user/attilio/vmc-playground/sys/arm/include/pmap.h user/attilio/vmc-playground/sys/arm/include/pmc_mdep.h user/attilio/vmc-playground/sys/arm/include/profile.h user/attilio/vmc-playground/sys/arm/include/pte.h user/attilio/vmc-playground/sys/arm/include/resource.h user/attilio/vmc-playground/sys/arm/include/stack.h user/attilio/vmc-playground/sys/arm/include/vmparam.h user/attilio/vmc-playground/sys/arm/mv/mv_machdep.c user/attilio/vmc-playground/sys/arm/mv/mvwin.h user/attilio/vmc-playground/sys/arm/mv/std.mv user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c2410reg.h user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c2440reg.h user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0.c user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0reg.h user/attilio/vmc-playground/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0.c user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_gpioreg.h user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_io_asm.S user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_irq.S user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_ost.c user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_ostreg.h user/attilio/vmc-playground/sys/arm/sa11x0/sa11x0_var.h user/attilio/vmc-playground/sys/arm/sa11x0/uart_dev_sa1110.c user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_aau.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_dma.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_intr.h user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_pci.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_space.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321_timer.c user/attilio/vmc-playground/sys/arm/xscale/i80321/i80321reg.h user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_7seg.c user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i80321/iq80321.c user/attilio/vmc-playground/sys/arm/xscale/i80321/obio.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/i81342.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/i81342_mcu.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/i81342_pci.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/i81342_space.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/i81342reg.h user/attilio/vmc-playground/sys/arm/xscale/i8134x/iq81342_7seg.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/obio.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/uart_cpu_i81342.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_ata.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_gpio.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/cambria_exp_space.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/if_npe.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/if_npereg.h user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_iic.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_npe.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_npereg.h user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_pci.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_pci_space.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_qmgr.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425_qmgr.h user/attilio/vmc-playground/sys/arm/xscale/ixp425/ixp425reg.h user/attilio/vmc-playground/sys/arm/xscale/pxa/if_smc_smi.c user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmc-playground/sys/arm/xscale/pxa/pxareg.h user/attilio/vmc-playground/sys/arm/xscale/std.xscale user/attilio/vmc-playground/sys/boot/arm/at91/boot0spi/main.c user/attilio/vmc-playground/sys/boot/arm/at91/libat91/Makefile user/attilio/vmc-playground/sys/boot/arm/at91/linker.cfg user/attilio/vmc-playground/sys/boot/common/load_elf.c user/attilio/vmc-playground/sys/boot/common/load_elf_obj.c user/attilio/vmc-playground/sys/boot/userboot/libstand/Makefile user/attilio/vmc-playground/sys/boot/zfs/zfsimpl.c user/attilio/vmc-playground/sys/cam/ata/ata_da.c user/attilio/vmc-playground/sys/cam/ata/ata_xpt.c user/attilio/vmc-playground/sys/cam/cam.h user/attilio/vmc-playground/sys/cam/cam_periph.c user/attilio/vmc-playground/sys/cam/cam_periph.h user/attilio/vmc-playground/sys/cam/cam_xpt.c user/attilio/vmc-playground/sys/cam/cam_xpt_periph.h user/attilio/vmc-playground/sys/cam/ctl/ctl.c user/attilio/vmc-playground/sys/cam/ctl/ctl_backend.c user/attilio/vmc-playground/sys/cam/ctl/ctl_frontend_cam_sim.c user/attilio/vmc-playground/sys/cam/ctl/ctl_frontend_internal.c user/attilio/vmc-playground/sys/cam/ctl/scsi_ctl.c user/attilio/vmc-playground/sys/cam/scsi/scsi_all.c user/attilio/vmc-playground/sys/cam/scsi/scsi_all.h user/attilio/vmc-playground/sys/cam/scsi/scsi_cd.c user/attilio/vmc-playground/sys/cam/scsi/scsi_ch.c user/attilio/vmc-playground/sys/cam/scsi/scsi_da.c user/attilio/vmc-playground/sys/cam/scsi/scsi_da.h user/attilio/vmc-playground/sys/cam/scsi/scsi_enc.c user/attilio/vmc-playground/sys/cam/scsi/scsi_pass.c user/attilio/vmc-playground/sys/cam/scsi/scsi_xpt.c user/attilio/vmc-playground/sys/cddl/boot/zfs/zfsimpl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/Makefile.files user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/uts/common/sys/nvpair.h user/attilio/vmc-playground/sys/cddl/dev/dtrace/amd64/dis_tables.c user/attilio/vmc-playground/sys/cddl/dev/dtrace/i386/dis_tables.c user/attilio/vmc-playground/sys/compat/linux/linux_file.c user/attilio/vmc-playground/sys/conf/NOTES user/attilio/vmc-playground/sys/conf/files user/attilio/vmc-playground/sys/conf/files.amd64 user/attilio/vmc-playground/sys/conf/files.arm user/attilio/vmc-playground/sys/conf/files.i386 user/attilio/vmc-playground/sys/conf/files.ia64 user/attilio/vmc-playground/sys/conf/files.mips user/attilio/vmc-playground/sys/conf/files.powerpc user/attilio/vmc-playground/sys/conf/files.sparc64 user/attilio/vmc-playground/sys/conf/kern.post.mk user/attilio/vmc-playground/sys/conf/kmod.mk user/attilio/vmc-playground/sys/conf/options user/attilio/vmc-playground/sys/conf/options.arm user/attilio/vmc-playground/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmextern.c user/attilio/vmc-playground/sys/contrib/dev/acpica/common/dmrestag.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslcompile.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslerror.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslfiles.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/asllookup.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslsupport.l user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/dttemplate.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbdisply.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbexec.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/disassembler/dmopcode.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/disassembler/dmwalk.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/dispatcher/dsfield.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evgpe.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evgpeutil.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evxfgpe.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exconfig.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utmisc.c user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acdebug.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acdisasm.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/aclocal.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acpredef.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acutils.h user/attilio/vmc-playground/sys/contrib/rdma/krping/krping.c user/attilio/vmc-playground/sys/contrib/rdma/krping/krping.h user/attilio/vmc-playground/sys/contrib/rdma/krping/krping_dev.c user/attilio/vmc-playground/sys/contrib/rdma/rdma_addr.c user/attilio/vmc-playground/sys/contrib/rdma/rdma_cache.c user/attilio/vmc-playground/sys/dev/aac/aac_disk.c user/attilio/vmc-playground/sys/dev/acpi_support/acpi_ibm.c user/attilio/vmc-playground/sys/dev/acpica/acpi_cpu.c user/attilio/vmc-playground/sys/dev/acpica/acpi_powerres.c user/attilio/vmc-playground/sys/dev/acpica/acpi_video.c user/attilio/vmc-playground/sys/dev/acpica/acpivar.h user/attilio/vmc-playground/sys/dev/adb/adb_kbd.c user/attilio/vmc-playground/sys/dev/agp/agp.c user/attilio/vmc-playground/sys/dev/agp/agp_i810.c user/attilio/vmc-playground/sys/dev/ahci/ahci.c user/attilio/vmc-playground/sys/dev/aic7xxx/aic79xx.c user/attilio/vmc-playground/sys/dev/aic7xxx/aic79xx_osm.c user/attilio/vmc-playground/sys/dev/aic7xxx/aic7xxx.c user/attilio/vmc-playground/sys/dev/aic7xxx/aic7xxx_osm.c user/attilio/vmc-playground/sys/dev/ata/ata-all.c user/attilio/vmc-playground/sys/dev/ata/chipsets/ata-ite.c user/attilio/vmc-playground/sys/dev/ata/chipsets/ata-via.c user/attilio/vmc-playground/sys/dev/ath/ah_osdep.c user/attilio/vmc-playground/sys/dev/ath/ah_osdep.h user/attilio/vmc-playground/sys/dev/ath/ath_dfs/null/dfs_null.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah_debug.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah_desc.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah_internal.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar9002/ar9285.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar9002/ar9287_reset.c user/attilio/vmc-playground/sys/dev/ath/ath_rate/amrr/amrr.c user/attilio/vmc-playground/sys/dev/ath/ath_rate/onoe/onoe.c user/attilio/vmc-playground/sys/dev/ath/ath_rate/sample/sample.c user/attilio/vmc-playground/sys/dev/ath/if_ath.c user/attilio/vmc-playground/sys/dev/ath/if_ath_ahb.c user/attilio/vmc-playground/sys/dev/ath/if_ath_debug.c user/attilio/vmc-playground/sys/dev/ath/if_ath_led.c user/attilio/vmc-playground/sys/dev/ath/if_ath_misc.h user/attilio/vmc-playground/sys/dev/ath/if_ath_rx.c user/attilio/vmc-playground/sys/dev/ath/if_ath_rx.h user/attilio/vmc-playground/sys/dev/ath/if_ath_sysctl.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx.h user/attilio/vmc-playground/sys/dev/ath/if_ath_tx_ht.c user/attilio/vmc-playground/sys/dev/ath/if_athdfs.h user/attilio/vmc-playground/sys/dev/ath/if_athioctl.h user/attilio/vmc-playground/sys/dev/ath/if_athvar.h user/attilio/vmc-playground/sys/dev/atkbdc/atkbdc_isa.c user/attilio/vmc-playground/sys/dev/cxgb/common/cxgb_ctl_defs.h user/attilio/vmc-playground/sys/dev/cxgb/cxgb_adapter.h user/attilio/vmc-playground/sys/dev/cxgb/cxgb_main.c user/attilio/vmc-playground/sys/dev/cxgb/cxgb_offload.h user/attilio/vmc-playground/sys/dev/cxgb/cxgb_osdep.h user/attilio/vmc-playground/sys/dev/cxgb/cxgb_sge.c user/attilio/vmc-playground/sys/dev/cxgb/sys/mvec.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_user.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_wr.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_l2t.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_l2t.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_listen.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_toepcb.h user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tom.c user/attilio/vmc-playground/sys/dev/cxgb/ulp/tom/cxgb_tom.h user/attilio/vmc-playground/sys/dev/cxgbe/adapter.h user/attilio/vmc-playground/sys/dev/cxgbe/common/common.h user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_hw.c user/attilio/vmc-playground/sys/dev/cxgbe/common/t4_msg.h user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw_cfg.txt user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt user/attilio/vmc-playground/sys/dev/cxgbe/firmware/t4fw_interface.h user/attilio/vmc-playground/sys/dev/cxgbe/offload.h user/attilio/vmc-playground/sys/dev/cxgbe/osdep.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_l2t.c user/attilio/vmc-playground/sys/dev/cxgbe/t4_l2t.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_main.c user/attilio/vmc-playground/sys/dev/cxgbe/t4_sge.c user/attilio/vmc-playground/sys/dev/drm2/drmP.h user/attilio/vmc-playground/sys/dev/drm2/drm_pciids.h user/attilio/vmc-playground/sys/dev/drm2/i915/i915_gem.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82541.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82543.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82571.c user/attilio/vmc-playground/sys/dev/e1000/e1000_82575.c user/attilio/vmc-playground/sys/dev/e1000/e1000_api.c user/attilio/vmc-playground/sys/dev/e1000/e1000_api.h user/attilio/vmc-playground/sys/dev/e1000/e1000_defines.h user/attilio/vmc-playground/sys/dev/e1000/e1000_hw.h user/attilio/vmc-playground/sys/dev/e1000/e1000_ich8lan.c user/attilio/vmc-playground/sys/dev/e1000/e1000_mac.c user/attilio/vmc-playground/sys/dev/e1000/e1000_mac.h user/attilio/vmc-playground/sys/dev/e1000/e1000_manage.c user/attilio/vmc-playground/sys/dev/e1000/e1000_manage.h user/attilio/vmc-playground/sys/dev/e1000/e1000_phy.c user/attilio/vmc-playground/sys/dev/e1000/e1000_phy.h user/attilio/vmc-playground/sys/dev/e1000/e1000_regs.h user/attilio/vmc-playground/sys/dev/e1000/if_em.c user/attilio/vmc-playground/sys/dev/e1000/if_igb.c user/attilio/vmc-playground/sys/dev/fb/fbreg.h user/attilio/vmc-playground/sys/dev/fdt/fdtbus.c user/attilio/vmc-playground/sys/dev/fdt/simplebus.c user/attilio/vmc-playground/sys/dev/filemon/filemon_wrapper.c user/attilio/vmc-playground/sys/dev/firewire/sbp_targ.c user/attilio/vmc-playground/sys/dev/flash/at45d.c user/attilio/vmc-playground/sys/dev/hptrr/hptrr_osm_bsd.c user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_arm.c user/attilio/vmc-playground/sys/dev/hwpmc/hwpmc_intel.c user/attilio/vmc-playground/sys/dev/isp/isp.c user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.c user/attilio/vmc-playground/sys/dev/isp/isp_freebsd.h user/attilio/vmc-playground/sys/dev/isp/isp_pci.c user/attilio/vmc-playground/sys/dev/isp/ispmbox.h user/attilio/vmc-playground/sys/dev/isp/ispreg.h user/attilio/vmc-playground/sys/dev/isp/ispvar.h user/attilio/vmc-playground/sys/dev/ispfw/asm_2400.h user/attilio/vmc-playground/sys/dev/ispfw/asm_2500.h user/attilio/vmc-playground/sys/dev/iwn/if_iwn.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_82598.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_82598.h user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_82599.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_api.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_api.h user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_common.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_common.h user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_osdep.h user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_phy.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_type.h user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_vf.c user/attilio/vmc-playground/sys/dev/ixgbe/ixgbe_x540.c user/attilio/vmc-playground/sys/dev/ixgbe/ixv.c user/attilio/vmc-playground/sys/dev/md/md.c user/attilio/vmc-playground/sys/dev/mfi/mfi.c user/attilio/vmc-playground/sys/dev/mfi/mfi_tbolt.c user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_cnfg.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_hbd.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_history.txt user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_init.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_ioc.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_ra.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_raid.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_sas.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_targ.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_tool.h user/attilio/vmc-playground/sys/dev/mps/mpi/mpi2_type.h user/attilio/vmc-playground/sys/dev/mps/mps.c user/attilio/vmc-playground/sys/dev/mps/mps_config.c user/attilio/vmc-playground/sys/dev/mps/mps_ioctl.h user/attilio/vmc-playground/sys/dev/mps/mps_mapping.c user/attilio/vmc-playground/sys/dev/mps/mps_mapping.h user/attilio/vmc-playground/sys/dev/mps/mps_sas.c user/attilio/vmc-playground/sys/dev/mps/mps_sas.h user/attilio/vmc-playground/sys/dev/mps/mps_sas_lsi.c user/attilio/vmc-playground/sys/dev/mps/mps_user.c user/attilio/vmc-playground/sys/dev/mps/mpsvar.h user/attilio/vmc-playground/sys/dev/mpt/mpt_cam.c user/attilio/vmc-playground/sys/dev/mvs/mvs.c user/attilio/vmc-playground/sys/dev/mvs/mvs.h user/attilio/vmc-playground/sys/dev/mvs/mvs_soc.c user/attilio/vmc-playground/sys/dev/nand/nand.c user/attilio/vmc-playground/sys/dev/nand/nandsim.c user/attilio/vmc-playground/sys/dev/pccard/pccard.c user/attilio/vmc-playground/sys/dev/pccard/pccardvarp.h user/attilio/vmc-playground/sys/dev/pci/pci_pci.c user/attilio/vmc-playground/sys/dev/puc/puc_cfg.h user/attilio/vmc-playground/sys/dev/puc/pucdata.c user/attilio/vmc-playground/sys/dev/re/if_re.c user/attilio/vmc-playground/sys/dev/siis/siis.c user/attilio/vmc-playground/sys/dev/sio/sio.c user/attilio/vmc-playground/sys/dev/sound/pci/hda/hdaa.c user/attilio/vmc-playground/sys/dev/sound/pci/hda/hdaa_patches.c user/attilio/vmc-playground/sys/dev/sound/pci/hdspe.c user/attilio/vmc-playground/sys/dev/sym/sym_conf.h user/attilio/vmc-playground/sys/dev/sym/sym_hipd.c user/attilio/vmc-playground/sys/dev/twa/tw_osl_cam.c user/attilio/vmc-playground/sys/dev/usb/controller/ehci_pci.c user/attilio/vmc-playground/sys/dev/usb/controller/ohci_pci.c user/attilio/vmc-playground/sys/dev/usb/controller/xhci_pci.c user/attilio/vmc-playground/sys/dev/usb/quirk/usb_quirk.c user/attilio/vmc-playground/sys/dev/usb/serial/u3g.c user/attilio/vmc-playground/sys/dev/usb/serial/uftdi.c user/attilio/vmc-playground/sys/dev/usb/serial/uftdi_reg.h user/attilio/vmc-playground/sys/dev/usb/usbdevs user/attilio/vmc-playground/sys/dev/viawd/viawd.c user/attilio/vmc-playground/sys/dev/virtio/balloon/virtio_balloon.h user/attilio/vmc-playground/sys/dev/virtio/block/virtio_blk.h user/attilio/vmc-playground/sys/dev/virtio/network/virtio_net.h user/attilio/vmc-playground/sys/dev/virtio/virtio.h user/attilio/vmc-playground/sys/dev/virtio/virtio_ring.h user/attilio/vmc-playground/sys/dev/virtio/virtqueue.h user/attilio/vmc-playground/sys/dev/xen/balloon/balloon.c user/attilio/vmc-playground/sys/dev/xen/blkfront/blkfront.c user/attilio/vmc-playground/sys/fs/devfs/devfs_vnops.c user/attilio/vmc-playground/sys/fs/ext2fs/ext2_vfsops.c user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clbio.c user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clnode.c user/attilio/vmc-playground/sys/fs/nfsclient/nfs_clvfsops.c user/attilio/vmc-playground/sys/geom/bde/g_bde.c user/attilio/vmc-playground/sys/geom/eli/g_eli.c user/attilio/vmc-playground/sys/geom/eli/g_eli.h user/attilio/vmc-playground/sys/geom/eli/g_eli_ctl.c user/attilio/vmc-playground/sys/geom/eli/g_eli_key.c user/attilio/vmc-playground/sys/geom/eli/g_eli_key_cache.c user/attilio/vmc-playground/sys/geom/gate/g_gate.c user/attilio/vmc-playground/sys/geom/gate/g_gate.h user/attilio/vmc-playground/sys/geom/geom.h user/attilio/vmc-playground/sys/geom/geom_aes.c user/attilio/vmc-playground/sys/geom/geom_dev.c user/attilio/vmc-playground/sys/geom/geom_disk.c user/attilio/vmc-playground/sys/geom/geom_disk.h user/attilio/vmc-playground/sys/geom/geom_map.c user/attilio/vmc-playground/sys/geom/geom_slice.c user/attilio/vmc-playground/sys/geom/geom_subr.c user/attilio/vmc-playground/sys/geom/mirror/g_mirror.c user/attilio/vmc-playground/sys/geom/mirror/g_mirror.h user/attilio/vmc-playground/sys/geom/mountver/g_mountver.c user/attilio/vmc-playground/sys/geom/nop/g_nop.c user/attilio/vmc-playground/sys/geom/nop/g_nop.h user/attilio/vmc-playground/sys/geom/part/g_part_gpt.c user/attilio/vmc-playground/sys/geom/uncompress/g_uncompress.c user/attilio/vmc-playground/sys/geom/uzip/g_uzip.c user/attilio/vmc-playground/sys/i386/acpica/acpi_wakecode.S user/attilio/vmc-playground/sys/i386/conf/GENERIC user/attilio/vmc-playground/sys/i386/conf/XEN user/attilio/vmc-playground/sys/i386/i386/elf_machdep.c user/attilio/vmc-playground/sys/i386/i386/machdep.c user/attilio/vmc-playground/sys/i386/i386/mp_machdep.c user/attilio/vmc-playground/sys/i386/i386/pmap.c user/attilio/vmc-playground/sys/i386/i386/swtch.s user/attilio/vmc-playground/sys/i386/i386/vm86.c user/attilio/vmc-playground/sys/i386/include/elf.h user/attilio/vmc-playground/sys/i386/include/pcb.h user/attilio/vmc-playground/sys/i386/include/pmap.h user/attilio/vmc-playground/sys/i386/include/smp.h user/attilio/vmc-playground/sys/i386/include/vmparam.h user/attilio/vmc-playground/sys/ia64/ia64/busdma_machdep.c user/attilio/vmc-playground/sys/ia64/ia64/machdep.c user/attilio/vmc-playground/sys/ia64/ia64/pmap.c user/attilio/vmc-playground/sys/ia64/include/_stdint.h user/attilio/vmc-playground/sys/ia64/include/_types.h user/attilio/vmc-playground/sys/ia64/include/elf.h user/attilio/vmc-playground/sys/ia64/include/md_var.h user/attilio/vmc-playground/sys/ia64/include/param.h user/attilio/vmc-playground/sys/ia64/include/pmap.h user/attilio/vmc-playground/sys/kern/imgact_aout.c user/attilio/vmc-playground/sys/kern/imgact_elf.c user/attilio/vmc-playground/sys/kern/imgact_gzip.c user/attilio/vmc-playground/sys/kern/kern_descrip.c user/attilio/vmc-playground/sys/kern/kern_event.c user/attilio/vmc-playground/sys/kern/kern_exec.c user/attilio/vmc-playground/sys/kern/kern_fork.c user/attilio/vmc-playground/sys/kern/kern_malloc.c user/attilio/vmc-playground/sys/kern/kern_tc.c user/attilio/vmc-playground/sys/kern/subr_firmware.c user/attilio/vmc-playground/sys/kern/subr_smp.c user/attilio/vmc-playground/sys/kern/subr_trap.c user/attilio/vmc-playground/sys/kern/subr_witness.c user/attilio/vmc-playground/sys/kern/sys_capability.c user/attilio/vmc-playground/sys/kern/sys_generic.c user/attilio/vmc-playground/sys/kern/sys_procdesc.c user/attilio/vmc-playground/sys/kern/tty.c user/attilio/vmc-playground/sys/kern/uipc_socket.c user/attilio/vmc-playground/sys/kern/uipc_syscalls.c user/attilio/vmc-playground/sys/kern/uipc_usrreq.c user/attilio/vmc-playground/sys/kern/vfs_default.c user/attilio/vmc-playground/sys/kern/vfs_syscalls.c user/attilio/vmc-playground/sys/kern/vfs_vnops.c user/attilio/vmc-playground/sys/libkern/iconv.c user/attilio/vmc-playground/sys/mips/cavium/uart_bus_octeonusart.c user/attilio/vmc-playground/sys/mips/include/_stdint.h user/attilio/vmc-playground/sys/mips/include/_types.h user/attilio/vmc-playground/sys/mips/include/elf.h user/attilio/vmc-playground/sys/mips/include/pmap.h user/attilio/vmc-playground/sys/mips/mips/pmap.c user/attilio/vmc-playground/sys/mips/rmi/rootfs_list.txt user/attilio/vmc-playground/sys/modules/Makefile user/attilio/vmc-playground/sys/modules/acpi/Makefile user/attilio/vmc-playground/sys/modules/ath/Makefile user/attilio/vmc-playground/sys/modules/cxgb/Makefile user/attilio/vmc-playground/sys/modules/cxgb/cxgb/Makefile user/attilio/vmc-playground/sys/modules/cxgb/iw_cxgb/Makefile user/attilio/vmc-playground/sys/modules/cxgb/tom/Makefile user/attilio/vmc-playground/sys/modules/cxgbe/Makefile user/attilio/vmc-playground/sys/modules/cxgbe/if_cxgbe/Makefile user/attilio/vmc-playground/sys/modules/em/Makefile user/attilio/vmc-playground/sys/modules/igb/Makefile user/attilio/vmc-playground/sys/modules/rdma/krping/Makefile user/attilio/vmc-playground/sys/modules/zfs/Makefile user/attilio/vmc-playground/sys/net/bpf.c user/attilio/vmc-playground/sys/net/flowtable.c user/attilio/vmc-playground/sys/net/if.h user/attilio/vmc-playground/sys/net/if_bridge.c user/attilio/vmc-playground/sys/net/if_gif.c user/attilio/vmc-playground/sys/net/if_lagg.c user/attilio/vmc-playground/sys/net/if_tap.c user/attilio/vmc-playground/sys/net/if_var.h user/attilio/vmc-playground/sys/net/if_vlan.c user/attilio/vmc-playground/sys/net/route.h user/attilio/vmc-playground/sys/net80211/_ieee80211.h user/attilio/vmc-playground/sys/net80211/ieee80211_output.c user/attilio/vmc-playground/sys/net80211/ieee80211_radiotap.c user/attilio/vmc-playground/sys/net80211/ieee80211_var.h user/attilio/vmc-playground/sys/netgraph/netflow/netflow.c user/attilio/vmc-playground/sys/netgraph/netflow/netflow_v9.c user/attilio/vmc-playground/sys/netgraph/netflow/ng_netflow.c user/attilio/vmc-playground/sys/netgraph/netflow/ng_netflow.h user/attilio/vmc-playground/sys/netinet/icmp_var.h user/attilio/vmc-playground/sys/netinet/if_ether.c user/attilio/vmc-playground/sys/netinet/if_ether.h user/attilio/vmc-playground/sys/netinet/igmp.c user/attilio/vmc-playground/sys/netinet/in.c user/attilio/vmc-playground/sys/netinet/in.h user/attilio/vmc-playground/sys/netinet/in_pcb.c user/attilio/vmc-playground/sys/netinet/in_pcb.h user/attilio/vmc-playground/sys/netinet/ip_icmp.c user/attilio/vmc-playground/sys/netinet/ip_input.c user/attilio/vmc-playground/sys/netinet/ip_mroute.c user/attilio/vmc-playground/sys/netinet/ip_mroute.h user/attilio/vmc-playground/sys/netinet/ip_output.c user/attilio/vmc-playground/sys/netinet/ipfw/ip_dummynet.c user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_table.c user/attilio/vmc-playground/sys/netinet/libalias/libalias.3 user/attilio/vmc-playground/sys/netinet/sctp_asconf.c user/attilio/vmc-playground/sys/netinet/sctp_asconf.h user/attilio/vmc-playground/sys/netinet/sctp_bsd_addr.c user/attilio/vmc-playground/sys/netinet/sctp_bsd_addr.h user/attilio/vmc-playground/sys/netinet/sctp_indata.c user/attilio/vmc-playground/sys/netinet/sctp_indata.h user/attilio/vmc-playground/sys/netinet/sctp_input.c user/attilio/vmc-playground/sys/netinet/sctp_input.h user/attilio/vmc-playground/sys/netinet/sctp_os_bsd.h user/attilio/vmc-playground/sys/netinet/sctp_output.c user/attilio/vmc-playground/sys/netinet/sctp_output.h user/attilio/vmc-playground/sys/netinet/sctp_pcb.c user/attilio/vmc-playground/sys/netinet/sctp_pcb.h user/attilio/vmc-playground/sys/netinet/sctp_sysctl.c user/attilio/vmc-playground/sys/netinet/sctp_sysctl.h user/attilio/vmc-playground/sys/netinet/sctp_usrreq.c user/attilio/vmc-playground/sys/netinet/sctputil.c user/attilio/vmc-playground/sys/netinet/sctputil.h user/attilio/vmc-playground/sys/netinet/tcp_hostcache.c user/attilio/vmc-playground/sys/netinet/tcp_input.c user/attilio/vmc-playground/sys/netinet/tcp_offload.c user/attilio/vmc-playground/sys/netinet/tcp_offload.h user/attilio/vmc-playground/sys/netinet/tcp_output.c user/attilio/vmc-playground/sys/netinet/tcp_subr.c user/attilio/vmc-playground/sys/netinet/tcp_syncache.c user/attilio/vmc-playground/sys/netinet/tcp_syncache.h user/attilio/vmc-playground/sys/netinet/tcp_timer.c user/attilio/vmc-playground/sys/netinet/tcp_usrreq.c user/attilio/vmc-playground/sys/netinet/tcp_var.h user/attilio/vmc-playground/sys/netinet/udp_usrreq.c user/attilio/vmc-playground/sys/netinet6/in6.c user/attilio/vmc-playground/sys/netinet6/in6_src.c user/attilio/vmc-playground/sys/netinet6/ip6_input.c user/attilio/vmc-playground/sys/netinet6/ip6_mroute.c user/attilio/vmc-playground/sys/netinet6/ip6_mroute.h user/attilio/vmc-playground/sys/netinet6/ip6_output.c user/attilio/vmc-playground/sys/netinet6/mld6.c user/attilio/vmc-playground/sys/netinet6/nd6_nbr.c user/attilio/vmc-playground/sys/netinet6/sctp6_usrreq.c user/attilio/vmc-playground/sys/netsmb/smb_dev.c user/attilio/vmc-playground/sys/ofed/drivers/infiniband/core/cma.c user/attilio/vmc-playground/sys/ofed/drivers/infiniband/core/iwcm.c user/attilio/vmc-playground/sys/ofed/include/linux/net.h user/attilio/vmc-playground/sys/ofed/include/linux/workqueue.h user/attilio/vmc-playground/sys/ofed/include/net/netevent.h user/attilio/vmc-playground/sys/ofed/include/rdma/iw_cm.h user/attilio/vmc-playground/sys/powerpc/aim/locore32.S user/attilio/vmc-playground/sys/powerpc/aim/locore64.S user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea.c user/attilio/vmc-playground/sys/powerpc/booke/machdep.c user/attilio/vmc-playground/sys/powerpc/booke/pmap.c user/attilio/vmc-playground/sys/powerpc/booke/trap.c user/attilio/vmc-playground/sys/powerpc/booke/trap_subr.S user/attilio/vmc-playground/sys/powerpc/conf/DEFAULTS user/attilio/vmc-playground/sys/powerpc/conf/GENERIC user/attilio/vmc-playground/sys/powerpc/conf/GENERIC64 user/attilio/vmc-playground/sys/powerpc/include/_stdint.h user/attilio/vmc-playground/sys/powerpc/include/_types.h user/attilio/vmc-playground/sys/powerpc/include/elf.h user/attilio/vmc-playground/sys/powerpc/include/pmap.h user/attilio/vmc-playground/sys/powerpc/mpc85xx/lbc.c user/attilio/vmc-playground/sys/powerpc/mpc85xx/lbc.h user/attilio/vmc-playground/sys/powerpc/mpc85xx/nexus.c user/attilio/vmc-playground/sys/powerpc/powermac/hrowpic.c user/attilio/vmc-playground/sys/sparc64/conf/GENERIC user/attilio/vmc-playground/sys/sparc64/include/_stdint.h user/attilio/vmc-playground/sys/sparc64/include/_types.h user/attilio/vmc-playground/sys/sparc64/include/elf.h user/attilio/vmc-playground/sys/sparc64/include/pmap.h user/attilio/vmc-playground/sys/sparc64/sparc64/pmap.c user/attilio/vmc-playground/sys/sys/_types.h user/attilio/vmc-playground/sys/sys/cdefs.h user/attilio/vmc-playground/sys/sys/file.h user/attilio/vmc-playground/sys/sys/filedesc.h user/attilio/vmc-playground/sys/sys/imgact_aout.h user/attilio/vmc-playground/sys/sys/kernel.h user/attilio/vmc-playground/sys/sys/mdioctl.h user/attilio/vmc-playground/sys/sys/param.h user/attilio/vmc-playground/sys/sys/proc.h user/attilio/vmc-playground/sys/sys/smp.h user/attilio/vmc-playground/sys/sys/stdint.h user/attilio/vmc-playground/sys/sys/sysent.h user/attilio/vmc-playground/sys/sys/vmmeter.h user/attilio/vmc-playground/sys/sys/vnode.h user/attilio/vmc-playground/sys/ufs/ffs/ffs_alloc.c user/attilio/vmc-playground/sys/ufs/ffs/ffs_softdep.c user/attilio/vmc-playground/sys/ufs/ffs/ffs_vnops.c user/attilio/vmc-playground/sys/vm/pmap.h user/attilio/vmc-playground/sys/vm/swap_pager.c user/attilio/vmc-playground/sys/vm/uma_core.c user/attilio/vmc-playground/sys/vm/vm_map.c user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vm_object.h user/attilio/vmc-playground/sys/vm/vm_page.c user/attilio/vmc-playground/sys/vm/vm_page.h user/attilio/vmc-playground/sys/vm/vm_pageout.c user/attilio/vmc-playground/sys/vm/vnode_pager.c user/attilio/vmc-playground/sys/x86/include/_stdint.h user/attilio/vmc-playground/sys/x86/include/_types.h user/attilio/vmc-playground/sys/x86/x86/tsc.c user/attilio/vmc-playground/tools/build/make_check/Makefile user/attilio/vmc-playground/tools/build/mk/OptionalObsoleteFiles.inc user/attilio/vmc-playground/tools/regression/bin/sh/builtins/wait3.0 user/attilio/vmc-playground/tools/regression/filemon/Makefile user/attilio/vmc-playground/tools/regression/pjdfstest/pjdfstest.c user/attilio/vmc-playground/tools/regression/usr.bin/make/common.sh user/attilio/vmc-playground/tools/test/auxinfo/auxinfo.c user/attilio/vmc-playground/tools/tools/ath/Makefile user/attilio/vmc-playground/tools/tools/ath/athdebug/athdebug.c user/attilio/vmc-playground/tools/tools/ath/common/dumpregs_5416.c user/attilio/vmc-playground/tools/tools/net80211/w00t/redir/buddy.c user/attilio/vmc-playground/tools/tools/net80211/wesside/dics/dics.c user/attilio/vmc-playground/tools/tools/net80211/wlanstats/main.c user/attilio/vmc-playground/tools/tools/netmap/bridge.c user/attilio/vmc-playground/tools/tools/netmap/pcap.c user/attilio/vmc-playground/tools/tools/netmap/pkt-gen.c user/attilio/vmc-playground/usr.bin/calendar/calendars/calendar.freebsd user/attilio/vmc-playground/usr.bin/cut/cut.1 user/attilio/vmc-playground/usr.bin/cut/cut.c user/attilio/vmc-playground/usr.bin/find/find.1 user/attilio/vmc-playground/usr.bin/killall/killall.1 user/attilio/vmc-playground/usr.bin/killall/killall.c user/attilio/vmc-playground/usr.bin/less/defines.h user/attilio/vmc-playground/usr.bin/login/login.1 user/attilio/vmc-playground/usr.bin/make/Makefile user/attilio/vmc-playground/usr.bin/makewhatis/makewhatis.c user/attilio/vmc-playground/usr.bin/minigzip/Makefile user/attilio/vmc-playground/usr.bin/mkcsmapper/lex.l user/attilio/vmc-playground/usr.bin/mkesdb/ldef.h user/attilio/vmc-playground/usr.bin/mkesdb/lex.l user/attilio/vmc-playground/usr.bin/netstat/inet.c user/attilio/vmc-playground/usr.bin/passwd/passwd.1 user/attilio/vmc-playground/usr.bin/procstat/procstat_rlimit.c user/attilio/vmc-playground/usr.bin/rlogin/rlogin.1 user/attilio/vmc-playground/usr.bin/rsh/rsh.1 user/attilio/vmc-playground/usr.bin/sockstat/sockstat.c user/attilio/vmc-playground/usr.bin/sort/Makefile user/attilio/vmc-playground/usr.bin/sort/coll.c user/attilio/vmc-playground/usr.bin/sort/file.c user/attilio/vmc-playground/usr.bin/sort/file.h user/attilio/vmc-playground/usr.bin/sort/radixsort.c user/attilio/vmc-playground/usr.bin/sort/sort.1.in user/attilio/vmc-playground/usr.bin/sort/sort.c user/attilio/vmc-playground/usr.bin/sort/sort.h user/attilio/vmc-playground/usr.bin/top/machine.c user/attilio/vmc-playground/usr.bin/top/top.local.1 user/attilio/vmc-playground/usr.bin/touch/touch.1 user/attilio/vmc-playground/usr.bin/touch/touch.c user/attilio/vmc-playground/usr.bin/xinstall/xinstall.c user/attilio/vmc-playground/usr.sbin/Makefile user/attilio/vmc-playground/usr.sbin/acpi/iasl/Makefile user/attilio/vmc-playground/usr.sbin/ancontrol/ancontrol.c user/attilio/vmc-playground/usr.sbin/apmd/apmd.8 user/attilio/vmc-playground/usr.sbin/bsdinstall/partedit/diskeditor.c user/attilio/vmc-playground/usr.sbin/bsdinstall/partedit/part_wizard.c user/attilio/vmc-playground/usr.sbin/cron/crontab/crontab.c user/attilio/vmc-playground/usr.sbin/crunch/crunchgen/crunched_main.c user/attilio/vmc-playground/usr.sbin/crunch/crunchgen/crunchgen.c user/attilio/vmc-playground/usr.sbin/crunch/crunchide/crunchide.c user/attilio/vmc-playground/usr.sbin/crunch/crunchide/exec_elf32.c user/attilio/vmc-playground/usr.sbin/ctladm/ctladm.c user/attilio/vmc-playground/usr.sbin/flowctl/flowctl.8 user/attilio/vmc-playground/usr.sbin/flowctl/flowctl.c user/attilio/vmc-playground/usr.sbin/ifmcstat/ifmcstat.c user/attilio/vmc-playground/usr.sbin/jail/jail.c user/attilio/vmc-playground/usr.sbin/kbdmap/kbdmap.c user/attilio/vmc-playground/usr.sbin/kldxref/ef.c user/attilio/vmc-playground/usr.sbin/mfiutil/Makefile user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_cmd.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_config.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_drive.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_evt.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_flash.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_patrol.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_show.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfi_volume.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfiutil.c user/attilio/vmc-playground/usr.sbin/mfiutil/mfiutil.h user/attilio/vmc-playground/usr.sbin/newsyslog/newsyslog.conf.5 user/attilio/vmc-playground/usr.sbin/nscd/cachelib.c user/attilio/vmc-playground/usr.sbin/nscd/cachelib.h user/attilio/vmc-playground/usr.sbin/nscd/config.c user/attilio/vmc-playground/usr.sbin/nscd/config.h user/attilio/vmc-playground/usr.sbin/nscd/nscd.conf.5 user/attilio/vmc-playground/usr.sbin/nscd/parser.c user/attilio/vmc-playground/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/contrib/binutils/ (props changed) user/attilio/vmc-playground/contrib/gcc/ (props changed) user/attilio/vmc-playground/contrib/less/ (props changed) user/attilio/vmc-playground/contrib/libstdc++/ (props changed) user/attilio/vmc-playground/contrib/top/ (props changed) user/attilio/vmc-playground/crypto/openssh/ (props changed) user/attilio/vmc-playground/crypto/openssl/ (props changed) user/attilio/vmc-playground/gnu/lib/ (props changed) user/attilio/vmc-playground/lib/libc/ (props changed) user/attilio/vmc-playground/lib/libc/stdtime/ (props changed) user/attilio/vmc-playground/lib/libutil/ (props changed) user/attilio/vmc-playground/lib/libz/ (props changed) user/attilio/vmc-playground/lib/libz/contrib/ (props changed) user/attilio/vmc-playground/lib/libz/contrib/README.contrib (props changed) user/attilio/vmc-playground/lib/libz/contrib/asm686/ (props changed) user/attilio/vmc-playground/lib/libz/contrib/asm686/README.686 (props changed) user/attilio/vmc-playground/lib/libz/contrib/gcc_gvmat64/ (props changed) user/attilio/vmc-playground/lib/libz/contrib/gcc_gvmat64/gvmat64.S (props changed) user/attilio/vmc-playground/lib/libz/doc/ (props changed) user/attilio/vmc-playground/lib/libz/doc/rfc1950.txt (props changed) user/attilio/vmc-playground/lib/libz/doc/rfc1951.txt (props changed) user/attilio/vmc-playground/lib/libz/doc/rfc1952.txt (props changed) user/attilio/vmc-playground/lib/libz/doc/txtvsbin.txt (props changed) user/attilio/vmc-playground/lib/libz/gzclose.c (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/sbin/ipfw/ (props changed) user/attilio/vmc-playground/share/man/man4/ (props changed) user/attilio/vmc-playground/sys/ (props changed) user/attilio/vmc-playground/sys/boot/ (props changed) user/attilio/vmc-playground/sys/cddl/contrib/opensolaris/ (props changed) user/attilio/vmc-playground/sys/conf/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/common/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/disassembler/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/include/ (props changed) user/attilio/vmc-playground/usr.bin/calendar/ (props changed) user/attilio/vmc-playground/usr.bin/procstat/ (props changed) user/attilio/vmc-playground/usr.sbin/jail/ (props changed) Modified: user/attilio/vmc-playground/Makefile ============================================================================== --- user/attilio/vmc-playground/Makefile Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/Makefile Sun Jul 8 16:12:59 2012 (r238252) @@ -92,7 +92,7 @@ TGTS= all all-man buildenv buildenvvars delete-old delete-old-dirs delete-old-files delete-old-libs \ depend distribute distributekernel distributekernel.debug \ distributeworld distrib-dirs distribution doxygen \ - everything hierarchy install installcheck installkernel \ + everything hier hierarchy install installcheck installkernel \ installkernel.debug packagekernel packageworld \ reinstallkernel reinstallkernel.debug \ installworld kernel-toolchain libraries lint maninstall \ Modified: user/attilio/vmc-playground/Makefile.inc1 ============================================================================== --- user/attilio/vmc-playground/Makefile.inc1 Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/Makefile.inc1 Sun Jul 8 16:12:59 2012 (r238252) @@ -15,6 +15,7 @@ # -DNO_WWWUPDATE do not update www in ${MAKE} update # -DNO_CTF do not run the DTrace CTF conversion tools on built objects # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list +# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target # LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools # list # TARGET="machine" to crossbuild world for a different machine type @@ -88,7 +89,7 @@ SUBDIR+=etc # These are last, since it is nice to at least get the base system # rebuilt before you do them. -.for _DIR in ${LOCAL_DIRS} +.for _DIR in ${LOCAL_LIB_DIRS} ${LOCAL_DIRS} .if exists(${.CURDIR}/${_DIR}/Makefile) SUBDIR+= ${_DIR} .endif @@ -1196,7 +1197,7 @@ cross-tools: # # hierarchy - ensure that all the needed directories are present # -hierarchy: +hierarchy hier: cd ${.CURDIR}/etc; ${MAKE} distrib-dirs # @@ -1273,6 +1274,11 @@ _ofed_lib= contrib/ofed/usr.lib/ .endif _generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib} +.for _DIR in ${LOCAL_LIB_DIRS} +.if exists(${.CURDIR}/${_DIR}/Makefile) +_generic_libs+= ${_DIR} +.endif +.endfor lib/libopie__L lib/libtacplus__L: lib/libmd__L Modified: user/attilio/vmc-playground/ObsoleteFiles.inc ============================================================================== --- user/attilio/vmc-playground/ObsoleteFiles.inc Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/ObsoleteFiles.inc Sun Jul 8 16:12:59 2012 (r238252) @@ -38,8 +38,15 @@ # xargs -n1 | sort | uniq -d; # done +# 20120621: remove old man page +OLD_FILES+=usr/share/man/man8/vnconfig.8.gz +# 20120613: auth.conf removed +OLD_FILES+=etc/auth.conf +OLD_FILES+=usr/share/examples/etc/auth.conf +OLD_FILES+=usr/share/man/man3/auth.3.gz +OLD_FILES+=usr/share/man/man5/auth.conf.5.gz # 20120530: kde pam lives now in ports -OLD_FILES+=/etc/pam.d/kde +OLD_FILES+=etc/pam.d/kde # 20120505: new clang import installed a redundant internal header OLD_FILES+=usr/include/clang/3.1/stdalign.h # 20120428: MD2 removed from libmd Modified: user/attilio/vmc-playground/UPDATING ============================================================================== --- user/attilio/vmc-playground/UPDATING Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/UPDATING Sun Jul 8 16:12:59 2012 (r238252) @@ -24,6 +24,23 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20120628: + The sort utility has been replaced with BSD sort. For now, GNU sort + is also available as "gnusort" or the default can be set back to + GNU sort by setting WITH_GNU_SORT. In this case, BSD sort will be + installed as "bsdsort". + +20120611: + A new version of ZFS (pool version 5000) has been merged to -HEAD. + Starting with this version the old system of ZFS pool versioning + is superseded by "feature flags". This concept enables forward + compatibility against certain future changes in functionality of ZFS + pools. The first read-only compatible "feature flag" for ZFS pools + is named "com.delphix:async_destroy". For more information + read the new zpool-features(5) manual page. + Please refer to the "ZFS notes" section of this file for information + on upgrading boot ZFS pools. + 20120417: The malloc(3) implementation embedded in libc now uses sources imported as contrib/jemalloc. The most disruptive API change is to Modified: user/attilio/vmc-playground/bin/rcp/rcp.1 ============================================================================== --- user/attilio/vmc-playground/bin/rcp/rcp.1 Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/bin/rcp/rcp.1 Sun Jul 8 16:12:59 2012 (r238252) @@ -116,17 +116,11 @@ The .Nm utility handles third party copies, where neither source nor target files are on the current machine. -.Sh FILES -.Bl -tag -width ".Pa /etc/auth.conf" -compact -.It Pa /etc/auth.conf -configure authentication services -.El .Sh SEE ALSO .Xr cp 1 , .Xr ftp 1 , .Xr rlogin 1 , .Xr rsh 1 , -.Xr auth.conf 5 , .Xr hosts.equiv 5 .Sh HISTORY The Modified: user/attilio/vmc-playground/bin/rm/rm.c ============================================================================== --- user/attilio/vmc-playground/bin/rm/rm.c Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/bin/rm/rm.c Sun Jul 8 16:12:59 2012 (r238252) @@ -301,10 +301,16 @@ rm_tree(char **argv) if (fflag) continue; /* FALLTHROUGH */ - default: + + case FTS_F: + case FTS_NSOK: if (Pflag) - if (!rm_overwrite(p->fts_accpath, NULL)) + if (!rm_overwrite(p->fts_accpath, p->fts_info == + FTS_NSOK ? NULL : p->fts_statp)) continue; + /* FALLTHROUGH */ + + default: rval = unlink(p->fts_accpath); if (rval == 0 || (fflag && errno == ENOENT)) { if (rval == 0 && vflag) @@ -408,7 +414,7 @@ rm_file(char **argv) int rm_overwrite(char *file, struct stat *sbp) { - struct stat sb; + struct stat sb, sb2; struct statfs fsb; off_t len; int bsize, fd, wlen; @@ -427,8 +433,15 @@ rm_overwrite(char *file, struct stat *sb file, sbp->st_ino); return (0); } - if ((fd = open(file, O_WRONLY, 0)) == -1) + if ((fd = open(file, O_WRONLY|O_NONBLOCK|O_NOFOLLOW, 0)) == -1) + goto err; + if (fstat(fd, &sb2)) goto err; + if (sb2.st_dev != sbp->st_dev || sb2.st_ino != sbp->st_ino || + !S_ISREG(sb2.st_mode)) { + errno = EPERM; + goto err; + } if (fstatfs(fd, &fsb) == -1) goto err; bsize = MAX(fsb.f_iosize, 1024); Modified: user/attilio/vmc-playground/cddl/compat/opensolaris/misc/deviceid.c ============================================================================== --- user/attilio/vmc-playground/cddl/compat/opensolaris/misc/deviceid.c Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/cddl/compat/opensolaris/misc/deviceid.c Sun Jul 8 16:12:59 2012 (r238252) @@ -45,7 +45,7 @@ devid_str_decode(char *devidstr, ddi_dev return (EINVAL); } *retminor_name = strdup(""); - if (*retminor_name == NULL); + if (*retminor_name == NULL) return (ENOMEM); return (0); } Modified: user/attilio/vmc-playground/cddl/contrib/dtracetoolkit/dtruss ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/dtracetoolkit/dtruss Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/cddl/contrib/dtracetoolkit/dtruss Sun Jul 8 16:12:59 2012 (r238252) @@ -240,7 +240,7 @@ syscall:::entry */ /* print 3 args, return as hex */ -syscall::lwp_sigmask:return +syscall::sigprocmask:return /self->start/ { /* calculate elapsed time */ @@ -268,10 +268,11 @@ syscall::lwp_sigmask:return } /* print 3 args, arg0 as a string */ +syscall::access*:return, syscall::stat*:return, syscall::lstat*:return, -syscall::open*:return, -syscall::resolvepath:return +syscall::readlink*:return, +syscall::open*:return /self->start/ { /* calculate elapsed time */ @@ -329,7 +330,6 @@ syscall::*read*:return } /* print 0 arg output */ -syscall::gtime:return, syscall::*fork*:return /self->start/ { @@ -357,9 +357,6 @@ syscall::*fork*:return } /* print 1 arg output */ -syscall::brk:return, -syscall::times:return, -syscall::stime:return, syscall::close:return /self->start/ { @@ -387,7 +384,7 @@ syscall::close:return } /* print 2 arg output */ -syscall::utime:return, +syscall::utimes:return, syscall::munmap:return /self->start/ { Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zdb/zdb.c Sun Jul 8 16:12:59 2012 (r238252) @@ -18,8 +18,10 @@ * * CDDL HEADER END */ + /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #include @@ -54,6 +56,7 @@ #include #include #include +#include #undef ZFS_MAXNAMELEN #undef verify #include @@ -63,7 +66,8 @@ #define ZDB_CHECKSUM_NAME(idx) ((idx) < ZIO_CHECKSUM_FUNCTIONS ? \ zio_checksum_table[(idx)].ci_name : "UNKNOWN") #define ZDB_OT_NAME(idx) ((idx) < DMU_OT_NUMTYPES ? \ - dmu_ot[(idx)].ot_name : "UNKNOWN") + dmu_ot[(idx)].ot_name : DMU_OT_IS_VALID(idx) ? \ + dmu_ot_byteswap[DMU_OT_BYTESWAP(idx)].ob_name : "UNKNOWN") #define ZDB_OT_TYPE(idx) ((idx) < DMU_OT_NUMTYPES ? (idx) : DMU_OT_NUMTYPES) #ifndef lint @@ -1088,7 +1092,7 @@ dump_dsl_dataset(objset_t *os, uint64_t ASSERT(size == sizeof (*ds)); crtime = ds->ds_creation_time; - zdb_nicenum(ds->ds_used_bytes, used); + zdb_nicenum(ds->ds_referenced_bytes, used); zdb_nicenum(ds->ds_compressed_bytes, compressed); zdb_nicenum(ds->ds_uncompressed_bytes, uncompressed); zdb_nicenum(ds->ds_unique_bytes, unique); @@ -1132,6 +1136,44 @@ dump_dsl_dataset(objset_t *os, uint64_t /* ARGSUSED */ static int +dump_bptree_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) +{ + char blkbuf[BP_SPRINTF_LEN]; + + if (bp->blk_birth != 0) { + sprintf_blkptr(blkbuf, bp); + (void) printf("\t%s\n", blkbuf); + } + return (0); +} + +static void +dump_bptree(objset_t *os, uint64_t obj, char *name) +{ + char bytes[32]; + bptree_phys_t *bt; + dmu_buf_t *db; + + if (dump_opt['d'] < 3) + return; + + VERIFY3U(0, ==, dmu_bonus_hold(os, obj, FTAG, &db)); + bt = db->db_data; + zdb_nicenum(bt->bt_bytes, bytes); + (void) printf("\n %s: %llu datasets, %s\n", + name, (unsigned long long)(bt->bt_end - bt->bt_begin), bytes); + dmu_buf_rele(db, FTAG); + + if (dump_opt['d'] < 5) + return; + + (void) printf("\n"); + + (void) bptree_iterate(os, obj, B_FALSE, dump_bptree_cb, NULL, NULL); +} + +/* ARGSUSED */ +static int dump_bpobj_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx) { char blkbuf[BP_SPRINTF_LEN]; @@ -1883,11 +1925,13 @@ typedef struct zdb_blkstats { */ #define ZDB_OT_DEFERRED (DMU_OT_NUMTYPES + 0) #define ZDB_OT_DITTO (DMU_OT_NUMTYPES + 1) -#define ZDB_OT_TOTAL (DMU_OT_NUMTYPES + 2) +#define ZDB_OT_OTHER (DMU_OT_NUMTYPES + 2) +#define ZDB_OT_TOTAL (DMU_OT_NUMTYPES + 3) static char *zdb_ot_extname[] = { "deferred free", "dedup ditto", + "other", "Total", }; @@ -1968,9 +2012,10 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog type = BP_GET_TYPE(bp); - zdb_count_block(zcb, zilog, bp, type); + zdb_count_block(zcb, zilog, bp, + (type & DMU_OT_NEWTYPE) ? ZDB_OT_OTHER : type); - is_metadata = (BP_GET_LEVEL(bp) != 0 || dmu_ot[type].ot_metadata); + is_metadata = (BP_GET_LEVEL(bp) != 0 || DMU_OT_IS_METADATA(type)); if (dump_opt['c'] > 1 || (dump_opt['c'] && is_metadata)) { int ioerr; @@ -2197,6 +2242,12 @@ dump_block_stats(spa_t *spa) (void) bpobj_iterate_nofree(&spa->spa_dsl_pool->dp_free_bpobj, count_block_cb, &zcb, NULL); } + if (spa_feature_is_active(spa, + &spa_feature_table[SPA_FEATURE_ASYNC_DESTROY])) { + VERIFY3U(0, ==, bptree_iterate(spa->spa_meta_objset, + spa->spa_dsl_pool->dp_bptree_obj, B_FALSE, count_block_cb, + &zcb, NULL)); + } if (dump_opt['c'] > 1) flags |= TRAVERSE_PREFETCH_DATA; @@ -2373,7 +2424,7 @@ zdb_ddt_add_cb(spa_t *spa, zilog_t *zilo } if (BP_IS_HOLE(bp) || BP_GET_CHECKSUM(bp) == ZIO_CHECKSUM_OFF || - BP_GET_LEVEL(bp) > 0 || dmu_ot[BP_GET_TYPE(bp)].ot_metadata) + BP_GET_LEVEL(bp) > 0 || DMU_OT_IS_METADATA(BP_GET_TYPE(bp))) return (0); ddt_key_fill(&zdde_search.zdde_key, bp); @@ -2478,7 +2529,14 @@ dump_zpool(spa_t *spa) dump_bpobj(&spa->spa_deferred_bpobj, "Deferred frees"); if (spa_version(spa) >= SPA_VERSION_DEADLISTS) { dump_bpobj(&spa->spa_dsl_pool->dp_free_bpobj, - "Pool frees"); + "Pool snapshot frees"); + } + + if (spa_feature_is_active(spa, + &spa_feature_table[SPA_FEATURE_ASYNC_DESTROY])) { + dump_bptree(spa->spa_meta_objset, + spa->spa_dsl_pool->dp_bptree_obj, + "Pool dataset frees"); } dump_dtl(spa->spa_root_vdev, 0); } Copied: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5 (from r238247, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5 Sun Jul 8 16:12:59 2012 (r238252, copy of r238247, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/zpool/zpool-features.5) @@ -0,0 +1,174 @@ +'\" te +.\" Copyright (c) 2012, Martin Matuska . +.\" All Rights Reserved. +.\" +.\" The contents of this file are subject to the terms of the +.\" Common Development and Distribution License (the "License"). +.\" You may not use this file except in compliance with the License. +.\" +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +.\" or http://www.opensolaris.org/os/licensing. +.\" See the License for the specific language governing permissions +.\" and limitations under the License. +.\" +.\" When distributing Covered Code, include this CDDL HEADER in each +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. +.\" If applicable, add the following below this CDDL HEADER, with the +.\" fields enclosed by brackets "[]" replaced with your own identifying +.\" information: Portions Copyright [yyyy] [name of copyright owner] +.\" +.\" Copyright (c) 2012 by Delphix. All rights reserved. +.\" +.\" $FreeBSD$ +.\" +.Dd May 28, 2012 +.Dt ZPOOL-FEATURES 8 +.Os +.Sh NAME +.Nm zpool-features +.Nd ZFS pool feature descriptions +.Sh DESCRIPTION +ZFS pool on\-disk format versions are specified via "features" which replace +the old on\-disk format numbers (the last supported on\-disk format number is +28). +To enable a feature on a pool use the +.Xr zpool 8 +command to set the +.Sy feature@feature_name +property to +.Ar enabled . +.Pp +The pool format does not affect file system version compatibility or the ability +to send file systems between pools. +.Pp +Since most features can be enabled independently of each other the on\-disk +format of the pool is specified by the set of all features marked as +.Sy active +on the pool. If the pool was created by another software version this set may +include unsupported features. +.Ss Identifying features +Every feature has a guid of the form +.Sy com.example:feature_name . +The reverse DNS name ensures that the feature's guid is unique across all ZFS +implementations. When unsupported features are encountered on a pool they will +be identified by their guids. +Refer to the documentation for the ZFS implementation that created the pool +for information about those features. +.Pp +Each supported feature also has a short name. +By convention a feature's short name is the portion of its guid which follows +the ':' (e.g. +.Sy com.example:feature_name +would have the short name +.Sy feature_name ), +however a feature's short name may differ across ZFS implementations if +following the convention would result in name conflicts. +.Ss Feature states +Features can be in one of three states: +.Bl -tag +.It Sy active +This feature's on\-disk format changes are in effect on the pool. +Support for this feature is required to import the pool in read\-write mode. +If this feature is not read-only compatible, support is also required to +import the pool in read\-only mode (see "Read\-only compatibility"). +.It Sy enabled +An administrator has marked this feature as enabled on the pool, but the +feature's on\-disk format changes have not been made yet. +The pool can still be imported by software that does not support this feature, +but changes may be made to the on\-disk format at any time which will move +the feature to the +.Sy active +state. +Some features may support returning to the +.Sy enabled +state after becoming +.Sy active . +See feature\-specific documentation for details. +.It Sy disabled +This feature's on\-disk format changes have not been made and will not be made +unless an administrator moves the feature to the +.Sy enabled +state. +Features cannot be disabled once they have been enabled. +.El +The state of supported features is exposed through pool properties of the form +.Sy feature@short_name . +.Ss Read\-only compatibility +Some features may make on\-disk format changes that do not interfere with other +software's ability to read from the pool. +These features are referred to as "read\-only compatible". +If all unsupported features on a pool are read\-only compatible, the pool can +be imported in read\-only mode by setting the +.Sy readonly +property during import (see +.Xr zpool 8 +for details on importing pools). +.Ss Unsupported features +For each unsupported feature enabled on an imported pool a pool property +named +.Sy unsupported@feature_guid +will indicate why the import was allowed despite the unsupported feature. +Possible values for this property are: +.Bl -tag +.It Sy inactive +The feature is in the +.Sy enabled +state and therefore the pool's on\-disk format is still compatible with +software that does not support this feature. +.It Sy readonly +The feature is read\-only compatible and the pool has been imported in +read\-only mode. +.El +.Ss Feature dependencies +Some features depend on other features being enabled in order to function +properly. +Enabling a feature will automatically enable any features it depends on. +.Sh FEATURES +The following features are supported on this system: +.Bl -tag +.It Sy async_destroy +.Bl -column "READ\-ONLY COMPATIBLE" "com.delphix:async_destroy" +.It GUID Ta com.delphix:async_destroy +.It READ\-ONLY COMPATIBLE Ta yes +.It DEPENDENCIES Ta none +.El +.Pp +Destroying a file system requires traversing all of its data in order to +return its used space to the pool. +Without +.Sy async_destroy +the file system is not fully removed until all space has been reclaimed. +If the destroy operation is interrupted by a reboot or power outage the next +attempt to open the pool will need to complete the destroy operation +synchronously. +.Pp +When +.Sy async_destroy +is enabled the file system's data will be reclaimed by a background process, +allowing the destroy operation to complete without traversing the entire file +system. +The background process is able to resume interrupted destroys after the pool +has been opened, eliminating the need to finish interrupted destroys as part +of the open operation. +The amount of space remaining to be reclaimed by the background process is +available through the +.Sy freeing +property. +.Sh SEE ALSO +.Xr zpool 8 +.Sh AUTHORS +This manual page is a +.Xr mdoc 7 +reimplementation of the +.Tn illumos +manual page +.Em zpool-features(5) , +modified and customized for +.Fx +and licensed under the Common Development and Distribution License +.Pq Tn CDDL . +.Pp +The +.Xr mdoc 7 +implementation of this manual page was initially written by +.An Martin Matuska Aq mm@FreeBSD.org . Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool.8 ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Sun Jul 8 16:12:59 2012 (r238252) @@ -1,5 +1,5 @@ '\" te -.\" Copyright (c) 2011, Martin Matuska . +.\" Copyright (c) 2012, Martin Matuska . .\" All Rights Reserved. .\" .\" The contents of this file are subject to the terms of the @@ -20,6 +20,7 @@ .\" Copyright (c) 2010, Sun Microsystems, Inc. All Rights Reserved. .\" Copyright 2011, Nexenta Systems, Inc. All Rights Reserved. .\" Copyright (c) 2011, Justin T. Gibbs +.\" Copyright (c) 2012 by Delphix. All Rights Reserved. .\" .\" $FreeBSD$ .\" @@ -47,7 +48,7 @@ .Op Ar device .Nm .Cm create -.Op Fl fn +.Op Fl fnd .Op Fl o Ar property Ns = Ns Ar value .Ar ... .Op Fl O Ar file-system-property Ns = Ns Ar value @@ -189,7 +190,7 @@ for information on managing datasets. A .Qq virtual device .Pq No vdev -describes a single device or a collection of devices organized according to +describes a single device or a collection of devices organized according to certain performance and fault characteristics. The following virtual devices are supported: .Bl -tag @@ -237,7 +238,7 @@ A group can have single-, double- , or triple parity, meaning that the .No raidz group can sustain one, two, or three failures, respectively, without -losing any data. The +losing any data. The .Sy raidz1 No vdev type specifies a single-parity .No raidz @@ -287,7 +288,7 @@ writes are load-balanced between devices .No raidz .No vdev types are not supported for the intent log. For more information, -see the +see the .Qq Sx Intent Log section. .It Sy cache @@ -309,13 +310,13 @@ A pool can have any number of virtual de (known as .Qq root .No vdev Ns s). -Data is dynamically distributed across all top-level devices to balance data +Data is dynamically distributed across all top-level devices to balance data among devices. As new virtual devices are added, .Tn ZFS automatically places data on the newly available devices. .Pp Virtual devices are specified one at a time on the command line, separated by -whitespace. The keywords +whitespace. The keywords .Qq mirror and .Qq raidz @@ -428,7 +429,7 @@ allows devices to be associated with poo .Qq hot spares . These devices are not actively used in the pool, but when an active device fails, it is automatically replaced by a hot spare. To create a pool with hot -spares, specify a +spares, specify a .Qq spare .No vdev with any number of devices. For example, @@ -458,7 +459,7 @@ pools. .Pp Spares cannot replace log devices. .Ss Intent Log -The +The .Tn ZFS Intent Log .Pq Tn ZIL @@ -537,6 +538,16 @@ value of 1.76 indicates that 1.76 units for a description of the deduplication feature. .It Sy free Number of blocks within the pool that are not allocated. +.It Sy freeing +After a file system or snapshot is destroyed, the space it was using is +returned to the pool asynchronously. +.Sy freeing +is the amount of space remaining to be reclaimed. +Over time +.Sy freeing +will decrease while +.Sy free +increases. .It Sy expandsize This property has currently no value on FreeBSD. .It Sy guid @@ -552,11 +563,16 @@ or .Qq Sy UNAVAIL . .It Sy size Total size of the storage pool. +.It Sy unsupported@ Ns Ar feature_guid +Information about unsupported features that are enabled on the pool. +See +.Xr zpool-features 5 +for details. .It Sy used Amount of storage space used within the pool. .El .Pp -These space usage properties report actual physical space available to the +The space usage properties report actual physical space available to the storage pool. The physical space can be different from the total amount of space that any contained datasets can actually use. The amount of space used in a @@ -582,7 +598,7 @@ the typical paths are not valid. .Sy altroot is not a persistent property. It is valid only while the system is up. Setting -.Sy altroot +.Sy altroot defaults to using .Cm cachefile=none , though this may be overridden using an explicit setting. @@ -627,9 +643,9 @@ This property can also be referred to by .It Sy autoreplace Ns = Ns Cm on No | Cm off Controls automatic device replacement. If set to .Qq Cm off , -device replacement must be initiated by the administrator by using the +device replacement must be initiated by the administrator by using the .Qq Nm Cm replace -command. If set to +command. If set to .Qq Cm on , any new device, found in the same physical location as a device that previously belonged to the pool, is @@ -650,13 +666,18 @@ pool configuration in a different locati .Qq Nm Cm import Fl c . Setting it to the special value .Qq Cm none -creates a temporary pool that is never cached, and the special value +creates a temporary pool that is never cached, and the special value .Cm '' (empty string) uses the default location. +.It Sy comment Ns = Ns Ar text +A text string consisting of printable ASCII characters that will be stored +such that it is available even if the pool becomes faulted. +An administrator can provide additional information about a pool using this +property. .It Sy dedupditto Ns = Ns Ar number Threshold for the number of block ditto copies. If the reference count for a deduplicated block increases above this number, a new ditto copy of this block -is automatically stored. Deafult setting is +is automatically stored. Default setting is .Cm 0 . .It Sy delegation Ns = Ns Cm on No | Cm off Controls whether a non-privileged user is granted access based on the dataset @@ -686,6 +707,17 @@ requests that have yet to be committed t .It Sy panic Prints out a message to the console and generates a system crash dump. .El +.It Sy feature@ Ns Ar feature_name Ns = Ns Sy enabled +The value of this property is the current state of +.Ar feature_name . +The only valid value when setting this property is +.Sy enabled +which moves +.Ar feature_name +to the enabled state. +See +.Xr zpool-features 5 +for details on feature states. .It Sy listsnaps Ns = Ns Cm on No | Cm off Controls whether information about snapshots associated with this pool is output when @@ -699,9 +731,9 @@ The current on-disk version of the pool. decreased. The preferred method of updating pools is with the .Qq Nm Cm upgrade command, though this property can be used when a specific version is needed -for backwards compatibility. This property can be any number between 1 and the -current version reported by -.Qo Ic zpool upgrade -v Qc . +for backwards compatibility. +Once feature flags is enabled on a pool this property will no longer have a +value. .El .Sh SUBCOMMANDS All subcommands that modify state are logged persistently to the pool in their @@ -810,7 +842,7 @@ do not actually discard any transactions .It Xo .Nm .Cm create -.Op Fl fn +.Op Fl fnd .Op Fl o Ar property Ns = Ns Ar value .Ar ... .Op Fl O Ar file-system-property Ns = Ns Ar value @@ -859,9 +891,13 @@ The mount point must not exist or must b root dataset cannot be mounted. This can be overridden with the .Fl m option. +.Pp +By default all supported features are enabled on the new pool unless the +.Fl d +option is specified. .Bl -tag -width indent .It Fl f -Forces use of +Forces use of .Ar vdev Ns s, even if they appear in use or specify a conflicting replication level. Not all devices can be overridden in this manner. @@ -869,6 +905,17 @@ Not all devices can be overridden in thi Displays the configuration that would be used without actually creating the pool. The actual pool creation can still fail due to insufficient privileges or device sharing. +.It Fl d +Do not enable any features on the new pool. +Individual features can be enabled by setting their corresponding properties +to +.Sy enabled +with the +.Fl o +option. +See +.Xr zpool-features 5 +for details about feature properties. .It Xo .Fl o Ar property Ns = Ns Ar value .Op Fl o Ar property Ns = Ns Ar value @@ -897,7 +944,7 @@ or .Qq Cm altroot Ns Pa /pool if .Sy altroot -is specified. The mount point must be an absolute path, +is specified. The mount point must be an absolute path, .Qq Cm legacy , or .Qq Cm none . @@ -1234,7 +1281,7 @@ seconds until .Sy Ctrl-C is pressed. If no .Ar pools -are specified, statistics for every pool in the system is shown. If +are specified, statistics for every pool in the system is shown. If .Ar count is specified, the command exits after .Ar count @@ -1292,7 +1339,7 @@ When given an interval, the output is pr .Ar interval seconds until .Sy Ctrl-C -is pressed. If +is pressed. If .Ar count is specified, the command exits after .Ar count @@ -1301,6 +1348,8 @@ reports are printed. .It Fl H Scripted mode. Do not display headers, and separate fields by a single tab instead of arbitrary space. +.It Fl v +Show more detailed information. .It Fl o Ar property Ns Op , Ns Ar ... Comma-separated list of properties to display. See the .Qq Sx Properties @@ -1396,7 +1445,7 @@ This is equivalent to attaching waiting for it to resilver, and then detaching .Ar old_device . .Pp -The size of +The size of .Ar new_device must be greater than or equal to the minimum size of all the devices in a mirror or @@ -1407,7 +1456,7 @@ configuration. is required if the pool is not redundant. If .Ar new_device is not specified, it defaults to -.Ar old_device . +.Ar old_device . This form of replacement is useful after an existing disk has failed and has been physically replaced. In this case, the new disk may have the same .Pa /dev @@ -1494,12 +1543,12 @@ unless overridden by a device specificat .Pp When using a .Ar device -argument, +argument, .Cm split -includes the specified device(s) in a new pool and, should any devices remain +includes the specified device(s) in a new pool and, should any devices remain unspecified, assigns the last device in each mirror .No vdev -to that pool, as it does normally. If you are uncertain about the outcome of a +to that pool, as it does normally. If you are uncertain about the outcome of a .Cm split command, use the .Fl n @@ -1552,7 +1601,7 @@ When given an interval, the output is pr .Ar interval seconds until .Sy Ctrl-C -is pressed. If +is pressed. If .Ar count is specified, the command exits after .Ar count @@ -1873,6 +1922,7 @@ Invalid command line options were specif .El .Sh SEE ALSO .Xr zfs 8 +.Xr zpool-features 5 .Sh AUTHORS This manual page is a .Xr mdoc 7 Modified: user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sun Jul 8 16:11:16 2012 (r238251) +++ user/attilio/vmc-playground/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sun Jul 8 16:12:59 2012 (r238252) @@ -54,6 +54,7 @@ #include "zpool_util.h" #include "zfs_comutil.h" +#include "zfeature_common.h" #include "statcommon.h" @@ -207,7 +208,7 @@ get_usage(zpool_help_t idx) { case HELP_CLEAR: return (gettext("\tclear [-nF] [device]\n")); case HELP_CREATE: - return (gettext("\tcreate [-fn] [-o property=value] ... \n" + return (gettext("\tcreate [-fnd] [-o property=value] ... \n" "\t [-O file-system-property=value] ... \n" "\t [-m mountpoint] [-R root] ...\n")); case HELP_DESTROY: @@ -234,7 +235,7 @@ get_usage(zpool_help_t idx) { case HELP_LABELCLEAR: return (gettext("\tlabelclear [-f] \n")); case HELP_LIST: - return (gettext("\tlist [-H] [-o property[,...]] " + return (gettext("\tlist [-Hv] [-o property[,...]] " "[-T d|u] [pool] ... [interval [count]]\n")); case HELP_OFFLINE: return (gettext("\toffline [-t] ...\n")); @@ -339,6 +340,12 @@ usage(boolean_t requested) /* Iterate over all properties */ (void) zprop_iter(print_prop_cb, fp, B_FALSE, B_TRUE, ZFS_TYPE_POOL); + + (void) fprintf(fp, "\t%-15s ", "feature@..."); + (void) fprintf(fp, "YES disabled | enabled | active\n"); + + (void) fprintf(fp, gettext("\nThe feature@ properties must be " + "appended with a feature name.\nSee zpool-features(5).\n")); } /* @@ -405,12 +412,16 @@ add_prop_list(const char *propname, char proplist = *props; if (poolprop) { - if ((prop = zpool_name_to_prop(propname)) == ZPROP_INVAL) { + if ((prop = zpool_name_to_prop(propname)) == ZPROP_INVAL && + !zpool_prop_feature(propname)) { (void) fprintf(stderr, gettext("property '%s' is " "not a valid pool property\n"), propname); return (2); } - normnm = zpool_prop_to_name(prop); + if (zpool_prop_feature(propname)) + normnm = propname; + else + normnm = zpool_prop_to_name(prop); } else { if ((fprop = zfs_name_to_prop(propname)) != ZPROP_INVAL) { normnm = zfs_prop_to_name(fprop); @@ -701,7 +712,7 @@ errout: } /* - * zpool create [-fn] [-o property=value] ... + * zpool create [-fnd] [-o property=value] ... * [-O file-system-property=value] ... * [-R root] [-m mountpoint] ... * @@ -710,8 +721,10 @@ errout: * were to be created. * -R Create a pool under an alternate root * -m Set default mountpoint for the root dataset. By default it's - * '/' + * '/' * -o Set property=value. + * -d Don't automatically enable all supported pool features + * (individual features can be enabled with -o). * -O Set fsproperty=value in the pool's root file system * * Creates the named pool according to the given vdev specification. The @@ -724,6 +737,7 @@ zpool_do_create(int argc, char **argv) { boolean_t force = B_FALSE; boolean_t dryrun = B_FALSE; + boolean_t enable_all_pool_feat = B_TRUE; int c; nvlist_t *nvroot = NULL; char *poolname; @@ -735,7 +749,7 @@ zpool_do_create(int argc, char **argv) char *propval; /* check options */ - while ((c = getopt(argc, argv, ":fnR:m:o:O:")) != -1) { + while ((c = getopt(argc, argv, ":fndR:m:o:O:")) != -1) { switch (c) { case 'f': force = B_TRUE; @@ -743,6 +757,9 @@ zpool_do_create(int argc, char **argv) case 'n': dryrun = B_TRUE; break; + case 'd': + enable_all_pool_feat = B_FALSE; + break; case 'R': altroot = optarg; if (add_prop_list(zpool_prop_to_name( @@ -770,6 +787,21 @@ zpool_do_create(int argc, char **argv) if (add_prop_list(optarg, propval, &props, B_TRUE)) goto errout; + + /* + * If the user is creating a pool that doesn't support + * feature flags, don't enable any features. + */ + if (zpool_name_to_prop(optarg) == ZPOOL_PROP_VERSION) { + char *end; + u_longlong_t ver; + + ver = strtoull(propval, &end, 10); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 17:01:58 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 43BCD106564A; Sun, 8 Jul 2012 17:01:58 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F1718FC0A; Sun, 8 Jul 2012 17:01:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68H1w5n063499; Sun, 8 Jul 2012 17:01:58 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68H1vD8063497; Sun, 8 Jul 2012 17:01:57 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207081701.q68H1vD8063497@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 17:01:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238254 - user/attilio/vmc-playground/sys/amd64/amd64 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 17:01:58 -0000 Author: attilio Date: Sun Jul 8 17:01:57 2012 New Revision: 238254 URL: http://svn.freebsd.org/changeset/base/238254 Log: Compile. Reported by: Andrea Barberio Modified: user/attilio/vmc-playground/sys/amd64/amd64/pmap.c Modified: user/attilio/vmc-playground/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmc-playground/sys/amd64/amd64/pmap.c Sun Jul 8 16:14:42 2012 (r238253) +++ user/attilio/vmc-playground/sys/amd64/amd64/pmap.c Sun Jul 8 17:01:57 2012 (r238254) @@ -3611,7 +3611,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, pv = get_pv_entry(pmap, &lock); pv->pv_va = va; CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, pa); - TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); + TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next); } validate: From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 23:17:04 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC592106566B; Sun, 8 Jul 2012 23:17:04 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B42758FC0A; Sun, 8 Jul 2012 23:17:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68NH4rs080185; Sun, 8 Jul 2012 23:17:04 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68NH4Xb080177; Sun, 8 Jul 2012 23:17:04 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207082317.q68NH4Xb080177@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 23:17:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238267 - in user/attilio/vmcontention: gnu/usr.bin/cc/cc_tools sys/ia64/ia64 sys/ia64/include sys/netinet/ipfw sys/netinet6 sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 23:17:04 -0000 Author: attilio Date: Sun Jul 8 23:17:04 2012 New Revision: 238267 URL: http://svn.freebsd.org/changeset/base/238267 Log: MFC Modified: user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h user/attilio/vmcontention/sys/ia64/ia64/machdep.c user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c user/attilio/vmcontention/sys/ia64/include/md_var.h user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c user/attilio/vmcontention/sys/netinet6/frag6.c user/attilio/vmcontention/sys/vm/vm_pageout.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/ (props changed) user/attilio/vmcontention/sys/ (props changed) Modified: user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h ============================================================================== --- user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 23:17:04 2012 (r238267) @@ -261,7 +261,7 @@ /* Define if your assembler supports R_PPC_REL16 relocs. */ #ifndef USED_FOR_TARGET -/* #undef HAVE_AS_REL16 */ +#define HAVE_AS_REL16 #endif Modified: user/attilio/vmcontention/sys/ia64/ia64/machdep.c ============================================================================== --- user/attilio/vmcontention/sys/ia64/ia64/machdep.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/ia64/machdep.c Sun Jul 8 23:17:04 2012 (r238267) @@ -506,6 +506,14 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpu } void +cpu_pcpu_setup(struct pcpu *pc, u_int acpi_id, u_int sapic_id) +{ + + pc->pc_acpi_id = acpi_id; + pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); +} + +void spinlock_enter(void) { struct thread *td; @@ -791,7 +799,7 @@ ia64_init(void) ia64_set_k4((u_int64_t)pcpup); pcpu_init(pcpup, 0, sizeof(pcpu0)); dpcpu_init(ia64_physmem_alloc(DPCPU_SIZE, PAGE_SIZE), 0); - PCPU_SET(md.lid, ia64_get_lid()); + cpu_pcpu_setup(pcpup, ~0U, ia64_get_lid()); PCPU_SET(curthread, &thread0); /* Modified: user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c ============================================================================== --- user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c Sun Jul 8 23:17:04 2012 (r238267) @@ -309,9 +309,8 @@ cpu_mp_add(u_int acpi_id, u_int id, u_in } else pc = pcpup; - pc->pc_acpi_id = acpi_id; - pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); - + cpu_pcpu_setup(pc, acpi_id, sapic_id); + CPU_SET(pc->pc_cpuid, &all_cpus); } @@ -466,6 +465,7 @@ cpu_mp_unleash(void *dummy) */ ia64_bind_intr(); } +SYSINIT(start_aps, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, cpu_mp_unleash, NULL); /* * send an IPI to a set of cpus. @@ -522,5 +522,3 @@ ipi_send(struct pcpu *cpu, int xiv) ia64_mf_a(); CTR3(KTR_SMP, "ipi_send(%p, %d): cpuid=%d", cpu, xiv, PCPU_GET(cpuid)); } - -SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL); Modified: user/attilio/vmcontention/sys/ia64/include/md_var.h ============================================================================== --- user/attilio/vmcontention/sys/ia64/include/md_var.h Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/include/md_var.h Sun Jul 8 23:17:04 2012 (r238267) @@ -61,6 +61,7 @@ ia64_bsp_adjust(uint64_t bsp, int nslots #ifdef _KERNEL struct _special; +struct pcpu; struct thread; struct trapframe; @@ -80,6 +81,7 @@ void *acpi_find_table(const char *sig); void busdma_swi(void); int copyout_regstack(struct thread *, uint64_t *, uint64_t *); void cpu_mp_add(u_int, u_int, u_int); +void cpu_pcpu_setup(struct pcpu *, u_int, u_int); int do_ast(struct trapframe *); void ia32_trap(int, struct trapframe *); int ia64_count_cpus(void); Modified: user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c ============================================================================== --- user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 23:17:04 2012 (r238267) @@ -344,9 +344,12 @@ ipfw_del_table_entry(struct ip_fw_chain struct xaddr_iface ifname, ifmask; memset(&ifname, 0, sizeof(ifname)); + /* Include last \0 into comparison */ + mlen++; + /* Set 'total' structure length */ - KEY_LEN(ifname) = mlen; - KEY_LEN(ifmask) = mlen; + KEY_LEN(ifname) = KEY_LEN_IFACE + mlen; + KEY_LEN(ifmask) = KEY_LEN_IFACE + mlen; /* Assume direct match */ /* FIXME: Add interface pattern matching */ #if 0 @@ -569,7 +572,7 @@ ipfw_lookup_table_extended(struct ip_fw_ case IPFW_TABLE_INTERFACE: KEY_LEN(iface) = KEY_LEN_IFACE + - strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE); + strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE) + 1; /* Assume direct match */ /* FIXME: Add interface pattern matching */ xent = (struct table_xentry *)(rnh->rnh_lookup(&iface, NULL, rnh)); Modified: user/attilio/vmcontention/sys/netinet6/frag6.c ============================================================================== --- user/attilio/vmcontention/sys/netinet6/frag6.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/netinet6/frag6.c Sun Jul 8 23:17:04 2012 (r238267) @@ -221,6 +221,19 @@ frag6_input(struct mbuf **mp, int *offp, /* offset now points to data portion */ offset += sizeof(struct ip6_frag); + /* + * XXX-BZ RFC XXXX (draft-gont-6man-ipv6-atomic-fragments) + * Handle "atomic" fragments (offset and m bit set to 0) upfront, + * unrelated to any reassembly. Just skip the fragment header. + */ + if ((ip6f->ip6f_offlg & ~IP6F_RESERVED_MASK) == 0) { + /* XXX-BZ we want dedicated counters for this. */ + V_ip6stat.ip6s_reassembled++; + in6_ifstat_inc(dstifp, ifs6_reass_ok); + *offp = offset; + return (ip6f->ip6f_nxt); + } + IP6Q_LOCK(); /* Modified: user/attilio/vmcontention/sys/vm/vm_pageout.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 23:17:04 2012 (r238267) @@ -1030,7 +1030,6 @@ rescan0: ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; - vm_page_lock_queues(); goto unlock_and_continue; } KASSERT(mp != NULL, @@ -1041,7 +1040,6 @@ rescan0: if (vget(vp, LK_EXCLUSIVE | LK_TIMELOCK, curthread)) { VM_OBJECT_LOCK(object); - vm_page_lock_queues(); ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; @@ -1083,14 +1081,14 @@ rescan0: * be undergoing I/O, so skip it */ if (m->hold_count) { - vm_page_lock_queues(); - queues_locked = TRUE; vm_page_unlock(m); vm_page_requeue(m); if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; goto unlock_and_continue; } + vm_page_unlock_queues(); + queues_locked = FALSE; } /* From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 23:20:16 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 55CFB106564A; Sun, 8 Jul 2012 23:20:16 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3EB1D8FC0C; Sun, 8 Jul 2012 23:20:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68NKGt8080447; Sun, 8 Jul 2012 23:20:16 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68NKFZn080439; Sun, 8 Jul 2012 23:20:15 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207082320.q68NKFZn080439@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 23:20:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238268 - in user/attilio/vmc-playground: gnu/usr.bin/cc/cc_tools sys/ia64/ia64 sys/ia64/include sys/netinet/ipfw sys/netinet6 sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 23:20:16 -0000 Author: attilio Date: Sun Jul 8 23:20:15 2012 New Revision: 238268 URL: http://svn.freebsd.org/changeset/base/238268 Log: MFC Modified: user/attilio/vmc-playground/gnu/usr.bin/cc/cc_tools/auto-host.h user/attilio/vmc-playground/sys/ia64/ia64/machdep.c user/attilio/vmc-playground/sys/ia64/ia64/mp_machdep.c user/attilio/vmc-playground/sys/ia64/include/md_var.h user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_table.c user/attilio/vmc-playground/sys/netinet6/frag6.c user/attilio/vmc-playground/sys/vm/vm_pageout.c Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/gnu/usr.bin/cc/cc_tools/ (props changed) user/attilio/vmc-playground/sys/ (props changed) Modified: user/attilio/vmc-playground/gnu/usr.bin/cc/cc_tools/auto-host.h ============================================================================== --- user/attilio/vmc-playground/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 23:20:15 2012 (r238268) @@ -261,7 +261,7 @@ /* Define if your assembler supports R_PPC_REL16 relocs. */ #ifndef USED_FOR_TARGET -/* #undef HAVE_AS_REL16 */ +#define HAVE_AS_REL16 #endif Modified: user/attilio/vmc-playground/sys/ia64/ia64/machdep.c ============================================================================== --- user/attilio/vmc-playground/sys/ia64/ia64/machdep.c Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/ia64/ia64/machdep.c Sun Jul 8 23:20:15 2012 (r238268) @@ -506,6 +506,14 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpu } void +cpu_pcpu_setup(struct pcpu *pc, u_int acpi_id, u_int sapic_id) +{ + + pc->pc_acpi_id = acpi_id; + pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); +} + +void spinlock_enter(void) { struct thread *td; @@ -791,7 +799,7 @@ ia64_init(void) ia64_set_k4((u_int64_t)pcpup); pcpu_init(pcpup, 0, sizeof(pcpu0)); dpcpu_init(ia64_physmem_alloc(DPCPU_SIZE, PAGE_SIZE), 0); - PCPU_SET(md.lid, ia64_get_lid()); + cpu_pcpu_setup(pcpup, ~0U, ia64_get_lid()); PCPU_SET(curthread, &thread0); /* Modified: user/attilio/vmc-playground/sys/ia64/ia64/mp_machdep.c ============================================================================== --- user/attilio/vmc-playground/sys/ia64/ia64/mp_machdep.c Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/ia64/ia64/mp_machdep.c Sun Jul 8 23:20:15 2012 (r238268) @@ -309,9 +309,8 @@ cpu_mp_add(u_int acpi_id, u_int id, u_in } else pc = pcpup; - pc->pc_acpi_id = acpi_id; - pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); - + cpu_pcpu_setup(pc, acpi_id, sapic_id); + CPU_SET(pc->pc_cpuid, &all_cpus); } @@ -466,6 +465,7 @@ cpu_mp_unleash(void *dummy) */ ia64_bind_intr(); } +SYSINIT(start_aps, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, cpu_mp_unleash, NULL); /* * send an IPI to a set of cpus. @@ -522,5 +522,3 @@ ipi_send(struct pcpu *cpu, int xiv) ia64_mf_a(); CTR3(KTR_SMP, "ipi_send(%p, %d): cpuid=%d", cpu, xiv, PCPU_GET(cpuid)); } - -SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL); Modified: user/attilio/vmc-playground/sys/ia64/include/md_var.h ============================================================================== --- user/attilio/vmc-playground/sys/ia64/include/md_var.h Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/ia64/include/md_var.h Sun Jul 8 23:20:15 2012 (r238268) @@ -61,6 +61,7 @@ ia64_bsp_adjust(uint64_t bsp, int nslots #ifdef _KERNEL struct _special; +struct pcpu; struct thread; struct trapframe; @@ -80,6 +81,7 @@ void *acpi_find_table(const char *sig); void busdma_swi(void); int copyout_regstack(struct thread *, uint64_t *, uint64_t *); void cpu_mp_add(u_int, u_int, u_int); +void cpu_pcpu_setup(struct pcpu *, u_int, u_int); int do_ast(struct trapframe *); void ia32_trap(int, struct trapframe *); int ia64_count_cpus(void); Modified: user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_table.c ============================================================================== --- user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 23:20:15 2012 (r238268) @@ -344,9 +344,12 @@ ipfw_del_table_entry(struct ip_fw_chain struct xaddr_iface ifname, ifmask; memset(&ifname, 0, sizeof(ifname)); + /* Include last \0 into comparison */ + mlen++; + /* Set 'total' structure length */ - KEY_LEN(ifname) = mlen; - KEY_LEN(ifmask) = mlen; + KEY_LEN(ifname) = KEY_LEN_IFACE + mlen; + KEY_LEN(ifmask) = KEY_LEN_IFACE + mlen; /* Assume direct match */ /* FIXME: Add interface pattern matching */ #if 0 @@ -569,7 +572,7 @@ ipfw_lookup_table_extended(struct ip_fw_ case IPFW_TABLE_INTERFACE: KEY_LEN(iface) = KEY_LEN_IFACE + - strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE); + strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE) + 1; /* Assume direct match */ /* FIXME: Add interface pattern matching */ xent = (struct table_xentry *)(rnh->rnh_lookup(&iface, NULL, rnh)); Modified: user/attilio/vmc-playground/sys/netinet6/frag6.c ============================================================================== --- user/attilio/vmc-playground/sys/netinet6/frag6.c Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/netinet6/frag6.c Sun Jul 8 23:20:15 2012 (r238268) @@ -221,6 +221,19 @@ frag6_input(struct mbuf **mp, int *offp, /* offset now points to data portion */ offset += sizeof(struct ip6_frag); + /* + * XXX-BZ RFC XXXX (draft-gont-6man-ipv6-atomic-fragments) + * Handle "atomic" fragments (offset and m bit set to 0) upfront, + * unrelated to any reassembly. Just skip the fragment header. + */ + if ((ip6f->ip6f_offlg & ~IP6F_RESERVED_MASK) == 0) { + /* XXX-BZ we want dedicated counters for this. */ + V_ip6stat.ip6s_reassembled++; + in6_ifstat_inc(dstifp, ifs6_reass_ok); + *offp = offset; + return (ip6f->ip6f_nxt); + } + IP6Q_LOCK(); /* Modified: user/attilio/vmc-playground/sys/vm/vm_pageout.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_pageout.c Sun Jul 8 23:17:04 2012 (r238267) +++ user/attilio/vmc-playground/sys/vm/vm_pageout.c Sun Jul 8 23:20:15 2012 (r238268) @@ -1030,7 +1030,6 @@ rescan0: ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; - vm_page_lock_queues(); goto unlock_and_continue; } KASSERT(mp != NULL, @@ -1041,7 +1040,6 @@ rescan0: if (vget(vp, LK_EXCLUSIVE | LK_TIMELOCK, curthread)) { VM_OBJECT_LOCK(object); - vm_page_lock_queues(); ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; @@ -1083,14 +1081,14 @@ rescan0: * be undergoing I/O, so skip it */ if (m->hold_count) { - vm_page_lock_queues(); - queues_locked = TRUE; vm_page_unlock(m); vm_page_requeue(m); if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; goto unlock_and_continue; } + vm_page_unlock_queues(); + queues_locked = FALSE; } /* From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 23:50:58 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4DC431065670; Sun, 8 Jul 2012 23:50:58 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3915B8FC16; Sun, 8 Jul 2012 23:50:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68Now6i082129; Sun, 8 Jul 2012 23:50:58 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68Now16082126; Sun, 8 Jul 2012 23:50:58 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207082350.q68Now16082126@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 23:50:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238269 - user/attilio/vmc-playground/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Jul 2012 23:50:58 -0000 Author: attilio Date: Sun Jul 8 23:50:57 2012 New Revision: 238269 URL: http://svn.freebsd.org/changeset/base/238269 Log: - Move VM_RADIX_STACK in vm_object.c because it is the only consumer - Import the check for the return value of vm_radix_lookup() directly in the while removing the need to use a spourious check. Modified: user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/sys/vm/vm_radix.h Modified: user/attilio/vmc-playground/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_object.c Sun Jul 8 23:20:15 2012 (r238268) +++ user/attilio/vmc-playground/sys/vm/vm_object.c Sun Jul 8 23:50:57 2012 (r238269) @@ -96,6 +96,8 @@ __FBSDID("$FreeBSD$"); #include #include +#define VM_RADIX_STACK 8 /* Nodes to store on stack for ranged ops. */ + static int old_msync; SYSCTL_INT(_vm, OID_AUTO, old_msync, CTLFLAG_RW, &old_msync, 0, "Use old (insecure) msync behavior"); @@ -729,8 +731,10 @@ vm_object_terminate(vm_object_t object) */ start = 0; exhausted = 0; - while (exhausted == 0 && (n = vm_radix_lookupn(&object->rtree, start, - 0, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { + n = VM_RADIX_STACK; + while (n == VM_RADIX_STACK && exhausted == 0 && + (n = vm_radix_lookupn(&object->rtree, start, 0, (void **)pa, + VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; KASSERT(!p->busy && (p->oflags & VPO_BUSY) == 0, @@ -755,8 +759,6 @@ vm_object_terminate(vm_object_t object) } vm_page_unlock(p); } - if (n < VM_RADIX_STACK) - break; } vm_radix_reclaim_allnodes(&object->rtree); vp = NULL; @@ -764,9 +766,10 @@ vm_object_terminate(vm_object_t object) mtx_lock(&vm_page_queue_free_mtx); start = 0; exhausted = 0; - while (exhausted == 0 && (n = vm_radix_lookupn(&object->cache, - start, 0, (void **)pa, VM_RADIX_STACK, &start, - &exhausted)) != 0) { + n = VM_RADIX_STACK; + while (n == VM_RADIX_STACK && exhausted == 0 && + (n = vm_radix_lookupn(&object->cache, start, 0, + (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; MPASS(p->object == object); @@ -787,8 +790,6 @@ vm_object_terminate(vm_object_t object) if (object->type == OBJT_VNODE) vp = object->handle; } - if (n < VM_RADIX_STACK) - break; } vm_radix_reclaim_allnodes(&object->cache); mtx_unlock(&vm_page_queue_free_mtx); @@ -1389,8 +1390,10 @@ vm_object_split(vm_map_entry_t entry) start = offidxstart; retry: exhausted = 0; - while (exhausted == 0 && (n = vm_radix_lookupn(&orig_object->rtree, - start, offidxstart + size, (void **)ma, VM_RADIX_STACK, &start, + n = VM_RADIX_STACK; + while (n == VM_RADIX_STACK && exhausted == 0 && + (n = vm_radix_lookupn(&orig_object->rtree, start, + offidxstart + size, (void **)ma, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { m = ma[i]; @@ -1438,8 +1441,6 @@ retry: */ vm_page_busy(m); } - if (n < VM_RADIX_STACK) - break; } if (orig_object->type == OBJT_SWAP) { /* @@ -1454,8 +1455,9 @@ retry: if (!vm_object_cache_is_empty(orig_object)) { start = offidxstart; exhausted = 0; + n = VM_RADIX_STACK; mtx_lock(&vm_page_queue_free_mtx); - while (exhausted == 0 && + while (n == VM_RADIX_STACK && exhausted == 0 && (n = vm_radix_lookupn(&orig_object->cache, start, offidxstart + size, (void **)ma, VM_RADIX_STACK, &start, &exhausted)) != 0) { @@ -1465,8 +1467,6 @@ retry: vm_page_cache_rename(m, new_object, idx); } - if (n < VM_RADIX_STACK) - break; } mtx_unlock(&vm_page_queue_free_mtx); } @@ -1532,9 +1532,7 @@ restart: exhausted = 0; for (;;) { if (i == n) { - if (n < VM_RADIX_STACK) - break; - if (exhausted != 0 || + if (n < VM_RADIX_STACK || exhausted != 0 || (n = vm_radix_lookupn(&backing_object->rtree, start, 0, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) == 0) @@ -1827,16 +1825,16 @@ vm_object_collapse(vm_object_t object) */ start = 0; exhausted = 0; + n = VM_RADIX_STACK; mtx_lock(&vm_page_queue_free_mtx); - while (exhausted == 0 && (n = + while (n == VM_RADIX_STACK && + exhausted == 0 && (n = vm_radix_lookupn(&backing_object->cache, start, 0, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) vm_page_cache_free(pa[i]); - if (n < VM_RADIX_STACK) - break; } mtx_unlock(&vm_page_queue_free_mtx); } @@ -1981,8 +1979,10 @@ vm_object_page_remove(vm_object_t object cstart = start; restart: exhausted = 0; - while (exhausted == 0 && (n = vm_radix_lookupn(&object->rtree, start, - end, (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { + n = VM_RADIX_STACK; + while (n == VM_RADIX_STACK && exhausted == 0 && + (n = vm_radix_lookupn(&object->rtree, start, end, (void **)pa, + VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; @@ -2039,17 +2039,16 @@ restart: vm_page_free(p); vm_page_unlock(p); } - if (n < VM_RADIX_STACK) - break; } vm_object_pip_wakeup(object); if (!vm_object_cache_is_empty(object)) { start = cstart; exhausted = 0; + n = VM_RADIX_STACK; mtx_lock(&vm_page_queue_free_mtx); - while (exhausted == 0 && (n = vm_radix_lookupn(&object->cache, - start, end, (void **)pa, VM_RADIX_STACK, &start, - &exhausted)) != 0) { + while (n == VM_RADIX_STACK && exhausted == 0 && + (n = vm_radix_lookupn(&object->cache, start, end, + (void **)pa, VM_RADIX_STACK, &start, &exhausted)) != 0) { for (i = 0; i < n; i++) { p = pa[i]; vm_page_cache_free(p); @@ -2057,8 +2056,6 @@ restart: object->type == OBJT_VNODE) vp = object->handle; } - if (n < VM_RADIX_STACK) - break; } mtx_unlock(&vm_page_queue_free_mtx); } Modified: user/attilio/vmc-playground/sys/vm/vm_radix.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.h Sun Jul 8 23:20:15 2012 (r238268) +++ user/attilio/vmc-playground/sys/vm/vm_radix.h Sun Jul 8 23:50:57 2012 (r238269) @@ -29,8 +29,6 @@ #ifndef _VM_RADIX_H_ #define _VM_RADIX_H_ -#define VM_RADIX_STACK 8 /* Nodes to store on stack. */ - /* * Radix tree root. The height and pointer are set together to permit * coherent lookups while the root is modified. From owner-svn-src-user@FreeBSD.ORG Mon Jul 9 04:00:25 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D7E191065672; Mon, 9 Jul 2012 04:00:25 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C36CD8FC1A; Mon, 9 Jul 2012 04:00:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6940Pjl093488; Mon, 9 Jul 2012 04:00:25 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6940Pnw093486; Mon, 9 Jul 2012 04:00:25 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201207090400.q6940Pnw093486@svn.freebsd.org> From: Doug Barton Date: Mon, 9 Jul 2012 04:00:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238270 - user/dougb/portmaster X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 04:00:25 -0000 Author: dougb Date: Mon Jul 9 04:00:25 2012 New Revision: 238270 URL: http://svn.freebsd.org/changeset/base/238270 Log: Minor bug fix ============= * If we trap while working on a child port don't remove that child from the PM_NEEDS_UPDATE list so that when it gets printed in the parent that child is still on the list. While I'm here, tidy up the code that prints the list. Cosmetic changes ================ * Add -e to the pm_v echo as well, to allow easier printing of ws without using multiple commands. * Move the counting of categories and total ports to ports_by_category() so that it can be used in other places besides -[lL] * Use the count of total ports as $num_of_deps for -Faf * In multiport(), decrement the number of ports to work on and print a -v message if we have already encountered a port in the worklist as a dependency of another port in the list. This is not only better cosmetically, it means we don't have to reset it after the first pass. * For -a, remove the old, unnecessary test for FIRST_PASS, and re-indent that code. Also, add the num_{roots|trunks|branches|leaves} values to the headers * The ALL_FETCH var was only used in one place anymore, so use the values behind it instead. Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Sun Jul 8 23:50:57 2012 (r238269) +++ user/dougb/portmaster/portmaster Mon Jul 9 04:00:25 2012 (r238270) @@ -246,11 +246,10 @@ parent_exit () { echo '' fi - PM_NEEDS_UPDATE=${PM_NEEDS_UPDATE# } - if [ -n "$1" -a -n "$PM_NEEDS_UPDATE" -a -n "$PM_BUILDING" -a -z "$FETCH_ONLY" ]; then + if [ -n "$1" -a -n "${PM_NEEDS_UPDATE# }" -a -n "$PM_BUILDING" -a -z "$FETCH_ONLY" ]; then echo '' echo "===>>> You can restart from the point of failure with this command line:" - echo " ${0##*/} $PM_NEEDS_UPDATE" + echo " ${0##*/} ${PM_NEEDS_UPDATE}" echo '' fi } @@ -270,11 +269,14 @@ safe_exit () { [ -n "$PM_DEL_BUILD_ONLY" ] && echo "build_deps_il='$build_deps_il'" >> $IPC_SAVE - for i in $PM_NEEDS_UPDATE; do - [ "$i" = "$portdir" ] && continue - pnu_temp="${pnu_temp}${i} " - done - PM_NEEDS_UPDATE=" ${pnu_temp}" + # Do not remove a child from the list if we trapped or failed + if [ -z "$1" ]; then + for i in $PM_NEEDS_UPDATE; do + [ "$i" = "$portdir" ] && continue + pnu_temp="${pnu_temp}${i} " + done + PM_NEEDS_UPDATE=" ${pnu_temp}" + fi [ -z "$NO_BACKUP" -a -z "$BACKUP" ] && echo "NB_DELETE='$NB_DELETE'" >> $IPC_SAVE else @@ -335,7 +337,7 @@ pm_rm_s () { $PM_SU_CMD /bin/r pm_rmdir_s () { $PM_SU_CMD /bin/rmdir $*; } pm_unlink_s () { [ -e "$1" ] && $PM_SU_CMD /bin/unlink $1; } -pm_v () { [ -n "$PM_VERBOSE" ] && echo "$*"; } +pm_v () { [ -n "$PM_VERBOSE" ] && echo -e "$*"; } pm_sv () { [ -n "$PM_SU_VERBOSE" ] && echo -e "===>>> SU $*"; } # Do this here so we can have a reasonably good guess. @@ -1244,25 +1246,34 @@ read_distinfos_all () { } ports_by_category () { + # Global: num_roots num_trunks num_branches num_leaves num_ports local pkg + pm_v "===>>> Sorting ports by category" + num_roots=0; num_trunks=0; num_branches=0; num_leaves=0 for pkg in $pdb/*; do if [ -s "$pkg/+REQUIRED_BY" ]; then if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then branches="$branches ${pkg#$pdb/}" + num_branches=$(( $num_branches + 1 )) else trunks="$trunks ${pkg#$pdb/}" + num_trunks=$(( $num_trunks + 1 )) fi else if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then leaves="$leaves ${pkg#$pdb/}" + num_leaves=$(( $num_leaves + 1 )) else [ -d "$pkg" ] || continue roots="$roots ${pkg#$pdb/}" + num_roots=$(( $num_roots + 1 )) fi fi done + + num_ports=$(( $num_roots + $num_trunks + $num_branches + $num_leaves )) } delete_empty_dist_subdirs () { @@ -1969,7 +1980,7 @@ delete_stale_distfiles () { find_and_delete_distfiles ${file%[-]*}-[0-9] done - pm_v "===>>> Distfile cleaning complete" ; pm_v + pm_v "===>>> Distfile cleaning complete\n" } delete_all_distfiles () { @@ -2035,14 +2046,13 @@ delete_all_distfiles () { #=============== Begin code relevant only to getopts features =============== if [ -n "$LIST" -o -n "$LIST_PLUS" ]; then - ports_by_category - num_roots=0; num_trunks=0; num_branches=0; num_leaves=0; num_updates=0 + ports_by_category ; pm_v + num_updates=0 - pm_v ; echo "===>>> Root ports (No dependencies, not depended on)" + echo "===>>> Root ports (No dependencies, not depended on)" for iport in $roots; do echo "===>>> $iport" [ -n "$LIST_PLUS" ] && check_for_updates list $iport - num_roots=$(( $num_roots + 1 )) done echo "===>>> $num_roots root ports" echo '' @@ -2050,7 +2060,6 @@ if [ -n "$LIST" -o -n "$LIST_PLUS" ]; th for iport in $trunks; do echo "===>>> $iport" [ -n "$LIST_PLUS" ] && check_for_updates list $iport - num_trunks=$(( $num_trunks + 1 )) done echo "===>>> $num_trunks trunk ports" echo '' @@ -2058,7 +2067,6 @@ if [ -n "$LIST" -o -n "$LIST_PLUS" ]; th for iport in $branches; do echo "===>>> $iport" [ -n "$LIST_PLUS" ] && check_for_updates list $iport - num_branches=$(( $num_branches + 1 )) done echo "===>>> $num_branches branch ports" echo '' @@ -2066,11 +2074,9 @@ if [ -n "$LIST" -o -n "$LIST_PLUS" ]; th for iport in $leaves; do echo "===>>> $iport" [ -n "$LIST_PLUS" ] && check_for_updates list $iport - num_leaves=$(( $num_leaves + 1 )) done echo "===>>> $num_leaves leaf ports" echo '' - num_ports=$(( $num_roots + $num_trunks + $num_branches + $num_leaves )) echo "===>>> $num_ports total installed ports" if [ "$num_updates" -gt 1 ]; then @@ -2342,7 +2348,9 @@ update_port () { dep_of_deps=$(( $dep_of_deps + 1 )) - [ -n "$PM_FIRST_PASS" ] && num_of_deps=$(( $num_of_deps + 1 )) + [ -n "$PM_FIRST_PASS" ] && + [ ! \( -n "$PM_FORCE" -a -n "$FETCH_ONLY" -a -n "$UPDATE_ALL" \) ] && + num_of_deps=$(( $num_of_deps + 1 )) deps="(${dep_of_deps}/${num_of_deps})" @@ -2847,7 +2855,11 @@ multiport () { *) origin=`origin_from_pdb $port` ;; esac - case "$PM_NEEDS_UPDATE" in *\ $origin\ *) continue ;; esac + case "$PM_NEEDS_UPDATE" in + *\ $origin\ *) numports=$(( $numports - 1 )) + pm_v "===>>> $port already encountered as a dependency\n" + continue ;; + esac num=$(( $num + 1 )) init_term_printf "$port ${num}/${numports}" @@ -2860,7 +2872,6 @@ multiport () { *) numports=$(( $numports - 1 )) ;; esac done - numports=$num PM_PARENT_PORT="Total ports: $numports" if [ -n "$PM_URB" ]; then @@ -3047,38 +3058,37 @@ all_first_pass () { } [ -n "$DI_FILES" ] && (read_distinfos)& + ports_by_category + [ -n "$FETCH_ONLY" -a -n "$PM_FORCE" ] && $num_of_deps=$num_ports + unset num_ports + init_term_printf All - ports_by_category echo "===>>> Starting check of installed ports for available updates" [ -n "$PM_BUILD_ONLY_LIST" ] && PM_BUILD_ONLY_LIST=pmp_doing_build_deps - if [ -n "$PM_FIRST_PASS" ]; then - [ -n "$FETCH_ONLY" ] && export ALL_FETCH=all_fetch + pm_v "\n===>>> Root ports: $num_roots" ; unset num_roots + all_first_pass $roots - pm_v ; pm_v "===>>> Root ports:" - all_first_pass $roots + pm_v "\n===>>> Trunk ports: $num_trunks" ; unset num_trunks + all_first_pass $trunks - pm_v ; pm_v "===>>> Trunk ports:" - all_first_pass $trunks + pm_v "\n===>>> Branch ports: $num_branches" ; unset num_branches + all_first_pass $branches - pm_v ; pm_v "===>>> Branch ports:" - all_first_pass $branches + pm_v "\n===>>> Leaf ports: $num_leaves" ; unset num_leaves + all_first_pass $leaves - pm_v ; pm_v "===>>> Leaf ports:" - all_first_pass $leaves - - check_fetch_only - if [ -n "$NO_DEP_UPDATES" ]; then - echo '' ; echo "===>>> All ports are up to date" ; echo '' - safe_exit - fi + check_fetch_only + if [ -n "$NO_DEP_UPDATES" ]; then + echo '' ; echo "===>>> All ports are up to date" ; echo '' + safe_exit + fi - post_first_pass 'ports that need updating' + post_first_pass 'ports that need updating' - [ -n "$PM_BUILD_ONLY_LIST" ] && clean_build_only_list - fi + [ -n "$PM_BUILD_ONLY_LIST" ] && clean_build_only_list export PM_BUILDING=pmbuildingall @@ -3178,7 +3188,7 @@ if [ -n "$upg_port" -a -z "$portdir" ]; case "$?" in 3) echo ''; echo "===>>> BSDPAN ports cannot be upgraded with portmaster" echo " (${upg_port})"; echo ''; safe_exit 1 ;; - 2) pm_v " ===>>> No ORIGIN for $upg_port, and +IGNOREME is present"; pm_v + 2) pm_v " ===>>> No ORIGIN for $upg_port, and +IGNOREME is present\n" safe_exit 1 ;; *) fail 'Cannot continue' ;; esac ; } @@ -3329,7 +3339,7 @@ if [ -z "$PM_INDEX_ONLY" -a -z "$PM_BUIL TESTINT=`grep -l ^IS_INTERACTIVE Makefile` && TESTINT=`pm_make_b -V IS_INTERACTIVE` else - [ -n "$ALL_FETCH" ] && safe_exit + [ -n "$UPDATE_ALL" -a -n "$FETCH_ONLY" ] && safe_exit fi if [ -n "$TESTINT" ]; then echo '' From owner-svn-src-user@FreeBSD.ORG Mon Jul 9 17:28:27 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AED80106564A; Mon, 9 Jul 2012 17:28:27 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97D868FC12; Mon, 9 Jul 2012 17:28:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q69HSRq3030816; Mon, 9 Jul 2012 17:28:27 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q69HSRgq030812; Mon, 9 Jul 2012 17:28:27 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207091728.q69HSRgq030812@svn.freebsd.org> From: Jakub Wojciech Klama Date: Mon, 9 Jul 2012 17:28:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238303 - in user/jceel/soc2012_armv6/sys: arm/arm arm/include conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 17:28:27 -0000 Author: jceel Date: Mon Jul 9 17:28:26 2012 New Revision: 238303 URL: http://svn.freebsd.org/changeset/base/238303 Log: Add early printf (eprintf) function and early UART support for debugging purposes. When enabled using ARM_EARLY_DEBUG kernel option, eprintf() call is available from locore stage allowing to print debug messages before pmap and console is set up. Added: user/jceel/soc2012_armv6/sys/arm/arm/early_uart.c user/jceel/soc2012_armv6/sys/arm/include/early_uart.h Modified: user/jceel/soc2012_armv6/sys/arm/arm/locore.S user/jceel/soc2012_armv6/sys/conf/options.arm Added: user/jceel/soc2012_armv6/sys/arm/arm/early_uart.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/jceel/soc2012_armv6/sys/arm/arm/early_uart.c Mon Jul 9 17:28:26 2012 (r238303) @@ -0,0 +1,203 @@ +/*- + * Copyright (c) 2009 Guillaume Ballet + * Copyright (c) 2012 Aleksander Dutkowski + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "opt_global.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static volatile uint32_t *arm_early_uart = (volatile uint32_t *)ARM_EARLY_UART_VA; +static volatile uint32_t *arm_early_uart_lsr = (volatile uint32_t *)(ARM_EARLY_UART_VA + 0x14); + +void +arm_early_putc(char c) +{ + + while ((*arm_early_uart_lsr & 0x20) == 0); + *arm_early_uart = c; + + if( c == '\n' ) + { + while ((*arm_early_uart_lsr & 0x20) == 0); + *arm_early_uart = '\r'; + } +} + +void +arm_early_puts(unsigned char *str) +{ + do { + arm_early_putc(*str); + } while (*++str != '\0'); +} + +void +arm_early_uart_base(uint32_t base_address) +{ + arm_early_uart = (volatile uint32_t *)base_address; + arm_early_uart_lsr = (volatile uint32_t *)(base_address + 0x14); +} + +void +eprintf(const char *fmt,...) +{ + va_list ap; + const char *hex = "0123456789abcdef"; + char buf[10]; + char *s; + unsigned u; + int c; + + va_start(ap, fmt); + while ((c = *fmt++)) { + if (c == '%') { + c = *fmt++; + switch (c) { + case 'c': + arm_early_putc(va_arg(ap, int)); + continue; + case 's': + for (s = va_arg(ap, char *); *s; s++) + arm_early_putc(*s); + continue; + case 'd': /* A lie, always prints unsigned */ + case 'u': + u = va_arg(ap, unsigned); + s = buf; + do + *s++ = '0' + u % 10U; + while (u /= 10U); + dumpbuf:; + while (--s >= buf) + arm_early_putc(*s); + continue; + case 'x': + u = va_arg(ap, unsigned); + s = buf; + do + *s++ = hex[u & 0xfu]; + while (u >>= 4); + goto dumpbuf; + } + } + arm_early_putc(c); + } + va_end(ap); + + return; +} + +void +dump_l2pagetable(uint32_t pta, uint32_t l1) +{ + int i; + volatile uint32_t *pt = (volatile uint32_t*)pta; + + for (i=0; i<256;i++) { + switch (pt[i] & 0x3) { + case 1: + eprintf("0x%x -> 0x%x 64K ",(i<<12) | l1, + pt[i]&0xFFFF0000); + eprintf("l2pt[0x%x]=0x%x ",i, pt[i]); + eprintf("s=%u ", (pt[i]>>10) &0x1); + eprintf("apx=%u ", (pt[i]>> 9) &0x1); + eprintf("tex=%u ", (pt[i]>>12) &0x7); + eprintf("ap=%u ", (pt[i]>> 4) &0x3); + eprintf("c=%u ", (pt[i]>> 3) &0x1); + eprintf("b=%u\n", (pt[i]>> 2) &0x1); + break; + case 2: + case 3: + eprintf("0x%x -> 0x%x 4K ",(i<<12) | l1, + pt[i]&0xFFFFF000); + eprintf("l2pt[0x%x]=0x%x ",i, pt[i]); + eprintf("s=%u ", (pt[i]>>10) &0x1); + eprintf("apx=%u ", (pt[i]>> 9) &0x1); + eprintf("tex=%u ", (pt[i]>> 6) &0x7); + eprintf("ap=%u ", (pt[i]>> 4) &0x3); + eprintf("c=%u ", (pt[i]>> 3) &0x1); + eprintf("b=%u\n", (pt[i]>> 2) &0x1); + break; + } + } +} + +void +dump_l1pagetable(uint32_t pta) +{ + int i; + eprintf("L1 pagetable starts at 0x%x\n",pta); + volatile uint32_t *pt = (volatile uint32_t*)pta; + for (i=0; i<4096;i++) { + switch (pt[i] & 0x3) { + case 1: + eprintf("0x%x -> L2 ",i<<20); + eprintf("l1pt[0x%x]=0x%x ",i, pt[i]); + eprintf("l2desc=0x%x ",pt[i] & 0xFFFFFC00); + eprintf("p=%u ",(pt[i]>>9) &0x1); + eprintf("domain=0x%x\n",(pt[i]>>5) &0xF); + dump_l2pagetable(pt[i] & 0xFFFFFC00, i<<20); + break; + case 2: + if (pt[i] &0x40000) { + eprintf("0x%x -> 0x%x 16M ",i<<20, pt[i] & 0xFF000000); + eprintf("l1pt[0x%x]=0x%x ",i, pt[i]); + eprintf("base=0x%x ", ((pt[i]>>24))); + } else { + eprintf("0x%x -> 0x%x 1M ",i<<20, pt[i] & 0xFFF00000); + eprintf("l1pt[0x%x]=0x%x ",i, pt[i]); + eprintf("base=0x%x ", (pt[i]>>20)); + } + eprintf("nG=%u ", (pt[i]>>17) &0x1); + eprintf("s=%u ", (pt[i]>>16) &0x1); + eprintf("apx=%u ", (pt[i]>>15) &0x1); + eprintf("tex=%u ", (pt[i]>>12) &0x7); + eprintf("ap=%u ", (pt[i]>>10) &0x3); + eprintf("p=%u ", (pt[i]>> 9) &0x1); + eprintf("domain=0x%x ", (pt[i]>> 5) &0xF); + eprintf("xn=%u ", (pt[i]>> 4) &0x1); + eprintf("c=%u ", (pt[i]>> 3) &0x1); + eprintf("b=%u\n", (pt[i]>> 2) &0x1); + break; + case 3: + eprintf("pt[0x%x] 0x%x RESV\n",i, pt[i]); + break; + } + } +} + Modified: user/jceel/soc2012_armv6/sys/arm/arm/locore.S ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/arm/locore.S Mon Jul 9 17:25:56 2012 (r238302) +++ user/jceel/soc2012_armv6/sys/arm/arm/locore.S Mon Jul 9 17:28:26 2012 (r238303) @@ -34,6 +34,7 @@ */ #include "assym.s" +#include "opt_global.h" #include #include #include @@ -240,6 +241,9 @@ mmu_init_table: MMU_INIT(PHYSADDR, PHYSADDR , 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW)) /* map VA 0xc0000000..0xc3ffffff to PA */ MMU_INIT(KERNBASE, PHYSADDR, 64, L1_TYPE_S|L1_S_C|L1_S_AP(AP_KRW)) +#if defined(ARM_EARLY_DEBUG) + MMU_INIT(ARM_EARLY_UART_VA & L1_S_FRAME, ARM_EARLY_UART_PA & L1_S_FRAME, 64, L1_TYPE_S|L1_S_AP(AP_KRW)) +#endif #else MMU_INIT(PHYSADDR, PHYSADDR , 64, L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW)) /* map VA 0xc0000000..0xc3ffffff to PA */ Added: user/jceel/soc2012_armv6/sys/arm/include/early_uart.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/jceel/soc2012_armv6/sys/arm/include/early_uart.h Mon Jul 9 17:28:26 2012 (r238303) @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2009 Guillaume Ballet + * Copyright (c) 2012 Aleksander Dutkowski + * 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 _ARM_EARLY_UART +#define _ARM_EARLY_UART + +#ifdef ARM_EARLY_DEBUG + +#define edebugf(fmt, args...) do { \ + eprintf("%s(): ", __func__); \ + eprintf(fmt, ##args); \ +} while(0); + +void arm_early_putc(char c); +void arm_early_puts(unsigned char *str); +void arm_early_uart_base(uint32_t base_address); +void eprintf(const char *fmt, ...); +void dump_l1pagetable(uint32_t pta); +void dump_l2pagetable(uint32_t pta, uint32_t l1); +#else + +#define edebugf(fmt, args...) +#define eprintf(fmr, args...) + +#endif + +#endif Modified: user/jceel/soc2012_armv6/sys/conf/options.arm ============================================================================== --- user/jceel/soc2012_armv6/sys/conf/options.arm Mon Jul 9 17:25:56 2012 (r238302) +++ user/jceel/soc2012_armv6/sys/conf/options.arm Mon Jul 9 17:28:26 2012 (r238303) @@ -1,6 +1,9 @@ #$FreeBSD$ ARM9_CACHE_WRITE_THROUGH opt_global.h ARM_CACHE_LOCK_ENABLE opt_global.h +ARM_EARLY_DEBUG opt_global.h +ARM_EARLY_UART_PA opt_global.h +ARM_EARLY_UART_VA opt_global.h ARMFPE opt_global.h ARM_KERN_DIRECTMAP opt_vm.h ARM_INTRNG opt_global.h From owner-svn-src-user@FreeBSD.ORG Mon Jul 9 17:34:04 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A226B106566C; Mon, 9 Jul 2012 17:34:04 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 741C48FC14; Mon, 9 Jul 2012 17:34:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q69HY4N8031096; Mon, 9 Jul 2012 17:34:04 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q69HY47u031093; Mon, 9 Jul 2012 17:34:04 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207091734.q69HY47u031093@svn.freebsd.org> From: Jakub Wojciech Klama Date: Mon, 9 Jul 2012 17:34:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238304 - user/jceel/soc2012_armv6/sys/dev/fdt X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 17:34:04 -0000 Author: jceel Date: Mon Jul 9 17:34:03 2012 New Revision: 238304 URL: http://svn.freebsd.org/changeset/base/238304 Log: Add shorthand function for finding FDT node of UART selected for console (in "chosen" section). Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c ============================================================================== --- user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c Mon Jul 9 17:28:26 2012 (r238303) +++ user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c Mon Jul 9 17:34:03 2012 (r238304) @@ -129,6 +129,30 @@ moveon: return (0); } +phandle_t +fdt_lookup_console_uart(void) +{ + char buf[64]; + phandle_t node, chosen; + + /* + * Retrieve /chosen/std{in,out}. + */ + if ((chosen = OF_finddevice("/chosen")) == -1) + return (-1); + if (OF_getprop(chosen, "stdin", buf, sizeof(buf)) <= 0) + return (-1); + if ((node = OF_finddevice(buf)) == -1) + return (-1); + if (OF_getprop(chosen, "stdout", buf, sizeof(buf)) <= 0) + return (-1); + if (OF_finddevice(buf) != node) + /* Only stdin == stdout is supported. */ + return (-1); + + return (node); +} + int fdt_read_ranges(phandle_t node, struct fdt_range **ranges, int addr_cells, int par_addr_cells, int size_cells) Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h ============================================================================== --- user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h Mon Jul 9 17:28:26 2012 (r238303) +++ user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h Mon Jul 9 17:34:03 2012 (r238304) @@ -97,6 +97,7 @@ phandle_t fdt_find_compatible(phandle_t, int fdt_get_mem_regions(struct mem_region *, int *, uint32_t *); int fdt_get_phyaddr(phandle_t, device_t, int *, void **); int fdt_immr_addr(vm_offset_t); +phandle_t fdt_lookup_console_uart(void); int fdt_read_ranges(phandle_t node, struct fdt_range **ranges, int addr_cells, int par_addr_cells, int size_cels); u_long fdt_ranges_lookup(struct fdt_range *ranges, int nranges, u_long addr, From owner-svn-src-user@FreeBSD.ORG Mon Jul 9 18:01:40 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D36921065670; Mon, 9 Jul 2012 18:01:40 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BEE3A8FC16; Mon, 9 Jul 2012 18:01:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q69I1eEo032281; Mon, 9 Jul 2012 18:01:40 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q69I1eGj032279; Mon, 9 Jul 2012 18:01:40 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207091801.q69I1eGj032279@svn.freebsd.org> From: Jakub Wojciech Klama Date: Mon, 9 Jul 2012 18:01:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238305 - user/jceel/soc2012_armv6/sys/conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 18:01:40 -0000 Author: jceel Date: Mon Jul 9 18:01:40 2012 New Revision: 238305 URL: http://svn.freebsd.org/changeset/base/238305 Log: Add missing file to previous commit. Modified: user/jceel/soc2012_armv6/sys/conf/files.arm Modified: user/jceel/soc2012_armv6/sys/conf/files.arm ============================================================================== --- user/jceel/soc2012_armv6/sys/conf/files.arm Mon Jul 9 17:34:03 2012 (r238304) +++ user/jceel/soc2012_armv6/sys/conf/files.arm Mon Jul 9 18:01:40 2012 (r238305) @@ -18,6 +18,7 @@ arm/arm/db_interface.c optional ddb arm/arm/db_trace.c optional ddb arm/arm/disassem.c optional ddb arm/arm/dump_machdep.c standard +arm/arm/early_uart.c optional arm_early_debug arm/arm/elf_machdep.c standard arm/arm/exception.S standard arm/arm/fiq.c standard From owner-svn-src-user@FreeBSD.ORG Mon Jul 9 18:34:21 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C7CA9106564A; Mon, 9 Jul 2012 18:34:21 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B0A798FC15; Mon, 9 Jul 2012 18:34:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q69IYLok033675; Mon, 9 Jul 2012 18:34:21 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q69IYLtk033668; Mon, 9 Jul 2012 18:34:21 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207091834.q69IYLtk033668@svn.freebsd.org> From: Jakub Wojciech Klama Date: Mon, 9 Jul 2012 18:34:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238306 - in user/jceel/soc2012_armv6/sys: arm/arm arm/include dev/uart X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 18:34:21 -0000 Author: jceel Date: Mon Jul 9 18:34:21 2012 New Revision: 238306 URL: http://svn.freebsd.org/changeset/base/238306 Log: ARM machdep refactoring: rewritten MMU initialization code (which creates initial pagetables before bootstrapping pmap, set stacks, msgbuf, etc) to be more versatile and easier to understand. Moved such routine into arm/machdep.c file. Moved some frequently-used routines from individual ports machdep files into arm/machdep.c file. Changed pmap_devmap entries allocation: now virtual address of device mapping is allocated dynamically. This change will free port developers from managing virtual address space and make mappings more compact (only needed devices will be mapped without gaps between them). Also, pmap_devmap entries has a name: if pmap_devmap entry name will match device alias in .dts file, physical address and size of mapping will be automatically aquired from FDT. Modified: user/jceel/soc2012_armv6/sys/arm/arm/machdep.c user/jceel/soc2012_armv6/sys/arm/arm/pmap.c user/jceel/soc2012_armv6/sys/arm/include/machdep.h user/jceel/soc2012_armv6/sys/arm/include/pmap.h user/jceel/soc2012_armv6/sys/dev/uart/uart_bus_fdt.c user/jceel/soc2012_armv6/sys/dev/uart/uart_dev_lpc.c Modified: user/jceel/soc2012_armv6/sys/arm/arm/machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/arm/machdep.c Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/arm/arm/machdep.c Mon Jul 9 18:34:21 2012 (r238306) @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -82,6 +83,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -93,15 +95,50 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include + +/* Define various stack sizes in pages */ +#define IRQ_STACK_SIZE 1 +#define ABT_STACK_SIZE 1 +#define UND_STACK_SIZE 1 + +#define ARM_DEVMAP_START 0xf0000000 + struct pcpu __pcpu[MAXCPU]; struct pcpu *pcpup = &__pcpu[0]; +static struct trapframe proc0_tf; + uint32_t cpu_reset_address = 0; int cold = 1; vm_offset_t vector_page; long realmem = 0; +extern u_int data_abort_handler_address; +extern u_int prefetch_abort_handler_address; +extern u_int undefined_handler_address; + +extern vm_offset_t pmap_bootstrap_lastaddr; + +struct pv_addr systempage; +struct pv_addr msgbufpv; +struct pv_addr irqstack; +struct pv_addr undstack; +struct pv_addr abtstack; +struct pv_addr kernelstack; + +extern struct pmap_devmap arm_pmap_devmap[]; +struct pv_addr arm_bootstrap_l2pt[128]; +vm_offset_t arm_free_va, arm_free_pa, arm_allocated_va; +vm_offset_t arm_start_va, arm_start_pa; +vm_offset_t arm_devmap_size; +vm_offset_t pmap_bootstrap_lastaddr; + +vm_paddr_t phys_avail[10]; +vm_paddr_t dump_avail[4]; + int (*_arm_memcpy)(void *, void *, int, int) = NULL; int (*_arm_bzero)(void *, int, int) = NULL; int _min_memcpy_size = 0; @@ -112,6 +149,10 @@ extern int *end; extern vm_offset_t ksym_start, ksym_end; #endif +static void arm_valloc_pages(struct pv_addr *, size_t, size_t); +static void arm_process_devmap(struct pmap_devmap *); +static void arm_bootstrap_pagetables(uint32_t, struct pv_addr *, struct pv_addr *); + void sendsig(catcher, ksi, mask) sig_t catcher; @@ -731,6 +772,22 @@ fake_preload_metadata(void) return (lastaddr); } +/* + * Initialize proc0 + */ +void +init_proc0(vm_offset_t kstack) +{ + proc_linkup0(&proc0, &thread0); + thread0.td_kstack = kstack; + thread0.td_pcb = (struct pcb *) + (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; + thread0.td_pcb->pcb_flags = 0; + thread0.td_frame = &proc0_tf; + pcpup->pc_curpcb = thread0.td_pcb; +} + + void pcpu0_init(void) { @@ -743,3 +800,381 @@ pcpu0_init(void) PCPU_SET(cpu, 0); #endif } + +static void +arm_valloc_pages(struct pv_addr *result, size_t npages, size_t boundary) +{ + npages *= PAGE_SIZE; + boundary *= PAGE_SIZE; + + /* First, round up to specified boundary */ + arm_free_pa = roundup(arm_free_pa, boundary); + arm_free_va = roundup(arm_free_va, boundary); + + result->pv_pa = arm_free_pa; + arm_free_pa += npages; + result->pv_va = arm_free_va; + arm_free_va += npages; + arm_allocated_va += npages; + memset((void *)result->pv_va, 0, npages); + + edebugf("pa=0x%x va=0x%x size=0x%x\n", result->pv_pa, result->pv_va, npages); +} + +static void +arm_bootstrap_pagetables(uint32_t memsize, struct pv_addr *vectors, struct pv_addr *l1pt) +{ + struct pv_addr *l2pt = arm_bootstrap_l2pt; + vm_offset_t l2_start; + vm_offset_t pagetables_size = 0; + int l2_needed; + int l2_devmap; + int i, j; + + /* Allocate L1 pagetable */ + arm_valloc_pages(l1pt, L1_TABLE_SIZE / PAGE_SIZE, L1_TABLE_SIZE / PAGE_SIZE); + pagetables_size += L1_TABLE_SIZE; + + /* + * Calculate number of needed L2 pagetables: we are starting with + * one needed to map vectors page + */ + l2_start = rounddown(arm_free_va, L1_S_SIZE); + l2_needed = 1; /* vectors */ + l2_devmap = roundup(arm_devmap_size, L1_S_SIZE) >> L1_S_SHIFT; + /* Add needed number of tables to hold vm_page array */ + l2_needed += roundup((memsize / PAGE_SIZE) * sizeof(struct vm_page), L1_S_SIZE) >> L1_S_SHIFT; + /* And then to map kernel text and data and associated structures */ + l2_needed += roundup(arm_free_va - l2_start, L1_S_SIZE) >> L1_S_SHIFT; + /* ...and to map devmap table */ + l2_needed += l2_devmap; + /* + * Finally, round up to 4 to not waste space, as we can fit 4 + * pagetables on one page + */ + l2_needed = roundup(l2_needed, 4); + + edebugf("L2 needed=%d devmap=%d\n", l2_needed, l2_devmap); + + /* Allocate L2 page tables */ + arm_valloc_pages(&l2pt[0], (l2_needed * L2_TABLE_SIZE_REAL) / PAGE_SIZE, 1); + pagetables_size += (l2_needed * L2_TABLE_SIZE_REAL); + + for (i = 1; i < l2_needed; i++) { + /* Fill in L2 page table addresses */ + l2pt[i].pv_pa = l2pt[0].pv_pa + (i * L2_TABLE_SIZE_REAL); + l2pt[i].pv_va = l2pt[0].pv_va + (i * L2_TABLE_SIZE_REAL); + } + + for (i = 0; i < l2_needed - l2_devmap - 1; i++) { + pmap_link_l2pt(l1pt->pv_va, l2_start + (i * L1_S_SIZE), &l2pt[i]); + edebugf("link L2 page table %d at 0x%x\n", i, l2_start + (i * L1_S_SIZE)); + } + + /* Tell pmap about currently maximum mapped VA address */ + pmap_curmaxkvaddr = roundup(arm_free_va, L1_S_SIZE); + + /* Link devmap tables */ + for (j = 0; j < l2_devmap; j++) { + pmap_link_l2pt(l1pt->pv_va, ARM_DEVMAP_START + (j * L1_S_SIZE), &l2pt[i + j]); + edebugf("link L2 page table %d at 0x%x\n", i + j, ARM_DEVMAP_START + (j * L1_S_SIZE)); + } + + /* Link and map vectors page */ + pmap_link_l2pt(l1pt->pv_va, ARM_VECTORS_HIGH, &l2pt[l2_needed - 1]); + pmap_map_entry(l1pt->pv_va, ARM_VECTORS_HIGH, vectors->pv_pa, + VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); + + /* Map kernel and structures */ + pmap_map_chunk(l1pt->pv_va, arm_start_va, arm_start_pa, + arm_allocated_va - pagetables_size, + VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); + + /* Map pagetables itself: L1 */ + pmap_map_chunk(l1pt->pv_va, l1pt->pv_va, l1pt->pv_pa, L1_TABLE_SIZE, + VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); + + /* and L2 */ + pmap_map_chunk(l1pt->pv_va, l2pt[0].pv_va, l2pt[0].pv_pa, + L2_TABLE_SIZE_REAL * l2_needed, + VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); +} + +static void +arm_process_devmap(struct pmap_devmap *devmap) +{ + struct fdt_range ranges[8]; + struct fdt_range *rptr = ranges; + struct pmap_devmap *entry; + phandle_t node, parent; + vm_offset_t totalsize = 0; + u_long start, size; + int addr_cells, size_cells, par_addr_cells; + int nranges, i; + + edebugf("processing devmap entries\n"); + + for (i = 0; devmap[i].pd_name != NULL || devmap[i].pd_pa != 0; i++) { + entry = &devmap[i]; + if (entry->pd_name != NULL) { + + edebugf("fdt %s: ", entry->pd_name); + + node = !strcmp(entry->pd_name, "console-uart") + ? fdt_lookup_console_uart() + : OF_finddevice(entry->pd_name); + + eprintf("node=0x%x ", node); + + if (node == -1) + goto notfound; + + if ((parent = OF_parent(node)) <= 0) + goto notfound; + + if (fdt_addrsize_cells(parent, &addr_cells, &size_cells)) + goto notfound; + + if ((par_addr_cells = fdt_parent_addr_cells(parent)) > 2) + goto notfound; + + nranges = fdt_read_ranges(parent, &rptr, addr_cells, + par_addr_cells, size_cells); + + if (nranges <= 0) + goto notfound; + + fdt_regsize(node, &start, &size); + + start += fdt_ranges_lookup(ranges, nranges, start, size); + + entry->pd_pa = rounddown(start, PAGE_SIZE); + entry->pd_size = roundup(size, PAGE_SIZE); + + } else + edebugf("entry: "); + +notfound: + entry->pd_va = ARM_DEVMAP_START + totalsize; + totalsize += entry->pd_size; + eprintf("pa=0x%x va=0x%x size=0x%x\n", entry->pd_pa, entry->pd_va, entry->pd_size); + } + + edebugf("total mapped size: 0x%x\n", totalsize); + arm_devmap_size = totalsize; +} + + +void * +arm_mmu_init(uint32_t memsize, uint32_t lastaddr, int high_vectors) +{ + struct pv_addr pagetable; + struct pv_addr dpcpu; + + arm_start_va = KERNVIRTADDR; + arm_start_pa = KERNPHYSADDR; + arm_free_va = roundup(lastaddr, PAGE_SIZE); + arm_free_pa = arm_free_va + (KERNPHYSADDR - KERNVIRTADDR); + arm_allocated_va = arm_free_va - arm_start_va; + pmap_bootstrap_lastaddr = ARM_DEVMAP_START - ARM_NOCACHE_KVA_SIZE; + + edebugf("arm_free_va=0x%x arm_free_pa=0x%x\n", arm_start_va, arm_free_va); + edebugf("using %s vectors address\n", high_vectors ? "high" : "low"); + + /* + * Allocate a page for the system page mapped to 0x00000000 + * or 0xffff0000. This page will just contain the system vectors + * and can be shared by all processes. + */ + arm_valloc_pages(&systempage, 1, 1); + + /* Allocate dynamic per-cpu area. */ + arm_valloc_pages(&dpcpu, DPCPU_SIZE / PAGE_SIZE, 1); + dpcpu_init((void *)dpcpu.pv_va, 0); + + /* Allocate stacks for all modes */ + arm_valloc_pages(&irqstack, IRQ_STACK_SIZE * MAXCPU, 1); + arm_valloc_pages(&abtstack, ABT_STACK_SIZE * MAXCPU, 1); + arm_valloc_pages(&undstack, UND_STACK_SIZE * MAXCPU, 1); + arm_valloc_pages(&kernelstack, KSTACK_PAGES * MAXCPU, 1); + + init_param1(); + + /* Allocate space for message buffer */ + arm_valloc_pages(&msgbufpv, round_page(msgbufsize) / PAGE_SIZE, 1); + + /* Calculate devmap size */ + arm_process_devmap(arm_pmap_devmap); + + /* Construct bootstrap pagetables */ + arm_bootstrap_pagetables(memsize, &systempage, &pagetable); + pmap_devmap_bootstrap(pagetable.pv_va, arm_pmap_devmap); + + edebugf("L1 table pa=0x%x va=0x%x\n", pagetable.pv_pa, pagetable.pv_va); + + /* Launch our bootstrap pagetable */ + cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)) | + DOMAIN_CLIENT); + setttb(pagetable.pv_pa); + cpu_tlb_flushID(); + cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)); + +#ifdef ARM_EARLY_DEBUG + arm_early_uart_base(pmap_devmap_find_name("console-uart")->pd_va); +#endif + + edebugf("bootstrap pagetable launched\n"); + + /* + * Pages were allocated during the secondary bootstrap for the + * stacks for different CPU modes. + * We must now set the r13 registers in the different CPU modes to + * point to these stacks. + * Since the ARM stacks use STMFD etc. we must set r13 to the top end + * of the stack memory. + */ + cpu_control(CPU_CONTROL_MMU_ENABLE, CPU_CONTROL_MMU_ENABLE); + set_stackptrs(0); + + /* + * We must now clean the cache again.... + * Cleaning may be done by reading new data to displace any + * dirty data in the cache. This will have happened in setttb() + * but since we are boot strapping the addresses used for the read + * may have just been remapped and thus the cache could be out + * of sync. A re-clean after the switch will cure this. + * After booting there are no gross relocations of the kernel thus + * this problem will not occur after initarm(). + */ + cpu_idcache_wbinv_all(); + + /* Set stack for exception handlers */ + data_abort_handler_address = (u_int)data_abort_handler; + prefetch_abort_handler_address = (u_int)prefetch_abort_handler; + undefined_handler_address = (u_int)undefinedinstruction_bounce; + undefined_init(); + + init_proc0(kernelstack.pv_va); + arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); + + dump_avail[0] = 0; + dump_avail[1] = memsize; + dump_avail[2] = 0; + dump_avail[3] = 0; + + pmap_bootstrap(arm_free_va, pmap_bootstrap_lastaddr, &pagetable); + msgbufp = (void *)msgbufpv.pv_va; + msgbufinit(msgbufp, msgbufsize); + + edebugf("MMU initialized\n"); + + return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP - + sizeof(struct pcb))); +} + +void +set_stackptrs(int cpu) +{ + + set_stackptr(PSR_IRQ32_MODE, + irqstack.pv_va + ((IRQ_STACK_SIZE * PAGE_SIZE) * (cpu + 1))); + set_stackptr(PSR_ABT32_MODE, + abtstack.pv_va + ((ABT_STACK_SIZE * PAGE_SIZE) * (cpu + 1))); + set_stackptr(PSR_UND32_MODE, + undstack.pv_va + ((UND_STACK_SIZE * PAGE_SIZE) * (cpu + 1))); +} + +void +physmap_init(struct mem_region *availmem_regions, int availmem_regions_sz) +{ + int i, j, cnt; + vm_offset_t phys_kernelend, kernload; + uint32_t s, e, sz; + struct mem_region *mp, *mp1; + + phys_kernelend = KERNPHYSADDR + (virtual_avail - KERNVIRTADDR); + kernload = KERNPHYSADDR; + + /* + * Remove kernel physical address range from avail + * regions list. Page align all regions. + * Non-page aligned memory isn't very interesting to us. + * Also, sort the entries for ascending addresses. + */ + sz = 0; + cnt = availmem_regions_sz; + eprintf("processing avail regions:\n"); + for (mp = availmem_regions; mp->mr_size; mp++) { + s = mp->mr_start; + e = mp->mr_start + mp->mr_size; + eprintf(" 0x%x-0x%x -> ", s, e); + /* Check whether this region holds all of the kernel. */ + if (s < kernload && e > phys_kernelend) { + availmem_regions[cnt].mr_start = phys_kernelend; + availmem_regions[cnt++].mr_size = e - phys_kernelend; + e = kernload; + } + /* Look whether this regions starts within the kernel. */ + if (s >= kernload && s < phys_kernelend) { + if (e <= phys_kernelend) + goto empty; + s = phys_kernelend; + } + /* Now look whether this region ends within the kernel. */ + if (e > kernload && e <= phys_kernelend) { + if (s >= kernload) { + goto empty; + } + e = kernload; + } + /* Now page align the start and size of the region. */ + s = round_page(s); + e = trunc_page(e); + if (e < s) + e = s; + sz = e - s; + eprintf("0x%x-0x%x = 0x%x\n", s, e, sz); + + /* Check whether some memory is left here. */ + if (sz == 0) { + empty: + eprintf("skipping\n"); + bcopy(mp + 1, mp, + (cnt - (mp - availmem_regions)) * sizeof(*mp)); + cnt--; + mp--; + continue; + } + + /* Do an insertion sort. */ + for (mp1 = availmem_regions; mp1 < mp; mp1++) + if (s < mp1->mr_start) + break; + if (mp1 < mp) { + bcopy(mp1, mp1 + 1, (char *)mp - (char *)mp1); + mp1->mr_start = s; + mp1->mr_size = sz; + } else { + mp->mr_start = s; + mp->mr_size = sz; + } + } + availmem_regions_sz = cnt; + + /* Fill in phys_avail table, based on availmem_regions */ + eprintf("fill in phys_avail:\n"); + for (i = 0, j = 0; i < availmem_regions_sz; i++, j += 2) { + + eprintf(" region: 0x%x - 0x%x (0x%x)\n", + availmem_regions[i].mr_start, + availmem_regions[i].mr_start + availmem_regions[i].mr_size, + availmem_regions[i].mr_size); + + phys_avail[j] = availmem_regions[i].mr_start; + phys_avail[j + 1] = availmem_regions[i].mr_start + + availmem_regions[i].mr_size; + } + phys_avail[j] = 0; + phys_avail[j + 1] = 0; +} + Modified: user/jceel/soc2012_armv6/sys/arm/arm/pmap.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/arm/pmap.c Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/arm/arm/pmap.c Mon Jul 9 18:34:21 2012 (r238306) @@ -4855,7 +4855,10 @@ pmap_devmap_bootstrap(vm_offset_t l1pt, pmap_devmap_table = table; - for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) { + for (i = 0; pmap_devmap_table[i].pd_size != 0 || pmap_devmap_table[i].pd_name != NULL ; i++) { + if (pmap_devmap_table[i].pd_size == 0) + continue; + #ifdef VERBOSE_INIT_ARM printf("devmap: %08x -> %08x @ %08x\n", pmap_devmap_table[i].pd_pa, @@ -4875,17 +4878,18 @@ const struct pmap_devmap * pmap_devmap_find_pa(vm_paddr_t pa, vm_size_t size) { int i; - + if (pmap_devmap_table == NULL) return (NULL); - - for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) { + + for (i = 0; pmap_devmap_table[i].pd_name != NULL || + pmap_devmap_table[i].pd_size != 0; i++) { if (pa >= pmap_devmap_table[i].pd_pa && pa + size <= pmap_devmap_table[i].pd_pa + pmap_devmap_table[i].pd_size) return (&pmap_devmap_table[i]); } - + return (NULL); } @@ -4897,7 +4901,8 @@ pmap_devmap_find_va(vm_offset_t va, vm_s if (pmap_devmap_table == NULL) return (NULL); - for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) { + for (i = 0; pmap_devmap_table[i].pd_name != NULL || + pmap_devmap_table[i].pd_size != 0; i++) { if (va >= pmap_devmap_table[i].pd_va && va + size <= pmap_devmap_table[i].pd_va + pmap_devmap_table[i].pd_size) @@ -4907,3 +4912,19 @@ pmap_devmap_find_va(vm_offset_t va, vm_s return (NULL); } +const struct pmap_devmap * +pmap_devmap_find_name(const char *name) +{ + int i; + + if (pmap_devmap_table == NULL) + return (NULL); + + for (i = 0; pmap_devmap_table[i].pd_name != NULL || + pmap_devmap_table[i].pd_size != 0; i++) { + if (!strcmp(name, pmap_devmap_table[i].pd_name)) + return (&pmap_devmap_table[i]); + } + + return (NULL); +} Modified: user/jceel/soc2012_armv6/sys/arm/include/machdep.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/include/machdep.h Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/arm/include/machdep.h Mon Jul 9 18:34:21 2012 (r238306) @@ -4,9 +4,15 @@ #ifndef _MACHDEP_BOOT_MACHDEP_H_ #define _MACHDEP_BOOT_MACHDEP_H_ +#include + /* misc prototypes used by the many arm machdeps */ void arm_lock_cache_line(vm_offset_t); vm_offset_t fake_preload_metadata(void); +void init_proc0(vm_offset_t kstack); +void *arm_mmu_init(uint32_t, uint32_t, int); +void set_stackptrs(int); +void physmap_init(struct mem_region *, int); void halt(void); void data_abort_handler(trapframe_t *); void prefetch_abort_handler(trapframe_t *); Modified: user/jceel/soc2012_armv6/sys/arm/include/pmap.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/include/pmap.h Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/arm/include/pmap.h Mon Jul 9 18:34:21 2012 (r238306) @@ -629,6 +629,7 @@ void pmap_update(pmap_t); * static mappings of devices, created at bootstrap time. */ struct pmap_devmap { + const char * pd_name; /* FDT device handle */ vm_offset_t pd_va; /* virtual address */ vm_paddr_t pd_pa; /* physical address */ vm_size_t pd_size; /* size of region */ @@ -636,8 +637,13 @@ struct pmap_devmap { int pd_cache; /* cache attributes */ }; +#define DEVMAP_FDT(_name, _prot, _cache) {_name, 0, 0, 0, _prot, _cache} +#define DEVMAP_ENTRY(_pa, _size, _prot, _cache) {NULL, 0, _pa, _size, _prot, _cache} +#define DEVMAP_END {NULL, 0, 0, 0, 0, 0} + const struct pmap_devmap *pmap_devmap_find_pa(vm_paddr_t, vm_size_t); const struct pmap_devmap *pmap_devmap_find_va(vm_offset_t, vm_size_t); +const struct pmap_devmap *pmap_devmap_find_name(const char *name); void pmap_devmap_bootstrap(vm_offset_t, const struct pmap_devmap *); void pmap_devmap_register(const struct pmap_devmap *); Modified: user/jceel/soc2012_armv6/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- user/jceel/soc2012_armv6/sys/dev/uart/uart_bus_fdt.c Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/dev/uart/uart_bus_fdt.c Mon Jul 9 18:34:21 2012 (r238306) @@ -135,9 +135,8 @@ uart_cpu_eqres(struct uart_bas *b1, stru int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { - char buf[64]; struct uart_class *class; - phandle_t node, parent, chosen; + phandle_t node, parent; pcell_t shift, br, rclk; u_long start, size; struct fdt_range ranges[8]; @@ -160,16 +159,7 @@ uart_cpu_getdev(int devtype, struct uart /* * Retrieve /chosen/std{in,out}. */ - if ((chosen = OF_finddevice("/chosen")) == -1) - return (ENXIO); - if (OF_getprop(chosen, "stdin", buf, sizeof(buf)) <= 0) - return (ENXIO); - if ((node = OF_finddevice(buf)) == -1) - return (ENXIO); - if (OF_getprop(chosen, "stdout", buf, sizeof(buf)) <= 0) - return (ENXIO); - if (OF_finddevice(buf) != node) - /* Only stdin == stdout is supported. */ + if ((node = fdt_lookup_console_uart()) == -1) return (ENXIO); /* Modified: user/jceel/soc2012_armv6/sys/dev/uart/uart_dev_lpc.c ============================================================================== --- user/jceel/soc2012_armv6/sys/dev/uart/uart_dev_lpc.c Mon Jul 9 18:01:40 2012 (r238305) +++ user/jceel/soc2012_armv6/sys/dev/uart/uart_dev_lpc.c Mon Jul 9 18:34:21 2012 (r238306) @@ -45,14 +45,17 @@ __FBSDID("$FreeBSD: projects/armv6/sys/d #define DEFAULT_RCLK (13 * 1000 * 1000) #define LPC_UART_NO(_bas) (((_bas->bsh) - LPC_UART_BASE) >> 15) +static bus_space_handle_t uartctrl_bsh; +static bus_space_handle_t clkpwr_bsh; + #define lpc_ns8250_get_auxreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg) + bus_space_read_4((_bas)->bst, uartctrl_bsh, _reg) #define lpc_ns8250_set_auxreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg, _val); + bus_space_write_4((_bas)->bst, uartctrl_bsh, _reg, _val); #define lpc_ns8250_get_clkreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg)) + bus_space_read_4((_bas)->bst, clkpwr_bsh, (_reg)) #define lpc_ns8250_set_clkreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg), (_val)) + bus_space_write_4((_bas)->bst, clkpwr_bsh, (_reg), (_val)) /* * Clear pending interrupts. THRE is cleared by reading IIR. Data @@ -292,6 +295,9 @@ lpc_ns8250_init(struct uart_bas *bas, in u_char ier; u_long clkmode; + bus_space_map(bas->bst, LPC_UART_CONTROL_BASE, LPC_UART_CONTROL_SIZE, 0, &uartctrl_bsh); + bus_space_map(bas->bst, LPC_CLKPWR_BASE, LPC_CLKPWR_SIZE, 0, &clkpwr_bsh); + /* Enable UART clock */ clkmode = lpc_ns8250_get_auxreg(bas, LPC_UART_CLKMODE); lpc_ns8250_set_auxreg(bas, LPC_UART_CLKMODE, From owner-svn-src-user@FreeBSD.ORG Tue Jul 10 00:13:05 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1729C106564A; Tue, 10 Jul 2012 00:13:05 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3A228FC12; Tue, 10 Jul 2012 00:13:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6A0D4er048010; Tue, 10 Jul 2012 00:13:04 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6A0D40J048001; Tue, 10 Jul 2012 00:13:04 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207100013.q6A0D40J048001@svn.freebsd.org> From: Jakub Wojciech Klama Date: Tue, 10 Jul 2012 00:13:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238318 - in user/jceel/soc2012_armv6/sys: arm/conf arm/lpc boot/fdt/dts X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jul 2012 00:13:05 -0000 Author: jceel Date: Tue Jul 10 00:13:04 2012 New Revision: 238318 URL: http://svn.freebsd.org/changeset/base/238318 Log: Update arm/lpc port to use new machdep routines, simplifying lpc_machdep.c file. Some fixes are also done to avoid access to unmapped register space in lpc_spi. Deleted: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_early_uart.c user/jceel/soc2012_armv6/sys/arm/lpc/lpc_early_uart.h Modified: user/jceel/soc2012_armv6/sys/arm/conf/EA3250 user/jceel/soc2012_armv6/sys/arm/lpc/files.lpc user/jceel/soc2012_armv6/sys/arm/lpc/lpc_gpio.c user/jceel/soc2012_armv6/sys/arm/lpc/lpc_machdep.c user/jceel/soc2012_armv6/sys/arm/lpc/lpc_spi.c user/jceel/soc2012_armv6/sys/arm/lpc/lpcreg.h user/jceel/soc2012_armv6/sys/arm/lpc/lpcvar.h user/jceel/soc2012_armv6/sys/boot/fdt/dts/ea3250.dts Modified: user/jceel/soc2012_armv6/sys/arm/conf/EA3250 ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/conf/EA3250 Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/conf/EA3250 Tue Jul 10 00:13:04 2012 (r238318) @@ -10,7 +10,7 @@ hints "EA3250.hints" makeoptions MODULES_OVERRIDE="" -#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols +makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" options SCHED_4BSD #4BSD scheduler @@ -28,6 +28,10 @@ options BOOTP_WIRED_TO=lpe0 options ARM_INTRNG options VERBOSE_INIT_ARM +options ARM_EARLY_DEBUG +options ARM_EARLY_UART_PA=0x40090000 +options ARM_EARLY_UART_VA=0xd0090000 + #options ROOTDEVNAME=\"ufs:/dev/da0a\" options SYSVSHM #SYSV-style shared memory Modified: user/jceel/soc2012_armv6/sys/arm/lpc/files.lpc ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/files.lpc Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/files.lpc Tue Jul 10 00:13:04 2012 (r238318) @@ -3,7 +3,6 @@ arm/arm/bus_space_generic.c standard arm/arm/irq_dispatch.S standard arm/arm/cpufunc_asm_arm9.S standard arm/arm/cpufunc_asm_armv5.S standard -arm/lpc/lpc_early_uart.c standard arm/lpc/lpc_machdep.c standard arm/lpc/lpc_space.c standard arm/lpc/lpc_pwr.c standard Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_gpio.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/lpc_gpio.c Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/lpc_gpio.c Tue Jul 10 00:13:04 2012 (r238318) @@ -501,14 +501,23 @@ lpc_gpio_get_state(device_t dev, int pin } void -platform_gpio_init() +platform_gpio_init(bus_space_handle_t bsh) { +#if 0 + bus_space_handle bsh; + + /* Map GPIO registers */ + bus_space_map(fdtbus_bs_tag, gpio->pd_pa, gpio->pd_size, 0, &bsh); +#endif /* Preset SPI devices CS pins to one */ bus_space_write_4(fdtbus_bs_tag, - LPC_GPIO_BASE, LPC_GPIO_P3_OUTP_SET, + bsh, LPC_GPIO_P3_OUTP_SET, 1 << (SSD1289_CS_PIN - LPC_GPIO_GPO_00(0)) | 1 << (SSD1289_DC_PIN - LPC_GPIO_GPO_00(0)) | 1 << (ADS7846_CS_PIN - LPC_GPIO_GPO_00(0))); + + bus_space_write_4(fdtbus_bs_tag, bsh, 0x100, + (1<<12)|(1<<10)|(1<<9)|(1<<8)|(1<<6)|(1<<5)); } static device_method_t lpc_gpio_methods[] = { Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/lpc_machdep.c Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/lpc_machdep.c Tue Jul 10 00:13:04 2012 (r238318) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 1994-1998 Mark Brinicombe. - * Copyright (c) 1994 Brini. + * Copyright (c) 2012 Jakub Wojciech Klama * All rights reserved. * * This code is derived from software written for Brini by Mark Brinicombe @@ -32,11 +31,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * from: FreeBSD: //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c, rev 45 */ #include "opt_ddb.h" #include "opt_platform.h" +#include "opt_global.h" #include __FBSDID("$FreeBSD$"); @@ -53,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -62,7 +60,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -72,16 +69,9 @@ __FBSDID("$FreeBSD$"); #include #include -#include - -#include #include #include -#include -#include -#include -#include #include #include #include @@ -103,18 +93,6 @@ __FBSDID("$FreeBSD$"); #define debugf(fmt, args...) #endif -/* - * This is the number of L2 page tables required for covering max - * (hypothetical) memsize of 4GB and all kernel mappings (vectors, msgbuf, - * stacks etc.), uprounded to be divisible by 4. - */ -#define KERNEL_PT_MAX 78 - -/* Define various stack sizes in pages */ -#define IRQ_STACK_SIZE 1 -#define ABT_STACK_SIZE 1 -#define UND_STACK_SIZE 1 - extern unsigned char kernbase[]; extern unsigned char _etext[]; extern unsigned char _edata[]; @@ -125,49 +103,23 @@ extern unsigned char _end[]; extern vm_offset_t ksym_start, ksym_end; #endif -extern u_int data_abort_handler_address; -extern u_int prefetch_abort_handler_address; -extern u_int undefined_handler_address; - -extern vm_offset_t pmap_bootstrap_lastaddr; -extern int *end; - -/* Physical and virtual addresses for some global pages */ - -vm_paddr_t phys_avail[10]; -vm_paddr_t dump_avail[4]; -vm_offset_t physical_pages; -vm_offset_t pmap_bootstrap_lastaddr; - -const struct pmap_devmap *pmap_devmap_bootstrap_table; -struct pv_addr systempage; -struct pv_addr msgbufpv; -struct pv_addr irqstack; -struct pv_addr undstack; -struct pv_addr abtstack; -struct pv_addr kernelstack; - -struct pv_addr arm_bootstrap_l2pt[KERNEL_PT_MAX]; -vm_offset_t arm_free_va, arm_free_pa, arm_allocated_va; -vm_offset_t arm_start_va, arm_start_pa; - -static struct trapframe proc0_tf; - static struct mem_region availmem_regions[FDT_MEM_REGIONS]; static int availmem_regions_sz; static void print_kenv(void); static void print_kernel_section_addr(void); -static void arm_valloc_pages(struct pv_addr *, size_t, size_t); -static void arm_bootstrap_pagetables(uint32_t, struct pv_addr *, struct pv_addr *); -static void *arm_mmu_init(uint32_t, uint32_t); -static void physmap_init(void); -static int platform_devmap_init(void); +struct pmap_devmap arm_pmap_devmap[] = { + DEVMAP_FDT("console-uart", VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE), + DEVMAP_FDT("gpio", VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE), + DEVMAP_FDT("pwr", VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE), + DEVMAP_FDT("watchdog", VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE), + /* UART control block */ + DEVMAP_ENTRY(LPC_UART_CONTROL_BASE, LPC_UART_CONTROL_SIZE, + VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE), + DEVMAP_END, +}; -#define round_up_to(_val, _size) (((_val) + ((_size) - 1)) & (~((_size) - 1))) -#define round_down_to(_val, _size) ((_val) & (~((_size) - 1))) - static char * kenv_next(char *cp) { @@ -212,295 +164,6 @@ print_kernel_section_addr(void) debugf(" _end = 0x%08x\n", (uint32_t)_end); } -static void -physmap_init(void) -{ - int i, j, cnt; - vm_offset_t phys_kernelend, kernload; - uint32_t s, e, sz; - struct mem_region *mp, *mp1; - - phys_kernelend = KERNPHYSADDR + (virtual_avail - KERNVIRTADDR); - kernload = KERNPHYSADDR; - - /* - * Remove kernel physical address range from avail - * regions list. Page align all regions. - * Non-page aligned memory isn't very interesting to us. - * Also, sort the entries for ascending addresses. - */ - sz = 0; - cnt = availmem_regions_sz; - debugf("processing avail regions:\n"); - for (mp = availmem_regions; mp->mr_size; mp++) { - s = mp->mr_start; - e = mp->mr_start + mp->mr_size; - debugf(" %08x-%08x -> ", s, e); - /* Check whether this region holds all of the kernel. */ - if (s < kernload && e > phys_kernelend) { - availmem_regions[cnt].mr_start = phys_kernelend; - availmem_regions[cnt++].mr_size = e - phys_kernelend; - e = kernload; - } - /* Look whether this regions starts within the kernel. */ - if (s >= kernload && s < phys_kernelend) { - if (e <= phys_kernelend) - goto empty; - s = phys_kernelend; - } - /* Now look whether this region ends within the kernel. */ - if (e > kernload && e <= phys_kernelend) { - if (s >= kernload) { - goto empty; - } - e = kernload; - } - /* Now page align the start and size of the region. */ - s = round_page(s); - e = trunc_page(e); - if (e < s) - e = s; - sz = e - s; - debugf("%08x-%08x = %x\n", s, e, sz); - - /* Check whether some memory is left here. */ - if (sz == 0) { - empty: - printf("skipping\n"); - bcopy(mp + 1, mp, - (cnt - (mp - availmem_regions)) * sizeof(*mp)); - cnt--; - mp--; - continue; - } - - /* Do an insertion sort. */ - for (mp1 = availmem_regions; mp1 < mp; mp1++) - if (s < mp1->mr_start) - break; - if (mp1 < mp) { - bcopy(mp1, mp1 + 1, (char *)mp - (char *)mp1); - mp1->mr_start = s; - mp1->mr_size = sz; - } else { - mp->mr_start = s; - mp->mr_size = sz; - } - } - availmem_regions_sz = cnt; - - /* Fill in phys_avail table, based on availmem_regions */ - debugf("fill in phys_avail:\n"); - for (i = 0, j = 0; i < availmem_regions_sz; i++, j += 2) { - - debugf(" region: 0x%08x - 0x%08x (0x%08x)\n", - availmem_regions[i].mr_start, - availmem_regions[i].mr_start + availmem_regions[i].mr_size, - availmem_regions[i].mr_size); - - phys_avail[j] = availmem_regions[i].mr_start; - phys_avail[j + 1] = availmem_regions[i].mr_start + - availmem_regions[i].mr_size; - } - phys_avail[j] = 0; - phys_avail[j + 1] = 0; -} - -static void -arm_valloc_pages(struct pv_addr *result, size_t npages, size_t boundary) -{ - npages *= PAGE_SIZE; - boundary *= PAGE_SIZE; - - /* First, round up to specified boundary */ - arm_free_pa = round_up_to(arm_free_pa, boundary); - arm_free_va = round_up_to(arm_free_va, boundary); - - result->pv_pa = arm_free_pa; - arm_free_pa += npages; - result->pv_va = arm_free_va; - arm_free_va += npages; - arm_allocated_va += npages; - memset((void *)result->pv_va, 0, npages); -} - -static void -arm_bootstrap_pagetables(uint32_t memsize, struct pv_addr *vectors, struct pv_addr *l1pt) -{ - struct pv_addr *l2pt = arm_bootstrap_l2pt; - vm_offset_t l2_start; - vm_offset_t pagetables_size = 0; - int l2_needed = 1; /* vectors */ - int i; - - /* Allocate L1 pagetable */ - arm_valloc_pages(l1pt, L1_TABLE_SIZE / PAGE_SIZE, L1_TABLE_SIZE / PAGE_SIZE); - pagetables_size += L1_TABLE_SIZE; - - /* - * Calculate number of needed L2 pagetables: we are starting with - * one needed to map vectors page - */ - l2_start = round_down_to(arm_free_va, L1_S_SIZE); - /* Add needed number of tables to hold vm_page array */ - l2_needed += ((memsize / PAGE_SIZE) * sizeof(struct vm_page) >> L1_S_SHIFT) + 1; - /* And then to map kernel text and data and associated structures */ - l2_needed += (arm_free_va - l2_start) >> L1_S_SHIFT; - /* - * Finally, round up to 4 to not waste space, as we can fit 4 - * pagetables on one page - */ - l2_needed = round_up_to(l2_needed, 4); - - /* Allocate L2 page tables */ - arm_valloc_pages(&l2pt[0], (l2_needed * L2_TABLE_SIZE_REAL) / PAGE_SIZE, 1); - pagetables_size += (l2_needed * L2_TABLE_SIZE_REAL); - - for (i = 0; i < l2_needed; i++) { - /* Fill in L2 page table addresses */ - if (i != 0) { - l2pt[i].pv_pa = l2pt[0].pv_pa + (i * L2_TABLE_SIZE_REAL); - l2pt[i].pv_va = l2pt[0].pv_va + (i * L2_TABLE_SIZE_REAL); - } - - /* Don't link last L2 table now, as it should be linked at vectors region */ - if (i == l2_needed - 1) - break; - - pmap_link_l2pt(l1pt->pv_va, l2_start + (i * L1_S_SIZE), &l2pt[i]); - } - - /* Tell pmap about currently maximum mapped VA address */ - pmap_curmaxkvaddr = round_up_to(arm_free_va, L1_S_SIZE); - - /* Link and map vectors page */ - pmap_link_l2pt(l1pt->pv_va, ARM_VECTORS_HIGH, &l2pt[l2_needed - 1]); - pmap_map_entry(l1pt->pv_va, ARM_VECTORS_HIGH, vectors->pv_pa, - VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - - /* Map kernel and structures */ - pmap_map_chunk(l1pt->pv_va, arm_start_va, arm_start_pa, - arm_allocated_va - pagetables_size, - VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - - /* Map pagetables itself: L1 */ - pmap_map_chunk(l1pt->pv_va, l1pt->pv_va, l1pt->pv_pa, L1_TABLE_SIZE, - VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); - - /* and L2 */ - pmap_map_chunk(l1pt->pv_va, l2pt[0].pv_va, l2pt[0].pv_pa, - L2_TABLE_SIZE_REAL * l2_needed, - VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); -} - -static void * -arm_mmu_init(uint32_t memsize, uint32_t lastaddr) -{ - struct pv_addr pagetable; - struct pv_addr dpcpu; - - arm_start_va = KERNVIRTADDR; - arm_start_pa = KERNPHYSADDR; - arm_free_va = round_up_to(lastaddr, PAGE_SIZE); - arm_free_pa = arm_free_va + (KERNPHYSADDR - KERNVIRTADDR); - arm_allocated_va = arm_free_va - arm_start_va; - - /* - * Allocate a page for the system page mapped to 0x00000000 - * or 0xffff0000. This page will just contain the system vectors - * and can be shared by all processes. - */ - arm_valloc_pages(&systempage, 1, 1); - - /* Allocate dynamic per-cpu area. */ - arm_valloc_pages(&dpcpu, DPCPU_SIZE / PAGE_SIZE, 1); - dpcpu_init((void *)dpcpu.pv_va, 0); - - /* Allocate stacks for all modes */ - arm_valloc_pages(&irqstack, IRQ_STACK_SIZE, 1); - arm_valloc_pages(&abtstack, ABT_STACK_SIZE, 1); - arm_valloc_pages(&undstack, UND_STACK_SIZE, 1); - arm_valloc_pages(&kernelstack, KSTACK_PAGES, 1); - - init_param1(); - - /* Allocate space for message buffer */ - arm_valloc_pages(&msgbufpv, round_page(msgbufsize) / PAGE_SIZE, 1); - - /* Construct bootstrap pagetables */ - arm_bootstrap_pagetables(memsize, &systempage, &pagetable); - - /* Map pmap_devmap[] entries */ - if (platform_devmap_init() != 0) - while (1); - - pmap_devmap_bootstrap(pagetable.pv_va, pmap_devmap_bootstrap_table); - - /* Launch our bootstrap pagetable */ - cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)) | - DOMAIN_CLIENT); - setttb(pagetable.pv_pa); - cpu_tlb_flushID(); - cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)); - - /* - * Pages were allocated during the secondary bootstrap for the - * stacks for different CPU modes. - * We must now set the r13 registers in the different CPU modes to - * point to these stacks. - * Since the ARM stacks use STMFD etc. we must set r13 to the top end - * of the stack memory. - */ - cpu_control(CPU_CONTROL_MMU_ENABLE, CPU_CONTROL_MMU_ENABLE); - set_stackptr(PSR_IRQ32_MODE, - irqstack.pv_va + IRQ_STACK_SIZE * PAGE_SIZE); - set_stackptr(PSR_ABT32_MODE, - abtstack.pv_va + ABT_STACK_SIZE * PAGE_SIZE); - set_stackptr(PSR_UND32_MODE, - undstack.pv_va + UND_STACK_SIZE * PAGE_SIZE); - - /* - * We must now clean the cache again.... - * Cleaning may be done by reading new data to displace any - * dirty data in the cache. This will have happened in setttb() - * but since we are boot strapping the addresses used for the read - * may have just been remapped and thus the cache could be out - * of sync. A re-clean after the switch will cure this. - * After booting there are no gross relocations of the kernel thus - * this problem will not occur after initarm(). - */ - cpu_idcache_wbinv_all(); - - /* Set stack for exception handlers */ - data_abort_handler_address = (u_int)data_abort_handler; - prefetch_abort_handler_address = (u_int)prefetch_abort_handler; - undefined_handler_address = (u_int)undefinedinstruction_bounce; - undefined_init(); - - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_kstack_pages = KSTACK_PAGES; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; - - arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); - - dump_avail[0] = 0; - dump_avail[1] = memsize; - dump_avail[2] = 0; - dump_avail[3] = 0; - - pmap_bootstrap(arm_free_va, pmap_bootstrap_lastaddr, &pagetable); - msgbufp = (void *)msgbufpv.pv_va; - msgbufinit(msgbufp, msgbufsize); - - return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP - - sizeof(struct pcb))); -} - void * initarm(void *mdp, void *unused __unused) { @@ -552,7 +215,6 @@ initarm(void *mdp, void *unused __unused */ if (dtbp == (vm_offset_t)NULL) dtbp = (vm_offset_t)&fdt_static_dtb; - #endif if (OF_install(OFW_FDT, 0) == FALSE) @@ -564,19 +226,12 @@ initarm(void *mdp, void *unused __unused /* Grab physical memory regions information from device tree. */ if (fdt_get_mem_regions(availmem_regions, &availmem_regions_sz, &memsize) != 0) - while(1); - - if (fdt_immr_addr(LPC_DEV_BASE) != 0) while (1); - - /* Platform-specific initialisation */ - pmap_bootstrap_lastaddr = fdt_immr_va - ARM_NOCACHE_KVA_SIZE; - pcpu_init(pcpup, 0, sizeof(struct pcpu)); - PCPU_SET(curthread, &thread0); + pcpu0_init(); /* Initialize MMU */ - sp = arm_mmu_init(memsize, lastaddr); + sp = arm_mmu_init(memsize, lastaddr, true); /* * Only after the SOC registers block is mapped we can perform device @@ -600,12 +255,12 @@ initarm(void *mdp, void *unused __unused /* * Prepare map of physical memory regions available to vm subsystem. */ - physmap_init(); + physmap_init(availmem_regions, availmem_regions_sz); /* * Set initial values of GPIO output ports */ - platform_gpio_init(); + platform_gpio_init(pmap_devmap_find_name("gpio")->pd_va); /* Do basic tuning, hz etc */ init_param2(physmem); @@ -614,30 +269,6 @@ initarm(void *mdp, void *unused __unused return (sp); } -#define FDT_DEVMAP_MAX (1 + 2 + 1 + 1) -static struct pmap_devmap fdt_devmap[FDT_DEVMAP_MAX] = { - { 0, 0, 0, 0, 0, } -}; - -/* - * Construct pmap_devmap[] with DT-derived config data. - */ -static int -platform_devmap_init(void) -{ - - /* - * IMMR range. - */ - fdt_devmap[0].pd_va = fdt_immr_va; - fdt_devmap[0].pd_pa = fdt_immr_pa; - fdt_devmap[0].pd_size = fdt_immr_size; - fdt_devmap[0].pd_prot = VM_PROT_READ | VM_PROT_WRITE; - fdt_devmap[0].pd_cache = PTE_NOCACHE; - - pmap_devmap_bootstrap_table = &fdt_devmap[0]; - return (0); -} struct arm32_dma_range * bus_dma_get_range(void) @@ -656,14 +287,21 @@ bus_dma_get_range_nb(void) void cpu_reset(void) { + bus_space_handle_t clkpwr_bsh; + bus_space_handle_t wdtim_bsh; + + /* Map clkpwr and watchdog timer */ + clkpwr_bsh = pmap_devmap_find_name("pwr")->pd_va; + wdtim_bsh = pmap_devmap_find_name("watchdog")->pd_va; + /* Enable WDT */ bus_space_write_4(fdtbus_bs_tag, - LPC_CLKPWR_BASE, LPC_CLKPWR_TIMCLK_CTRL, + clkpwr_bsh, LPC_CLKPWR_TIMCLK_CTRL, LPC_CLKPWR_TIMCLK_CTRL_WATCHDOG); /* Instant assert of RESETOUT_N with pulse length 1ms */ - bus_space_write_4(fdtbus_bs_tag, LPC_WDTIM_BASE, LPC_WDTIM_PULSE, 13000); - bus_space_write_4(fdtbus_bs_tag, LPC_WDTIM_BASE, LPC_WDTIM_MCTRL, 0x70); + bus_space_write_4(fdtbus_bs_tag, wdtim_bsh, LPC_WDTIM_PULSE, 13000); + bus_space_write_4(fdtbus_bs_tag, wdtim_bsh, LPC_WDTIM_MCTRL, 0x70); for (;;); } Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpc_spi.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/lpc_spi.c Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/lpc_spi.c Tue Jul 10 00:13:04 2012 (r238318) @@ -120,7 +120,6 @@ lpc_spi_attach(device_t dev) return (ENXIO); } - bus_space_write_4(sc->ls_bst, 0xd0028100, 0, (1<<12)|(1<<10)|(1<<9)|(1<<8)|(1<<6)|(1<<5)); lpc_pwr_write(dev, LPC_CLKPWR_SSP_CTRL, LPC_CLKPWR_SSP_CTRL_SSP0EN); lpc_spi_write_4(sc, LPC_SSP_CR0, LPC_SSP_CR0_DSS(8)); lpc_spi_write_4(sc, LPC_SSP_CR1, LPC_SSP_CR1_SSE); Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpcreg.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/lpcreg.h Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/lpcreg.h Tue Jul 10 00:13:04 2012 (r238318) @@ -30,7 +30,7 @@ #define LPC_DEV_PHYS_BASE 0x40000000 #define LPC_DEV_P5_PHYS_BASE 0x20000000 #define LPC_DEV_P6_PHYS_BASE 0x30000000 -#define LPC_DEV_BASE 0xd0000000 +#define LPC_DEV_BASE LPC_DEV_PHYS_BASE /* * Interrupt controller (from UM10326: LPC32x0 User manual, page 87) @@ -87,6 +87,7 @@ * Clocking and power control. (from UM10326: LPC32x0 User manual, page 58) */ #define LPC_CLKPWR_BASE (LPC_DEV_BASE + 0x4000) +#define LPC_CLKPWR_SIZE 0x4000 #define LPC_CLKPWR_PWR_CTRL 0x44 #define LPC_CLKPWR_OSC_CTRL 0x4c #define LPC_CLKPWR_SYSCLK_CTRL 0x50 @@ -188,6 +189,7 @@ /* Additional UART registers */ #define LPC_UART_BASE (LPC_DEV_BASE + 0x80000) #define LPC_UART_CONTROL_BASE (LPC_DEV_BASE + 0x54000) +#define LPC_UART_CONTROL_SIZE 0x1000 #define LPC_UART5_BASE (LPC_DEV_BASE + 0x90000) #define LPC_UART_CTRL 0x00 #define LPC_UART_CLKMODE 0x04 Modified: user/jceel/soc2012_armv6/sys/arm/lpc/lpcvar.h ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/lpc/lpcvar.h Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/arm/lpc/lpcvar.h Tue Jul 10 00:13:04 2012 (r238318) @@ -36,7 +36,7 @@ uint32_t lpc_pwr_read(device_t, int); void lpc_pwr_write(device_t, int, uint32_t); /* GPIO */ -void platform_gpio_init(void); +void platform_gpio_init(bus_space_handle_t bsh); int lpc_gpio_set_flags(device_t, int, int); int lpc_gpio_set_state(device_t, int, int); int lpc_gpio_get_state(device_t, int, int *); Modified: user/jceel/soc2012_armv6/sys/boot/fdt/dts/ea3250.dts ============================================================================== --- user/jceel/soc2012_armv6/sys/boot/fdt/dts/ea3250.dts Tue Jul 10 00:08:39 2012 (r238317) +++ user/jceel/soc2012_armv6/sys/boot/fdt/dts/ea3250.dts Tue Jul 10 00:13:04 2012 (r238318) @@ -37,6 +37,9 @@ aliases { soc = &soc; + pwr = &pwr; + gpio = &gpio; + watchdog = &watchdog; serial4 = &serial4; }; @@ -70,7 +73,7 @@ ranges = <0x0 0x40000000 0x10000000>; bus-frequency = <13000000>; - pwr@4000 { + pwr: pwr@4000 { compatible = "lpc,pwr"; reg = <0x4000 0x4000>; }; @@ -187,10 +190,15 @@ interrupt-parent = <&MIC>; }; - gpio@28000 { + gpio: gpio@28000 { compatible = "lpc,gpio"; reg = <0x28000 0x4000>; }; + + watchdog: watchdog@3c000 { + compatible = "lpc,watchdog"; + reg = <0x3c000 0x4000>; + }; }; ahb6@30000000 { From owner-svn-src-user@FreeBSD.ORG Tue Jul 10 00:14:43 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5335D106564A; Tue, 10 Jul 2012 00:14:43 +0000 (UTC) (envelope-from jceel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3C49C8FC1A; Tue, 10 Jul 2012 00:14:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6A0Eh48048115; Tue, 10 Jul 2012 00:14:43 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6A0Egkj048104; Tue, 10 Jul 2012 00:14:42 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201207100014.q6A0Egkj048104@svn.freebsd.org> From: Jakub Wojciech Klama Date: Tue, 10 Jul 2012 00:14:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238319 - in user/jceel/soc2012_armv6/sys/arm: at91 econa mv s3c2xx0 sa11x0 xscale/i80321 xscale/i8134x xscale/ixp425 xscale/pxa X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jul 2012 00:14:43 -0000 Author: jceel Date: Tue Jul 10 00:14:42 2012 New Revision: 238319 URL: http://svn.freebsd.org/changeset/base/238319 Log: Integrate Andrew's Turner proc0 patch. Modified: user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c user/jceel/soc2012_armv6/sys/arm/mv/mv_machdep.c user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c user/jceel/soc2012_armv6/sys/arm/xscale/i8134x/crb_machdep.c user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c Modified: user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/at91/at91_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -132,8 +132,6 @@ struct pv_addr kernelstack; static void *boot_arg1; static void *boot_arg2; -static struct trapframe proc0_tf; - /* Static device mappings. */ const struct pmap_devmap at91_devmap[] = { /* @@ -401,13 +399,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/econa/econa_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -123,8 +123,6 @@ struct pv_addr kernelstack; static void *boot_arg1; static void *boot_arg2; -static struct trapframe proc0_tf; - /* Static device mappings. */ static const struct pmap_devmap econa_devmap[] = { { @@ -343,13 +341,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/mv/mv_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/mv/mv_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/mv/mv_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -145,8 +145,6 @@ struct pv_addr kernelstack; void set_stackptrs(int cpu); -static struct trapframe proc0_tf; - static struct mem_region availmem_regions[FDT_MEM_REGIONS]; static int availmem_regions_sz; @@ -571,14 +569,7 @@ initarm(void *mdp, void *unused __unused undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_kstack_pages = KSTACK_PAGES; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/s3c2xx0/s3c24x0_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -135,8 +135,6 @@ struct pv_addr undstack; struct pv_addr abtstack; struct pv_addr kernelstack; -static struct trapframe proc0_tf; - #define _A(a) ((a) & ~L1_S_OFFSET) #define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1)) @@ -402,14 +400,8 @@ initarm(void *arg, void *arg2) prefetch_abort_handler_address = (u_int)prefetch_abort_handler; undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - - proc_linkup(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/sa11x0/assabet_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -144,7 +144,6 @@ struct pv_addr irqstack; struct pv_addr undstack; struct pv_addr abtstack; struct pv_addr kernelstack; -static struct trapframe proc0_tf; /* Static device mappings. */ static const struct pmap_devmap assabet_devmap[] = { @@ -381,12 +380,7 @@ initarm(void *arg, void *arg2) /* Set stack for exception handlers */ - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; + init_proc0(kernelstack.pv_va); /* Enable MMU, I-cache, D-cache, write buffer. */ Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/ep80219_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -133,8 +133,6 @@ struct pv_addr abtstack; struct pv_addr kernelstack; struct pv_addr minidataclean; -static struct trapframe proc0_tf; - /* #define IQ80321_OBIO_BASE 0xfe800000UL */ /* #define IQ80321_OBIO_SIZE 0x00100000UL */ @@ -375,13 +373,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); /* Enable MMU, I-cache, D-cache, write buffer. */ Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/xscale/i80321/iq31244_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -133,8 +133,6 @@ struct pv_addr abtstack; struct pv_addr kernelstack; struct pv_addr minidataclean; -static struct trapframe proc0_tf; - #define IQ80321_OBIO_BASE 0xfe800000UL #define IQ80321_OBIO_SIZE 0x00100000UL /* Static device mappings. */ @@ -373,13 +371,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); /* Enable MMU, I-cache, D-cache, write buffer. */ Modified: user/jceel/soc2012_armv6/sys/arm/xscale/i8134x/crb_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/i8134x/crb_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/xscale/i8134x/crb_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -132,8 +132,6 @@ struct pv_addr undstack; struct pv_addr abtstack; struct pv_addr kernelstack; -static struct trapframe proc0_tf; - /* Static device mappings. */ static const struct pmap_devmap iq81342_devmap[] = { { @@ -349,13 +347,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/xscale/ixp425/avila_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -137,8 +137,6 @@ struct pv_addr abtstack; struct pv_addr kernelstack; struct pv_addr minidataclean; -static struct trapframe proc0_tf; - /* Static device mappings. */ static const struct pmap_devmap ixp425_devmap[] = { /* Physical/Virtual address for I/O space */ @@ -439,13 +437,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup0(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); Modified: user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c ============================================================================== --- user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c Tue Jul 10 00:13:04 2012 (r238318) +++ user/jceel/soc2012_armv6/sys/arm/xscale/pxa/pxa_machdep.c Tue Jul 10 00:14:42 2012 (r238319) @@ -133,8 +133,6 @@ struct pv_addr abtstack; struct pv_addr kernelstack; struct pv_addr minidataclean; -static struct trapframe proc0_tf; - static void pxa_probe_sdram(bus_space_tag_t, bus_space_handle_t, uint32_t *, uint32_t *); @@ -363,13 +361,7 @@ initarm(void *arg, void *arg2) undefined_handler_address = (u_int)undefinedinstruction_bounce; undefined_init(); - proc_linkup(&proc0, &thread0); - thread0.td_kstack = kernelstack.pv_va; - thread0.td_pcb = (struct pcb *) - (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; - thread0.td_pcb->pcb_flags = 0; - thread0.td_frame = &proc0_tf; - pcpup->pc_curpcb = thread0.td_pcb; + init_proc0(kernelstack.pv_va); /* Enable MMU, I-cache, D-cache, write buffer. */ arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL); From owner-svn-src-user@FreeBSD.ORG Thu Jul 12 02:07:23 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 02A751065670; Thu, 12 Jul 2012 02:07:23 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DDBD08FC0A; Thu, 12 Jul 2012 02:07:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6C27Mra078119; Thu, 12 Jul 2012 02:07:22 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6C27MCf078092; Thu, 12 Jul 2012 02:07:22 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207120207.q6C27MCf078092@svn.freebsd.org> From: Attilio Rao Date: Thu, 12 Jul 2012 02:07:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238387 - in user/attilio/vmcontention: bin/sh cddl/lib/libdtrace etc etc/defaults etc/rc.d lib/libc/i386/gen lib/libc/sys lib/libedit sbin/ifconfig sbin/ipfw share/man/man4 share/man/m... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jul 2012 02:07:23 -0000 Author: attilio Date: Thu Jul 12 02:07:21 2012 New Revision: 238387 URL: http://svn.freebsd.org/changeset/base/238387 Log: MFC Added: user/attilio/vmcontention/sys/arm/at91/at91soc.c - copied unchanged from r238386, head/sys/arm/at91/at91soc.c user/attilio/vmcontention/sys/arm/at91/at91soc.h - copied unchanged from r238386, head/sys/arm/at91/at91soc.h user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbxfload.c - copied unchanged from r238386, head/sys/contrib/dev/acpica/components/tables/tbxfload.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utexcep.c - copied unchanged from r238386, head/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmcontention/sys/kern/dtio_kdtrace.c - copied unchanged from r238386, head/sys/kern/dtio_kdtrace.c user/attilio/vmcontention/sys/modules/dtrace/dtio/ - copied from r238386, head/sys/modules/dtrace/dtio/ user/attilio/vmcontention/tools/test/upsdl/ - copied from r238386, head/tools/test/upsdl/ Modified: user/attilio/vmcontention/bin/sh/input.c user/attilio/vmcontention/cddl/lib/libdtrace/Makefile user/attilio/vmcontention/cddl/lib/libdtrace/io.d user/attilio/vmcontention/etc/defaults/rc.conf user/attilio/vmcontention/etc/devd.conf user/attilio/vmcontention/etc/rc.d/ipfw user/attilio/vmcontention/etc/rc.d/rarpd user/attilio/vmcontention/lib/libc/i386/gen/getcontextx.c user/attilio/vmcontention/lib/libc/sys/Symbol.map user/attilio/vmcontention/lib/libedit/editline.3 user/attilio/vmcontention/lib/libedit/el.h user/attilio/vmcontention/lib/libedit/read.c user/attilio/vmcontention/lib/libedit/sig.c user/attilio/vmcontention/lib/libedit/sig.h user/attilio/vmcontention/sbin/ifconfig/af_inet6.c user/attilio/vmcontention/sbin/ifconfig/ifconfig.8 user/attilio/vmcontention/sbin/ipfw/ipfw.8 user/attilio/vmcontention/share/man/man4/run.4 user/attilio/vmcontention/share/man/man5/rc.conf.5 user/attilio/vmcontention/sys/amd64/amd64/fpu.c user/attilio/vmcontention/sys/amd64/amd64/machdep.c user/attilio/vmcontention/sys/amd64/amd64/mem.c user/attilio/vmcontention/sys/amd64/include/cpufunc.h user/attilio/vmcontention/sys/arm/at91/at91.c user/attilio/vmcontention/sys/arm/at91/at91_machdep.c user/attilio/vmcontention/sys/arm/at91/at91_mci.c user/attilio/vmcontention/sys/arm/at91/at91_pit.c user/attilio/vmcontention/sys/arm/at91/at91_pitreg.h user/attilio/vmcontention/sys/arm/at91/at91_reset.S user/attilio/vmcontention/sys/arm/at91/at91_rst.c user/attilio/vmcontention/sys/arm/at91/at91_rstreg.h user/attilio/vmcontention/sys/arm/at91/at91_st.c user/attilio/vmcontention/sys/arm/at91/at91_streg.h user/attilio/vmcontention/sys/arm/at91/at91reg.h user/attilio/vmcontention/sys/arm/at91/at91rm9200.c user/attilio/vmcontention/sys/arm/at91/at91rm92reg.h user/attilio/vmcontention/sys/arm/at91/at91sam9260.c user/attilio/vmcontention/sys/arm/at91/at91sam9260reg.h user/attilio/vmcontention/sys/arm/at91/at91sam9g20.c user/attilio/vmcontention/sys/arm/at91/at91sam9g20reg.h user/attilio/vmcontention/sys/arm/at91/at91sam9x25.c user/attilio/vmcontention/sys/arm/at91/at91sam9x25reg.h user/attilio/vmcontention/sys/arm/at91/at91var.h user/attilio/vmcontention/sys/arm/at91/files.at91 user/attilio/vmcontention/sys/arm/at91/uart_bus_at91usart.c user/attilio/vmcontention/sys/arm/at91/uart_cpu_at91rm9200usart.c user/attilio/vmcontention/sys/arm/conf/KB920X user/attilio/vmcontention/sys/arm/econa/econa_machdep.c user/attilio/vmcontention/sys/arm/mv/mv_machdep.c user/attilio/vmcontention/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmcontention/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmcontention/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmcontention/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmcontention/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmcontention/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmcontention/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmcontention/sys/arm/xscale/std.xscale user/attilio/vmcontention/sys/cam/ata/ata_all.c user/attilio/vmcontention/sys/cam/ata/ata_da.c user/attilio/vmcontention/sys/cam/scsi/scsi_da.c user/attilio/vmcontention/sys/conf/files user/attilio/vmcontention/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evxfgpe.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exresolv.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exstore.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwsleep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rscreate.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbfadt.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbinstal.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbxfroot.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utdecode.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utglobal.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utmisc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utobject.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utresrc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utxferror.c user/attilio/vmcontention/sys/contrib/dev/acpica/include/acdebug.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acexcep.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acmacros.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acobject.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acoutput.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/actbl1.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/platform/acenv.h user/attilio/vmcontention/sys/dev/agp/agp_i810.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_debug.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ah_desc.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5210/ar5210_recv.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5211/ar5211_recv.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212.h user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c user/attilio/vmcontention/sys/dev/ath/if_ath.c user/attilio/vmcontention/sys/dev/ath/if_ath_debug.c user/attilio/vmcontention/sys/dev/ath/if_ath_debug.h user/attilio/vmcontention/sys/dev/ath/if_ath_misc.h user/attilio/vmcontention/sys/dev/ath/if_ath_rx.c user/attilio/vmcontention/sys/dev/ath/if_ath_rx.h user/attilio/vmcontention/sys/dev/ath/if_ath_rx_edma.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c user/attilio/vmcontention/sys/dev/ath/if_athvar.h user/attilio/vmcontention/sys/dev/cxgbe/t4_sge.c user/attilio/vmcontention/sys/dev/mfi/mfi_disk.c user/attilio/vmcontention/sys/dev/mfi/mfivar.h user/attilio/vmcontention/sys/dev/usb/usb_pf.c user/attilio/vmcontention/sys/dev/usb/usbdevs user/attilio/vmcontention/sys/dev/usb/wlan/if_run.c user/attilio/vmcontention/sys/dev/virtio/balloon/virtio_balloon.c user/attilio/vmcontention/sys/dev/virtio/block/virtio_blk.c user/attilio/vmcontention/sys/dev/virtio/network/if_vtnet.c user/attilio/vmcontention/sys/dev/virtio/pci/virtio_pci.c user/attilio/vmcontention/sys/dev/virtio/pci/virtio_pci.h user/attilio/vmcontention/sys/dev/virtio/virtio.c user/attilio/vmcontention/sys/dev/virtio/virtio.h user/attilio/vmcontention/sys/dev/virtio/virtio_ring.h user/attilio/vmcontention/sys/dev/virtio/virtqueue.c user/attilio/vmcontention/sys/dev/virtio/virtqueue.h user/attilio/vmcontention/sys/fs/ntfs/ntfs_subr.c user/attilio/vmcontention/sys/fs/ntfs/ntfs_subr.h user/attilio/vmcontention/sys/fs/ntfs/ntfs_vfsops.c user/attilio/vmcontention/sys/fs/ntfs/ntfs_vnops.c user/attilio/vmcontention/sys/i386/i386/machdep.c user/attilio/vmcontention/sys/i386/i386/mem.c user/attilio/vmcontention/sys/i386/include/cpufunc.h user/attilio/vmcontention/sys/i386/isa/npx.c user/attilio/vmcontention/sys/kern/kern_descrip.c user/attilio/vmcontention/sys/kern/kern_sig.c user/attilio/vmcontention/sys/kern/subr_devstat.c user/attilio/vmcontention/sys/kern/sys_process.c user/attilio/vmcontention/sys/mips/nlm/board.c user/attilio/vmcontention/sys/mips/nlm/dev/net/mdio.c user/attilio/vmcontention/sys/mips/nlm/hal/mdio.h user/attilio/vmcontention/sys/mips/nlm/xlp.h user/attilio/vmcontention/sys/mips/nlm/xlp_pci.c user/attilio/vmcontention/sys/modules/acpi/acpi/Makefile user/attilio/vmcontention/sys/modules/dtrace/Makefile user/attilio/vmcontention/sys/modules/dtrace/dtraceall/dtraceall.c user/attilio/vmcontention/sys/net/if_bridge.c user/attilio/vmcontention/sys/net/if_epair.c user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_log.c user/attilio/vmcontention/sys/netinet/sctp_output.c user/attilio/vmcontention/sys/netinet6/nd6.h user/attilio/vmcontention/sys/netsmb/smb_trantcp.c user/attilio/vmcontention/sys/pc98/pc98/machdep.c user/attilio/vmcontention/sys/powerpc/aim/mmu_oea.c user/attilio/vmcontention/sys/powerpc/aim/mmu_oea64.c user/attilio/vmcontention/sys/powerpc/booke/pmap.c user/attilio/vmcontention/sys/powerpc/powerpc/mmu_if.m user/attilio/vmcontention/sys/sys/dtrace_bsd.h user/attilio/vmcontention/sys/vm/vm_object.c user/attilio/vmcontention/usr.sbin/acpi/acpidb/Makefile user/attilio/vmcontention/usr.sbin/acpi/acpidump/acpi.c user/attilio/vmcontention/usr.sbin/acpi/iasl/Makefile user/attilio/vmcontention/usr.sbin/ndp/ndp.8 user/attilio/vmcontention/usr.sbin/ndp/ndp.c user/attilio/vmcontention/usr.sbin/newsyslog/newsyslog.c user/attilio/vmcontention/usr.sbin/rarpd/Makefile user/attilio/vmcontention/usr.sbin/rarpd/rarpd.8 user/attilio/vmcontention/usr.sbin/rarpd/rarpd.c user/attilio/vmcontention/usr.sbin/usbdump/usbdump.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sbin/ipfw/ (props changed) user/attilio/vmcontention/share/man/man4/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/conf/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/include/ (props changed) Modified: user/attilio/vmcontention/bin/sh/input.c ============================================================================== --- user/attilio/vmcontention/bin/sh/input.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/bin/sh/input.c Thu Jul 12 02:07:21 2012 (r238387) @@ -186,7 +186,7 @@ retry: if (rl_cp == NULL) rl_cp = el_gets(el, &el_len); if (rl_cp == NULL) - nr = 0; + nr = el_len == 0 ? 0 : -1; else { nr = el_len; if (nr > BUFSIZ) Modified: user/attilio/vmcontention/cddl/lib/libdtrace/Makefile ============================================================================== --- user/attilio/vmcontention/cddl/lib/libdtrace/Makefile Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/cddl/lib/libdtrace/Makefile Thu Jul 12 02:07:21 2012 (r238387) @@ -45,6 +45,7 @@ SRCS= dt_aggregate.c \ gmatch.c DSRCS= errno.d \ + io.d \ psinfo.d \ signal.d \ unistd.d Modified: user/attilio/vmcontention/cddl/lib/libdtrace/io.d ============================================================================== --- user/attilio/vmcontention/cddl/lib/libdtrace/io.d Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/cddl/lib/libdtrace/io.d Thu Jul 12 02:07:21 2012 (r238387) @@ -27,114 +27,50 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#pragma D depends_on module unix #pragma D depends_on provider io -inline int B_BUSY = B_BUSY; -#pragma D binding "1.0" B_BUSY -inline int B_DONE = 0x00000200; -#pragma D binding "1.0" B_DONE -inline int B_ERROR = B_ERROR; -#pragma D binding "1.0" B_ERROR -inline int B_PAGEIO = B_PAGEIO; -#pragma D binding "1.0" B_PAGEIO -inline int B_PHYS = B_PHYS; -#pragma D binding "1.0" B_PHYS -inline int B_READ = B_READ; -#pragma D binding "1.0" B_READ -inline int B_WRITE = B_WRITE; -#pragma D binding "1.0" B_WRITE -inline int B_ASYNC = 0x00000004; -#pragma D binding "1.0" B_ASYNC - -typedef struct bufinfo { - int b_flags; /* buffer status */ - size_t b_bcount; /* number of bytes */ - caddr_t b_addr; /* buffer address */ - uint64_t b_lblkno; /* block # on device */ - uint64_t b_blkno; /* expanded block # on device */ - size_t b_resid; /* # of bytes not transferred */ - size_t b_bufsize; /* size of allocated buffer */ - caddr_t b_iodone; /* I/O completion routine */ - int b_error; /* expanded error field */ - dev_t b_edev; /* extended device */ -} bufinfo_t; - -#pragma D binding "1.0" translator -translator bufinfo_t < struct buf *B > { - b_flags = B->b_flags; - b_addr = B->b_un.b_addr; - b_bcount = B->b_bcount; - b_lblkno = B->_b_blkno._f; - b_blkno = sizeof (long) == 8 ? B->_b_blkno._f : B->_b_blkno._p._l; - b_resid = B->b_resid; - b_bufsize = B->b_bufsize; - b_iodone = (caddr_t)B->b_iodone; - b_error = B->b_error; - b_edev = B->b_edev; -}; - typedef struct devinfo { - int dev_major; /* major number */ - int dev_minor; /* minor number */ - int dev_instance; /* instance number */ - string dev_name; /* name of device */ - string dev_statname; /* name of device + instance/minor */ - string dev_pathname; /* pathname of device */ + int dev_major; /* major number */ + int dev_minor; /* minor number */ + int dev_instance; /* instance number */ + string dev_name; /* name of device */ + string dev_statname; /* name of device + instance/minor */ + string dev_pathname; /* pathname of device */ } devinfo_t; #pragma D binding "1.0" translator -translator devinfo_t < struct buf *B > { - dev_major = B->b_dip != NULL ? getmajor(B->b_edev) : - getmajor(B->b_file->v_vfsp->vfs_dev); - dev_minor = B->b_dip != NULL ? getminor(B->b_edev) : - getminor(B->b_file->v_vfsp->vfs_dev); - dev_instance = B->b_dip == NULL ? - getminor(B->b_file->v_vfsp->vfs_dev) : - ((struct dev_info *)B->b_dip)->devi_instance; - dev_name = B->b_dip == NULL ? "nfs" : - stringof(`devnamesp[getmajor(B->b_edev)].dn_name); - dev_statname = strjoin(B->b_dip == NULL ? "nfs" : - stringof(`devnamesp[getmajor(B->b_edev)].dn_name), - lltostr(B->b_dip == NULL ? getminor(B->b_file->v_vfsp->vfs_dev) : - ((struct dev_info *)B->b_dip)->devi_instance == 0 && - ((struct dev_info *)B->b_dip)->devi_parent != NULL && - ((struct dev_info *)B->b_dip)->devi_parent->devi_node_name == - "pseudo" ? getminor(B->b_edev) : - ((struct dev_info *)B->b_dip)->devi_instance)); - dev_pathname = B->b_dip == NULL ? "" : - ddi_pathname(B->b_dip, getminor(B->b_edev)); +translator devinfo_t < struct devstat *D > { + dev_major = D->device_number; + dev_minor = D->unit_number; + dev_instance = 0; + dev_name = stringof(D->device_name); + dev_statname = stringof(D->device_name); + dev_pathname = stringof(D->device_name); }; -typedef struct fileinfo { - string fi_name; /* name (basename of fi_pathname) */ - string fi_dirname; /* directory (dirname of fi_pathname) */ - string fi_pathname; /* full pathname */ - offset_t fi_offset; /* offset within file */ - string fi_fs; /* filesystem */ - string fi_mount; /* mount point of file system */ - int fi_oflags; /* open(2) flags for file descriptor */ -} fileinfo_t; +typedef struct bufinfo { + int b_flags; /* flags */ + long b_bcount; /* number of bytes */ + caddr_t b_addr; /* buffer address */ + uint64_t b_blkno; /* expanded block # on device */ + uint64_t b_lblkno; /* block # on device */ + size_t b_resid; /* # of bytes not transferred */ + size_t b_bufsize; /* size of allocated buffer */ +/* caddr_t b_iodone; I/O completion routine */ + int b_error; /* expanded error field */ +/* dev_t b_edev; extended device */ +} bufinfo_t; #pragma D binding "1.0" translator -translator fileinfo_t < struct buf *B > { - fi_name = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - basename(cleanpath(B->b_file->v_path)); - fi_dirname = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - dirname(cleanpath(B->b_file->v_path)); - fi_pathname = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - cleanpath(B->b_file->v_path); - fi_offset = B->b_offset; - fi_fs = B->b_file == NULL ? "" : - stringof(B->b_file->v_op->vnop_name); - fi_mount = B->b_file == NULL ? "" : - B->b_file->v_vfsp->vfs_vnodecovered == NULL ? "/" : - B->b_file->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(B->b_file->v_vfsp->vfs_vnodecovered->v_path); - fi_oflags = 0; +translator bufinfo_t < struct bio *B > { + b_flags = B->bio_flags; + b_bcount = B->bio_bcount; + b_addr = B->bio_data; + b_blkno = 0; + b_lblkno = 0; + b_resid = B->bio_resid; + b_bufsize = 0; /* XXX gnn */ + b_error = B->bio_error; }; /* @@ -158,63 +94,17 @@ inline int O_APPEND = 0x0008; #pragma D binding "1.1" O_APPEND inline int O_CREAT = 0x0200; #pragma D binding "1.1" O_CREAT -inline int O_DSYNC = O_DSYNC; -#pragma D binding "1.1" O_DSYNC inline int O_EXCL = 0x0800; #pragma D binding "1.1" O_EXCL -inline int O_LARGEFILE = O_LARGEFILE; -#pragma D binding "1.1" O_LARGEFILE inline int O_NOCTTY = 0x8000; #pragma D binding "1.1" O_NOCTTY inline int O_NONBLOCK = 0x0004; #pragma D binding "1.1" O_NONBLOCK inline int O_NDELAY = 0x0004; #pragma D binding "1.1" O_NDELAY -inline int O_RSYNC = O_RSYNC; -#pragma D binding "1.1" O_RSYNC inline int O_SYNC = 0x0080; #pragma D binding "1.1" O_SYNC inline int O_TRUNC = 0x0400; #pragma D binding "1.1" O_TRUNC -inline int O_XATTR = O_XATTR; -#pragma D binding "1.1" O_XATTR -#pragma D binding "1.1" translator -translator fileinfo_t < struct file *F > { - fi_name = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - basename(cleanpath(F->f_vnode->v_path)); - fi_dirname = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - dirname(cleanpath(F->f_vnode->v_path)); - fi_pathname = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - cleanpath(F->f_vnode->v_path); - fi_offset = F == NULL ? 0 : F->f_offset; - fi_fs = F == NULL ? "" : stringof(F->f_vnode->v_op->vnop_name); - fi_mount = F == NULL ? "" : - F->f_vnode->v_vfsp->vfs_vnodecovered == NULL ? "/" : - F->f_vnode->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(F->f_vnode->v_vfsp->vfs_vnodecovered->v_path); - fi_oflags = F == NULL ? 0 : F->f_flag + (int)FOPEN; -}; -inline fileinfo_t fds[int fd] = xlate ( - fd >= 0 && fd < curthread->t_procp->p_user.u_finfo.fi_nfiles ? - curthread->t_procp->p_user.u_finfo.fi_list[fd].uf_file : NULL); - -#pragma D attributes Stable/Stable/Common fds -#pragma D binding "1.1" fds - -#pragma D binding "1.2" translator -translator fileinfo_t < struct vnode *V > { - fi_name = V->v_path == NULL ? "" : - basename(cleanpath(V->v_path)); - fi_dirname = V->v_path == NULL ? "" : - dirname(cleanpath(V->v_path)); - fi_pathname = V->v_path == NULL ? "" : cleanpath(V->v_path); - fi_fs = stringof(V->v_op->vnop_name); - fi_mount = V->v_vfsp->vfs_vnodecovered == NULL ? "/" : - V->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(V->v_vfsp->vfs_vnodecovered->v_path); -}; Modified: user/attilio/vmcontention/etc/defaults/rc.conf ============================================================================== --- user/attilio/vmcontention/etc/defaults/rc.conf Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/etc/defaults/rc.conf Thu Jul 12 02:07:21 2012 (r238387) @@ -123,6 +123,7 @@ firewall_script="/etc/rc.firewall" # Whi firewall_type="UNKNOWN" # Firewall type (see /etc/rc.firewall) firewall_quiet="NO" # Set to YES to suppress rule display firewall_logging="NO" # Set to YES to enable events logging +firewall_logif="NO" # Set to YES to create logging-pseudo interface firewall_flags="" # Flags passed to ipfw when type is a file firewall_coscripts="" # List of executables/scripts to run after # firewall starts/stops Modified: user/attilio/vmcontention/etc/devd.conf ============================================================================== --- user/attilio/vmcontention/etc/devd.conf Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/etc/devd.conf Thu Jul 12 02:07:21 2012 (r238387) @@ -320,7 +320,7 @@ notify 10 { notify 0 { match "system" "RCTL"; match "rule" "user:70:swap:.*"; - action "/usr/local/etc/rc.d/postgresql restart" + action "/usr/local/etc/rc.d/postgresql restart"; }; */ Modified: user/attilio/vmcontention/etc/rc.d/ipfw ============================================================================== --- user/attilio/vmcontention/etc/rc.d/ipfw Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/etc/rc.d/ipfw Thu Jul 12 02:07:21 2012 (r238387) @@ -57,6 +57,10 @@ ipfw_start() echo 'Firewall logging enabled.' sysctl net.inet.ip.fw.verbose=1 >/dev/null fi + if checkyesno firewall_logif; then + ifconfig ipfw0 create + echo 'Firewall logging pseudo-interface (ipfw0) created.' + fi } ipfw_poststart() Modified: user/attilio/vmcontention/etc/rc.d/rarpd ============================================================================== --- user/attilio/vmcontention/etc/rc.d/rarpd Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/etc/rc.d/rarpd Thu Jul 12 02:07:21 2012 (r238387) @@ -13,8 +13,9 @@ name="rarpd" rcvar="rarpd_enable" command="/usr/sbin/${name}" -pidfile="/var/run/${name}.pid" required_files="/etc/ethers" load_rc_config $name +pidfile="${rarpd_pidfile:-/var/run/${name}.pid}" + run_rc_command "$1" Modified: user/attilio/vmcontention/lib/libc/i386/gen/getcontextx.c ============================================================================== --- user/attilio/vmcontention/lib/libc/i386/gen/getcontextx.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libc/i386/gen/getcontextx.c Thu Jul 12 02:07:21 2012 (r238387) @@ -68,7 +68,7 @@ __getcontextx_size(void) " movl %%ebx,%1\n" " popl %%ebx\n" : "=a" (p[0]), "=r" (p[1]), "=c" (p[2]), "=d" (p[3]) - : "0" (0x0)); + : "0" (0x1)); if ((p[2] & CPUID2_OSXSAVE) != 0) { __asm __volatile( " pushl %%ebx\n" Modified: user/attilio/vmcontention/lib/libc/sys/Symbol.map ============================================================================== --- user/attilio/vmcontention/lib/libc/sys/Symbol.map Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libc/sys/Symbol.map Thu Jul 12 02:07:21 2012 (r238387) @@ -365,9 +365,6 @@ FBSD_1.2 { cap_getmode; cap_new; cap_getrights; - ffclock_getcounter; - ffclock_getestimate; - ffclock_setestimate; getloginclass; pdfork; pdgetpid; @@ -382,6 +379,9 @@ FBSD_1.2 { }; FBSD_1.3 { + ffclock_getcounter; + ffclock_getestimate; + ffclock_setestimate; posix_fadvise; }; Modified: user/attilio/vmcontention/lib/libedit/editline.3 ============================================================================== --- user/attilio/vmcontention/lib/libedit/editline.3 Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libedit/editline.3 Thu Jul 12 02:07:21 2012 (r238387) @@ -162,6 +162,11 @@ is modified to contain the number of cha Returns the line read if successful, or .Dv NULL if no characters were read or if an error occurred. +If an error occurred, +.Fa count +is set to \-1 and +.Dv errno +contains the error code that caused it. The return value may not remain valid across calls to .Fn el_gets and must be copied if the data is to be retained. Modified: user/attilio/vmcontention/lib/libedit/el.h ============================================================================== --- user/attilio/vmcontention/lib/libedit/el.h Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libedit/el.h Thu Jul 12 02:07:21 2012 (r238387) @@ -115,6 +115,7 @@ struct editline { FILE *el_errfile; /* Stdio stuff */ int el_infd; /* Input file descriptor */ int el_flags; /* Various flags. */ + int el_errno; /* Local copy of errno */ coord_t el_cursor; /* Cursor location */ char **el_display; /* Real screen image = what is there */ char **el_vdisplay; /* Virtual screen image = what we see */ Modified: user/attilio/vmcontention/lib/libedit/read.c ============================================================================== --- user/attilio/vmcontention/lib/libedit/read.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libedit/read.c Thu Jul 12 02:07:21 2012 (r238387) @@ -235,9 +235,12 @@ read_getcmd(EditLine *el, el_action_t *c el_action_t cmd; int num; + el->el_errno = 0; do { - if ((num = el_getc(el, ch)) != 1) /* if EOF or error */ + if ((num = el_getc(el, ch)) != 1) { /* if EOF or error */ + el->el_errno = num == 0 ? 0 : errno; return (num); + } #ifdef KANJI if ((*ch & 0200)) { @@ -289,14 +292,21 @@ read_char(EditLine *el, char *cp) ssize_t num_read; int tried = 0; - while ((num_read = read(el->el_infd, cp, 1)) == -1) + again: + el->el_signal->sig_no = 0; + while ((num_read = read(el->el_infd, cp, 1)) == -1) { + if (el->el_signal->sig_no == SIGCONT) { + sig_set(el); + el_set(el, EL_REFRESH); + goto again; + } if (!tried && read__fixio(el->el_infd, errno) == 0) tried = 1; else { *cp = '\0'; return (-1); } - + } return (int)num_read; } @@ -403,10 +413,13 @@ el_gets(EditLine *el, int *nread) int num; /* how many chars we have read at NL */ char ch; int crlf = 0; + int nrb; #ifdef FIONREAD c_macro_t *ma = &el->el_chared.c_macro; #endif /* FIONREAD */ + if (nread == NULL) + nread = &nrb; *nread = 0; if (el->el_flags & NO_TTY) { @@ -427,12 +440,13 @@ el_gets(EditLine *el, int *nread) if (cp[-1] == '\r' || cp[-1] == '\n') break; } + if (num == -1) + el->el_errno = errno; el->el_line.cursor = el->el_line.lastchar = cp; *cp = '\0'; - if (nread) - *nread = (int)(el->el_line.cursor - el->el_line.buffer); - return (*nread ? el->el_line.buffer : NULL); + *nread = (int)(el->el_line.cursor - el->el_line.buffer); + goto done; } @@ -443,8 +457,8 @@ el_gets(EditLine *el, int *nread) (void) ioctl(el->el_infd, FIONREAD, (ioctl_t) & chrs); if (chrs == 0) { if (tty_rawmode(el) < 0) { - if (nread) - *nread = 0; + errno = 0; + *nread = 0; return (NULL); } } @@ -457,6 +471,7 @@ el_gets(EditLine *el, int *nread) if (el->el_flags & EDIT_DISABLED) { char *cp; size_t idx; + if ((el->el_flags & UNBUFFERED) == 0) cp = el->el_line.buffer; else @@ -480,11 +495,13 @@ el_gets(EditLine *el, int *nread) break; } + if (num == -1) { + el->el_errno = errno; + } + el->el_line.cursor = el->el_line.lastchar = cp; *cp = '\0'; - if (nread) - *nread = (int)(el->el_line.cursor - el->el_line.buffer); - return (*nread ? el->el_line.buffer : NULL); + goto done; } for (num = OKCMD; num == OKCMD;) { /* while still editing this @@ -617,12 +634,17 @@ el_gets(EditLine *el, int *nread) /* make sure the tty is set up correctly */ if ((el->el_flags & UNBUFFERED) == 0) { read_finish(el); - if (nread) - *nread = num; + *nread = num != -1 ? num : 0; } else { - if (nread) - *nread = - (int)(el->el_line.lastchar - el->el_line.buffer); + *nread = (int)(el->el_line.lastchar - el->el_line.buffer); } - return (num ? el->el_line.buffer : NULL); +done: + if (*nread == 0) { + if (num == -1) { + *nread = -1; + errno = el->el_errno; + } + return NULL; + } else + return el->el_line.buffer; } Modified: user/attilio/vmcontention/lib/libedit/sig.c ============================================================================== --- user/attilio/vmcontention/lib/libedit/sig.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libedit/sig.c Thu Jul 12 02:07:21 2012 (r238387) @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $NetBSD: sig.c,v 1.14 2009/02/18 15:04:40 christos Exp $ + * $NetBSD: sig.c,v 1.15 2009/02/19 15:20:22 christos Exp $ */ #if !defined(lint) && !defined(SCCSID) @@ -73,6 +73,8 @@ sig_handler(int signo) (void) sigaddset(&nset, signo); (void) sigprocmask(SIG_BLOCK, &nset, &oset); + sel->el_signal->sig_no = signo; + switch (signo) { case SIGCONT: tty_rawmode(sel); @@ -158,12 +160,12 @@ sig_set(EditLine *el) struct sigaction osa, nsa; nsa.sa_handler = sig_handler; + nsa.sa_flags = 0; sigemptyset(&nsa.sa_mask); (void) sigprocmask(SIG_BLOCK, &el->el_signal->sig_set, &oset); for (i = 0; sighdl[i] != -1; i++) { - nsa.sa_flags = SIGINT ? 0 : SA_RESTART; /* This could happen if we get interrupted */ if (sigaction(sighdl[i], &nsa, &osa) != -1 && osa.sa_handler != sig_handler) Modified: user/attilio/vmcontention/lib/libedit/sig.h ============================================================================== --- user/attilio/vmcontention/lib/libedit/sig.h Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/lib/libedit/sig.h Thu Jul 12 02:07:21 2012 (r238387) @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * @(#)sig.h 8.1 (Berkeley) 6/4/93 - * $NetBSD: sig.h,v 1.7 2009/02/15 21:25:01 christos Exp $ + * $NetBSD: sig.h,v 1.8 2009/02/19 15:20:22 christos Exp $ * $FreeBSD$ */ @@ -61,6 +61,7 @@ typedef struct { struct sigaction sig_action[ALLSIGSNO]; sigset_t sig_set; + volatile sig_atomic_t sig_no; } *el_signal_t; protected void sig_end(EditLine*); Modified: user/attilio/vmcontention/sbin/ifconfig/af_inet6.c ============================================================================== --- user/attilio/vmcontention/sbin/ifconfig/af_inet6.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sbin/ifconfig/af_inet6.c Thu Jul 12 02:07:21 2012 (r238387) @@ -509,8 +509,6 @@ static struct cmd inet6_cmds[] = { DEF_CMD("-ifdisabled", -ND6_IFF_IFDISABLED, setnd6flags), DEF_CMD("nud", ND6_IFF_PERFORMNUD, setnd6flags), DEF_CMD("-nud", -ND6_IFF_PERFORMNUD, setnd6flags), - DEF_CMD("prefer_source",ND6_IFF_PREFER_SOURCE, setnd6flags), - DEF_CMD("-prefer_source",-ND6_IFF_PREFER_SOURCE,setnd6flags), DEF_CMD("auto_linklocal",ND6_IFF_AUTO_LINKLOCAL,setnd6flags), DEF_CMD("-auto_linklocal",-ND6_IFF_AUTO_LINKLOCAL,setnd6flags), DEF_CMD_ARG("pltime", setip6pltime), Modified: user/attilio/vmcontention/sbin/ifconfig/ifconfig.8 ============================================================================== --- user/attilio/vmcontention/sbin/ifconfig/ifconfig.8 Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sbin/ifconfig/ifconfig.8 Thu Jul 12 02:07:21 2012 (r238387) @@ -28,7 +28,7 @@ .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 .\" $FreeBSD$ .\" -.Dd May 27, 2012 +.Dd July 9, 2012 .Dt IFCONFIG 8 .Os .Sh NAME @@ -716,12 +716,6 @@ Set a flag to enable Neighbor Unreachabi .It Cm -nud Clear a flag .Cm nud . -.It Cm prefer_source -Set a flag to prefer addresses on the interface as candidates of the -source address for outgoing packets. -.It Cm -prefer_source -Clear a flag -.Cm prefer_source . .El .Pp The following parameters are specific to cloning Modified: user/attilio/vmcontention/sbin/ipfw/ipfw.8 ============================================================================== --- user/attilio/vmcontention/sbin/ipfw/ipfw.8 Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sbin/ipfw/ipfw.8 Thu Jul 12 02:07:21 2012 (r238387) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 3, 2012 +.Dd July 9, 2012 .Dt IPFW 8 .Os .Sh NAME @@ -560,7 +560,22 @@ is set to 0 (default), one can use .Xr bpf 4 attached to the .Li ipfw0 -pseudo interface. There is no overhead if no +pseudo interface. +This pseudo interface can be created after a boot +manually by using the following command: +.Bd -literal -offset indent +# ifconfig ipfw0 create +.Ed +.Pp +Or, automatically at boot time by adding the following +line to the +.Xr rc.conf 5 +file: +.Bd -literal -offset indent +firewall_logif="YES" +.Ed +.Pp +There is no overhead if no .Xr bpf 4 is attached to the pseudo interface. .Pp Modified: user/attilio/vmcontention/share/man/man4/run.4 ============================================================================== --- user/attilio/vmcontention/share/man/man4/run.4 Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/share/man/man4/run.4 Thu Jul 12 02:07:21 2012 (r238387) @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 7, 2012 +.Dd July 9, 2012 .Dt RUN 4 .Os .Sh NAME @@ -122,6 +122,8 @@ driver supports the following wireless a .It Buffalo WLI-UC-G300N .It Buffalo WLI-UC-G301N .It Buffalo WLI-UC-GN +.It Buffalo WLI-UC-GNM +.It Buffalo WLI-UC-GNM2 .It Corega CG-WLUSB2GNL .It Corega CG-WLUSB2GNR .It Corega CG-WLUSB300AGN @@ -142,6 +144,7 @@ driver supports the following wireless a .It Hercules HWNU-300 .It Linksys WUSB54GC v3 .It Linksys WUSB600N +.It Logitec LAN-W150N/U2 .It Mvix Nubbin MS-811N .It Planex GW-USMicroN .It Planex GW-US300MiniS Modified: user/attilio/vmcontention/share/man/man5/rc.conf.5 ============================================================================== --- user/attilio/vmcontention/share/man/man5/rc.conf.5 Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/share/man/man5/rc.conf.5 Thu Jul 12 02:07:21 2012 (r238387) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 6, 2012 +.Dd July 9, 2012 .Dt RC.CONF 5 .Os .Sh NAME @@ -501,6 +501,16 @@ to enable firewall event logging. This is equivalent to the .Dv IPFIREWALL_VERBOSE kernel option. +.It Va firewall_logif +.Pq Vt bool +Set to +.Dq Li YES +to create pseudo interface +.Li ipfw0 +for logging. +For more details, see +.Xr ipfw 8 +manual page. .It Va firewall_flags .Pq Vt str Flags passed to Modified: user/attilio/vmcontention/sys/amd64/amd64/fpu.c ============================================================================== --- user/attilio/vmcontention/sys/amd64/amd64/fpu.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/amd64/amd64/fpu.c Thu Jul 12 02:07:21 2012 (r238387) @@ -73,10 +73,6 @@ __FBSDID("$FreeBSD$"); #define fxrstor(addr) __asm __volatile("fxrstor %0" : : "m" (*(addr))) #define fxsave(addr) __asm __volatile("fxsave %0" : "=m" (*(addr))) #define ldmxcsr(csr) __asm __volatile("ldmxcsr %0" : : "m" (csr)) -#define start_emulating() __asm __volatile( \ - "smsw %%ax; orb %0,%%al; lmsw %%ax" \ - : : "n" (CR0_TS) : "ax") -#define stop_emulating() __asm __volatile("clts") static __inline void xrstor(char *addr, uint64_t mask) @@ -109,13 +105,14 @@ void fnstsw(caddr_t addr); void fxsave(caddr_t addr); void fxrstor(caddr_t addr); void ldmxcsr(u_int csr); -void start_emulating(void); -void stop_emulating(void); void xrstor(char *addr, uint64_t mask); void xsave(char *addr, uint64_t mask); #endif /* __GNUCLIKE_ASM && !lint */ +#define start_emulating() load_cr0(rcr0() | CR0_TS) +#define stop_emulating() clts() + #define GET_FPU_CW(thread) ((thread)->td_pcb->pcb_save->sv_env.en_cw) #define GET_FPU_SW(thread) ((thread)->td_pcb->pcb_save->sv_env.en_sw) Modified: user/attilio/vmcontention/sys/amd64/amd64/machdep.c ============================================================================== --- user/attilio/vmcontention/sys/amd64/amd64/machdep.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/amd64/amd64/machdep.c Thu Jul 12 02:07:21 2012 (r238387) @@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -206,6 +207,8 @@ struct pcpu __pcpu[MAXCPU]; struct mtx icu_lock; +struct mem_range_softc mem_range_softc; + struct mtx dt_lock; /* lock for GDT and LDT */ static void Modified: user/attilio/vmcontention/sys/amd64/amd64/mem.c ============================================================================== --- user/attilio/vmcontention/sys/amd64/amd64/mem.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/amd64/amd64/mem.c Thu Jul 12 02:07:21 2012 (r238387) @@ -72,8 +72,6 @@ __FBSDID("$FreeBSD$"); */ MALLOC_DEFINE(M_MEMDESC, "memdesc", "memory range descriptors"); -struct mem_range_softc mem_range_softc; - /* ARGSUSED */ int memrw(struct cdev *dev, struct uio *uio, int flags) Modified: user/attilio/vmcontention/sys/amd64/include/cpufunc.h ============================================================================== --- user/attilio/vmcontention/sys/amd64/include/cpufunc.h Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/amd64/include/cpufunc.h Thu Jul 12 02:07:21 2012 (r238387) @@ -107,6 +107,13 @@ clflush(u_long addr) } static __inline void +clts(void) +{ + + __asm __volatile("clts"); +} + +static __inline void disable_intr(void) { __asm __volatile("cli" : : : "memory"); @@ -702,6 +709,9 @@ intr_restore(register_t rflags) int breakpoint(void); u_int bsfl(u_int mask); u_int bsrl(u_int mask); +void clflush(u_long addr); +void clts(void); +void cpuid_count(u_int ax, u_int cx, u_int *p); void disable_intr(void); void do_cpuid(u_int ax, u_int *p); void enable_intr(void); Modified: user/attilio/vmcontention/sys/arm/at91/at91.c ============================================================================== --- user/attilio/vmcontention/sys/arm/at91/at91.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/arm/at91/at91.c Thu Jul 12 02:07:21 2012 (r238387) @@ -270,10 +270,12 @@ at91_attach(device_t dev) } - /* Our device list will be added automatically by the cpu device + /* + * Our device list will be added automatically by the cpu device * e.g. at91rm9200.c when it is identified. To ensure that the * CPU and PMC are attached first any other "identified" devices - * call BUS_ADD_CHILD(9) with an "order" of at least 2. */ + * call BUS_ADD_CHILD(9) with an "order" of at least 2. + */ bus_generic_probe(dev); bus_generic_attach(dev); @@ -363,7 +365,7 @@ at91_setup_intr(device_t dev, device_t c struct at91_softc *sc = device_get_softc(dev); int error; - if (rman_get_start(ires) == sc->sc_irq_system && filt == NULL) + if (rman_get_start(ires) == AT91_IRQ_SYSTEM && filt == NULL) panic("All system interrupt ISRs must be FILTER"); error = BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt, intr, arg, cookiep); @@ -471,6 +473,41 @@ at91_eoi(void *unused) IC_EOICR, 0); } +void +at91_add_child(device_t dev, int prio, const char *name, int unit, + bus_addr_t addr, bus_size_t size, int irq0, int irq1, int irq2) +{ + device_t kid; + struct at91_ivar *ivar; + + kid = device_add_child_ordered(dev, prio, name, unit); + if (kid == NULL) { + printf("Can't add child %s%d ordered\n", name, unit); + return; + } + ivar = malloc(sizeof(*ivar), M_DEVBUF, M_NOWAIT | M_ZERO); + if (ivar == NULL) { + device_delete_child(dev, kid); + printf("Can't add alloc ivar\n"); + return; + } + device_set_ivars(kid, ivar); + resource_list_init(&ivar->resources); + if (irq0 != -1) { + bus_set_resource(kid, SYS_RES_IRQ, 0, irq0, 1); + if (irq0 != AT91_IRQ_SYSTEM) + at91_pmc_clock_add(device_get_nameunit(kid), irq0, 0); + } + if (irq1 != 0) + bus_set_resource(kid, SYS_RES_IRQ, 1, irq1, 1); + if (irq2 != 0) + bus_set_resource(kid, SYS_RES_IRQ, 2, irq2, 1); + if (addr != 0 && addr < AT91_BASE) + addr += AT91_BASE; + if (addr != 0) + bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size); +} + static device_method_t at91_methods[] = { DEVMETHOD(device_probe, at91_probe), DEVMETHOD(device_attach, at91_attach), Modified: user/attilio/vmcontention/sys/arm/at91/at91_machdep.c ============================================================================== --- user/attilio/vmcontention/sys/arm/at91/at91_machdep.c Thu Jul 12 00:27:33 2012 (r238386) +++ user/attilio/vmcontention/sys/arm/at91/at91_machdep.c Thu Jul 12 02:07:21 2012 (r238387) @@ -90,6 +90,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #include #include @@ -115,10 +117,6 @@ extern u_int undefined_handler_address; struct pv_addr kernel_pt_table[NUM_KERNEL_PTS]; -extern void *_end; - -extern int *end; - struct pcpu __pcpu; struct pcpu *pcpup = &__pcpu; @@ -126,7 +124,6 @@ struct pcpu *pcpup = &__pcpu; vm_paddr_t phys_avail[10]; vm_paddr_t dump_avail[4]; -vm_offset_t physical_pages; struct pv_addr systempage; struct pv_addr msgbufpv; @@ -282,7 +279,7 @@ static const char *soc_subtype_name[] = [AT91_ST_SAM9X35] = "at91sam9x35", }; -struct at91_soc_info soc_data; +struct at91_soc_info soc_info; /* * Read the SoC ID from the CIDR register and try to match it against the @@ -295,103 +292,117 @@ at91_try_id(uint32_t dbgu_base) { uint32_t socid; - soc_data.cidr = *(volatile uint32_t *)(AT91_BASE + dbgu_base + + soc_info.cidr = *(volatile uint32_t *)(AT91_BASE + dbgu_base + DBGU_C1R); - socid = soc_data.cidr & ~AT91_CPU_VERSION_MASK; + socid = soc_info.cidr & ~AT91_CPU_VERSION_MASK; - soc_data.type = AT91_T_NONE; - soc_data.subtype = AT91_ST_NONE; - soc_data.family = (soc_data.cidr & AT91_CPU_FAMILY_MASK) >> 20; - soc_data.exid = *(volatile uint32_t *)(AT91_BASE + dbgu_base + + soc_info.type = AT91_T_NONE; + soc_info.subtype = AT91_ST_NONE; + soc_info.family = (soc_info.cidr & AT91_CPU_FAMILY_MASK) >> 20; + soc_info.exid = *(volatile uint32_t *)(AT91_BASE + dbgu_base + DBGU_C2R); switch (socid) { case AT91_CPU_CAP9: - soc_data.type = AT91_T_CAP9; + soc_info.type = AT91_T_CAP9; break; case AT91_CPU_RM9200: - soc_data.type = AT91_T_RM9200; + soc_info.type = AT91_T_RM9200; break; case AT91_CPU_SAM9XE128: case AT91_CPU_SAM9XE256: case AT91_CPU_SAM9XE512: case AT91_CPU_SAM9260: - soc_data.type = AT91_T_SAM9260; - if (soc_data.family == AT91_FAMILY_SAM9XE) - soc_data.subtype = AT91_ST_SAM9XE; + soc_info.type = AT91_T_SAM9260; + if (soc_info.family == AT91_FAMILY_SAM9XE) + soc_info.subtype = AT91_ST_SAM9XE; break; case AT91_CPU_SAM9261: - soc_data.type = AT91_T_SAM9261; + soc_info.type = AT91_T_SAM9261; break; case AT91_CPU_SAM9263: - soc_data.type = AT91_T_SAM9263; + soc_info.type = AT91_T_SAM9263; break; case AT91_CPU_SAM9G10: - soc_data.type = AT91_T_SAM9G10; + soc_info.type = AT91_T_SAM9G10; break; case AT91_CPU_SAM9G20: - soc_data.type = AT91_T_SAM9G20; + soc_info.type = AT91_T_SAM9G20; break; case AT91_CPU_SAM9G45: - soc_data.type = AT91_T_SAM9G45; + soc_info.type = AT91_T_SAM9G45; break; case AT91_CPU_SAM9N12: - soc_data.type = AT91_T_SAM9N12; + soc_info.type = AT91_T_SAM9N12; break; case AT91_CPU_SAM9RL64: - soc_data.type = AT91_T_SAM9RL; + soc_info.type = AT91_T_SAM9RL; break; case AT91_CPU_SAM9X5: - soc_data.type = AT91_T_SAM9X5; + soc_info.type = AT91_T_SAM9X5; break; default: return (0); } - switch (soc_data.type) { + switch (soc_info.type) { case AT91_T_SAM9G45: - switch (soc_data.exid) { + switch (soc_info.exid) { case AT91_EXID_SAM9G45: - soc_data.subtype = AT91_ST_SAM9G45; + soc_info.subtype = AT91_ST_SAM9G45; break; case AT91_EXID_SAM9G46: - soc_data.subtype = AT91_ST_SAM9G46; + soc_info.subtype = AT91_ST_SAM9G46; break; case AT91_EXID_SAM9M10: - soc_data.subtype = AT91_ST_SAM9M10; + soc_info.subtype = AT91_ST_SAM9M10; break; case AT91_EXID_SAM9M11: - soc_data.subtype = AT91_ST_SAM9M11; + soc_info.subtype = AT91_ST_SAM9M11; break; } break; case AT91_T_SAM9X5: - switch (soc_data.exid) { + switch (soc_info.exid) { case AT91_EXID_SAM9G15: - soc_data.subtype = AT91_ST_SAM9G15; + soc_info.subtype = AT91_ST_SAM9G15; break; case AT91_EXID_SAM9G25: - soc_data.subtype = AT91_ST_SAM9G25; + soc_info.subtype = AT91_ST_SAM9G25; break; case AT91_EXID_SAM9G35: - soc_data.subtype = AT91_ST_SAM9G35; + soc_info.subtype = AT91_ST_SAM9G35; break; case AT91_EXID_SAM9X25: - soc_data.subtype = AT91_ST_SAM9X25; + soc_info.subtype = AT91_ST_SAM9X25; break; case AT91_EXID_SAM9X35: - soc_data.subtype = AT91_ST_SAM9X35; + soc_info.subtype = AT91_ST_SAM9X35; break; } break; default: break; } - snprintf(soc_data.name, sizeof(soc_data.name), "%s%s%s", - soc_type_name[soc_data.type], - soc_data.subtype == AT91_ST_NONE ? "" : " subtype ", - soc_data.subtype == AT91_ST_NONE ? "" : - soc_subtype_name[soc_data.subtype]); + /* + * Disable interrupts in the DBGU unit... + */ + *(volatile uint32_t *)(AT91_BASE + dbgu_base + USART_IDR) = 0xffffffff; + + /* + * Save the name for later... + */ + snprintf(soc_info.name, sizeof(soc_info.name), "%s%s%s", + soc_type_name[soc_info.type], + soc_info.subtype == AT91_ST_NONE ? "" : " subtype ", + soc_info.subtype == AT91_ST_NONE ? "" : + soc_subtype_name[soc_info.subtype]); + + /* + * try to get the matching CPU support. + */ + soc_info.soc_data = at91_match_soc(soc_info.type, soc_info.subtype); + return (1); } @@ -544,6 +555,9 @@ initarm(struct arm_boot_params *abp) cninit(); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu Jul 12 02:15:07 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DDF42106564A; Thu, 12 Jul 2012 02:15:07 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C3F848FC0A; Thu, 12 Jul 2012 02:15:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6C2F7mG078501; Thu, 12 Jul 2012 02:15:07 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6C2F75O078475; Thu, 12 Jul 2012 02:15:07 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207120215.q6C2F75O078475@svn.freebsd.org> From: Attilio Rao Date: Thu, 12 Jul 2012 02:15:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238388 - in user/attilio/vmc-playground: bin/sh cddl/lib/libdtrace etc etc/defaults etc/rc.d lib/libc/i386/gen lib/libc/sys lib/libedit sbin/ifconfig sbin/ipfw share/man/man4 share/man... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jul 2012 02:15:08 -0000 Author: attilio Date: Thu Jul 12 02:15:06 2012 New Revision: 238388 URL: http://svn.freebsd.org/changeset/base/238388 Log: Merge from vmcontention Added: user/attilio/vmc-playground/sys/arm/at91/at91soc.c - copied unchanged from r238387, user/attilio/vmcontention/sys/arm/at91/at91soc.c user/attilio/vmc-playground/sys/arm/at91/at91soc.h - copied unchanged from r238387, user/attilio/vmcontention/sys/arm/at91/at91soc.h user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbxfload.c - copied unchanged from r238387, user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbxfload.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utexcep.c - copied unchanged from r238387, user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmc-playground/sys/kern/dtio_kdtrace.c - copied unchanged from r238387, user/attilio/vmcontention/sys/kern/dtio_kdtrace.c user/attilio/vmc-playground/sys/modules/dtrace/dtio/ - copied from r238387, user/attilio/vmcontention/sys/modules/dtrace/dtio/ user/attilio/vmc-playground/tools/test/upsdl/ - copied from r238387, user/attilio/vmcontention/tools/test/upsdl/ Modified: user/attilio/vmc-playground/bin/sh/input.c user/attilio/vmc-playground/cddl/lib/libdtrace/Makefile user/attilio/vmc-playground/cddl/lib/libdtrace/io.d user/attilio/vmc-playground/etc/defaults/rc.conf user/attilio/vmc-playground/etc/devd.conf user/attilio/vmc-playground/etc/rc.d/ipfw user/attilio/vmc-playground/etc/rc.d/rarpd user/attilio/vmc-playground/lib/libc/i386/gen/getcontextx.c user/attilio/vmc-playground/lib/libc/sys/Symbol.map user/attilio/vmc-playground/lib/libedit/editline.3 user/attilio/vmc-playground/lib/libedit/el.h user/attilio/vmc-playground/lib/libedit/read.c user/attilio/vmc-playground/lib/libedit/sig.c user/attilio/vmc-playground/lib/libedit/sig.h user/attilio/vmc-playground/sbin/ifconfig/af_inet6.c user/attilio/vmc-playground/sbin/ifconfig/ifconfig.8 user/attilio/vmc-playground/sbin/ipfw/ipfw.8 user/attilio/vmc-playground/share/man/man4/run.4 user/attilio/vmc-playground/share/man/man5/rc.conf.5 user/attilio/vmc-playground/sys/amd64/amd64/fpu.c user/attilio/vmc-playground/sys/amd64/amd64/machdep.c user/attilio/vmc-playground/sys/amd64/amd64/mem.c user/attilio/vmc-playground/sys/amd64/include/cpufunc.h user/attilio/vmc-playground/sys/arm/at91/at91.c user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c user/attilio/vmc-playground/sys/arm/at91/at91_mci.c user/attilio/vmc-playground/sys/arm/at91/at91_pit.c user/attilio/vmc-playground/sys/arm/at91/at91_pitreg.h user/attilio/vmc-playground/sys/arm/at91/at91_reset.S user/attilio/vmc-playground/sys/arm/at91/at91_rst.c user/attilio/vmc-playground/sys/arm/at91/at91_rstreg.h user/attilio/vmc-playground/sys/arm/at91/at91_st.c user/attilio/vmc-playground/sys/arm/at91/at91_streg.h user/attilio/vmc-playground/sys/arm/at91/at91reg.h user/attilio/vmc-playground/sys/arm/at91/at91rm9200.c user/attilio/vmc-playground/sys/arm/at91/at91rm92reg.h user/attilio/vmc-playground/sys/arm/at91/at91sam9260.c user/attilio/vmc-playground/sys/arm/at91/at91sam9260reg.h user/attilio/vmc-playground/sys/arm/at91/at91sam9g20.c user/attilio/vmc-playground/sys/arm/at91/at91sam9g20reg.h user/attilio/vmc-playground/sys/arm/at91/at91sam9x25.c user/attilio/vmc-playground/sys/arm/at91/at91sam9x25reg.h user/attilio/vmc-playground/sys/arm/at91/at91var.h user/attilio/vmc-playground/sys/arm/at91/files.at91 user/attilio/vmc-playground/sys/arm/at91/uart_bus_at91usart.c user/attilio/vmc-playground/sys/arm/at91/uart_cpu_at91rm9200usart.c user/attilio/vmc-playground/sys/arm/conf/KB920X user/attilio/vmc-playground/sys/arm/econa/econa_machdep.c user/attilio/vmc-playground/sys/arm/mv/mv_machdep.c user/attilio/vmc-playground/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmc-playground/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmc-playground/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmc-playground/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmc-playground/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmc-playground/sys/arm/xscale/std.xscale user/attilio/vmc-playground/sys/cam/ata/ata_all.c user/attilio/vmc-playground/sys/cam/ata/ata_da.c user/attilio/vmc-playground/sys/cam/scsi/scsi_da.c user/attilio/vmc-playground/sys/conf/files user/attilio/vmc-playground/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/evxfgpe.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exresolv.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exstore.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/exutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/hardware/hwsleep.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/parser/psxface.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rscreate.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/rsutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbfadt.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbinstal.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbutils.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbxface.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/tbxfroot.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utdecode.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utglobal.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utmisc.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utobject.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utresrc.c user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/utxferror.c user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acdebug.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acexcep.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acmacros.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acobject.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acoutput.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/actbl1.h user/attilio/vmc-playground/sys/contrib/dev/acpica/include/platform/acenv.h user/attilio/vmc-playground/sys/dev/agp/agp_i810.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah_debug.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ah_desc.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5210/ar5210.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5210/ar5210_recv.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5211/ar5211.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5211/ar5211_recv.c user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5212/ar5212.h user/attilio/vmc-playground/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c user/attilio/vmc-playground/sys/dev/ath/if_ath.c user/attilio/vmc-playground/sys/dev/ath/if_ath_debug.c user/attilio/vmc-playground/sys/dev/ath/if_ath_debug.h user/attilio/vmc-playground/sys/dev/ath/if_ath_misc.h user/attilio/vmc-playground/sys/dev/ath/if_ath_rx.c user/attilio/vmc-playground/sys/dev/ath/if_ath_rx.h user/attilio/vmc-playground/sys/dev/ath/if_ath_rx_edma.c user/attilio/vmc-playground/sys/dev/ath/if_ath_tx.c user/attilio/vmc-playground/sys/dev/ath/if_athvar.h user/attilio/vmc-playground/sys/dev/cxgbe/t4_sge.c user/attilio/vmc-playground/sys/dev/mfi/mfi_disk.c user/attilio/vmc-playground/sys/dev/mfi/mfivar.h user/attilio/vmc-playground/sys/dev/usb/usb_pf.c user/attilio/vmc-playground/sys/dev/usb/usbdevs user/attilio/vmc-playground/sys/dev/usb/wlan/if_run.c user/attilio/vmc-playground/sys/dev/virtio/balloon/virtio_balloon.c user/attilio/vmc-playground/sys/dev/virtio/block/virtio_blk.c user/attilio/vmc-playground/sys/dev/virtio/network/if_vtnet.c user/attilio/vmc-playground/sys/dev/virtio/pci/virtio_pci.c user/attilio/vmc-playground/sys/dev/virtio/pci/virtio_pci.h user/attilio/vmc-playground/sys/dev/virtio/virtio.c user/attilio/vmc-playground/sys/dev/virtio/virtio.h user/attilio/vmc-playground/sys/dev/virtio/virtio_ring.h user/attilio/vmc-playground/sys/dev/virtio/virtqueue.c user/attilio/vmc-playground/sys/dev/virtio/virtqueue.h user/attilio/vmc-playground/sys/fs/ntfs/ntfs_subr.c user/attilio/vmc-playground/sys/fs/ntfs/ntfs_subr.h user/attilio/vmc-playground/sys/fs/ntfs/ntfs_vfsops.c user/attilio/vmc-playground/sys/fs/ntfs/ntfs_vnops.c user/attilio/vmc-playground/sys/i386/i386/machdep.c user/attilio/vmc-playground/sys/i386/i386/mem.c user/attilio/vmc-playground/sys/i386/include/cpufunc.h user/attilio/vmc-playground/sys/i386/isa/npx.c user/attilio/vmc-playground/sys/kern/kern_descrip.c user/attilio/vmc-playground/sys/kern/kern_sig.c user/attilio/vmc-playground/sys/kern/subr_devstat.c user/attilio/vmc-playground/sys/kern/sys_process.c user/attilio/vmc-playground/sys/mips/nlm/board.c user/attilio/vmc-playground/sys/mips/nlm/dev/net/mdio.c user/attilio/vmc-playground/sys/mips/nlm/hal/mdio.h user/attilio/vmc-playground/sys/mips/nlm/xlp.h user/attilio/vmc-playground/sys/mips/nlm/xlp_pci.c user/attilio/vmc-playground/sys/modules/acpi/acpi/Makefile user/attilio/vmc-playground/sys/modules/dtrace/Makefile user/attilio/vmc-playground/sys/modules/dtrace/dtraceall/dtraceall.c user/attilio/vmc-playground/sys/net/if_bridge.c user/attilio/vmc-playground/sys/net/if_epair.c user/attilio/vmc-playground/sys/netinet/ipfw/ip_fw_log.c user/attilio/vmc-playground/sys/netinet/sctp_output.c user/attilio/vmc-playground/sys/netinet6/nd6.h user/attilio/vmc-playground/sys/netsmb/smb_trantcp.c user/attilio/vmc-playground/sys/pc98/pc98/machdep.c user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea.c user/attilio/vmc-playground/sys/powerpc/aim/mmu_oea64.c user/attilio/vmc-playground/sys/powerpc/booke/pmap.c user/attilio/vmc-playground/sys/powerpc/powerpc/mmu_if.m user/attilio/vmc-playground/sys/sys/dtrace_bsd.h user/attilio/vmc-playground/sys/vm/vm_object.c user/attilio/vmc-playground/usr.sbin/acpi/acpidb/Makefile user/attilio/vmc-playground/usr.sbin/acpi/acpidump/acpi.c user/attilio/vmc-playground/usr.sbin/acpi/iasl/Makefile user/attilio/vmc-playground/usr.sbin/ndp/ndp.8 user/attilio/vmc-playground/usr.sbin/ndp/ndp.c user/attilio/vmc-playground/usr.sbin/newsyslog/newsyslog.c user/attilio/vmc-playground/usr.sbin/rarpd/Makefile user/attilio/vmc-playground/usr.sbin/rarpd/rarpd.8 user/attilio/vmc-playground/usr.sbin/rarpd/rarpd.c user/attilio/vmc-playground/usr.sbin/usbdump/usbdump.c Directory Properties: user/attilio/vmc-playground/ (props changed) user/attilio/vmc-playground/lib/libc/ (props changed) user/attilio/vmc-playground/sbin/ (props changed) user/attilio/vmc-playground/sbin/ipfw/ (props changed) user/attilio/vmc-playground/share/man/man4/ (props changed) user/attilio/vmc-playground/sys/ (props changed) user/attilio/vmc-playground/sys/conf/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/tables/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmc-playground/sys/contrib/dev/acpica/include/ (props changed) Modified: user/attilio/vmc-playground/bin/sh/input.c ============================================================================== --- user/attilio/vmc-playground/bin/sh/input.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/bin/sh/input.c Thu Jul 12 02:15:06 2012 (r238388) @@ -186,7 +186,7 @@ retry: if (rl_cp == NULL) rl_cp = el_gets(el, &el_len); if (rl_cp == NULL) - nr = 0; + nr = el_len == 0 ? 0 : -1; else { nr = el_len; if (nr > BUFSIZ) Modified: user/attilio/vmc-playground/cddl/lib/libdtrace/Makefile ============================================================================== --- user/attilio/vmc-playground/cddl/lib/libdtrace/Makefile Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/cddl/lib/libdtrace/Makefile Thu Jul 12 02:15:06 2012 (r238388) @@ -45,6 +45,7 @@ SRCS= dt_aggregate.c \ gmatch.c DSRCS= errno.d \ + io.d \ psinfo.d \ signal.d \ unistd.d Modified: user/attilio/vmc-playground/cddl/lib/libdtrace/io.d ============================================================================== --- user/attilio/vmc-playground/cddl/lib/libdtrace/io.d Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/cddl/lib/libdtrace/io.d Thu Jul 12 02:15:06 2012 (r238388) @@ -27,114 +27,50 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#pragma D depends_on module unix #pragma D depends_on provider io -inline int B_BUSY = B_BUSY; -#pragma D binding "1.0" B_BUSY -inline int B_DONE = 0x00000200; -#pragma D binding "1.0" B_DONE -inline int B_ERROR = B_ERROR; -#pragma D binding "1.0" B_ERROR -inline int B_PAGEIO = B_PAGEIO; -#pragma D binding "1.0" B_PAGEIO -inline int B_PHYS = B_PHYS; -#pragma D binding "1.0" B_PHYS -inline int B_READ = B_READ; -#pragma D binding "1.0" B_READ -inline int B_WRITE = B_WRITE; -#pragma D binding "1.0" B_WRITE -inline int B_ASYNC = 0x00000004; -#pragma D binding "1.0" B_ASYNC - -typedef struct bufinfo { - int b_flags; /* buffer status */ - size_t b_bcount; /* number of bytes */ - caddr_t b_addr; /* buffer address */ - uint64_t b_lblkno; /* block # on device */ - uint64_t b_blkno; /* expanded block # on device */ - size_t b_resid; /* # of bytes not transferred */ - size_t b_bufsize; /* size of allocated buffer */ - caddr_t b_iodone; /* I/O completion routine */ - int b_error; /* expanded error field */ - dev_t b_edev; /* extended device */ -} bufinfo_t; - -#pragma D binding "1.0" translator -translator bufinfo_t < struct buf *B > { - b_flags = B->b_flags; - b_addr = B->b_un.b_addr; - b_bcount = B->b_bcount; - b_lblkno = B->_b_blkno._f; - b_blkno = sizeof (long) == 8 ? B->_b_blkno._f : B->_b_blkno._p._l; - b_resid = B->b_resid; - b_bufsize = B->b_bufsize; - b_iodone = (caddr_t)B->b_iodone; - b_error = B->b_error; - b_edev = B->b_edev; -}; - typedef struct devinfo { - int dev_major; /* major number */ - int dev_minor; /* minor number */ - int dev_instance; /* instance number */ - string dev_name; /* name of device */ - string dev_statname; /* name of device + instance/minor */ - string dev_pathname; /* pathname of device */ + int dev_major; /* major number */ + int dev_minor; /* minor number */ + int dev_instance; /* instance number */ + string dev_name; /* name of device */ + string dev_statname; /* name of device + instance/minor */ + string dev_pathname; /* pathname of device */ } devinfo_t; #pragma D binding "1.0" translator -translator devinfo_t < struct buf *B > { - dev_major = B->b_dip != NULL ? getmajor(B->b_edev) : - getmajor(B->b_file->v_vfsp->vfs_dev); - dev_minor = B->b_dip != NULL ? getminor(B->b_edev) : - getminor(B->b_file->v_vfsp->vfs_dev); - dev_instance = B->b_dip == NULL ? - getminor(B->b_file->v_vfsp->vfs_dev) : - ((struct dev_info *)B->b_dip)->devi_instance; - dev_name = B->b_dip == NULL ? "nfs" : - stringof(`devnamesp[getmajor(B->b_edev)].dn_name); - dev_statname = strjoin(B->b_dip == NULL ? "nfs" : - stringof(`devnamesp[getmajor(B->b_edev)].dn_name), - lltostr(B->b_dip == NULL ? getminor(B->b_file->v_vfsp->vfs_dev) : - ((struct dev_info *)B->b_dip)->devi_instance == 0 && - ((struct dev_info *)B->b_dip)->devi_parent != NULL && - ((struct dev_info *)B->b_dip)->devi_parent->devi_node_name == - "pseudo" ? getminor(B->b_edev) : - ((struct dev_info *)B->b_dip)->devi_instance)); - dev_pathname = B->b_dip == NULL ? "" : - ddi_pathname(B->b_dip, getminor(B->b_edev)); +translator devinfo_t < struct devstat *D > { + dev_major = D->device_number; + dev_minor = D->unit_number; + dev_instance = 0; + dev_name = stringof(D->device_name); + dev_statname = stringof(D->device_name); + dev_pathname = stringof(D->device_name); }; -typedef struct fileinfo { - string fi_name; /* name (basename of fi_pathname) */ - string fi_dirname; /* directory (dirname of fi_pathname) */ - string fi_pathname; /* full pathname */ - offset_t fi_offset; /* offset within file */ - string fi_fs; /* filesystem */ - string fi_mount; /* mount point of file system */ - int fi_oflags; /* open(2) flags for file descriptor */ -} fileinfo_t; +typedef struct bufinfo { + int b_flags; /* flags */ + long b_bcount; /* number of bytes */ + caddr_t b_addr; /* buffer address */ + uint64_t b_blkno; /* expanded block # on device */ + uint64_t b_lblkno; /* block # on device */ + size_t b_resid; /* # of bytes not transferred */ + size_t b_bufsize; /* size of allocated buffer */ +/* caddr_t b_iodone; I/O completion routine */ + int b_error; /* expanded error field */ +/* dev_t b_edev; extended device */ +} bufinfo_t; #pragma D binding "1.0" translator -translator fileinfo_t < struct buf *B > { - fi_name = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - basename(cleanpath(B->b_file->v_path)); - fi_dirname = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - dirname(cleanpath(B->b_file->v_path)); - fi_pathname = B->b_file == NULL ? "" : - B->b_file->v_path == NULL ? "" : - cleanpath(B->b_file->v_path); - fi_offset = B->b_offset; - fi_fs = B->b_file == NULL ? "" : - stringof(B->b_file->v_op->vnop_name); - fi_mount = B->b_file == NULL ? "" : - B->b_file->v_vfsp->vfs_vnodecovered == NULL ? "/" : - B->b_file->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(B->b_file->v_vfsp->vfs_vnodecovered->v_path); - fi_oflags = 0; +translator bufinfo_t < struct bio *B > { + b_flags = B->bio_flags; + b_bcount = B->bio_bcount; + b_addr = B->bio_data; + b_blkno = 0; + b_lblkno = 0; + b_resid = B->bio_resid; + b_bufsize = 0; /* XXX gnn */ + b_error = B->bio_error; }; /* @@ -158,63 +94,17 @@ inline int O_APPEND = 0x0008; #pragma D binding "1.1" O_APPEND inline int O_CREAT = 0x0200; #pragma D binding "1.1" O_CREAT -inline int O_DSYNC = O_DSYNC; -#pragma D binding "1.1" O_DSYNC inline int O_EXCL = 0x0800; #pragma D binding "1.1" O_EXCL -inline int O_LARGEFILE = O_LARGEFILE; -#pragma D binding "1.1" O_LARGEFILE inline int O_NOCTTY = 0x8000; #pragma D binding "1.1" O_NOCTTY inline int O_NONBLOCK = 0x0004; #pragma D binding "1.1" O_NONBLOCK inline int O_NDELAY = 0x0004; #pragma D binding "1.1" O_NDELAY -inline int O_RSYNC = O_RSYNC; -#pragma D binding "1.1" O_RSYNC inline int O_SYNC = 0x0080; #pragma D binding "1.1" O_SYNC inline int O_TRUNC = 0x0400; #pragma D binding "1.1" O_TRUNC -inline int O_XATTR = O_XATTR; -#pragma D binding "1.1" O_XATTR -#pragma D binding "1.1" translator -translator fileinfo_t < struct file *F > { - fi_name = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - basename(cleanpath(F->f_vnode->v_path)); - fi_dirname = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - dirname(cleanpath(F->f_vnode->v_path)); - fi_pathname = F == NULL ? "" : - F->f_vnode->v_path == NULL ? "" : - cleanpath(F->f_vnode->v_path); - fi_offset = F == NULL ? 0 : F->f_offset; - fi_fs = F == NULL ? "" : stringof(F->f_vnode->v_op->vnop_name); - fi_mount = F == NULL ? "" : - F->f_vnode->v_vfsp->vfs_vnodecovered == NULL ? "/" : - F->f_vnode->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(F->f_vnode->v_vfsp->vfs_vnodecovered->v_path); - fi_oflags = F == NULL ? 0 : F->f_flag + (int)FOPEN; -}; -inline fileinfo_t fds[int fd] = xlate ( - fd >= 0 && fd < curthread->t_procp->p_user.u_finfo.fi_nfiles ? - curthread->t_procp->p_user.u_finfo.fi_list[fd].uf_file : NULL); - -#pragma D attributes Stable/Stable/Common fds -#pragma D binding "1.1" fds - -#pragma D binding "1.2" translator -translator fileinfo_t < struct vnode *V > { - fi_name = V->v_path == NULL ? "" : - basename(cleanpath(V->v_path)); - fi_dirname = V->v_path == NULL ? "" : - dirname(cleanpath(V->v_path)); - fi_pathname = V->v_path == NULL ? "" : cleanpath(V->v_path); - fi_fs = stringof(V->v_op->vnop_name); - fi_mount = V->v_vfsp->vfs_vnodecovered == NULL ? "/" : - V->v_vfsp->vfs_vnodecovered->v_path == NULL ? "" : - cleanpath(V->v_vfsp->vfs_vnodecovered->v_path); -}; Modified: user/attilio/vmc-playground/etc/defaults/rc.conf ============================================================================== --- user/attilio/vmc-playground/etc/defaults/rc.conf Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/etc/defaults/rc.conf Thu Jul 12 02:15:06 2012 (r238388) @@ -123,6 +123,7 @@ firewall_script="/etc/rc.firewall" # Whi firewall_type="UNKNOWN" # Firewall type (see /etc/rc.firewall) firewall_quiet="NO" # Set to YES to suppress rule display firewall_logging="NO" # Set to YES to enable events logging +firewall_logif="NO" # Set to YES to create logging-pseudo interface firewall_flags="" # Flags passed to ipfw when type is a file firewall_coscripts="" # List of executables/scripts to run after # firewall starts/stops Modified: user/attilio/vmc-playground/etc/devd.conf ============================================================================== --- user/attilio/vmc-playground/etc/devd.conf Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/etc/devd.conf Thu Jul 12 02:15:06 2012 (r238388) @@ -320,7 +320,7 @@ notify 10 { notify 0 { match "system" "RCTL"; match "rule" "user:70:swap:.*"; - action "/usr/local/etc/rc.d/postgresql restart" + action "/usr/local/etc/rc.d/postgresql restart"; }; */ Modified: user/attilio/vmc-playground/etc/rc.d/ipfw ============================================================================== --- user/attilio/vmc-playground/etc/rc.d/ipfw Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/etc/rc.d/ipfw Thu Jul 12 02:15:06 2012 (r238388) @@ -57,6 +57,10 @@ ipfw_start() echo 'Firewall logging enabled.' sysctl net.inet.ip.fw.verbose=1 >/dev/null fi + if checkyesno firewall_logif; then + ifconfig ipfw0 create + echo 'Firewall logging pseudo-interface (ipfw0) created.' + fi } ipfw_poststart() Modified: user/attilio/vmc-playground/etc/rc.d/rarpd ============================================================================== --- user/attilio/vmc-playground/etc/rc.d/rarpd Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/etc/rc.d/rarpd Thu Jul 12 02:15:06 2012 (r238388) @@ -13,8 +13,9 @@ name="rarpd" rcvar="rarpd_enable" command="/usr/sbin/${name}" -pidfile="/var/run/${name}.pid" required_files="/etc/ethers" load_rc_config $name +pidfile="${rarpd_pidfile:-/var/run/${name}.pid}" + run_rc_command "$1" Modified: user/attilio/vmc-playground/lib/libc/i386/gen/getcontextx.c ============================================================================== --- user/attilio/vmc-playground/lib/libc/i386/gen/getcontextx.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libc/i386/gen/getcontextx.c Thu Jul 12 02:15:06 2012 (r238388) @@ -68,7 +68,7 @@ __getcontextx_size(void) " movl %%ebx,%1\n" " popl %%ebx\n" : "=a" (p[0]), "=r" (p[1]), "=c" (p[2]), "=d" (p[3]) - : "0" (0x0)); + : "0" (0x1)); if ((p[2] & CPUID2_OSXSAVE) != 0) { __asm __volatile( " pushl %%ebx\n" Modified: user/attilio/vmc-playground/lib/libc/sys/Symbol.map ============================================================================== --- user/attilio/vmc-playground/lib/libc/sys/Symbol.map Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libc/sys/Symbol.map Thu Jul 12 02:15:06 2012 (r238388) @@ -365,9 +365,6 @@ FBSD_1.2 { cap_getmode; cap_new; cap_getrights; - ffclock_getcounter; - ffclock_getestimate; - ffclock_setestimate; getloginclass; pdfork; pdgetpid; @@ -382,6 +379,9 @@ FBSD_1.2 { }; FBSD_1.3 { + ffclock_getcounter; + ffclock_getestimate; + ffclock_setestimate; posix_fadvise; }; Modified: user/attilio/vmc-playground/lib/libedit/editline.3 ============================================================================== --- user/attilio/vmc-playground/lib/libedit/editline.3 Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libedit/editline.3 Thu Jul 12 02:15:06 2012 (r238388) @@ -162,6 +162,11 @@ is modified to contain the number of cha Returns the line read if successful, or .Dv NULL if no characters were read or if an error occurred. +If an error occurred, +.Fa count +is set to \-1 and +.Dv errno +contains the error code that caused it. The return value may not remain valid across calls to .Fn el_gets and must be copied if the data is to be retained. Modified: user/attilio/vmc-playground/lib/libedit/el.h ============================================================================== --- user/attilio/vmc-playground/lib/libedit/el.h Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libedit/el.h Thu Jul 12 02:15:06 2012 (r238388) @@ -115,6 +115,7 @@ struct editline { FILE *el_errfile; /* Stdio stuff */ int el_infd; /* Input file descriptor */ int el_flags; /* Various flags. */ + int el_errno; /* Local copy of errno */ coord_t el_cursor; /* Cursor location */ char **el_display; /* Real screen image = what is there */ char **el_vdisplay; /* Virtual screen image = what we see */ Modified: user/attilio/vmc-playground/lib/libedit/read.c ============================================================================== --- user/attilio/vmc-playground/lib/libedit/read.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libedit/read.c Thu Jul 12 02:15:06 2012 (r238388) @@ -235,9 +235,12 @@ read_getcmd(EditLine *el, el_action_t *c el_action_t cmd; int num; + el->el_errno = 0; do { - if ((num = el_getc(el, ch)) != 1) /* if EOF or error */ + if ((num = el_getc(el, ch)) != 1) { /* if EOF or error */ + el->el_errno = num == 0 ? 0 : errno; return (num); + } #ifdef KANJI if ((*ch & 0200)) { @@ -289,14 +292,21 @@ read_char(EditLine *el, char *cp) ssize_t num_read; int tried = 0; - while ((num_read = read(el->el_infd, cp, 1)) == -1) + again: + el->el_signal->sig_no = 0; + while ((num_read = read(el->el_infd, cp, 1)) == -1) { + if (el->el_signal->sig_no == SIGCONT) { + sig_set(el); + el_set(el, EL_REFRESH); + goto again; + } if (!tried && read__fixio(el->el_infd, errno) == 0) tried = 1; else { *cp = '\0'; return (-1); } - + } return (int)num_read; } @@ -403,10 +413,13 @@ el_gets(EditLine *el, int *nread) int num; /* how many chars we have read at NL */ char ch; int crlf = 0; + int nrb; #ifdef FIONREAD c_macro_t *ma = &el->el_chared.c_macro; #endif /* FIONREAD */ + if (nread == NULL) + nread = &nrb; *nread = 0; if (el->el_flags & NO_TTY) { @@ -427,12 +440,13 @@ el_gets(EditLine *el, int *nread) if (cp[-1] == '\r' || cp[-1] == '\n') break; } + if (num == -1) + el->el_errno = errno; el->el_line.cursor = el->el_line.lastchar = cp; *cp = '\0'; - if (nread) - *nread = (int)(el->el_line.cursor - el->el_line.buffer); - return (*nread ? el->el_line.buffer : NULL); + *nread = (int)(el->el_line.cursor - el->el_line.buffer); + goto done; } @@ -443,8 +457,8 @@ el_gets(EditLine *el, int *nread) (void) ioctl(el->el_infd, FIONREAD, (ioctl_t) & chrs); if (chrs == 0) { if (tty_rawmode(el) < 0) { - if (nread) - *nread = 0; + errno = 0; + *nread = 0; return (NULL); } } @@ -457,6 +471,7 @@ el_gets(EditLine *el, int *nread) if (el->el_flags & EDIT_DISABLED) { char *cp; size_t idx; + if ((el->el_flags & UNBUFFERED) == 0) cp = el->el_line.buffer; else @@ -480,11 +495,13 @@ el_gets(EditLine *el, int *nread) break; } + if (num == -1) { + el->el_errno = errno; + } + el->el_line.cursor = el->el_line.lastchar = cp; *cp = '\0'; - if (nread) - *nread = (int)(el->el_line.cursor - el->el_line.buffer); - return (*nread ? el->el_line.buffer : NULL); + goto done; } for (num = OKCMD; num == OKCMD;) { /* while still editing this @@ -617,12 +634,17 @@ el_gets(EditLine *el, int *nread) /* make sure the tty is set up correctly */ if ((el->el_flags & UNBUFFERED) == 0) { read_finish(el); - if (nread) - *nread = num; + *nread = num != -1 ? num : 0; } else { - if (nread) - *nread = - (int)(el->el_line.lastchar - el->el_line.buffer); + *nread = (int)(el->el_line.lastchar - el->el_line.buffer); } - return (num ? el->el_line.buffer : NULL); +done: + if (*nread == 0) { + if (num == -1) { + *nread = -1; + errno = el->el_errno; + } + return NULL; + } else + return el->el_line.buffer; } Modified: user/attilio/vmc-playground/lib/libedit/sig.c ============================================================================== --- user/attilio/vmc-playground/lib/libedit/sig.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libedit/sig.c Thu Jul 12 02:15:06 2012 (r238388) @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $NetBSD: sig.c,v 1.14 2009/02/18 15:04:40 christos Exp $ + * $NetBSD: sig.c,v 1.15 2009/02/19 15:20:22 christos Exp $ */ #if !defined(lint) && !defined(SCCSID) @@ -73,6 +73,8 @@ sig_handler(int signo) (void) sigaddset(&nset, signo); (void) sigprocmask(SIG_BLOCK, &nset, &oset); + sel->el_signal->sig_no = signo; + switch (signo) { case SIGCONT: tty_rawmode(sel); @@ -158,12 +160,12 @@ sig_set(EditLine *el) struct sigaction osa, nsa; nsa.sa_handler = sig_handler; + nsa.sa_flags = 0; sigemptyset(&nsa.sa_mask); (void) sigprocmask(SIG_BLOCK, &el->el_signal->sig_set, &oset); for (i = 0; sighdl[i] != -1; i++) { - nsa.sa_flags = SIGINT ? 0 : SA_RESTART; /* This could happen if we get interrupted */ if (sigaction(sighdl[i], &nsa, &osa) != -1 && osa.sa_handler != sig_handler) Modified: user/attilio/vmc-playground/lib/libedit/sig.h ============================================================================== --- user/attilio/vmc-playground/lib/libedit/sig.h Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/lib/libedit/sig.h Thu Jul 12 02:15:06 2012 (r238388) @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * @(#)sig.h 8.1 (Berkeley) 6/4/93 - * $NetBSD: sig.h,v 1.7 2009/02/15 21:25:01 christos Exp $ + * $NetBSD: sig.h,v 1.8 2009/02/19 15:20:22 christos Exp $ * $FreeBSD$ */ @@ -61,6 +61,7 @@ typedef struct { struct sigaction sig_action[ALLSIGSNO]; sigset_t sig_set; + volatile sig_atomic_t sig_no; } *el_signal_t; protected void sig_end(EditLine*); Modified: user/attilio/vmc-playground/sbin/ifconfig/af_inet6.c ============================================================================== --- user/attilio/vmc-playground/sbin/ifconfig/af_inet6.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sbin/ifconfig/af_inet6.c Thu Jul 12 02:15:06 2012 (r238388) @@ -509,8 +509,6 @@ static struct cmd inet6_cmds[] = { DEF_CMD("-ifdisabled", -ND6_IFF_IFDISABLED, setnd6flags), DEF_CMD("nud", ND6_IFF_PERFORMNUD, setnd6flags), DEF_CMD("-nud", -ND6_IFF_PERFORMNUD, setnd6flags), - DEF_CMD("prefer_source",ND6_IFF_PREFER_SOURCE, setnd6flags), - DEF_CMD("-prefer_source",-ND6_IFF_PREFER_SOURCE,setnd6flags), DEF_CMD("auto_linklocal",ND6_IFF_AUTO_LINKLOCAL,setnd6flags), DEF_CMD("-auto_linklocal",-ND6_IFF_AUTO_LINKLOCAL,setnd6flags), DEF_CMD_ARG("pltime", setip6pltime), Modified: user/attilio/vmc-playground/sbin/ifconfig/ifconfig.8 ============================================================================== --- user/attilio/vmc-playground/sbin/ifconfig/ifconfig.8 Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sbin/ifconfig/ifconfig.8 Thu Jul 12 02:15:06 2012 (r238388) @@ -28,7 +28,7 @@ .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 .\" $FreeBSD$ .\" -.Dd May 27, 2012 +.Dd July 9, 2012 .Dt IFCONFIG 8 .Os .Sh NAME @@ -716,12 +716,6 @@ Set a flag to enable Neighbor Unreachabi .It Cm -nud Clear a flag .Cm nud . -.It Cm prefer_source -Set a flag to prefer addresses on the interface as candidates of the -source address for outgoing packets. -.It Cm -prefer_source -Clear a flag -.Cm prefer_source . .El .Pp The following parameters are specific to cloning Modified: user/attilio/vmc-playground/sbin/ipfw/ipfw.8 ============================================================================== --- user/attilio/vmc-playground/sbin/ipfw/ipfw.8 Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sbin/ipfw/ipfw.8 Thu Jul 12 02:15:06 2012 (r238388) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 3, 2012 +.Dd July 9, 2012 .Dt IPFW 8 .Os .Sh NAME @@ -560,7 +560,22 @@ is set to 0 (default), one can use .Xr bpf 4 attached to the .Li ipfw0 -pseudo interface. There is no overhead if no +pseudo interface. +This pseudo interface can be created after a boot +manually by using the following command: +.Bd -literal -offset indent +# ifconfig ipfw0 create +.Ed +.Pp +Or, automatically at boot time by adding the following +line to the +.Xr rc.conf 5 +file: +.Bd -literal -offset indent +firewall_logif="YES" +.Ed +.Pp +There is no overhead if no .Xr bpf 4 is attached to the pseudo interface. .Pp Modified: user/attilio/vmc-playground/share/man/man4/run.4 ============================================================================== --- user/attilio/vmc-playground/share/man/man4/run.4 Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/share/man/man4/run.4 Thu Jul 12 02:15:06 2012 (r238388) @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 7, 2012 +.Dd July 9, 2012 .Dt RUN 4 .Os .Sh NAME @@ -122,6 +122,8 @@ driver supports the following wireless a .It Buffalo WLI-UC-G300N .It Buffalo WLI-UC-G301N .It Buffalo WLI-UC-GN +.It Buffalo WLI-UC-GNM +.It Buffalo WLI-UC-GNM2 .It Corega CG-WLUSB2GNL .It Corega CG-WLUSB2GNR .It Corega CG-WLUSB300AGN @@ -142,6 +144,7 @@ driver supports the following wireless a .It Hercules HWNU-300 .It Linksys WUSB54GC v3 .It Linksys WUSB600N +.It Logitec LAN-W150N/U2 .It Mvix Nubbin MS-811N .It Planex GW-USMicroN .It Planex GW-US300MiniS Modified: user/attilio/vmc-playground/share/man/man5/rc.conf.5 ============================================================================== --- user/attilio/vmc-playground/share/man/man5/rc.conf.5 Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/share/man/man5/rc.conf.5 Thu Jul 12 02:15:06 2012 (r238388) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 6, 2012 +.Dd July 9, 2012 .Dt RC.CONF 5 .Os .Sh NAME @@ -501,6 +501,16 @@ to enable firewall event logging. This is equivalent to the .Dv IPFIREWALL_VERBOSE kernel option. +.It Va firewall_logif +.Pq Vt bool +Set to +.Dq Li YES +to create pseudo interface +.Li ipfw0 +for logging. +For more details, see +.Xr ipfw 8 +manual page. .It Va firewall_flags .Pq Vt str Flags passed to Modified: user/attilio/vmc-playground/sys/amd64/amd64/fpu.c ============================================================================== --- user/attilio/vmc-playground/sys/amd64/amd64/fpu.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/amd64/amd64/fpu.c Thu Jul 12 02:15:06 2012 (r238388) @@ -73,10 +73,6 @@ __FBSDID("$FreeBSD$"); #define fxrstor(addr) __asm __volatile("fxrstor %0" : : "m" (*(addr))) #define fxsave(addr) __asm __volatile("fxsave %0" : "=m" (*(addr))) #define ldmxcsr(csr) __asm __volatile("ldmxcsr %0" : : "m" (csr)) -#define start_emulating() __asm __volatile( \ - "smsw %%ax; orb %0,%%al; lmsw %%ax" \ - : : "n" (CR0_TS) : "ax") -#define stop_emulating() __asm __volatile("clts") static __inline void xrstor(char *addr, uint64_t mask) @@ -109,13 +105,14 @@ void fnstsw(caddr_t addr); void fxsave(caddr_t addr); void fxrstor(caddr_t addr); void ldmxcsr(u_int csr); -void start_emulating(void); -void stop_emulating(void); void xrstor(char *addr, uint64_t mask); void xsave(char *addr, uint64_t mask); #endif /* __GNUCLIKE_ASM && !lint */ +#define start_emulating() load_cr0(rcr0() | CR0_TS) +#define stop_emulating() clts() + #define GET_FPU_CW(thread) ((thread)->td_pcb->pcb_save->sv_env.en_cw) #define GET_FPU_SW(thread) ((thread)->td_pcb->pcb_save->sv_env.en_sw) Modified: user/attilio/vmc-playground/sys/amd64/amd64/machdep.c ============================================================================== --- user/attilio/vmc-playground/sys/amd64/amd64/machdep.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/amd64/amd64/machdep.c Thu Jul 12 02:15:06 2012 (r238388) @@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -206,6 +207,8 @@ struct pcpu __pcpu[MAXCPU]; struct mtx icu_lock; +struct mem_range_softc mem_range_softc; + struct mtx dt_lock; /* lock for GDT and LDT */ static void Modified: user/attilio/vmc-playground/sys/amd64/amd64/mem.c ============================================================================== --- user/attilio/vmc-playground/sys/amd64/amd64/mem.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/amd64/amd64/mem.c Thu Jul 12 02:15:06 2012 (r238388) @@ -72,8 +72,6 @@ __FBSDID("$FreeBSD$"); */ MALLOC_DEFINE(M_MEMDESC, "memdesc", "memory range descriptors"); -struct mem_range_softc mem_range_softc; - /* ARGSUSED */ int memrw(struct cdev *dev, struct uio *uio, int flags) Modified: user/attilio/vmc-playground/sys/amd64/include/cpufunc.h ============================================================================== --- user/attilio/vmc-playground/sys/amd64/include/cpufunc.h Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/amd64/include/cpufunc.h Thu Jul 12 02:15:06 2012 (r238388) @@ -107,6 +107,13 @@ clflush(u_long addr) } static __inline void +clts(void) +{ + + __asm __volatile("clts"); +} + +static __inline void disable_intr(void) { __asm __volatile("cli" : : : "memory"); @@ -702,6 +709,9 @@ intr_restore(register_t rflags) int breakpoint(void); u_int bsfl(u_int mask); u_int bsrl(u_int mask); +void clflush(u_long addr); +void clts(void); +void cpuid_count(u_int ax, u_int cx, u_int *p); void disable_intr(void); void do_cpuid(u_int ax, u_int *p); void enable_intr(void); Modified: user/attilio/vmc-playground/sys/arm/at91/at91.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/at91/at91.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/arm/at91/at91.c Thu Jul 12 02:15:06 2012 (r238388) @@ -270,10 +270,12 @@ at91_attach(device_t dev) } - /* Our device list will be added automatically by the cpu device + /* + * Our device list will be added automatically by the cpu device * e.g. at91rm9200.c when it is identified. To ensure that the * CPU and PMC are attached first any other "identified" devices - * call BUS_ADD_CHILD(9) with an "order" of at least 2. */ + * call BUS_ADD_CHILD(9) with an "order" of at least 2. + */ bus_generic_probe(dev); bus_generic_attach(dev); @@ -363,7 +365,7 @@ at91_setup_intr(device_t dev, device_t c struct at91_softc *sc = device_get_softc(dev); int error; - if (rman_get_start(ires) == sc->sc_irq_system && filt == NULL) + if (rman_get_start(ires) == AT91_IRQ_SYSTEM && filt == NULL) panic("All system interrupt ISRs must be FILTER"); error = BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt, intr, arg, cookiep); @@ -471,6 +473,41 @@ at91_eoi(void *unused) IC_EOICR, 0); } +void +at91_add_child(device_t dev, int prio, const char *name, int unit, + bus_addr_t addr, bus_size_t size, int irq0, int irq1, int irq2) +{ + device_t kid; + struct at91_ivar *ivar; + + kid = device_add_child_ordered(dev, prio, name, unit); + if (kid == NULL) { + printf("Can't add child %s%d ordered\n", name, unit); + return; + } + ivar = malloc(sizeof(*ivar), M_DEVBUF, M_NOWAIT | M_ZERO); + if (ivar == NULL) { + device_delete_child(dev, kid); + printf("Can't add alloc ivar\n"); + return; + } + device_set_ivars(kid, ivar); + resource_list_init(&ivar->resources); + if (irq0 != -1) { + bus_set_resource(kid, SYS_RES_IRQ, 0, irq0, 1); + if (irq0 != AT91_IRQ_SYSTEM) + at91_pmc_clock_add(device_get_nameunit(kid), irq0, 0); + } + if (irq1 != 0) + bus_set_resource(kid, SYS_RES_IRQ, 1, irq1, 1); + if (irq2 != 0) + bus_set_resource(kid, SYS_RES_IRQ, 2, irq2, 1); + if (addr != 0 && addr < AT91_BASE) + addr += AT91_BASE; + if (addr != 0) + bus_set_resource(kid, SYS_RES_MEMORY, 0, addr, size); +} + static device_method_t at91_methods[] = { DEVMETHOD(device_probe, at91_probe), DEVMETHOD(device_attach, at91_attach), Modified: user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c ============================================================================== --- user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c Thu Jul 12 02:07:21 2012 (r238387) +++ user/attilio/vmc-playground/sys/arm/at91/at91_machdep.c Thu Jul 12 02:15:06 2012 (r238388) @@ -90,6 +90,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #include #include @@ -115,10 +117,6 @@ extern u_int undefined_handler_address; struct pv_addr kernel_pt_table[NUM_KERNEL_PTS]; -extern void *_end; - -extern int *end; - struct pcpu __pcpu; struct pcpu *pcpup = &__pcpu; @@ -126,7 +124,6 @@ struct pcpu *pcpup = &__pcpu; vm_paddr_t phys_avail[10]; vm_paddr_t dump_avail[4]; -vm_offset_t physical_pages; struct pv_addr systempage; struct pv_addr msgbufpv; @@ -282,7 +279,7 @@ static const char *soc_subtype_name[] = [AT91_ST_SAM9X35] = "at91sam9x35", }; -struct at91_soc_info soc_data; +struct at91_soc_info soc_info; /* * Read the SoC ID from the CIDR register and try to match it against the @@ -295,103 +292,117 @@ at91_try_id(uint32_t dbgu_base) { uint32_t socid; - soc_data.cidr = *(volatile uint32_t *)(AT91_BASE + dbgu_base + + soc_info.cidr = *(volatile uint32_t *)(AT91_BASE + dbgu_base + DBGU_C1R); - socid = soc_data.cidr & ~AT91_CPU_VERSION_MASK; + socid = soc_info.cidr & ~AT91_CPU_VERSION_MASK; - soc_data.type = AT91_T_NONE; - soc_data.subtype = AT91_ST_NONE; - soc_data.family = (soc_data.cidr & AT91_CPU_FAMILY_MASK) >> 20; - soc_data.exid = *(volatile uint32_t *)(AT91_BASE + dbgu_base + + soc_info.type = AT91_T_NONE; + soc_info.subtype = AT91_ST_NONE; + soc_info.family = (soc_info.cidr & AT91_CPU_FAMILY_MASK) >> 20; + soc_info.exid = *(volatile uint32_t *)(AT91_BASE + dbgu_base + DBGU_C2R); switch (socid) { case AT91_CPU_CAP9: - soc_data.type = AT91_T_CAP9; + soc_info.type = AT91_T_CAP9; break; case AT91_CPU_RM9200: - soc_data.type = AT91_T_RM9200; + soc_info.type = AT91_T_RM9200; break; case AT91_CPU_SAM9XE128: case AT91_CPU_SAM9XE256: case AT91_CPU_SAM9XE512: case AT91_CPU_SAM9260: - soc_data.type = AT91_T_SAM9260; - if (soc_data.family == AT91_FAMILY_SAM9XE) - soc_data.subtype = AT91_ST_SAM9XE; + soc_info.type = AT91_T_SAM9260; + if (soc_info.family == AT91_FAMILY_SAM9XE) + soc_info.subtype = AT91_ST_SAM9XE; break; case AT91_CPU_SAM9261: - soc_data.type = AT91_T_SAM9261; + soc_info.type = AT91_T_SAM9261; break; case AT91_CPU_SAM9263: - soc_data.type = AT91_T_SAM9263; + soc_info.type = AT91_T_SAM9263; break; case AT91_CPU_SAM9G10: - soc_data.type = AT91_T_SAM9G10; + soc_info.type = AT91_T_SAM9G10; break; case AT91_CPU_SAM9G20: - soc_data.type = AT91_T_SAM9G20; + soc_info.type = AT91_T_SAM9G20; break; case AT91_CPU_SAM9G45: - soc_data.type = AT91_T_SAM9G45; + soc_info.type = AT91_T_SAM9G45; break; case AT91_CPU_SAM9N12: - soc_data.type = AT91_T_SAM9N12; + soc_info.type = AT91_T_SAM9N12; break; case AT91_CPU_SAM9RL64: - soc_data.type = AT91_T_SAM9RL; + soc_info.type = AT91_T_SAM9RL; break; case AT91_CPU_SAM9X5: - soc_data.type = AT91_T_SAM9X5; + soc_info.type = AT91_T_SAM9X5; break; default: return (0); } - switch (soc_data.type) { + switch (soc_info.type) { case AT91_T_SAM9G45: - switch (soc_data.exid) { + switch (soc_info.exid) { case AT91_EXID_SAM9G45: - soc_data.subtype = AT91_ST_SAM9G45; + soc_info.subtype = AT91_ST_SAM9G45; break; case AT91_EXID_SAM9G46: - soc_data.subtype = AT91_ST_SAM9G46; + soc_info.subtype = AT91_ST_SAM9G46; break; case AT91_EXID_SAM9M10: - soc_data.subtype = AT91_ST_SAM9M10; + soc_info.subtype = AT91_ST_SAM9M10; break; case AT91_EXID_SAM9M11: - soc_data.subtype = AT91_ST_SAM9M11; + soc_info.subtype = AT91_ST_SAM9M11; break; } break; case AT91_T_SAM9X5: - switch (soc_data.exid) { + switch (soc_info.exid) { case AT91_EXID_SAM9G15: - soc_data.subtype = AT91_ST_SAM9G15; + soc_info.subtype = AT91_ST_SAM9G15; break; case AT91_EXID_SAM9G25: - soc_data.subtype = AT91_ST_SAM9G25; + soc_info.subtype = AT91_ST_SAM9G25; break; case AT91_EXID_SAM9G35: - soc_data.subtype = AT91_ST_SAM9G35; + soc_info.subtype = AT91_ST_SAM9G35; break; case AT91_EXID_SAM9X25: - soc_data.subtype = AT91_ST_SAM9X25; + soc_info.subtype = AT91_ST_SAM9X25; break; case AT91_EXID_SAM9X35: - soc_data.subtype = AT91_ST_SAM9X35; + soc_info.subtype = AT91_ST_SAM9X35; break; } break; default: break; } - snprintf(soc_data.name, sizeof(soc_data.name), "%s%s%s", - soc_type_name[soc_data.type], - soc_data.subtype == AT91_ST_NONE ? "" : " subtype ", - soc_data.subtype == AT91_ST_NONE ? "" : - soc_subtype_name[soc_data.subtype]); + /* + * Disable interrupts in the DBGU unit... + */ + *(volatile uint32_t *)(AT91_BASE + dbgu_base + USART_IDR) = 0xffffffff; + + /* + * Save the name for later... + */ + snprintf(soc_info.name, sizeof(soc_info.name), "%s%s%s", + soc_type_name[soc_info.type], + soc_info.subtype == AT91_ST_NONE ? "" : " subtype ", + soc_info.subtype == AT91_ST_NONE ? "" : + soc_subtype_name[soc_info.subtype]); + + /* + * try to get the matching CPU support. + */ + soc_info.soc_data = at91_match_soc(soc_info.type, soc_info.subtype); + return (1); } @@ -544,6 +555,9 @@ initarm(struct arm_boot_params *abp) cninit(); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu Jul 12 11:02:05 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 41C7A1065674; Thu, 12 Jul 2012 11:02:05 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2C39B8FC14; Thu, 12 Jul 2012 11:02:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6CB25dQ003625; Thu, 12 Jul 2012 11:02:05 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6CB24HL003623; Thu, 12 Jul 2012 11:02:04 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207121102.q6CB24HL003623@svn.freebsd.org> From: Attilio Rao Date: Thu, 12 Jul 2012 11:02:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238394 - user/attilio/vmc-playground/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jul 2012 11:02:05 -0000 Author: attilio Date: Thu Jul 12 11:02:04 2012 New Revision: 238394 URL: http://svn.freebsd.org/changeset/base/238394 Log: Remove unused iterating functions. Modified: user/attilio/vmc-playground/sys/vm/vm_radix.h Modified: user/attilio/vmc-playground/sys/vm/vm_radix.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.h Thu Jul 12 10:09:34 2012 (r238393) +++ user/attilio/vmc-playground/sys/vm/vm_radix.h Thu Jul 12 11:02:04 2012 (r238394) @@ -62,37 +62,5 @@ vm_radix_lookup_ge(struct vm_radix *rtre return (NULL); } -static inline void * -vm_radix_last(struct vm_radix *rtree) -{ - - return vm_radix_lookup_le(rtree, 0); -} - -static inline void * -vm_radix_first(struct vm_radix *rtree) -{ - - return vm_radix_lookup_ge(rtree, 0); -} - -static inline void * -vm_radix_next(struct vm_radix *rtree, vm_pindex_t index) -{ - - if (index == -1) - return (NULL); - return vm_radix_lookup_ge(rtree, index + 1); -} - -static inline void * -vm_radix_prev(struct vm_radix *rtree, vm_pindex_t index) -{ - - if (index == 0) - return (NULL); - return vm_radix_lookup_le(rtree, index - 1); -} - #endif /* _KERNEL */ #endif /* !_VM_RADIX_H_ */ From owner-svn-src-user@FreeBSD.ORG Thu Jul 12 11:02:58 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6F7AB106566C; Thu, 12 Jul 2012 11:02:58 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5B4668FC18; Thu, 12 Jul 2012 11:02:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6CB2wDF003696; Thu, 12 Jul 2012 11:02:58 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6CB2vlQ003694; Thu, 12 Jul 2012 11:02:57 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207121102.q6CB2vlQ003694@svn.freebsd.org> From: Attilio Rao Date: Thu, 12 Jul 2012 11:02:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238395 - user/attilio/vmc-playground/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jul 2012 11:02:58 -0000 Author: attilio Date: Thu Jul 12 11:02:57 2012 New Revision: 238395 URL: http://svn.freebsd.org/changeset/base/238395 Log: Style. Modified: user/attilio/vmc-playground/sys/vm/vm_radix.h Modified: user/attilio/vmc-playground/sys/vm/vm_radix.h ============================================================================== --- user/attilio/vmc-playground/sys/vm/vm_radix.h Thu Jul 12 11:02:04 2012 (r238394) +++ user/attilio/vmc-playground/sys/vm/vm_radix.h Thu Jul 12 11:02:57 2012 (r238395) @@ -54,12 +54,12 @@ void vm_radix_remove(struct vm_radix *, static inline void * vm_radix_lookup_ge(struct vm_radix *rtree, vm_pindex_t index) { - void *val; + void *val; u_int dummy; - if (vm_radix_lookupn(rtree, index, 0, &val, 1, &index, &dummy)) - return (val); - return (NULL); + if (vm_radix_lookupn(rtree, index, 0, &val, 1, &index, &dummy)) + return (val); + return (NULL); } #endif /* _KERNEL */ From owner-svn-src-user@FreeBSD.ORG Fri Jul 13 09:38:57 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 861B41065670; Fri, 13 Jul 2012 09:38:57 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 677BF8FC08; Fri, 13 Jul 2012 09:38:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6D9cvRT060038; Fri, 13 Jul 2012 09:38:57 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6D9cvOR060036; Fri, 13 Jul 2012 09:38:57 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201207130938.q6D9cvOR060036@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 13 Jul 2012 09:38:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238419 - user/ae/bootcode/sys/boot/common X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jul 2012 09:38:57 -0000 Author: ae Date: Fri Jul 13 09:38:56 2012 New Revision: 238419 URL: http://svn.freebsd.org/changeset/base/238419 Log: * Use printf() instead pager_output() for debugging. * Remove unused GEOM_MAGIC macro. * Fix the sectors count usage where it should be used as LBA address. Modified: user/ae/bootcode/sys/boot/common/part.c Modified: user/ae/bootcode/sys/boot/common/part.c ============================================================================== --- user/ae/bootcode/sys/boot/common/part.c Fri Jul 13 08:11:55 2012 (r238418) +++ user/ae/bootcode/sys/boot/common/part.c Fri Jul 13 09:38:56 2012 (r238419) @@ -42,18 +42,13 @@ __FBSDID("$FreeBSD$"); #include #ifdef PART_DEBUG -static char dline[256]; -#define DEBUG(fmt, args...) do { \ - sprintf(dline, "%s: " fmt "\n" , __func__ , ## args); \ - pager_output(dline); \ -} while (0) +#define DEBUG(fmt, args...) printf("%s: " fmt "\n" , __func__ , ## args) #else #define DEBUG(fmt, args...) #endif #ifdef LOADER_GPT_SUPPORT #define MAXTBLSZ 64 -#define GEOM_MAGIC "GEOM::" static const uuid_t gpt_uuid_unused = GPT_ENT_TYPE_UNUSED; static const uuid_t gpt_uuid_ms_basic_data = GPT_ENT_TYPE_MS_BASIC_DATA; static const uuid_t gpt_uuid_freebsd_ufs = GPT_ENT_TYPE_FREEBSD_UFS; @@ -248,7 +243,7 @@ ptable_gptread(struct ptable *table, voi } pri = sec = 0; /* Check the primary GPT header. */ - phdr = gpt_checkhdr((struct gpt_hdr *)buf, 1, table->sectors, + phdr = gpt_checkhdr((struct gpt_hdr *)buf, 1, table->sectors - 1, table->sectorsize); if (phdr != NULL) { /* Read the primary GPT table. */ @@ -256,7 +251,7 @@ ptable_gptread(struct ptable *table, voi phdr->hdr_entries * phdr->hdr_entsz / table->sectorsize); if (dread(dev, tbl, size, phdr->hdr_lba_table) == 0 && gpt_checktbl(phdr, tbl, size * table->sectorsize, - table->sectors) == 0) { + table->sectors - 1) == 0) { memcpy(&hdr, phdr, sizeof(hdr)); pri = 1; } @@ -267,7 +262,7 @@ ptable_gptread(struct ptable *table, voi phdr = NULL; else phdr = gpt_checkhdr((struct gpt_hdr *)buf, offset, - table->sectors, table->sectorsize); + table->sectors - 1, table->sectorsize); if (phdr != NULL) { /* * Compare primary and backup headers. @@ -289,7 +284,7 @@ ptable_gptread(struct ptable *table, voi phdr->hdr_entsz / table->sectorsize); if (dread(dev, tbl, size, phdr->hdr_lba_table) == 0 && gpt_checktbl(phdr, tbl, size * table->sectorsize, - table->sectors) == 0) { + table->sectors - 1) == 0) { memcpy(&hdr, phdr, sizeof(hdr)); sec = 1; } @@ -373,7 +368,7 @@ ptable_ebrread(struct ptable *table, voi if (buf == NULL) return (table); for (i = 0; i < MAXEBRENTRIES; i++) { - if (offset > table->sectors) + if (offset >= table->sectors) break; if (dread(dev, buf, 1, offset) != 0) break; @@ -660,7 +655,7 @@ ptable_open(void *dev, off_t sectors, ui end = le32toh(dp[i].dp_size); if (start == 0 || end == 0) continue; - if (start + end - 1 > sectors) + if (start + end - 1 >= sectors) continue; /* XXX: ignore */ if (dp[i].dp_typ == DOSPTYP_EXT || dp[i].dp_typ == DOSPTYP_EXTLBA) From owner-svn-src-user@FreeBSD.ORG Fri Jul 13 09:43:45 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACCB81065785; Fri, 13 Jul 2012 09:43:45 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 96E3E8FC16; Fri, 13 Jul 2012 09:43:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6D9hj44060260; Fri, 13 Jul 2012 09:43:45 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6D9hjwA060257; Fri, 13 Jul 2012 09:43:45 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201207130943.q6D9hjwA060257@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 13 Jul 2012 09:43:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238420 - user/ae/bootcode/tools/tools/bootparttest X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Jul 2012 09:43:45 -0000 Author: ae Date: Fri Jul 13 09:43:45 2012 New Revision: 238420 URL: http://svn.freebsd.org/changeset/base/238420 Log: Add simple test program that uses the partition tables handling code. It is useful to test and debug how boot loader handles partition tables metadata. Added: user/ae/bootcode/tools/tools/bootparttest/ user/ae/bootcode/tools/tools/bootparttest/Makefile (contents, props changed) user/ae/bootcode/tools/tools/bootparttest/bootparttest.c (contents, props changed) user/ae/bootcode/tools/tools/bootparttest/malloc.c (contents, props changed) Added: user/ae/bootcode/tools/tools/bootparttest/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/ae/bootcode/tools/tools/bootparttest/Makefile Fri Jul 13 09:43:45 2012 (r238420) @@ -0,0 +1,20 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../../sys/boot/common + +BINDIR?= /usr/bin +SCRIPTSDIR?= /usr/bin + +PROG= bootparttest +NO_MAN= + +SRCS= bootparttest.c crc32.c malloc.c part.c + +CFLAGS= -I${.CURDIR}/../../../sys/boot/common -I. \ + -DLOADER_GPT_SUPPORT -DLOADER_MBR_SUPPORT -DPART_DEBUG + +DPADD+= ${LIBGEOM} ${LIBUTIL} +LDADD+= ${LIBGEOM} ${LIBUTIL} +LDFLAGS+= -lgeom -lutil + +.include Added: user/ae/bootcode/tools/tools/bootparttest/bootparttest.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/ae/bootcode/tools/tools/bootparttest/bootparttest.c Fri Jul 13 09:43:45 2012 (r238420) @@ -0,0 +1,172 @@ +/*- + * Copyright (c) 2012 Andrey V. Elsukov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +struct disk { + const char *name; + uint64_t mediasize; + uint16_t sectorsize; + + int fd; + int file; + off_t offset; +}; + +static int +diskread(void *arg, void *buf, size_t blocks, off_t offset) +{ + struct disk *dp; + + dp = (struct disk *)arg; + printf("%s: read %d blocks from the offset %jd\n", dp->name, + blocks, offset); + if (offset >= dp->mediasize / dp->sectorsize) + return (-1); + + return (pread(dp->fd, buf, blocks * dp->sectorsize, + (offset + dp->offset) * dp->sectorsize) != blocks * dp->sectorsize); +} + +static const char* +ptable_type2str(const struct ptable *table) +{ + + switch (ptable_gettype(table)) { + case PTABLE_NONE: + return ("None"); + case PTABLE_BSD: + return ("BSD"); + case PTABLE_MBR: + return ("MBR"); + case PTABLE_GPT: + return ("GPT"); + case PTABLE_VTOC8: + return ("VTOC8"); + }; + return ("Unknown"); +} + +#define PWIDTH 35 +static void +ptable_print(void *arg, const char *pname, const struct ptable_entry *part) +{ + struct ptable *table; + struct disk *dp, bsd; + char line[80], size[6]; + + dp = (struct disk *)arg; + sprintf(line, " %s%s: %s", dp->file ? "disk0": dp->name, pname, + parttype2str(part->type)); + humanize_number(size, sizeof(size), + (part->end - part->start + 1) * dp->sectorsize, "", + HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); + printf("%-*s%s\n", PWIDTH, line, size); + if (part->type == PART_FREEBSD) { + sprintf(line, "%s%s", dp->file ? "disk0": dp->name, pname); + bsd.name = line; + bsd.fd = dp->fd; + bsd.file = 0; /* to use dp->name in the next sprintf */ + bsd.offset = dp->offset + part->start; + bsd.sectorsize = dp->sectorsize; + bsd.mediasize = (part->end - part->start + 1) * dp->sectorsize; + table = ptable_open(&bsd, bsd.mediasize / bsd.sectorsize, + bsd.sectorsize, diskread); + if (table == NULL) + return; + ptable_iterate(table, &bsd, ptable_print); + ptable_close(table); + } +} +#undef PWIDTH + +static void +inspect_disk(struct disk *dp) +{ + struct ptable *table; + + table = ptable_open(dp, dp->mediasize / dp->sectorsize, + dp->sectorsize, diskread); + if (table == NULL) { + printf("ptable_open failed\n"); + return; + } + printf("Partition table detected: %s\n", ptable_type2str(table)); + ptable_iterate(table, dp, ptable_print); + ptable_close(table); +} + +int +main(int argc, char **argv) +{ + struct stat sb; + struct disk d; + + if (argc < 2) + errx(1, "Usage: %s | " + "", argv[0]); + d.name = argv[1]; + if (stat(d.name, &sb) == 0 && S_ISREG(sb.st_mode)) { + d.fd = open(d.name, O_RDONLY); + if (d.fd < 0) + err(1, "open %s", d.name); + d.mediasize = sb.st_size; + d.sectorsize = 512; + d.file = 1; + } else { + d.fd = g_open(d.name, 0); + if (d.fd < 0) + err(1, "g_open %s", d.name); + d.mediasize = g_mediasize(d.fd); + d.sectorsize = g_sectorsize(d.fd); + d.file = 0; + } + d.offset = 0; + printf("%s \"%s\" opened\n", d.file ? "Disk image": "GEOM provider", + d.name); + printf("Mediasize: %ju Bytes (%ju sectors)\nSectorsize: %u Bytes\n", + d.mediasize, d.mediasize / d.sectorsize, d.sectorsize); + + inspect_disk(&d); + + if (d.file) + close(d.fd); + else + g_close(d.fd); + return (0); +} Added: user/ae/bootcode/tools/tools/bootparttest/malloc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/ae/bootcode/tools/tools/bootparttest/malloc.c Fri Jul 13 09:43:45 2012 (r238420) @@ -0,0 +1,42 @@ +/*- + * Copyright (c) 2012 Andrey V. Elsukov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +void* +Malloc(size_t size, const char *file, int line) +{ + return (malloc(size)); +} + +void +Free(void *ptr, const char *file, int line) +{ + return (free(ptr)); +}