From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 07:00:44 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1DDA3A5D; Sun, 11 Aug 2013 07:00:44 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0A2BE2652; Sun, 11 Aug 2013 07:00:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B70hND008396; Sun, 11 Aug 2013 07:00:43 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B70hnJ008393; Sun, 11 Aug 2013 07:00:43 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308110700.r7B70hnJ008393@svn.freebsd.org> From: Alexander Motin Date: Sun, 11 Aug 2013 07:00:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254208 - in projects/camlock/sys/cam: . ata scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 07:00:44 -0000 Author: mav Date: Sun Aug 11 07:00:43 2013 New Revision: 254208 URL: http://svnweb.freebsd.org/changeset/base/254208 Log: Reduce number of SIM entry points via sim_action() method call. Modified: projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Sun Aug 11 06:57:57 2013 (r254207) +++ projects/camlock/sys/cam/ata/ata_xpt.c Sun Aug 11 07:00:43 2013 (r254208) @@ -1779,7 +1779,7 @@ ata_get_transfer_settings(struct ccb_tra device = cts->ccb_h.path->device; sim = cts->ccb_h.path->bus->sim; - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); if (cts->protocol == PROTO_UNKNOWN || cts->protocol == PROTO_UNSPECIFIED) { @@ -1941,7 +1941,7 @@ ata_set_transfer_settings(struct ccb_tra } if (async_update == FALSE) - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); } /* Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 06:57:57 2013 (r254207) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 07:00:43 2013 (r254208) @@ -2408,6 +2408,7 @@ void xpt_action_default(union ccb *start_ccb) { struct cam_path *path; + struct cam_sim *sim; path = start_ccb->ccb_h.path; CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_action_default\n")); @@ -2468,9 +2469,6 @@ xpt_action_default(union ccb *start_ccb) break; } case XPT_CALC_GEOMETRY: - { - struct cam_sim *sim; - /* Filter out garbage */ if (start_ccb->ccg.block_size == 0 || start_ccb->ccg.volume_size == 0) { @@ -2498,10 +2496,7 @@ xpt_action_default(union ccb *start_ccb) break; } #endif - sim = path->bus->sim; - (*(sim->sim_action))(sim, start_ccb); - break; - } + goto call_sim; case XPT_ABORT: { union ccb* abort_ccb; @@ -2562,21 +2557,13 @@ xpt_action_default(union ccb *start_ccb) case XPT_NOTIFY_ACKNOWLEDGE: case XPT_GET_SIM_KNOB: case XPT_SET_SIM_KNOB: - { - struct cam_sim *sim; - - sim = path->bus->sim; - (*(sim->sim_action))(sim, start_ccb); - break; - } + case XPT_GET_TRAN_SETTINGS: + case XPT_SET_TRAN_SETTINGS: case XPT_PATH_INQ: - { - struct cam_sim *sim; - +call_sim: sim = path->bus->sim; (*(sim->sim_action))(sim, start_ccb); break; - } case XPT_PATH_STATS: start_ccb->cpis.last_reset = path->bus->last_reset; start_ccb->ccb_h.status = CAM_REQ_CMP; Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Sun Aug 11 06:57:57 2013 (r254207) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Sun Aug 11 07:00:43 2013 (r254208) @@ -2525,14 +2525,6 @@ scsi_action(union ccb *start_ccb) start_ccb->ccb_h.path, start_ccb->crcn.flags, start_ccb); break; - case XPT_GET_TRAN_SETTINGS: - { - struct cam_sim *sim; - - sim = start_ccb->ccb_h.path->bus->sim; - (*(sim->sim_action))(sim, start_ccb); - break; - } case XPT_DEV_ADVINFO: { scsi_dev_advinfo(start_ccb); @@ -2620,7 +2612,7 @@ scsi_set_transfer_settings(struct ccb_tr */ if (cts->protocol != PROTO_SCSI) { if (async_update == FALSE) - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); return; } @@ -2810,7 +2802,7 @@ scsi_set_transfer_settings(struct ccb_tr } } if (async_update == FALSE) - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); } static void From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 08:08:23 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C1E6C12C; Sun, 11 Aug 2013 08:08:23 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AEB9B2899; Sun, 11 Aug 2013 08:08:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B88NDp032991; Sun, 11 Aug 2013 08:08:23 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B88NJV032990; Sun, 11 Aug 2013 08:08:23 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308110808.r7B88NJV032990@svn.freebsd.org> From: Alexander Motin Date: Sun, 11 Aug 2013 08:08:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254209 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 08:08:23 -0000 Author: mav Date: Sun Aug 11 08:08:23 2013 New Revision: 254209 URL: http://svnweb.freebsd.org/changeset/base/254209 Log: In addition to r254143 allow cam_sim_hold/release() to be called unrelated to holding SIM lock. If lock is not held, just take it inside. Modified: projects/camlock/sys/cam/cam_sim.c Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Sun Aug 11 07:00:43 2013 (r254208) +++ projects/camlock/sys/cam/cam_sim.c Sun Aug 11 08:08:23 2013 (r254209) @@ -124,21 +124,31 @@ cam_sim_free(struct cam_sim *sim, int fr void cam_sim_release(struct cam_sim *sim) { - KASSERT(sim->refcount >= 1, ("sim->refcount >= 1")); - mtx_assert(sim->mtx, MA_OWNED); + int lock; + lock = (mtx_owned(sim->mtx) == 0); + if (lock) + CAM_SIM_LOCK(sim); + KASSERT(sim->refcount >= 1, ("sim->refcount >= 1")); sim->refcount--; if (sim->refcount == 0) wakeup(sim); + if (lock) + CAM_SIM_UNLOCK(sim); } void cam_sim_hold(struct cam_sim *sim) { - KASSERT(sim->refcount >= 1, ("sim->refcount >= 1")); - mtx_assert(sim->mtx, MA_OWNED); + int lock; + lock = (mtx_owned(sim->mtx) == 0); + if (lock) + CAM_SIM_LOCK(sim); + KASSERT(sim->refcount >= 1, ("sim->refcount >= 1")); sim->refcount++; + if (lock) + CAM_SIM_UNLOCK(sim); } void From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 10:54:19 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5F8F5310; Sun, 11 Aug 2013 10:54:19 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4B72B2F2B; Sun, 11 Aug 2013 10:54:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BAsJVH096527; Sun, 11 Aug 2013 10:54:19 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BAsGUv096509; Sun, 11 Aug 2013 10:54:16 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308111054.r7BAsGUv096509@svn.freebsd.org> From: Alexander Motin Date: Sun, 11 Aug 2013 10:54:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254214 - in projects/camlock/sys/cam: . ata scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 10:54:19 -0000 Author: mav Date: Sun Aug 11 10:54:16 2013 New Revision: 254214 URL: http://svnweb.freebsd.org/changeset/base/254214 Log: Introduce per-device mutex locks to protect all device and periph states. Do not use congested SIM lock for anything except actually talking to SIM. There are still rough edges around async delivery, missing locking for list of LUNs, and targ and CTL are probably broken, but nevertheless my test system booted, passed basic tests and can't wait for some preliminary benchmarking. ;) Modified: projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_periph.c projects/camlock/sys/cam/cam_periph.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h projects/camlock/sys/cam/cam_xpt_internal.h projects/camlock/sys/cam/scsi/scsi_cd.c projects/camlock/sys/cam/scsi/scsi_ch.c projects/camlock/sys/cam/scsi/scsi_da.c projects/camlock/sys/cam/scsi/scsi_enc.c projects/camlock/sys/cam/scsi/scsi_enc_ses.c projects/camlock/sys/cam/scsi/scsi_pass.c projects/camlock/sys/cam/scsi/scsi_sg.c projects/camlock/sys/cam/scsi/scsi_targ_bh.c projects/camlock/sys/cam/scsi/scsi_target.c projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/ata/ata_da.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_da.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/ata/ata_da.c Sun Aug 11 10:54:16 2013 (r254214) @@ -1334,7 +1334,7 @@ adaregister(struct cam_periph *periph, v * Schedule a periodic event to occasionally send an * ordered tag to a device. */ - callout_init_mtx(&softc->sendordered_c, periph->sim->mtx, 0); + callout_init_mtx(&softc->sendordered_c, cam_periph_mtx(periph), 0); callout_reset(&softc->sendordered_c, (ada_default_timeout * hz) / ADA_ORDEREDTAG_INTERVAL, adasendorderedtag, softc); Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/ata/ata_xpt.c Sun Aug 11 10:54:16 2013 (r254214) @@ -1477,6 +1477,7 @@ ata_scan_lun(struct cam_periph *periph, cam_status status; struct cam_path *new_path; struct cam_periph *old_periph; + int lock; CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_scan_lun\n")); @@ -1515,6 +1516,9 @@ ata_scan_lun(struct cam_periph *periph, request_ccb->crcn.flags = flags; } + lock = (xpt_path_owned(path) == 0); + if (lock) + xpt_path_lock(path); if ((old_periph = cam_periph_find(path, "aprobe")) != NULL) { if ((old_periph->flags & CAM_PERIPH_INVALID) == 0) { probe_softc *softc; @@ -1541,6 +1545,8 @@ ata_scan_lun(struct cam_periph *periph, xpt_done(request_ccb); } } + if (lock) + xpt_path_unlock(path); } static void @@ -1696,15 +1702,8 @@ ata_dev_advinfo(union ccb *start_ccb) start_ccb->ccb_h.status = CAM_REQ_CMP; if (cdai->flags & CDAI_FLAG_STORE) { - int owned; - - owned = mtx_owned(start_ccb->ccb_h.path->bus->sim->mtx); - if (owned == 0) - mtx_lock(start_ccb->ccb_h.path->bus->sim->mtx); xpt_async(AC_ADVINFO_CHANGED, start_ccb->ccb_h.path, (void *)(uintptr_t)cdai->buftype); - if (owned == 0) - mtx_unlock(start_ccb->ccb_h.path->bus->sim->mtx); } } @@ -2014,7 +2013,7 @@ ata_announce_periph(struct cam_periph *p u_int speed; u_int mb; - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; Modified: projects/camlock/sys/cam/cam_periph.c ============================================================================== --- projects/camlock/sys/cam/cam_periph.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/cam_periph.c Sun Aug 11 10:54:16 2013 (r254214) @@ -206,7 +206,6 @@ cam_periph_alloc(periph_ctor_t *periph_c periph->refcount = 1; /* Dropped by invalidation. */ periph->sim = sim; SLIST_INIT(&periph->ccb_list); - mtx_init(&periph->periph_mtx, "CAM periph lock", NULL, MTX_DEF); status = xpt_create_path(&path, periph, path_id, target_id, lun_id); if (status != CAM_REQ_CMP) goto failure; @@ -299,7 +298,7 @@ cam_periph_find(struct cam_path *path, c TAILQ_FOREACH(periph, &(*p_drv)->units, unit_links) { if (xpt_path_comp(periph->path, path) == 0) { xpt_unlock_buses(); - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); return(periph); } } @@ -380,7 +379,7 @@ void cam_periph_release_locked_buses(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); KASSERT(periph->refcount >= 1, ("periph->refcount >= 1")); if (--periph->refcount == 0) camperiphfree(periph); @@ -401,16 +400,16 @@ cam_periph_release_locked(struct cam_per void cam_periph_release(struct cam_periph *periph) { - struct cam_sim *sim; + struct mtx *mtx; if (periph == NULL) return; - sim = periph->sim; - mtx_assert(sim->mtx, MA_NOTOWNED); - mtx_lock(sim->mtx); + cam_periph_assert(periph, MA_NOTOWNED); + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); cam_periph_release_locked(periph); - mtx_unlock(sim->mtx); + mtx_unlock(mtx); } int @@ -428,10 +427,10 @@ cam_periph_hold(struct cam_periph *perip if (cam_periph_acquire(periph) != CAM_REQ_CMP) return (ENXIO); - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); while ((periph->flags & CAM_PERIPH_LOCKED) != 0) { periph->flags |= CAM_PERIPH_LOCK_WANTED; - if ((error = mtx_sleep(periph, periph->sim->mtx, priority, + if ((error = cam_periph_sleep(periph, periph, priority, "caplck", 0)) != 0) { cam_periph_release_locked(periph); return (error); @@ -450,7 +449,7 @@ void cam_periph_unhold(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); periph->flags &= ~CAM_PERIPH_LOCKED; if ((periph->flags & CAM_PERIPH_LOCK_WANTED) != 0) { @@ -578,7 +577,7 @@ void cam_periph_invalidate(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); /* * We only call this routine the first time a peripheral is * invalidated. @@ -599,7 +598,7 @@ camperiphfree(struct cam_periph *periph) { struct periph_driver **p_drv; - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0) break; @@ -676,7 +675,6 @@ camperiphfree(struct cam_periph *periph) periph->path, arg); } xpt_free_path(periph->path); - mtx_destroy(&periph->periph_mtx); free(periph, M_CAMPERIPH); xpt_lock_buses(); } @@ -947,12 +945,11 @@ cam_periph_unmapmem(union ccb *ccb, stru void cam_periph_ccbwait(union ccb *ccb) { - struct cam_sim *sim; - sim = xpt_path_sim(ccb->ccb_h.path); if ((ccb->ccb_h.pinfo.index != CAM_UNQUEUED_INDEX) || ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG)) - mtx_sleep(&ccb->ccb_h.cbfcnp, sim->mtx, PRIBIO, "cbwait", 0); + xpt_path_sleep(ccb->ccb_h.path, &ccb->ccb_h.cbfcnp, PRIBIO, + "cbwait", 0); } int @@ -1033,12 +1030,10 @@ cam_periph_runccb(union ccb *ccb, cam_flags camflags, u_int32_t sense_flags, struct devstat *ds) { - struct cam_sim *sim; int error; error = 0; - sim = xpt_path_sim(ccb->ccb_h.path); - mtx_assert(sim->mtx, MA_OWNED); + xpt_path_assert(ccb->ccb_h.path, MA_OWNED); /* * If the user has supplied a stats structure, and if we understand Modified: projects/camlock/sys/cam/cam_periph.h ============================================================================== --- projects/camlock/sys/cam/cam_periph.h Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/cam_periph.h Sun Aug 11 10:54:16 2013 (r254214) @@ -130,7 +130,6 @@ struct cam_periph { TAILQ_ENTRY(cam_periph) unit_links; ac_callback_t *deferred_callback; ac_code deferred_ac; - struct mtx periph_mtx; }; #define CAM_PERIPH_MAXMAPS 2 @@ -190,26 +189,38 @@ int cam_periph_error(union ccb *ccb, ca static __inline void cam_periph_lock(struct cam_periph *periph) { - mtx_lock(periph->sim->mtx); + xpt_path_lock(periph->path); } static __inline void cam_periph_unlock(struct cam_periph *periph) { - mtx_unlock(periph->sim->mtx); + xpt_path_unlock(periph->path); } static __inline int cam_periph_owned(struct cam_periph *periph) { - return (mtx_owned(periph->sim->mtx)); + return (xpt_path_owned(periph->path)); +} + +static __inline void +cam_periph_assert(struct cam_periph *periph, int what) +{ + mtx_assert(xpt_path_mtx(periph->path), what); } static __inline int cam_periph_sleep(struct cam_periph *periph, void *chan, int priority, const char *wmesg, int timo) { - return (msleep(chan, periph->sim->mtx, priority, wmesg, timo)); + return (xpt_path_sleep(periph->path, chan, priority, wmesg, timo)); +} + +static __inline struct mtx * +cam_periph_mtx(struct cam_periph *periph) +{ + return (xpt_path_mtx(periph->path)); } static inline struct cam_periph * @@ -232,7 +243,7 @@ cam_periph_acquire_next(struct cam_perip { struct cam_periph *periph = pperiph; - mtx_assert(pperiph->sim->mtx, MA_NOTOWNED); + cam_periph_assert(pperiph, MA_NOTOWNED); xpt_lock_buses(); do { periph = TAILQ_NEXT(periph, unit_links); Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 10:54:16 2013 (r254214) @@ -117,6 +117,7 @@ struct xpt_softc { struct mtx xpt_topo_lock; struct mtx xpt_lock; + struct taskqueue *xpt_taskq; }; typedef enum { @@ -450,8 +451,6 @@ xptdoioctl(struct cdev *dev, u_long cmd, ccb = xpt_alloc_ccb(); - CAM_SIM_LOCK(bus->sim); - /* * Create a path using the bus, target, and lun the * user passed in. @@ -470,11 +469,12 @@ xptdoioctl(struct cdev *dev, u_long cmd, xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, inccb->ccb_h.pinfo.priority); xpt_merge_ccb(ccb, inccb); + xpt_path_lock(ccb->ccb_h.path); cam_periph_runccb(ccb, NULL, 0, 0, NULL); + xpt_path_unlock(ccb->ccb_h.path); bcopy(ccb, inccb, sizeof(union ccb)); xpt_free_path(ccb->ccb_h.path); xpt_free_ccb(ccb); - CAM_SIM_UNLOCK(bus->sim); break; case XPT_DEBUG: { @@ -485,8 +485,6 @@ xptdoioctl(struct cdev *dev, u_long cmd, * allocate it on the stack. */ - CAM_SIM_LOCK(bus->sim); - /* * Create a path using the bus, target, and lun the * user passed in. @@ -507,7 +505,6 @@ xptdoioctl(struct cdev *dev, u_long cmd, xpt_action(&ccb); bcopy(&ccb, inccb, sizeof(union ccb)); xpt_free_path(ccb.ccb_h.path); - CAM_SIM_UNLOCK(bus->sim); break; } @@ -555,9 +552,7 @@ xptdoioctl(struct cdev *dev, u_long cmd, /* * This is an immediate CCB, we can send it on directly. */ - CAM_SIM_LOCK(xpt_path_sim(xpt_periph->path)); xpt_action(inccb); - CAM_SIM_UNLOCK(xpt_path_sim(xpt_periph->path)); /* * Map the buffers back into user space. @@ -775,7 +770,6 @@ static void xpt_scanner_thread(void *dummy) { union ccb *ccb; - struct cam_sim *sim; xpt_lock_buses(); for (;;) { @@ -786,10 +780,7 @@ xpt_scanner_thread(void *dummy) TAILQ_REMOVE(&xsoftc.ccb_scanq, &ccb->ccb_h, sim_links.tqe); xpt_unlock_buses(); - sim = ccb->ccb_h.path->bus->sim; - CAM_SIM_LOCK(sim); xpt_action(ccb); - CAM_SIM_UNLOCK(sim); xpt_lock_buses(); } @@ -858,6 +849,8 @@ xpt_init(void *dummy) mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); + xsoftc.xpt_taskq = taskqueue_create("CAM XPT task", M_WAITOK, + taskqueue_thread_enqueue, /*context*/&xsoftc.xpt_taskq); #ifdef CAM_BOOT_DELAY /* @@ -1001,7 +994,7 @@ xpt_announce_periph(struct cam_periph *p { struct cam_path *path = periph->path; - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n", periph->periph_name, periph->unit_number, @@ -1057,7 +1050,7 @@ xpt_getattr(char *buf, size_t len, const struct ccb_dev_advinfo cdai; struct scsi_vpd_id_descriptor *idd; - mtx_assert(path->bus->sim->mtx, MA_OWNED); + xpt_path_assert(path, MA_OWNED); memset(&cdai, 0, sizeof(cdai)); xpt_setup_ccb(&cdai.ccb_h, path, CAM_PRIORITY_NORMAL); @@ -2026,9 +2019,7 @@ xptbustraverse(struct cam_eb *start_bus, xpt_unlock_buses(); } for (; bus != NULL; bus = next_bus) { - CAM_SIM_LOCK(bus->sim); retval = tr_func(bus, arg); - CAM_SIM_UNLOCK(bus->sim); if (retval == 0) { xpt_release_bus(bus); break; @@ -2102,7 +2093,9 @@ xptdevicetraverse(struct cam_et *target, mtx_unlock(&bus->eb_mtx); } for (; device != NULL; device = next_device) { + mtx_lock(&device->device_mtx); retval = tr_func(device, arg); + mtx_unlock(&device->device_mtx); if (retval == 0) { xpt_release_device(device); break; @@ -2200,7 +2193,6 @@ xptpdperiphtraverse(struct periph_driver xpt_periphfunc_t *tr_func, void *arg) { struct cam_periph *periph, *next_periph; - struct cam_sim *sim; int retval; retval = 1; @@ -2220,10 +2212,9 @@ xptpdperiphtraverse(struct periph_driver xpt_unlock_buses(); } for (; periph != NULL; periph = next_periph) { - sim = periph->sim; - CAM_SIM_LOCK(sim); + cam_periph_lock(periph); retval = tr_func(periph, arg); - CAM_SIM_UNLOCK(sim); + cam_periph_unlock(periph); if (retval == 0) { cam_periph_release(periph); break; @@ -2409,6 +2400,7 @@ xpt_action_default(union ccb *start_ccb) { struct cam_path *path; struct cam_sim *sim; + int lock; path = start_ccb->ccb_h.path; CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_action_default\n")); @@ -2562,7 +2554,12 @@ xpt_action_default(union ccb *start_ccb) case XPT_PATH_INQ: call_sim: sim = path->bus->sim; + lock = (mtx_owned(sim->mtx) == 0); + if (lock) + CAM_SIM_LOCK(sim); (*(sim->sim_action))(sim, start_ccb); + if (lock) + CAM_SIM_UNLOCK(sim); break; case XPT_PATH_STATS: start_ccb->cpis.last_reset = path->bus->last_reset; @@ -2725,11 +2722,6 @@ call_sim: position_type = CAM_DEV_POS_PDRV; } - /* - * Note that we drop the SIM lock here, because the EDT - * traversal code needs to do its own locking. - */ - CAM_SIM_UNLOCK(xpt_path_sim(cdm->ccb_h.path)); switch(position_type & CAM_DEV_POS_TYPEMASK) { case CAM_DEV_POS_EDT: xptedtmatch(cdm); @@ -2741,7 +2733,6 @@ call_sim: cdm->status = CAM_DEV_MATCH_ERROR; break; } - CAM_SIM_LOCK(xpt_path_sim(cdm->ccb_h.path)); if (cdm->status == CAM_DEV_MATCH_ERROR) start_ccb->ccb_h.status = CAM_REQ_CMP_ERR; @@ -2891,7 +2882,6 @@ call_sim: } case XPT_DEBUG: { struct cam_path *oldpath; - struct cam_sim *oldsim; /* Check that all request bits are supported. */ if (start_ccb->cdbg.flags & ~(CAM_DEBUG_COMPILE)) { @@ -2901,15 +2891,9 @@ call_sim: cam_dflags = CAM_DEBUG_NONE; if (cam_dpath != NULL) { - /* To release the old path we must hold proper lock. */ oldpath = cam_dpath; cam_dpath = NULL; - oldsim = xpt_path_sim(oldpath); - CAM_SIM_UNLOCK(xpt_path_sim(start_ccb->ccb_h.path)); - CAM_SIM_LOCK(oldsim); xpt_free_path(oldpath); - CAM_SIM_UNLOCK(oldsim); - CAM_SIM_LOCK(xpt_path_sim(start_ccb->ccb_h.path)); } if (start_ccb->cdbg.flags != CAM_DEBUG_NONE) { if (xpt_create_path(&cam_dpath, NULL, @@ -3567,11 +3551,6 @@ xpt_path_string(struct cam_path *path, c { struct sbuf sb; -#ifdef INVARIANTS - if (path != NULL && path->bus != NULL) - mtx_assert(path->bus->sim->mtx, MA_OWNED); -#endif - sbuf_new(&sb, str, str_len, 0); if (path == NULL) @@ -3639,8 +3618,8 @@ xpt_path_sim(struct cam_path *path) struct cam_periph* xpt_path_periph(struct cam_path *path) { - mtx_assert(path->bus->sim->mtx, MA_OWNED); + xpt_path_assert(path, MA_OWNED); return (path->periph); } @@ -3989,7 +3968,7 @@ xpt_async_process(struct cam_periph *per path = ccb->ccb_h.path; async_code = ccb->casync.async_code; async_arg = ccb->casync.async_arg_ptr; - mtx_assert(path->bus->sim->mtx, MA_OWNED); +// mtx_assert(path->bus->sim->mtx, MA_OWNED); CAM_DEBUG(path, CAM_DEBUG_TRACE | CAM_DEBUG_INFO, ("xpt_async(%s)\n", xpt_async_string(async_code))); @@ -4535,6 +4514,16 @@ xpt_alloc_device_default(struct cam_eb * return (device); } +static void +xpt_destroy_device(void *context, int pending) +{ + struct cam_ed *device = context; + + mtx_lock(&device->device_mtx); + mtx_destroy(&device->device_mtx); + free(device, M_CAMDEV); +} + struct cam_ed * xpt_alloc_device(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id) { @@ -4579,7 +4568,9 @@ xpt_alloc_device(struct cam_eb *bus, str device->tag_delay_count = 0; device->tag_saved_openings = 0; device->refcount = 1; + mtx_init(&device->device_mtx, "CAM device lock", NULL, MTX_DEF); callout_init_mtx(&device->callout, bus->sim->mtx, 0); + TASK_INIT(&device->device_destroy_task, 0, xpt_destroy_device, device); /* * Hold a reference to our parent bus so it * will not go away before we do. @@ -4651,7 +4642,7 @@ xpt_release_device(struct cam_ed *device free(device->physpath, M_CAMXPT); free(device->rcap_buf, M_CAMXPT); free(device->serial_num, M_CAMXPT); - free(device, M_CAMDEV); + taskqueue_enqueue(xsoftc.xpt_taskq, &device->device_destroy_task); } u_int32_t @@ -5004,6 +4995,49 @@ xpt_assert_buses(int what) mtx_assert(&xsoftc.xpt_topo_lock, what); } +void +xpt_path_lock(struct cam_path *path) +{ + + mtx_lock(&path->device->device_mtx); +} + +void +xpt_path_unlock(struct cam_path *path) +{ + + mtx_unlock(&path->device->device_mtx); +} + +void +xpt_path_assert(struct cam_path *path, int what) +{ + + mtx_assert(&path->device->device_mtx, what); +} + +int +xpt_path_owned(struct cam_path *path) +{ + + return (mtx_owned(&path->device->device_mtx)); +} + +int +xpt_path_sleep(struct cam_path *path, void *chan, int priority, + const char *wmesg, int timo) +{ + + return (msleep(chan, &path->device->device_mtx, priority, wmesg, timo)); +} + +struct mtx * +xpt_path_mtx(struct cam_path *path) +{ + + return (&path->device->device_mtx); +} + static void camisr(void *dummy) { @@ -5029,6 +5063,7 @@ static void camisr_runqueue(struct cam_sim *sim) { struct ccb_hdr *ccb_h; + struct mtx *mtx; mtx_lock(&sim->sim_doneq_mtx); while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { @@ -5069,6 +5104,9 @@ camisr_runqueue(struct cam_sim *sim) mtx_unlock(&xsoftc.xpt_lock); } + mtx = xpt_path_mtx(ccb_h->path); + mtx_lock(mtx); + if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) { struct cam_ed *dev; @@ -5098,11 +5136,8 @@ camisr_runqueue(struct cam_sim *sim) mtx_unlock(&sim->devq->send_mtx); if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 - && (--dev->tag_delay_count == 0)) { - CAM_SIM_LOCK(sim); + && (--dev->tag_delay_count == 0)) xpt_start_tags(ccb_h->path); - CAM_SIM_UNLOCK(sim); - } } if (ccb_h->status & CAM_RELEASE_SIMQ) { @@ -5118,9 +5153,8 @@ camisr_runqueue(struct cam_sim *sim) } /* Call the peripheral driver's callback */ - CAM_SIM_LOCK(sim); (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); - CAM_SIM_UNLOCK(sim); + mtx_unlock(mtx); mtx_lock(&sim->sim_doneq_mtx); } sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 10:54:16 2013 (r254214) @@ -103,6 +103,14 @@ void xpt_release_boot(void); void xpt_lock_buses(void); void xpt_unlock_buses(void); void xpt_assert_buses(int what); +void xpt_path_lock(struct cam_path *path); +void xpt_path_unlock(struct cam_path *path); +void xpt_path_assert(struct cam_path *path, int what); +int xpt_path_owned(struct cam_path *path); +int xpt_path_sleep(struct cam_path *path, void *chan, + int priority, const char *wmesg, + int timo); +struct mtx * xpt_path_mtx(struct cam_path *path); cam_status xpt_register_async(int event, ac_callback_t *cbfunc, void *cbarg, struct cam_path *path); cam_status xpt_compile_path(struct cam_path *new_path, Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/cam_xpt_internal.h Sun Aug 11 10:54:16 2013 (r254214) @@ -29,6 +29,8 @@ #ifndef _CAM_CAM_XPT_INTERNAL_H #define _CAM_CAM_XPT_INTERNAL_H 1 +#include + /* Forward Declarations */ struct cam_eb; struct cam_et; @@ -125,6 +127,8 @@ struct cam_ed { u_int32_t refcount; struct callout callout; STAILQ_ENTRY(cam_ed) highpowerq_entry; + struct mtx device_mtx; + struct task device_destroy_task; }; /* Modified: projects/camlock/sys/cam/scsi/scsi_cd.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_cd.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_cd.c Sun Aug 11 10:54:16 2013 (r254214) @@ -982,9 +982,9 @@ cdregister(struct cam_periph *periph, vo STAILQ_INIT(&nchanger->chluns); callout_init_mtx(&nchanger->long_handle, - periph->sim->mtx, 0); + cam_periph_mtx(periph), 0); callout_init_mtx(&nchanger->short_handle, - periph->sim->mtx, 0); + cam_periph_mtx(periph), 0); mtx_lock(&changerq_mtx); num_changers++; @@ -1053,7 +1053,7 @@ cdregister(struct cam_periph *periph, vo /* * Schedule a periodic media polling events. */ - callout_init_mtx(&softc->mediapoll_c, periph->sim->mtx, 0); + callout_init_mtx(&softc->mediapoll_c, cam_periph_mtx(periph), 0); if ((softc->flags & CD_FLAG_DISC_REMOVABLE) && (softc->flags & CD_FLAG_CHANGER) == 0 && (cgd->inq_flags & SID_AEN) == 0 && Modified: projects/camlock/sys/cam/scsi/scsi_ch.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_ch.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_ch.c Sun Aug 11 10:54:16 2013 (r254214) @@ -247,20 +247,19 @@ chinit(void) static void chdevgonecb(void *arg) { - struct cam_sim *sim; struct ch_softc *softc; struct cam_periph *periph; + struct mtx *mtx; int i; periph = (struct cam_periph *)arg; - sim = periph->sim; - softc = (struct ch_softc *)periph->softc; + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); + softc = (struct ch_softc *)periph->softc; KASSERT(softc->open_count >= 0, ("Negative open count %d", softc->open_count)); - mtx_lock(sim->mtx); - /* * When we get this callback, we will get no more close calls from * devfs. So if we have any dangling opens, we need to release the @@ -277,13 +276,13 @@ chdevgonecb(void *arg) cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the final call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph * with a cam_periph_unlock() call would cause a page fault. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); } static void @@ -507,25 +506,23 @@ chopen(struct cdev *dev, int flags, int static int chclose(struct cdev *dev, int flag, int fmt, struct thread *td) { - struct cam_sim *sim; struct cam_periph *periph; struct ch_softc *softc; + struct mtx *mtx; periph = (struct cam_periph *)dev->si_drv1; if (periph == NULL) return(ENXIO); + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); - sim = periph->sim; softc = (struct ch_softc *)periph->softc; - - mtx_lock(sim->mtx); - softc->open_count--; cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph @@ -536,7 +533,7 @@ chclose(struct cdev *dev, int flag, int * protect the open count and avoid another lock acquisition and * release. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); return(0); } @@ -1715,10 +1712,8 @@ chscsiversion(struct cam_periph *periph) struct scsi_inquiry_data *inq_data; struct ccb_getdev *cgd; int dev_scsi_version; - struct cam_sim *sim; - sim = xpt_path_sim(periph->path); - mtx_assert(sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); if ((cgd = (struct ccb_getdev *)xpt_alloc_ccb_nowait()) == NULL) return (-1); /* Modified: projects/camlock/sys/cam/scsi/scsi_da.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_da.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_da.c Sun Aug 11 10:54:16 2013 (r254214) @@ -2037,7 +2037,7 @@ daregister(struct cam_periph *periph, vo * Schedule a periodic event to occasionally send an * ordered tag to a device. */ - callout_init_mtx(&softc->sendordered_c, periph->sim->mtx, 0); + callout_init_mtx(&softc->sendordered_c, cam_periph_mtx(periph), 0); callout_reset(&softc->sendordered_c, (da_default_timeout * hz) / DA_ORDEREDTAG_INTERVAL, dasendorderedtag, softc); @@ -2157,7 +2157,7 @@ daregister(struct cam_periph *periph, vo /* * Schedule a periodic media polling events. */ - callout_init_mtx(&softc->mediapoll_c, periph->sim->mtx, 0); + callout_init_mtx(&softc->mediapoll_c, cam_periph_mtx(periph), 0); if ((softc->flags & DA_FLAG_PACK_REMOVABLE) && (cgd->inq_flags & SID_AEN) == 0 && da_poll_period != 0) Modified: projects/camlock/sys/cam/scsi/scsi_enc.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_enc.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_enc.c Sun Aug 11 10:54:16 2013 (r254214) @@ -110,17 +110,16 @@ enc_init(void) static void enc_devgonecb(void *arg) { - struct cam_sim *sim; struct cam_periph *periph; struct enc_softc *enc; + struct mtx *mtx; int i; periph = (struct cam_periph *)arg; - sim = periph->sim; + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); enc = (struct enc_softc *)periph->softc; - mtx_lock(sim->mtx); - /* * When we get this callback, we will get no more close calls from * devfs. So if we have any dangling opens, we need to release the @@ -137,13 +136,13 @@ enc_devgonecb(void *arg) cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the final call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph * with a cam_periph_unlock() call would cause a page fault. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); } static void @@ -301,25 +300,23 @@ out: static int enc_close(struct cdev *dev, int flag, int fmt, struct thread *td) { - struct cam_sim *sim; struct cam_periph *periph; struct enc_softc *enc; + struct mtx *mtx; periph = (struct cam_periph *)dev->si_drv1; if (periph == NULL) return (ENXIO); + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); - sim = periph->sim; enc = periph->softc; - - mtx_lock(sim->mtx); - enc->open_count--; cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph @@ -330,7 +327,7 @@ enc_close(struct cdev *dev, int flag, in * protect the open count and avoid another lock acquisition and * release. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); return (0); } @@ -865,7 +862,7 @@ enc_kproc_init(enc_softc_t *enc) { int result; - callout_init_mtx(&enc->status_updater, enc->periph->sim->mtx, 0); + callout_init_mtx(&enc->status_updater, cam_periph_mtx(enc->periph), 0); if (cam_periph_acquire(enc->periph) != CAM_REQ_CMP) return (ENXIO); Modified: projects/camlock/sys/cam/scsi/scsi_enc_ses.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_enc_ses.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_enc_ses.c Sun Aug 11 10:54:16 2013 (r254214) @@ -915,10 +915,8 @@ ses_path_iter_devid_callback(enc_softc_t cdm.matches = &match_result; sim = xpt_path_sim(cdm.ccb_h.path); - CAM_SIM_LOCK(sim); xpt_action((union ccb *)&cdm); xpt_free_path(cdm.ccb_h.path); - CAM_SIM_UNLOCK(sim); if ((cdm.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP || (cdm.status != CAM_DEV_MATCH_LAST @@ -935,10 +933,7 @@ ses_path_iter_devid_callback(enc_softc_t args->callback(enc, elem, cdm.ccb_h.path, args->callback_arg); - sim = xpt_path_sim(cdm.ccb_h.path); - CAM_SIM_LOCK(sim); xpt_free_path(cdm.ccb_h.path); - CAM_SIM_UNLOCK(sim); } /** Modified: projects/camlock/sys/cam/scsi/scsi_pass.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_pass.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_pass.c Sun Aug 11 10:54:16 2013 (r254214) @@ -139,20 +139,19 @@ passinit(void) static void passdevgonecb(void *arg) { - struct cam_sim *sim; struct cam_periph *periph; + struct mtx *mtx; struct pass_softc *softc; int i; periph = (struct cam_periph *)arg; - sim = periph->sim; - softc = (struct pass_softc *)periph->softc; + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); + softc = (struct pass_softc *)periph->softc; KASSERT(softc->open_count >= 0, ("Negative open count %d", softc->open_count)); - mtx_lock(sim->mtx); - /* * When we get this callback, we will get no more close calls from * devfs. So if we have any dangling opens, we need to release the @@ -169,13 +168,13 @@ passdevgonecb(void *arg) cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the final call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph * with a cam_periph_unlock() call would cause a page fault. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); } static void @@ -501,25 +500,23 @@ passopen(struct cdev *dev, int flags, in static int passclose(struct cdev *dev, int flag, int fmt, struct thread *td) { - struct cam_sim *sim; struct cam_periph *periph; struct pass_softc *softc; + struct mtx *mtx; periph = (struct cam_periph *)dev->si_drv1; if (periph == NULL) return (ENXIO); + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); - sim = periph->sim; softc = periph->softc; - - mtx_lock(sim->mtx); - softc->open_count--; cam_periph_release_locked(periph); /* - * We reference the SIM lock directly here, instead of using + * We reference the lock directly here, instead of using * cam_periph_unlock(). The reason is that the call to * cam_periph_release_locked() above could result in the periph * getting freed. If that is the case, dereferencing the periph @@ -530,7 +527,7 @@ passclose(struct cdev *dev, int flag, in * protect the open count and avoid another lock acquisition and * release. */ - mtx_unlock(sim->mtx); + mtx_unlock(mtx); return (0); } Modified: projects/camlock/sys/cam/scsi/scsi_sg.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_sg.c Sun Aug 11 10:35:38 2013 (r254213) +++ projects/camlock/sys/cam/scsi/scsi_sg.c Sun Aug 11 10:54:16 2013 (r254214) @@ -170,20 +170,19 @@ sginit(void) static void sgdevgonecb(void *arg) { - struct cam_sim *sim; struct cam_periph *periph; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 11:33:49 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B22499E5; Sun, 11 Aug 2013 11:33:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 873262115; Sun, 11 Aug 2013 11:33:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BBXnJu012160; Sun, 11 Aug 2013 11:33:49 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BBXmws012157; Sun, 11 Aug 2013 11:33:48 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308111133.r7BBXmws012157@svn.freebsd.org> From: Alexander Motin Date: Sun, 11 Aug 2013 11:33:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254216 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 11:33:49 -0000 Author: mav Date: Sun Aug 11 11:33:48 2013 New Revision: 254216 URL: http://svnweb.freebsd.org/changeset/base/254216 Log: Fix r254214 build without INVARIANTS. Modified: projects/camlock/sys/cam/cam_periph.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h Modified: projects/camlock/sys/cam/cam_periph.h ============================================================================== --- projects/camlock/sys/cam/cam_periph.h Sun Aug 11 11:06:49 2013 (r254215) +++ projects/camlock/sys/cam/cam_periph.h Sun Aug 11 11:33:48 2013 (r254216) @@ -204,11 +204,8 @@ cam_periph_owned(struct cam_periph *peri return (xpt_path_owned(periph->path)); } -static __inline void -cam_periph_assert(struct cam_periph *periph, int what) -{ - mtx_assert(xpt_path_mtx(periph->path), what); -} +#define cam_periph_assert(periph, what) \ + mtx_assert(xpt_path_mtx((periph)->path), (what)) static __inline int cam_periph_sleep(struct cam_periph *periph, void *chan, int priority, Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 11:06:49 2013 (r254215) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 11:33:48 2013 (r254216) @@ -4435,7 +4435,7 @@ xpt_alloc_target(struct cam_eb *bus, tar { struct cam_et *cur_target, *target; - xpt_assert_buses(MA_OWNED); + mtx_assert(&xsoftc.xpt_topo_lock, MA_OWNED); mtx_assert(&bus->eb_mtx, MA_OWNED); target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT, M_NOWAIT|M_ZERO); @@ -4990,12 +4990,6 @@ xpt_unlock_buses(void) } void -xpt_assert_buses(int what) -{ - mtx_assert(&xsoftc.xpt_topo_lock, what); -} - -void xpt_path_lock(struct cam_path *path) { @@ -5009,13 +5003,6 @@ xpt_path_unlock(struct cam_path *path) mtx_unlock(&path->device->device_mtx); } -void -xpt_path_assert(struct cam_path *path, int what) -{ - - mtx_assert(&path->device->device_mtx, what); -} - int xpt_path_owned(struct cam_path *path) { Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 11:06:49 2013 (r254215) +++ projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 11:33:48 2013 (r254216) @@ -102,10 +102,9 @@ void xpt_hold_boot(void); void xpt_release_boot(void); void xpt_lock_buses(void); void xpt_unlock_buses(void); -void xpt_assert_buses(int what); void xpt_path_lock(struct cam_path *path); void xpt_path_unlock(struct cam_path *path); -void xpt_path_assert(struct cam_path *path, int what); +#define xpt_path_assert(path, what) mtx_assert(xpt_path_mtx(path), (what)) int xpt_path_owned(struct cam_path *path); int xpt_path_sleep(struct cam_path *path, void *chan, int priority, const char *wmesg, From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 20:24:01 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 872167FE; Sun, 11 Aug 2013 20:24:01 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 64D2D2624; Sun, 11 Aug 2013 20:24:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BKO1A6014823; Sun, 11 Aug 2013 20:24:01 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BKO0AF014817; Sun, 11 Aug 2013 20:24:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308112024.r7BKO0AF014817@svn.freebsd.org> From: Alexander Motin Date: Sun, 11 Aug 2013 20:24:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254226 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 20:24:01 -0000 Author: mav Date: Sun Aug 11 20:24:00 2013 New Revision: 254226 URL: http://svnweb.freebsd.org/changeset/base/254226 Log: Replace single CAM SWI with set of per-SIM threads for sim_doneq processing. Than allows substantially improve SMP scalability with several HBAs. Modified: projects/camlock/sys/cam/cam_sim.c projects/camlock/sys/cam/cam_sim.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Sun Aug 11 20:03:12 2013 (r254225) +++ projects/camlock/sys/cam/cam_sim.c Sun Aug 11 20:24:00 2013 (r254226) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -65,6 +66,7 @@ cam_sim_alloc(sim_action_func sim_action int max_tagged_dev_transactions, struct cam_devq *queue) { struct cam_sim *sim; + int error; if (mtx == NULL) return (NULL); @@ -97,7 +99,13 @@ cam_sim_alloc(sim_action_func sim_action } mtx_init(&sim->sim_doneq_mtx, "CAM doneq", NULL, MTX_DEF); TAILQ_INIT(&sim->sim_doneq); - + error = kproc_kthread_add(xpt_done_td, sim, &cam_proc, NULL, 0, 0, + "cam", "%s%d", sim_name, unit); + if (error != 0) { + mtx_destroy(&sim->sim_doneq_mtx); + free(sim, M_CAMSIM); + return (NULL); + } return (sim); } @@ -114,7 +122,12 @@ cam_sim_free(struct cam_sim *sim, int fr } KASSERT(sim->refcount == 0, ("sim->refcount == 0")); - + mtx_lock(&sim->sim_doneq_mtx); + sim->sim_doneq_flags |= CAM_SIM_DQ_EXIT; + wakeup(&sim->sim_doneq); + mtx_unlock(&sim->sim_doneq_mtx); + while (sim->sim_doneq_flags & CAM_SIM_DQ_EXIT) + msleep(&sim->sim_doneq_flags, sim->mtx, PRIBIO, "simfree2", 0); if (free_devq) cam_simq_free(sim->devq); mtx_destroy(&sim->sim_doneq_mtx); Modified: projects/camlock/sys/cam/cam_sim.h ============================================================================== --- projects/camlock/sys/cam/cam_sim.h Sun Aug 11 20:03:12 2013 (r254225) +++ projects/camlock/sys/cam/cam_sim.h Sun Aug 11 20:24:00 2013 (r254226) @@ -97,6 +97,7 @@ struct cam_sim { TAILQ_HEAD(, ccb_hdr) sim_doneq; struct mtx sim_doneq_mtx; int sim_doneq_flags; +#define CAM_SIM_DQ_EXIT 0x01 #define CAM_SIM_DQ_ONQ 0x04 #define CAM_SIM_DQ_POLLED 0x08 #define CAM_SIM_DQ_BATCH 0x10 Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 20:03:12 2013 (r254225) +++ projects/camlock/sys/cam/cam_xpt.c Sun Aug 11 20:24:00 2013 (r254226) @@ -156,15 +156,7 @@ TUNABLE_INT("kern.cam.boot_delay", &xsof SYSCTL_INT(_kern_cam, OID_AUTO, boot_delay, CTLFLAG_RDTUN, &xsoftc.boot_delay, 0, "Bus registration wait time"); -/* Queues for our software interrupt handler */ -typedef TAILQ_HEAD(cam_isrq, ccb_hdr) cam_isrq_t; -typedef TAILQ_HEAD(cam_simq, cam_sim) cam_simq_t; -static cam_simq_t cam_simq; -static struct mtx cam_simq_lock; - -/* Pointers to software interrupt handlers */ -static void *cambio_ih; - +struct proc *cam_proc; struct cam_periph *xpt_periph; static periph_init_t xpt_periph_init; @@ -249,7 +241,6 @@ static int xpt_schedule_dev(struct camq static xpt_devicefunc_t xptpassannouncefunc; static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); -static void camisr(void *); static void camisr_runqueue(struct cam_sim *); static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus); @@ -841,12 +832,10 @@ xpt_init(void *dummy) cam_status status; TAILQ_INIT(&xsoftc.xpt_busses); - TAILQ_INIT(&cam_simq); TAILQ_INIT(&xsoftc.ccb_scanq); STAILQ_INIT(&xsoftc.highpowerq); xsoftc.num_highpower = CAM_MAX_HIGHPOWER; - mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); xsoftc.xpt_taskq = taskqueue_create("CAM XPT task", M_WAITOK, @@ -904,8 +893,6 @@ xpt_init(void *dummy) path, NULL, 0, xpt_sim); xpt_free_path(path); mtx_unlock(&xsoftc.xpt_lock); - /* Install our software interrupt handlers */ - swi_add(NULL, "cambio", camisr, NULL, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih); /* * Register a callback for when interrupts are enabled. */ @@ -4268,7 +4255,7 @@ void xpt_done(union ccb *done_ccb) { struct cam_sim *sim; - int first; + int run; CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_done\n")); if ((done_ccb->ccb_h.func_code & XPT_FC_QUEUED) != 0) { @@ -4283,16 +4270,13 @@ xpt_done(union ccb *done_ccb) done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; if ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | CAM_SIM_DQ_POLLED | CAM_SIM_DQ_BATCH)) == 0) { - mtx_lock(&cam_simq_lock); - first = TAILQ_EMPTY(&cam_simq); - TAILQ_INSERT_TAIL(&cam_simq, sim, links); - mtx_unlock(&cam_simq_lock); sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; + run = 1; } else - first = 0; + run = 0; mtx_unlock(&sim->sim_doneq_mtx); - if (first) - swi_sched(cambio_ih, 0); + if (run) + wakeup(&sim->sim_doneq); } } @@ -4799,7 +4783,8 @@ xpt_config(void *arg) callout_reset(&xsoftc.boot_callout, hz * xsoftc.boot_delay / 1000, xpt_boot_delay, NULL); /* Fire up rescan thread. */ - if (kproc_create(xpt_scanner_thread, NULL, NULL, 0, 0, "xpt_thrd")) { + if (kproc_kthread_add(xpt_scanner_thread, NULL, &cam_proc, NULL, 0, 0, + "cam", "scanner")) { printf("xpt_config: failed to create rescan thread.\n"); } } @@ -5025,25 +5010,30 @@ xpt_path_mtx(struct cam_path *path) return (&path->device->device_mtx); } -static void -camisr(void *dummy) +void +xpt_done_td(void *arg) { - cam_simq_t queue; - struct cam_sim *sim; - - mtx_lock(&cam_simq_lock); - TAILQ_INIT(&queue); - while (!TAILQ_EMPTY(&cam_simq)) { - TAILQ_CONCAT(&queue, &cam_simq, links); - mtx_unlock(&cam_simq_lock); + struct cam_sim *sim = arg; - while ((sim = TAILQ_FIRST(&queue)) != NULL) { - TAILQ_REMOVE(&queue, sim, links); - camisr_runqueue(sim); + mtx_lock(&sim->sim_doneq_mtx); + while (1) { + if (TAILQ_EMPTY(&sim->sim_doneq)) { + if (sim->sim_doneq_flags & CAM_SIM_DQ_EXIT) { + mtx_unlock(&sim->sim_doneq_mtx); + CAM_SIM_LOCK(sim); + sim->sim_doneq_flags &= ~CAM_SIM_DQ_EXIT; + wakeup(&sim->sim_doneq_flags); + CAM_SIM_UNLOCK(sim); + kthread_exit(); + } + msleep(&sim->sim_doneq, &sim->sim_doneq_mtx, PRIBIO, + "-", 0); + continue; } - mtx_lock(&cam_simq_lock); + mtx_unlock(&sim->sim_doneq_mtx); + camisr_runqueue(sim); + mtx_lock(&sim->sim_doneq_mtx); } - mtx_unlock(&cam_simq_lock); } static void Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 20:03:12 2013 (r254225) +++ projects/camlock/sys/cam/cam_xpt.h Sun Aug 11 20:24:00 2013 (r254226) @@ -62,6 +62,7 @@ struct async_node { SLIST_HEAD(async_list, async_node); SLIST_HEAD(periph_list, cam_periph); +extern struct proc *cam_proc; void xpt_action(union ccb *new_ccb); void xpt_action_default(union ccb *new_ccb); @@ -123,6 +124,7 @@ void xpt_copy_path(struct cam_path *ne struct cam_path *path); void xpt_release_path(struct cam_path *path); +void xpt_done_td(void *); #endif /* _KERNEL */ From owner-svn-src-projects@FreeBSD.ORG Sun Aug 11 22:06:20 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8E78DD08; Sun, 11 Aug 2013 22:06:20 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6135229C7; Sun, 11 Aug 2013 22:06:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BM6K5i053224; Sun, 11 Aug 2013 22:06:20 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BM6EgM053186; Sun, 11 Aug 2013 22:06:14 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201308112206.r7BM6EgM053186@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 11 Aug 2013 22:06:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254232 - in projects/virtio: . bin/pkill bin/sh cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs cddl/contrib/opensolaris/c... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 22:06:20 -0000 Author: bryanv Date: Sun Aug 11 22:06:10 2013 New Revision: 254232 URL: http://svnweb.freebsd.org/changeset/base/254232 Log: MFC @ r254230 Added: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compnarrowassign.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.execcast.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_AGG.bad.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_AGG.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.dyn.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.dyn.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/tst.xlate.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.signs.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/err.D_TRACE_AGG.bad.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/err.D_TRACE_AGG.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/tst.dyn.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/tst.dyn.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability1.ksh.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh.out - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/tst.TestTransStability2.ksh.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/types/tst.const.d - copied unchanged from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/types/tst.const.d projects/virtio/contrib/apr-util/crypto/apr_passwd.c - copied unchanged from r254230, head/contrib/apr-util/crypto/apr_passwd.c projects/virtio/contrib/apr-util/crypto/crypt_blowfish.c - copied unchanged from r254230, head/contrib/apr-util/crypto/crypt_blowfish.c projects/virtio/contrib/apr-util/crypto/crypt_blowfish.h - copied unchanged from r254230, head/contrib/apr-util/crypto/crypt_blowfish.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/eui48_108.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/eui48_108.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/eui48_108.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/eui48_108.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/eui64_109.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/eui64_109.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/eui64_109.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/eui64_109.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/l32_105.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/l32_105.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/l32_105.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/l32_105.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/l64_106.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/l64_106.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/l64_106.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/l64_106.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/lp_107.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/lp_107.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/lp_107.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/lp_107.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/nid_104.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/nid_104.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/nid_104.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/nid_104.h projects/virtio/contrib/bind9/lib/dns/rdata/generic/uri_256.c - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/uri_256.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/uri_256.h - copied unchanged from r254230, head/contrib/bind9/lib/dns/rdata/generic/uri_256.h projects/virtio/contrib/bind9/lib/isc/include/isc/regex.h - copied unchanged from r254230, head/contrib/bind9/lib/isc/include/isc/regex.h projects/virtio/contrib/bind9/lib/isc/regex.c - copied unchanged from r254230, head/contrib/bind9/lib/isc/regex.c projects/virtio/contrib/nvi/catalog/zh_CN.GB2312.base - copied unchanged from r254230, head/contrib/nvi/catalog/zh_CN.GB2312.base projects/virtio/contrib/nvi/catalog/zh_CN.GB2312.owner - copied unchanged from r254230, head/contrib/nvi/catalog/zh_CN.GB2312.owner projects/virtio/contrib/nvi/cl/extern.h - copied unchanged from r254230, head/contrib/nvi/cl/extern.h projects/virtio/contrib/nvi/common/conv.c - copied unchanged from r254230, head/contrib/nvi/common/conv.c projects/virtio/contrib/nvi/common/conv.h - copied unchanged from r254230, head/contrib/nvi/common/conv.h projects/virtio/contrib/nvi/common/encoding.c - copied unchanged from r254230, head/contrib/nvi/common/encoding.c projects/virtio/contrib/nvi/common/extern.h - copied unchanged from r254230, head/contrib/nvi/common/extern.h projects/virtio/contrib/nvi/common/multibyte.h - copied unchanged from r254230, head/contrib/nvi/common/multibyte.h projects/virtio/contrib/nvi/common/options_def.h - copied unchanged from r254230, head/contrib/nvi/common/options_def.h projects/virtio/contrib/nvi/ex/ex_def.h - copied unchanged from r254230, head/contrib/nvi/ex/ex_def.h projects/virtio/contrib/nvi/ex/extern.h - copied unchanged from r254230, head/contrib/nvi/ex/extern.h projects/virtio/contrib/nvi/regex/ - copied from r254230, head/contrib/nvi/regex/ projects/virtio/contrib/nvi/vi/extern.h - copied unchanged from r254230, head/contrib/nvi/vi/extern.h projects/virtio/contrib/serf/SConstruct - copied unchanged from r254230, head/contrib/serf/SConstruct projects/virtio/contrib/serf/auth/auth_spnego.c - copied unchanged from r254230, head/contrib/serf/auth/auth_spnego.c projects/virtio/contrib/serf/auth/auth_spnego.h - copied unchanged from r254230, head/contrib/serf/auth/auth_spnego.h projects/virtio/contrib/serf/auth/auth_spnego_gss.c - copied unchanged from r254230, head/contrib/serf/auth/auth_spnego_gss.c projects/virtio/contrib/serf/auth/auth_spnego_sspi.c - copied unchanged from r254230, head/contrib/serf/auth/auth_spnego_sspi.c projects/virtio/contrib/serf/build/check.py - copied unchanged from r254230, head/contrib/serf/build/check.py projects/virtio/contrib/serf/build/serf.pc.in - copied unchanged from r254230, head/contrib/serf/build/serf.pc.in projects/virtio/contrib/wpa/hostapd/hlr_auc_gw.txt - copied unchanged from r254230, head/contrib/wpa/hostapd/hlr_auc_gw.txt projects/virtio/contrib/wpa/hostapd/hostapd.eap_user_sqlite - copied unchanged from r254230, head/contrib/wpa/hostapd/hostapd.eap_user_sqlite projects/virtio/contrib/wpa/patches/openssl-0.9.8x-tls-extensions.patch - copied unchanged from r254230, head/contrib/wpa/patches/openssl-0.9.8x-tls-extensions.patch projects/virtio/contrib/wpa/src/ap/eap_user_db.c - copied unchanged from r254230, head/contrib/wpa/src/ap/eap_user_db.c projects/virtio/contrib/wpa/src/ap/gas_serv.c - copied unchanged from r254230, head/contrib/wpa/src/ap/gas_serv.c projects/virtio/contrib/wpa/src/ap/gas_serv.h - copied unchanged from r254230, head/contrib/wpa/src/ap/gas_serv.h projects/virtio/contrib/wpa/src/ap/hs20.c - copied unchanged from r254230, head/contrib/wpa/src/ap/hs20.c projects/virtio/contrib/wpa/src/ap/hs20.h - copied unchanged from r254230, head/contrib/wpa/src/ap/hs20.h projects/virtio/contrib/wpa/src/ap/ieee802_11_shared.c - copied unchanged from r254230, head/contrib/wpa/src/ap/ieee802_11_shared.c projects/virtio/contrib/wpa/src/ap/ieee802_11_vht.c - copied unchanged from r254230, head/contrib/wpa/src/ap/ieee802_11_vht.c projects/virtio/contrib/wpa/src/ap/p2p_hostapd.c - copied unchanged from r254230, head/contrib/wpa/src/ap/p2p_hostapd.c projects/virtio/contrib/wpa/src/ap/p2p_hostapd.h - copied unchanged from r254230, head/contrib/wpa/src/ap/p2p_hostapd.h projects/virtio/contrib/wpa/src/ap/vlan_util.c - copied unchanged from r254230, head/contrib/wpa/src/ap/vlan_util.c projects/virtio/contrib/wpa/src/ap/vlan_util.h - copied unchanged from r254230, head/contrib/wpa/src/ap/vlan_util.h projects/virtio/contrib/wpa/src/ap/wnm_ap.c - copied unchanged from r254230, head/contrib/wpa/src/ap/wnm_ap.c projects/virtio/contrib/wpa/src/ap/wnm_ap.h - copied unchanged from r254230, head/contrib/wpa/src/ap/wnm_ap.h projects/virtio/contrib/wpa/src/common/gas.c - copied unchanged from r254230, head/contrib/wpa/src/common/gas.c projects/virtio/contrib/wpa/src/common/gas.h - copied unchanged from r254230, head/contrib/wpa/src/common/gas.h projects/virtio/contrib/wpa/src/crypto/aes-ccm.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/aes-ccm.c projects/virtio/contrib/wpa/src/crypto/aes-gcm.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/aes-gcm.c projects/virtio/contrib/wpa/src/crypto/random.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/random.c projects/virtio/contrib/wpa/src/crypto/random.h - copied unchanged from r254230, head/contrib/wpa/src/crypto/random.h projects/virtio/contrib/wpa/src/crypto/sha1-prf.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/sha1-prf.c projects/virtio/contrib/wpa/src/crypto/sha256-prf.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/sha256-prf.c projects/virtio/contrib/wpa/src/crypto/sha256-tlsprf.c - copied unchanged from r254230, head/contrib/wpa/src/crypto/sha256-tlsprf.c projects/virtio/contrib/wpa/src/crypto/sha256_i.h - copied unchanged from r254230, head/contrib/wpa/src/crypto/sha256_i.h projects/virtio/contrib/wpa/src/drivers/driver_bsd.c - copied unchanged from r254230, head/contrib/wpa/src/drivers/driver_bsd.c projects/virtio/contrib/wpa/src/drivers/driver_common.c - copied unchanged from r254230, head/contrib/wpa/src/drivers/driver_common.c projects/virtio/contrib/wpa/src/drivers/driver_privsep.c - copied unchanged from r254230, head/contrib/wpa/src/drivers/driver_privsep.c projects/virtio/contrib/wpa/src/eap_common/eap_pwd_common.c - copied unchanged from r254230, head/contrib/wpa/src/eap_common/eap_pwd_common.c projects/virtio/contrib/wpa/src/eap_common/eap_pwd_common.h - copied unchanged from r254230, head/contrib/wpa/src/eap_common/eap_pwd_common.h projects/virtio/contrib/wpa/src/eap_peer/eap_pwd.c - copied unchanged from r254230, head/contrib/wpa/src/eap_peer/eap_pwd.c projects/virtio/contrib/wpa/src/eap_server/eap_server_pwd.c - copied unchanged from r254230, head/contrib/wpa/src/eap_server/eap_server_pwd.c projects/virtio/contrib/wpa/src/l2_packet/l2_packet_privsep.c - copied unchanged from r254230, head/contrib/wpa/src/l2_packet/l2_packet_privsep.c projects/virtio/contrib/wpa/src/p2p/ - copied from r254230, head/contrib/wpa/src/p2p/ projects/virtio/contrib/wpa/src/radius/radius_das.c - copied unchanged from r254230, head/contrib/wpa/src/radius/radius_das.c projects/virtio/contrib/wpa/src/radius/radius_das.h - copied unchanged from r254230, head/contrib/wpa/src/radius/radius_das.h projects/virtio/contrib/wpa/src/rsn_supp/tdls.c - copied unchanged from r254230, head/contrib/wpa/src/rsn_supp/tdls.c projects/virtio/contrib/wpa/src/utils/edit.c - copied unchanged from r254230, head/contrib/wpa/src/utils/edit.c projects/virtio/contrib/wpa/src/utils/edit.h - copied unchanged from r254230, head/contrib/wpa/src/utils/edit.h projects/virtio/contrib/wpa/src/utils/edit_readline.c - copied unchanged from r254230, head/contrib/wpa/src/utils/edit_readline.c projects/virtio/contrib/wpa/src/utils/edit_simple.c - copied unchanged from r254230, head/contrib/wpa/src/utils/edit_simple.c projects/virtio/contrib/wpa/src/utils/ext_password.c - copied unchanged from r254230, head/contrib/wpa/src/utils/ext_password.c projects/virtio/contrib/wpa/src/utils/ext_password.h - copied unchanged from r254230, head/contrib/wpa/src/utils/ext_password.h projects/virtio/contrib/wpa/src/utils/ext_password_i.h - copied unchanged from r254230, head/contrib/wpa/src/utils/ext_password_i.h projects/virtio/contrib/wpa/src/utils/ext_password_test.c - copied unchanged from r254230, head/contrib/wpa/src/utils/ext_password_test.c projects/virtio/contrib/wpa/src/wps/wps_attr_parse.h - copied unchanged from r254230, head/contrib/wpa/src/wps/wps_attr_parse.h projects/virtio/contrib/wpa/src/wps/wps_validate.c - copied unchanged from r254230, head/contrib/wpa/src/wps/wps_validate.c projects/virtio/contrib/wpa/wpa_supplicant/README-HS20 - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/README-HS20 projects/virtio/contrib/wpa/wpa_supplicant/README-P2P - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/README-P2P projects/virtio/contrib/wpa/wpa_supplicant/autoscan.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/autoscan.c projects/virtio/contrib/wpa/wpa_supplicant/autoscan.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/autoscan.h projects/virtio/contrib/wpa/wpa_supplicant/autoscan_exponential.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/autoscan_exponential.c projects/virtio/contrib/wpa/wpa_supplicant/autoscan_periodic.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/autoscan_periodic.c projects/virtio/contrib/wpa/wpa_supplicant/bgscan_learn.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/bgscan_learn.c projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers_p2p.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers_p2p.c projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers_p2p.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers_p2p.h projects/virtio/contrib/wpa/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in projects/virtio/contrib/wpa/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in projects/virtio/contrib/wpa/wpa_supplicant/examples/dbus-listen-preq.py - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/dbus-listen-preq.py projects/virtio/contrib/wpa/wpa_supplicant/examples/p2p/ - copied from r254230, head/contrib/wpa/wpa_supplicant/examples/p2p/ projects/virtio/contrib/wpa/wpa_supplicant/examples/p2p-action-udhcp.sh - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/p2p-action-udhcp.sh projects/virtio/contrib/wpa/wpa_supplicant/examples/p2p-action.sh - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/p2p-action.sh projects/virtio/contrib/wpa/wpa_supplicant/examples/udhcpd-p2p.conf - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/udhcpd-p2p.conf projects/virtio/contrib/wpa/wpa_supplicant/examples/wps-ap-cli - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/wps-ap-cli projects/virtio/contrib/wpa/wpa_supplicant/examples/wps-nfc.py - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/examples/wps-nfc.py projects/virtio/contrib/wpa/wpa_supplicant/gas_query.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/gas_query.c projects/virtio/contrib/wpa/wpa_supplicant/gas_query.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/gas_query.h projects/virtio/contrib/wpa/wpa_supplicant/hs20_supplicant.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/hs20_supplicant.c projects/virtio/contrib/wpa/wpa_supplicant/hs20_supplicant.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/hs20_supplicant.h projects/virtio/contrib/wpa/wpa_supplicant/interworking.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/interworking.c projects/virtio/contrib/wpa/wpa_supplicant/interworking.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/interworking.h projects/virtio/contrib/wpa/wpa_supplicant/nfc_pw_token.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/nfc_pw_token.c projects/virtio/contrib/wpa/wpa_supplicant/offchannel.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/offchannel.c projects/virtio/contrib/wpa/wpa_supplicant/offchannel.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/offchannel.h projects/virtio/contrib/wpa/wpa_supplicant/p2p_supplicant.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/p2p_supplicant.c projects/virtio/contrib/wpa/wpa_supplicant/p2p_supplicant.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/p2p_supplicant.h projects/virtio/contrib/wpa/wpa_supplicant/utils/ - copied from r254230, head/contrib/wpa/wpa_supplicant/utils/ projects/virtio/contrib/wpa/wpa_supplicant/wifi_display.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wifi_display.c projects/virtio/contrib/wpa/wpa_supplicant/wifi_display.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wifi_display.h projects/virtio/contrib/wpa/wpa_supplicant/wnm_sta.c - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wnm_sta.c projects/virtio/contrib/wpa/wpa_supplicant/wnm_sta.h - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wnm_sta.h projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant_conf.mk - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wpa_supplicant_conf.mk projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant_conf.sh - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wpa_supplicant_conf.sh projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant_template.conf - copied unchanged from r254230, head/contrib/wpa/wpa_supplicant/wpa_supplicant_template.conf projects/virtio/etc/libmap.conf - copied unchanged from r254230, head/etc/libmap.conf projects/virtio/lib/libc++/libc++.ldscript - copied unchanged from r254230, head/lib/libc++/libc++.ldscript projects/virtio/lib/libusb/libusb-0.1.pc - copied unchanged from r254230, head/lib/libusb/libusb-0.1.pc projects/virtio/lib/libusb/libusb-1.0.pc - copied unchanged from r254230, head/lib/libusb/libusb-1.0.pc projects/virtio/lib/libusb/libusb-2.0.pc - copied unchanged from r254230, head/lib/libusb/libusb-2.0.pc projects/virtio/sbin/mount/mount.conf.8 - copied unchanged from r254230, head/sbin/mount/mount.conf.8 projects/virtio/share/doc/legal/realtek/ - copied from r254230, head/share/doc/legal/realtek/ projects/virtio/share/man/man4/cc_cdg.4 - copied unchanged from r254230, head/share/man/man4/cc_cdg.4 projects/virtio/share/man/man4/hptnr.4 - copied unchanged from r254230, head/share/man/man4/hptnr.4 projects/virtio/share/man/man4/rsu.4 - copied unchanged from r254230, head/share/man/man4/rsu.4 projects/virtio/share/man/man4/rsufw.4 - copied unchanged from r254230, head/share/man/man4/rsufw.4 projects/virtio/share/man/man9/SDT.9 - copied unchanged from r254230, head/share/man/man9/SDT.9 projects/virtio/share/man/man9/vm_page_busy.9 - copied unchanged from r254230, head/share/man/man9/vm_page_busy.9 projects/virtio/share/man/man9/vmem.9 - copied unchanged from r254230, head/share/man/man9/vmem.9 projects/virtio/share/monetdef/ca_ES.UTF-8.src - copied unchanged from r254230, head/share/monetdef/ca_ES.UTF-8.src projects/virtio/share/monetdef/de_AT.UTF-8.src - copied unchanged from r254230, head/share/monetdef/de_AT.UTF-8.src projects/virtio/share/monetdef/de_DE.UTF-8.src - copied unchanged from r254230, head/share/monetdef/de_DE.UTF-8.src projects/virtio/share/monetdef/el_GR.UTF-8.src - copied unchanged from r254230, head/share/monetdef/el_GR.UTF-8.src projects/virtio/share/monetdef/es_ES.UTF-8.src - copied unchanged from r254230, head/share/monetdef/es_ES.UTF-8.src projects/virtio/share/monetdef/fi_FI.UTF-8.src - copied unchanged from r254230, head/share/monetdef/fi_FI.UTF-8.src projects/virtio/share/monetdef/fr_BE.UTF-8.src - copied unchanged from r254230, head/share/monetdef/fr_BE.UTF-8.src projects/virtio/share/monetdef/fr_FR.UTF-8.src - copied unchanged from r254230, head/share/monetdef/fr_FR.UTF-8.src projects/virtio/share/monetdef/it_IT.UTF-8.src - copied unchanged from r254230, head/share/monetdef/it_IT.UTF-8.src projects/virtio/share/monetdef/nl_BE.UTF-8.src - copied unchanged from r254230, head/share/monetdef/nl_BE.UTF-8.src projects/virtio/share/monetdef/nl_NL.UTF-8.src - copied unchanged from r254230, head/share/monetdef/nl_NL.UTF-8.src projects/virtio/sys/arm/allwinner/a20/ - copied from r254230, head/sys/arm/allwinner/a20/ projects/virtio/sys/arm/broadcom/bcm2835/std.bcm2835 - copied unchanged from r254230, head/sys/arm/broadcom/bcm2835/std.bcm2835 projects/virtio/sys/arm/broadcom/bcm2835/std.rpi - copied unchanged from r254230, head/sys/arm/broadcom/bcm2835/std.rpi projects/virtio/sys/arm/conf/CUBIEBOARD2 - copied unchanged from r254230, head/sys/arm/conf/CUBIEBOARD2 projects/virtio/sys/arm/freescale/imx/files.imx51 - copied unchanged from r254230, head/sys/arm/freescale/imx/files.imx51 projects/virtio/sys/arm/freescale/imx/std.imx51 - copied unchanged from r254230, head/sys/arm/freescale/imx/std.imx51 projects/virtio/sys/arm/ti/am335x/am335x_usbss.c - copied unchanged from r254230, head/sys/arm/ti/am335x/am335x_usbss.c projects/virtio/sys/boot/fdt/dts/cubieboard2.dts - copied unchanged from r254230, head/sys/boot/fdt/dts/cubieboard2.dts projects/virtio/sys/boot/i386/gptboot/gptboot.8 - copied unchanged from r254230, head/sys/boot/i386/gptboot/gptboot.8 projects/virtio/sys/cddl/compat/opensolaris/sys/debug_compat.h - copied unchanged from r254230, head/sys/cddl/compat/opensolaris/sys/debug_compat.h projects/virtio/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu - copied unchanged from r254230, head/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu projects/virtio/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu - copied unchanged from r254230, head/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu projects/virtio/sys/contrib/dev/rsu/ - copied from r254230, head/sys/contrib/dev/rsu/ projects/virtio/sys/contrib/dev/urtwn/ - copied from r254230, head/sys/contrib/dev/urtwn/ projects/virtio/sys/contrib/v4l/ - copied from r254230, head/sys/contrib/v4l/ projects/virtio/sys/crypto/siphash/ - copied from r254230, head/sys/crypto/siphash/ projects/virtio/sys/dev/cxgbe/firmware/t4fw-1.8.11.0.bin.uu - copied unchanged from r254230, head/sys/dev/cxgbe/firmware/t4fw-1.8.11.0.bin.uu projects/virtio/sys/dev/cxgbe/firmware/t5fw-1.8.22.0.bin.uu - copied unchanged from r254230, head/sys/dev/cxgbe/firmware/t5fw-1.8.22.0.bin.uu projects/virtio/sys/dev/cxgbe/firmware/t5fw_cfg.txt - copied unchanged from r254230, head/sys/dev/cxgbe/firmware/t5fw_cfg.txt projects/virtio/sys/dev/cxgbe/firmware/t5fw_cfg_fpga.txt - copied unchanged from r254230, head/sys/dev/cxgbe/firmware/t5fw_cfg_fpga.txt projects/virtio/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt - copied unchanged from r254230, head/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt projects/virtio/sys/dev/cxgbe/t4_tracer.c - copied unchanged from r254230, head/sys/dev/cxgbe/t4_tracer.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_vlans.c - copied unchanged from r254230, head/sys/dev/etherswitch/arswitch/arswitch_vlans.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_vlans.h - copied unchanged from r254230, head/sys/dev/etherswitch/arswitch/arswitch_vlans.h projects/virtio/sys/dev/hpt27xx/hpt27xx_os_bsd.c - copied unchanged from r254230, head/sys/dev/hpt27xx/hpt27xx_os_bsd.c projects/virtio/sys/dev/hpt27xx/hpt27xx_osm_bsd.c - copied unchanged from r254230, head/sys/dev/hpt27xx/hpt27xx_osm_bsd.c projects/virtio/sys/dev/hptnr/ - copied from r254230, head/sys/dev/hptnr/ projects/virtio/sys/dev/iwn/if_iwn_devid.h - copied unchanged from r254230, head/sys/dev/iwn/if_iwn_devid.h projects/virtio/sys/dev/mbox/ - copied from r254230, head/sys/dev/mbox/ projects/virtio/sys/dev/nvme/nvme_util.c - copied unchanged from r254230, head/sys/dev/nvme/nvme_util.c projects/virtio/sys/dev/random/random_adaptors.c - copied unchanged from r254230, head/sys/dev/random/random_adaptors.c projects/virtio/sys/dev/random/random_adaptors.h - copied unchanged from r254230, head/sys/dev/random/random_adaptors.h projects/virtio/sys/dev/usb/gadget/ - copied from r254230, head/sys/dev/usb/gadget/ projects/virtio/sys/dev/usb/wlan/if_rsu.c - copied unchanged from r254230, head/sys/dev/usb/wlan/if_rsu.c projects/virtio/sys/dev/usb/wlan/if_rsureg.h - copied unchanged from r254230, head/sys/dev/usb/wlan/if_rsureg.h projects/virtio/sys/dev/wi/if_wi_macio.c - copied unchanged from r254230, head/sys/dev/wi/if_wi_macio.c projects/virtio/sys/fs/ext2fs/ext2_hash.c - copied unchanged from r254230, head/sys/fs/ext2fs/ext2_hash.c projects/virtio/sys/fs/ext2fs/ext2_htree.c - copied unchanged from r254230, head/sys/fs/ext2fs/ext2_htree.c projects/virtio/sys/fs/ext2fs/htree.h - copied unchanged from r254230, head/sys/fs/ext2fs/htree.h projects/virtio/sys/libkern/flsll.c - copied unchanged from r254230, head/sys/libkern/flsll.c projects/virtio/sys/mips/atheros/ar934x_chip.c - copied unchanged from r254230, head/sys/mips/atheros/ar934x_chip.c projects/virtio/sys/mips/atheros/ar934x_chip.h - copied unchanged from r254230, head/sys/mips/atheros/ar934x_chip.h projects/virtio/sys/mips/atheros/ar934xreg.h - copied unchanged from r254230, head/sys/mips/atheros/ar934xreg.h projects/virtio/sys/mips/conf/AR934X_BASE - copied unchanged from r254230, head/sys/mips/conf/AR934X_BASE projects/virtio/sys/mips/conf/AR934X_BASE.hints - copied unchanged from r254230, head/sys/mips/conf/AR934X_BASE.hints projects/virtio/sys/mips/conf/DB120 - copied unchanged from r254230, head/sys/mips/conf/DB120 projects/virtio/sys/mips/conf/DB120.hints - copied unchanged from r254230, head/sys/mips/conf/DB120.hints projects/virtio/sys/mips/conf/ENH200 - copied unchanged from r254230, head/sys/mips/conf/ENH200 projects/virtio/sys/mips/conf/ENH200.hints - copied unchanged from r254230, head/sys/mips/conf/ENH200.hints projects/virtio/sys/modules/cc/cc_cdg/ - copied from r254230, head/sys/modules/cc/cc_cdg/ projects/virtio/sys/modules/cxgbe/t5_firmware/ - copied from r254230, head/sys/modules/cxgbe/t5_firmware/ projects/virtio/sys/modules/hptnr/ - copied from r254230, head/sys/modules/hptnr/ projects/virtio/sys/modules/iwnfw/iwn2030/ - copied from r254230, head/sys/modules/iwnfw/iwn2030/ projects/virtio/sys/modules/usb/g_audio/ - copied from r254230, head/sys/modules/usb/g_audio/ projects/virtio/sys/modules/usb/g_keyboard/ - copied from r254230, head/sys/modules/usb/g_keyboard/ projects/virtio/sys/modules/usb/g_modem/ - copied from r254230, head/sys/modules/usb/g_modem/ projects/virtio/sys/modules/usb/g_mouse/ - copied from r254230, head/sys/modules/usb/g_mouse/ projects/virtio/sys/modules/usb/rsu/ - copied from r254230, head/sys/modules/usb/rsu/ projects/virtio/sys/modules/usb/rsufw/ - copied from r254230, head/sys/modules/usb/rsufw/ projects/virtio/sys/modules/usb/runfw/ - copied from r254230, head/sys/modules/usb/runfw/ projects/virtio/sys/modules/usb/urtwnfw/ - copied from r254230, head/sys/modules/usb/urtwnfw/ projects/virtio/sys/netinet/cc/cc_cdg.c - copied unchanged from r254230, head/sys/netinet/cc/cc_cdg.c projects/virtio/tools/build/options/WITHOUT_ARM_EABI - copied unchanged from r254230, head/tools/build/options/WITHOUT_ARM_EABI projects/virtio/tools/build/options/WITHOUT_SVNLITE - copied unchanged from r254230, head/tools/build/options/WITHOUT_SVNLITE projects/virtio/tools/build/options/WITH_GNU_PATCH - copied unchanged from r254230, head/tools/build/options/WITH_GNU_PATCH projects/virtio/tools/build/options/WITH_PKGTOOLS - copied unchanged from r254230, head/tools/build/options/WITH_PKGTOOLS projects/virtio/tools/build/options/WITH_SVN - copied unchanged from r254230, head/tools/build/options/WITH_SVN projects/virtio/tools/regression/bin/sh/execution/int-cmd1.0 - copied unchanged from r254230, head/tools/regression/bin/sh/execution/int-cmd1.0 projects/virtio/tools/regression/lib/libc/stdio/test-mkostemp.c - copied unchanged from r254230, head/tools/regression/lib/libc/stdio/test-mkostemp.c projects/virtio/tools/tools/usbtest/ - copied from r254230, head/tools/tools/usbtest/ projects/virtio/usr.bin/vi/catalog/ - copied from r254230, head/usr.bin/vi/catalog/ projects/virtio/usr.sbin/bhyve/rtc.h - copied unchanged from r254230, head/usr.sbin/bhyve/rtc.h projects/virtio/usr.sbin/bhyve/virtio.c - copied unchanged from r254230, head/usr.sbin/bhyve/virtio.c projects/virtio/usr.sbin/bsdconfig/examples/browse_packages.sh - copied unchanged from r254230, head/usr.sbin/bsdconfig/examples/browse_packages.sh projects/virtio/usr.sbin/bsdconfig/networking/share/services.subr - copied unchanged from r254230, head/usr.sbin/bsdconfig/networking/share/services.subr projects/virtio/usr.sbin/wpa/wpa_priv/ - copied from r254230, head/usr.sbin/wpa/wpa_priv/ Replaced: projects/virtio/contrib/bind9/libtool.m4/ - copied from r254230, head/contrib/bind9/libtool.m4/ Deleted: projects/virtio/bin/sh/init.h projects/virtio/bin/sh/mkinit.c projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.complex.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_DYN.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/translators/man.TestTransStability.d projects/virtio/contrib/apr-util/aprutil.dsp projects/virtio/contrib/apr-util/crypto/apr_crypto_nss.dsp projects/virtio/contrib/apr-util/crypto/apr_crypto_openssl.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_freetds.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_mysql.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_odbc.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_oracle.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_pgsql.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_sqlite2.dsp projects/virtio/contrib/apr-util/dbd/apr_dbd_sqlite3.dsp projects/virtio/contrib/apr-util/dbm/apr_dbm_db.dsp projects/virtio/contrib/apr-util/dbm/apr_dbm_gdbm.dsp projects/virtio/contrib/apr-util/ldap/apr_ldap.dsp projects/virtio/contrib/apr-util/libaprutil.dsp projects/virtio/contrib/apr-util/test/testutildll.dsp projects/virtio/contrib/apr-util/test/testutillib.dsp projects/virtio/contrib/nvi/FAQ projects/virtio/contrib/nvi/LAYOUT projects/virtio/contrib/nvi/build/ projects/virtio/contrib/nvi/catalog/dutch projects/virtio/contrib/nvi/catalog/dutch.check projects/virtio/contrib/nvi/catalog/english projects/virtio/contrib/nvi/catalog/english.base projects/virtio/contrib/nvi/catalog/english.check projects/virtio/contrib/nvi/catalog/french projects/virtio/contrib/nvi/catalog/french.check projects/virtio/contrib/nvi/catalog/german projects/virtio/contrib/nvi/catalog/german.check projects/virtio/contrib/nvi/catalog/polish projects/virtio/contrib/nvi/catalog/polish.check projects/virtio/contrib/nvi/catalog/ru_RU.KOI8-R projects/virtio/contrib/nvi/catalog/ru_RU.KOI8-R.check projects/virtio/contrib/nvi/catalog/spanish projects/virtio/contrib/nvi/catalog/spanish.check projects/virtio/contrib/nvi/catalog/swedish projects/virtio/contrib/nvi/catalog/swedish.check projects/virtio/contrib/nvi/catalog/uk_UA.KOI8-U projects/virtio/contrib/nvi/cl/cl_bsd.c projects/virtio/contrib/nvi/clib/ projects/virtio/contrib/nvi/common/api.c projects/virtio/contrib/nvi/ex/ex_perl.c projects/virtio/contrib/nvi/ex/ex_tcl.c projects/virtio/contrib/nvi/include/ projects/virtio/contrib/nvi/ip/ projects/virtio/contrib/nvi/ip_cl/ projects/virtio/contrib/nvi/perl_api/ projects/virtio/contrib/nvi/perl_scripts/ projects/virtio/contrib/nvi/tcl_api/ projects/virtio/contrib/nvi/tcl_scripts/ projects/virtio/contrib/nvi/tk/ projects/virtio/contrib/openbsm/m4/lt~obsolete.m4 projects/virtio/contrib/serf/Makefile.in projects/virtio/contrib/serf/auth/auth_kerb.c projects/virtio/contrib/serf/auth/auth_kerb.h projects/virtio/contrib/serf/auth/auth_kerb_gss.c projects/virtio/contrib/serf/auth/auth_kerb_sspi.c projects/virtio/contrib/serf/build/apr_common.m4 projects/virtio/contrib/serf/build/config.guess projects/virtio/contrib/serf/build/config.sub projects/virtio/contrib/serf/build/find_apr.m4 projects/virtio/contrib/serf/build/find_apu.m4 projects/virtio/contrib/serf/build/get-version.sh projects/virtio/contrib/serf/build/install.sh projects/virtio/contrib/serf/build/serf.def projects/virtio/contrib/serf/buildconf projects/virtio/contrib/serf/config.layout projects/virtio/contrib/serf/configure projects/virtio/contrib/serf/configure.in projects/virtio/contrib/serf/serf.mak projects/virtio/contrib/serf/serf.pc.in projects/virtio/contrib/serf/serfmake projects/virtio/contrib/wpa/hostapd/.gitignore projects/virtio/contrib/wpa/hostapd/Makefile projects/virtio/contrib/wpa/src/Makefile projects/virtio/contrib/wpa/src/ap/Makefile projects/virtio/contrib/wpa/src/common/Makefile projects/virtio/contrib/wpa/src/crypto/.gitignore projects/virtio/contrib/wpa/src/crypto/Makefile projects/virtio/contrib/wpa/src/crypto/md5-non-fips.c projects/virtio/contrib/wpa/src/drivers/.gitignore projects/virtio/contrib/wpa/src/drivers/Makefile projects/virtio/contrib/wpa/src/drivers/driver_ndiswrapper.c projects/virtio/contrib/wpa/src/drivers/drivers.mak projects/virtio/contrib/wpa/src/eap_common/Makefile projects/virtio/contrib/wpa/src/eap_peer/Makefile projects/virtio/contrib/wpa/src/eap_server/Makefile projects/virtio/contrib/wpa/src/eapol_auth/Makefile projects/virtio/contrib/wpa/src/eapol_supp/Makefile projects/virtio/contrib/wpa/src/l2_packet/Makefile projects/virtio/contrib/wpa/src/lib.rules projects/virtio/contrib/wpa/src/radius/.gitignore projects/virtio/contrib/wpa/src/radius/Makefile projects/virtio/contrib/wpa/src/rsn_supp/Makefile projects/virtio/contrib/wpa/src/tls/.gitignore projects/virtio/contrib/wpa/src/tls/Makefile projects/virtio/contrib/wpa/src/utils/.gitignore projects/virtio/contrib/wpa/src/utils/Makefile projects/virtio/contrib/wpa/src/wps/Makefile projects/virtio/contrib/wpa/src/wps/wps_nfc.c projects/virtio/contrib/wpa/src/wps/wps_nfc_pn531.c projects/virtio/contrib/wpa/src/wps/wps_ufd.c projects/virtio/contrib/wpa/wpa_supplicant/.gitignore projects/virtio/contrib/wpa/wpa_supplicant/Makefile projects/virtio/contrib/wpa/wpa_supplicant/dbus/.gitignore projects/virtio/contrib/wpa/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service projects/virtio/contrib/wpa/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service projects/virtio/contrib/wpa/wpa_supplicant/doc/ projects/virtio/contrib/wpa/wpa_supplicant/mlme.c projects/virtio/contrib/wpa/wpa_supplicant/mlme.h projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant.nsi projects/virtio/share/man/man9/vm_page_io.9 projects/virtio/share/man/man9/vm_page_sleep_if_busy.9 projects/virtio/share/man/man9/vm_page_wakeup.9 projects/virtio/sys/arm/freescale/imx/imx.files projects/virtio/sys/arm/freescale/imx/std.imx projects/virtio/sys/compat/linux/linux_videodev.h projects/virtio/sys/compat/linux/linux_videodev2.h projects/virtio/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.3.fw.uu projects/virtio/sys/dev/cxgbe/firmware/t4fw-1.8.4.0.bin.uu projects/virtio/sys/dev/hpt27xx/os_bsd.c projects/virtio/sys/dev/hpt27xx/osm_bsd.c projects/virtio/sys/modules/runfw/ projects/virtio/tools/build/options/WITHOUT_PKGTOOLS projects/virtio/tools/build/options/WITH_ARM_EABI projects/virtio/tools/build/options/WITH_BSD_PATCH projects/virtio/usr.bin/systat/mbufs.c projects/virtio/usr.bin/vi/port.h projects/virtio/usr.sbin/wpa/hostapd/driver_freebsd.c projects/virtio/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Modified: projects/virtio/MAINTAINERS (contents, props changed) projects/virtio/Makefile projects/virtio/Makefile.inc1 projects/virtio/ObsoleteFiles.inc projects/virtio/UPDATING projects/virtio/bin/pkill/pkill.1 projects/virtio/bin/pkill/pkill.c projects/virtio/bin/sh/Makefile projects/virtio/bin/sh/TOUR projects/virtio/bin/sh/eval.c projects/virtio/bin/sh/eval.h projects/virtio/bin/sh/exec.c projects/virtio/bin/sh/input.c projects/virtio/bin/sh/input.h projects/virtio/bin/sh/jobs.c projects/virtio/bin/sh/main.c projects/virtio/bin/sh/output.c projects/virtio/bin/sh/parser.c projects/virtio/bin/sh/parser.h projects/virtio/bin/sh/redir.c projects/virtio/bin/sh/redir.h projects/virtio/bin/sh/shell.h projects/virtio/bin/sh/trap.c projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.functionentry.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.functionreturnvalue.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.ioctlargs.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.offset.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.offsetzero.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.return0.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/fbtprovider/tst.tailcall.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.strjoin.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.BadAlign.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress2.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress3.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress4.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PRINT_VOID.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/err.D_PROTO_LEN.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/printf/tst.ints.d.out projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/safety/tst.copyin.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/err.BufSizeVariations2.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/err.D_PROTO_LEN.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/trace/err.D_TRACE_VOID.bad.d projects/virtio/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/virtio/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/virtio/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_decl.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_parser.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c projects/virtio/cddl/contrib/opensolaris/lib/libdtrace/i386/dt_isadep.c projects/virtio/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/virtio/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/virtio/cddl/contrib/opensolaris/tools/ctf/cvt/ctf.c projects/virtio/cddl/contrib/opensolaris/tools/ctf/cvt/ctftools.h projects/virtio/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c projects/virtio/cddl/contrib/opensolaris/tools/ctf/cvt/st_parse.c projects/virtio/contrib/apr-util/CHANGES projects/virtio/contrib/apr-util/Makefile.win projects/virtio/contrib/apr-util/NWGNUmakefile projects/virtio/contrib/apr-util/apr-util.spec projects/virtio/contrib/apr-util/buckets/apr_brigade.c projects/virtio/contrib/apr-util/buckets/apr_buckets_alloc.c projects/virtio/contrib/apr-util/build-outputs.mk projects/virtio/contrib/apr-util/build.conf projects/virtio/contrib/apr-util/configure projects/virtio/contrib/apr-util/configure.in projects/virtio/contrib/apr-util/crypto/apr_crypto.c projects/virtio/contrib/apr-util/crypto/apr_crypto_nss.c projects/virtio/contrib/apr-util/crypto/apr_crypto_openssl.c projects/virtio/contrib/apr-util/crypto/apr_md5.c projects/virtio/contrib/apr-util/dbd/NWGNUdbdmysql projects/virtio/contrib/apr-util/dbd/apr_dbd_freetds.c projects/virtio/contrib/apr-util/dbd/apr_dbd_mysql.c projects/virtio/contrib/apr-util/dbd/apr_dbd_pgsql.c projects/virtio/contrib/apr-util/dbd/apr_dbd_sqlite2.c projects/virtio/contrib/apr-util/hooks/apr_hooks.c projects/virtio/contrib/apr-util/include/apr_base64.h projects/virtio/contrib/apr-util/include/apr_buckets.h projects/virtio/contrib/apr-util/include/apr_md5.h projects/virtio/contrib/apr-util/include/apr_queue.h projects/virtio/contrib/apr-util/include/apu.h.in projects/virtio/contrib/apr-util/include/apu_version.h projects/virtio/contrib/apr-util/include/private/apr_crypto_internal.h projects/virtio/contrib/apr-util/memcache/apr_memcache.c projects/virtio/contrib/apr-util/misc/apr_thread_pool.c projects/virtio/contrib/apr-util/test/Makefile.in projects/virtio/contrib/apr-util/test/Makefile.win projects/virtio/contrib/apr-util/test/NWGNUmakefile projects/virtio/contrib/apr-util/test/testbuckets.c projects/virtio/contrib/apr-util/test/testmd5.c projects/virtio/contrib/apr-util/test/testmemcache.c projects/virtio/contrib/apr-util/test/testpass.c projects/virtio/contrib/apr-util/test/testuri.c projects/virtio/contrib/apr-util/test/testutil.c projects/virtio/contrib/apr-util/test/testutil.h projects/virtio/contrib/apr-util/uri/apr_uri.c projects/virtio/contrib/apr/CHANGES projects/virtio/contrib/apr/Makefile.win projects/virtio/contrib/apr/apr.spec projects/virtio/contrib/apr/atomic/unix/ia32.c projects/virtio/contrib/apr/atomic/unix/ppc.c projects/virtio/contrib/apr/atomic/unix/s390.c projects/virtio/contrib/apr/configure projects/virtio/contrib/apr/docs/pool-design.html projects/virtio/contrib/apr/file_io/unix/seek.c projects/virtio/contrib/apr/include/apr.hw projects/virtio/contrib/apr/include/apr_allocator.h projects/virtio/contrib/apr/include/apr_general.h projects/virtio/contrib/apr/include/apr_network_io.h projects/virtio/contrib/apr/include/apr_pools.h projects/virtio/contrib/apr/include/apr_strings.h projects/virtio/contrib/apr/include/apr_thread_proc.h projects/virtio/contrib/apr/include/apr_version.h projects/virtio/contrib/apr/libapr.rc projects/virtio/contrib/apr/network_io/unix/multicast.c projects/virtio/contrib/apr/network_io/unix/sendrecv.c projects/virtio/contrib/apr/network_io/unix/sockaddr.c projects/virtio/contrib/apr/network_io/unix/sockopt.c projects/virtio/contrib/apr/random/unix/sha2.c projects/virtio/contrib/apr/random/unix/sha2.h projects/virtio/contrib/apr/random/unix/sha2_glue.c projects/virtio/contrib/apr/tables/apr_tables.c projects/virtio/contrib/apr/threadproc/unix/thread.c projects/virtio/contrib/bind9/CHANGES projects/virtio/contrib/bind9/COPYRIGHT projects/virtio/contrib/bind9/FAQ projects/virtio/contrib/bind9/FAQ.xml projects/virtio/contrib/bind9/Makefile.in projects/virtio/contrib/bind9/README projects/virtio/contrib/bind9/aclocal.m4 projects/virtio/contrib/bind9/bin/Makefile.in projects/virtio/contrib/bind9/bin/check/check-tool.c projects/virtio/contrib/bind9/bin/check/named-checkconf.c projects/virtio/contrib/bind9/bin/check/named-checkzone.8 projects/virtio/contrib/bind9/bin/check/named-checkzone.c projects/virtio/contrib/bind9/bin/check/named-checkzone.docbook projects/virtio/contrib/bind9/bin/check/named-checkzone.html projects/virtio/contrib/bind9/bin/confgen/keygen.c projects/virtio/contrib/bind9/bin/confgen/rndc-confgen.c projects/virtio/contrib/bind9/bin/dig/dig.1 projects/virtio/contrib/bind9/bin/dig/dig.c projects/virtio/contrib/bind9/bin/dig/dig.docbook projects/virtio/contrib/bind9/bin/dig/dig.html projects/virtio/contrib/bind9/bin/dig/dighost.c projects/virtio/contrib/bind9/bin/dig/host.c projects/virtio/contrib/bind9/bin/dig/include/dig/dig.h projects/virtio/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c projects/virtio/contrib/bind9/bin/dnssec/dnssec-keygen.c projects/virtio/contrib/bind9/bin/dnssec/dnssec-revoke.c projects/virtio/contrib/bind9/bin/dnssec/dnssec-settime.c projects/virtio/contrib/bind9/bin/dnssec/dnssec-signzone.c projects/virtio/contrib/bind9/bin/named/Makefile.in projects/virtio/contrib/bind9/bin/named/client.c projects/virtio/contrib/bind9/bin/named/config.c projects/virtio/contrib/bind9/bin/named/control.c projects/virtio/contrib/bind9/bin/named/controlconf.c projects/virtio/contrib/bind9/bin/named/include/named/client.h projects/virtio/contrib/bind9/bin/named/include/named/globals.h projects/virtio/contrib/bind9/bin/named/include/named/server.h projects/virtio/contrib/bind9/bin/named/interfacemgr.c projects/virtio/contrib/bind9/bin/named/log.c projects/virtio/contrib/bind9/bin/named/logconf.c projects/virtio/contrib/bind9/bin/named/lwresd.c projects/virtio/contrib/bind9/bin/named/main.c projects/virtio/contrib/bind9/bin/named/named.conf.5 projects/virtio/contrib/bind9/bin/named/named.conf.docbook projects/virtio/contrib/bind9/bin/named/named.conf.html projects/virtio/contrib/bind9/bin/named/query.c projects/virtio/contrib/bind9/bin/named/server.c projects/virtio/contrib/bind9/bin/named/statschannel.c projects/virtio/contrib/bind9/bin/named/tkeyconf.c projects/virtio/contrib/bind9/bin/named/tsigconf.c projects/virtio/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c projects/virtio/contrib/bind9/bin/named/update.c projects/virtio/contrib/bind9/bin/named/xfrout.c projects/virtio/contrib/bind9/bin/named/zoneconf.c projects/virtio/contrib/bind9/bin/nsupdate/nsupdate.c projects/virtio/contrib/bind9/bin/rndc/rndc.c projects/virtio/contrib/bind9/bin/tools/genrandom.c projects/virtio/contrib/bind9/bin/tools/isc-hmac-fixup.8 projects/virtio/contrib/bind9/bin/tools/isc-hmac-fixup.docbook projects/virtio/contrib/bind9/bin/tools/isc-hmac-fixup.html projects/virtio/contrib/bind9/config.h.in projects/virtio/contrib/bind9/config.threads.in projects/virtio/contrib/bind9/configure.in projects/virtio/contrib/bind9/doc/arm/Bv9ARM-book.xml projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch01.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch02.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch03.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch04.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch05.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch06.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch07.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch08.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch09.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.ch10.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.html projects/virtio/contrib/bind9/doc/arm/Bv9ARM.pdf projects/virtio/contrib/bind9/doc/arm/man.arpaname.html projects/virtio/contrib/bind9/doc/arm/man.ddns-confgen.html projects/virtio/contrib/bind9/doc/arm/man.dig.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-keygen.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-revoke.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-settime.html projects/virtio/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/virtio/contrib/bind9/doc/arm/man.genrandom.html projects/virtio/contrib/bind9/doc/arm/man.host.html projects/virtio/contrib/bind9/doc/arm/man.isc-hmac-fixup.html projects/virtio/contrib/bind9/doc/arm/man.named-checkconf.html projects/virtio/contrib/bind9/doc/arm/man.named-checkzone.html projects/virtio/contrib/bind9/doc/arm/man.named-journalprint.html projects/virtio/contrib/bind9/doc/arm/man.named.html projects/virtio/contrib/bind9/doc/arm/man.nsec3hash.html projects/virtio/contrib/bind9/doc/arm/man.nsupdate.html projects/virtio/contrib/bind9/doc/arm/man.rndc-confgen.html projects/virtio/contrib/bind9/doc/arm/man.rndc.conf.html projects/virtio/contrib/bind9/doc/arm/man.rndc.html projects/virtio/contrib/bind9/doc/arm/pkcs11.xml projects/virtio/contrib/bind9/doc/misc/options projects/virtio/contrib/bind9/isc-config.sh.in projects/virtio/contrib/bind9/lib/Makefile.in projects/virtio/contrib/bind9/lib/bind9/Makefile.in projects/virtio/contrib/bind9/lib/bind9/api projects/virtio/contrib/bind9/lib/bind9/check.c projects/virtio/contrib/bind9/lib/dns/Makefile.in projects/virtio/contrib/bind9/lib/dns/acache.c projects/virtio/contrib/bind9/lib/dns/adb.c projects/virtio/contrib/bind9/lib/dns/api projects/virtio/contrib/bind9/lib/dns/cache.c projects/virtio/contrib/bind9/lib/dns/client.c projects/virtio/contrib/bind9/lib/dns/db.c projects/virtio/contrib/bind9/lib/dns/dispatch.c projects/virtio/contrib/bind9/lib/dns/dlz.c projects/virtio/contrib/bind9/lib/dns/dnssec.c projects/virtio/contrib/bind9/lib/dns/dst_api.c projects/virtio/contrib/bind9/lib/dns/dst_internal.h projects/virtio/contrib/bind9/lib/dns/dst_openssl.h projects/virtio/contrib/bind9/lib/dns/ecdb.c projects/virtio/contrib/bind9/lib/dns/gen.c projects/virtio/contrib/bind9/lib/dns/gssapictx.c projects/virtio/contrib/bind9/lib/dns/include/dns/acache.h projects/virtio/contrib/bind9/lib/dns/include/dns/db.h projects/virtio/contrib/bind9/lib/dns/include/dns/message.h projects/virtio/contrib/bind9/lib/dns/include/dns/name.h projects/virtio/contrib/bind9/lib/dns/include/dns/ncache.h projects/virtio/contrib/bind9/lib/dns/include/dns/nsec.h projects/virtio/contrib/bind9/lib/dns/include/dns/nsec3.h projects/virtio/contrib/bind9/lib/dns/include/dns/rdata.h projects/virtio/contrib/bind9/lib/dns/include/dns/result.h projects/virtio/contrib/bind9/lib/dns/include/dns/rpz.h projects/virtio/contrib/bind9/lib/dns/include/dns/types.h projects/virtio/contrib/bind9/lib/dns/include/dns/validator.h projects/virtio/contrib/bind9/lib/dns/include/dns/view.h projects/virtio/contrib/bind9/lib/dns/include/dns/zone.h projects/virtio/contrib/bind9/lib/dns/include/dst/dst.h projects/virtio/contrib/bind9/lib/dns/master.c projects/virtio/contrib/bind9/lib/dns/message.c projects/virtio/contrib/bind9/lib/dns/name.c projects/virtio/contrib/bind9/lib/dns/ncache.c projects/virtio/contrib/bind9/lib/dns/nsec.c projects/virtio/contrib/bind9/lib/dns/nsec3.c projects/virtio/contrib/bind9/lib/dns/openssl_link.c projects/virtio/contrib/bind9/lib/dns/openssldsa_link.c projects/virtio/contrib/bind9/lib/dns/opensslecdsa_link.c projects/virtio/contrib/bind9/lib/dns/opensslgost_link.c projects/virtio/contrib/bind9/lib/dns/opensslrsa_link.c projects/virtio/contrib/bind9/lib/dns/peer.c projects/virtio/contrib/bind9/lib/dns/rbt.c projects/virtio/contrib/bind9/lib/dns/rbtdb.c projects/virtio/contrib/bind9/lib/dns/rdata.c projects/virtio/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/keydata_65533.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/mx_15.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c projects/virtio/contrib/bind9/lib/dns/rdata/generic/txt_16.c projects/virtio/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c projects/virtio/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c projects/virtio/contrib/bind9/lib/dns/request.c projects/virtio/contrib/bind9/lib/dns/resolver.c projects/virtio/contrib/bind9/lib/dns/result.c projects/virtio/contrib/bind9/lib/dns/rootns.c projects/virtio/contrib/bind9/lib/dns/rpz.c projects/virtio/contrib/bind9/lib/dns/sdb.c projects/virtio/contrib/bind9/lib/dns/sdlz.c projects/virtio/contrib/bind9/lib/dns/spnego.c projects/virtio/contrib/bind9/lib/dns/spnego_asn1.c projects/virtio/contrib/bind9/lib/dns/ssu.c projects/virtio/contrib/bind9/lib/dns/ssu_external.c projects/virtio/contrib/bind9/lib/dns/tkey.c projects/virtio/contrib/bind9/lib/dns/tsig.c projects/virtio/contrib/bind9/lib/dns/validator.c projects/virtio/contrib/bind9/lib/dns/view.c projects/virtio/contrib/bind9/lib/dns/xfrin.c projects/virtio/contrib/bind9/lib/dns/zone.c projects/virtio/contrib/bind9/lib/export/dns/Makefile.in projects/virtio/contrib/bind9/lib/export/irs/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/include/isc/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/nls/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/nothreads/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/pthreads/Makefile.in projects/virtio/contrib/bind9/lib/export/isc/unix/Makefile.in projects/virtio/contrib/bind9/lib/export/isccfg/Makefile.in projects/virtio/contrib/bind9/lib/export/samples/Makefile.in projects/virtio/contrib/bind9/lib/export/samples/nsprobe.c projects/virtio/contrib/bind9/lib/export/samples/sample-async.c projects/virtio/contrib/bind9/lib/export/samples/sample-gai.c projects/virtio/contrib/bind9/lib/export/samples/sample-request.c projects/virtio/contrib/bind9/lib/export/samples/sample-update.c projects/virtio/contrib/bind9/lib/export/samples/sample.c projects/virtio/contrib/bind9/lib/irs/api projects/virtio/contrib/bind9/lib/irs/dnsconf.c projects/virtio/contrib/bind9/lib/irs/getaddrinfo.c projects/virtio/contrib/bind9/lib/irs/getnameinfo.c projects/virtio/contrib/bind9/lib/irs/resconf.c projects/virtio/contrib/bind9/lib/isc/Makefile.in projects/virtio/contrib/bind9/lib/isc/api projects/virtio/contrib/bind9/lib/isc/buffer.c projects/virtio/contrib/bind9/lib/isc/include/isc/Makefile.in projects/virtio/contrib/bind9/lib/isc/include/isc/buffer.h projects/virtio/contrib/bind9/lib/isc/include/isc/file.h projects/virtio/contrib/bind9/lib/isc/include/isc/list.h projects/virtio/contrib/bind9/lib/isc/include/isc/mem.h projects/virtio/contrib/bind9/lib/isc/include/isc/namespace.h projects/virtio/contrib/bind9/lib/isc/include/isc/region.h projects/virtio/contrib/bind9/lib/isc/include/isc/sockaddr.h projects/virtio/contrib/bind9/lib/isc/include/isc/socket.h projects/virtio/contrib/bind9/lib/isc/include/isc/task.h projects/virtio/contrib/bind9/lib/isc/include/isc/timer.h projects/virtio/contrib/bind9/lib/isc/inet_aton.c projects/virtio/contrib/bind9/lib/isc/mem.c projects/virtio/contrib/bind9/lib/isc/nothreads/Makefile.in projects/virtio/contrib/bind9/lib/isc/parseint.c projects/virtio/contrib/bind9/lib/isc/pthreads/thread.c projects/virtio/contrib/bind9/lib/isc/ratelimiter.c projects/virtio/contrib/bind9/lib/isc/sockaddr.c projects/virtio/contrib/bind9/lib/isc/sparc64/include/isc/atomic.h projects/virtio/contrib/bind9/lib/isc/symtab.c projects/virtio/contrib/bind9/lib/isc/task.c projects/virtio/contrib/bind9/lib/isc/taskpool.c projects/virtio/contrib/bind9/lib/isc/timer.c projects/virtio/contrib/bind9/lib/isc/timer_api.c projects/virtio/contrib/bind9/lib/isc/unix/entropy.c projects/virtio/contrib/bind9/lib/isc/unix/file.c projects/virtio/contrib/bind9/lib/isc/unix/include/isc/time.h projects/virtio/contrib/bind9/lib/isc/unix/net.c projects/virtio/contrib/bind9/lib/isc/unix/socket.c projects/virtio/contrib/bind9/lib/isc/unix/time.c projects/virtio/contrib/bind9/lib/isccc/api projects/virtio/contrib/bind9/lib/isccc/cc.c projects/virtio/contrib/bind9/lib/isccfg/Makefile.in projects/virtio/contrib/bind9/lib/isccfg/aclconf.c projects/virtio/contrib/bind9/lib/isccfg/api projects/virtio/contrib/bind9/lib/isccfg/include/isccfg/cfg.h projects/virtio/contrib/bind9/lib/isccfg/namedconf.c projects/virtio/contrib/bind9/lib/isccfg/parser.c projects/virtio/contrib/bind9/lib/lwres/api projects/virtio/contrib/bind9/lib/lwres/context.c projects/virtio/contrib/bind9/lib/lwres/getaddrinfo.c projects/virtio/contrib/bind9/lib/lwres/getipnode.c projects/virtio/contrib/bind9/lib/lwres/getnameinfo.c projects/virtio/contrib/bind9/lib/lwres/getrrset.c projects/virtio/contrib/bind9/lib/lwres/lwinetaton.c projects/virtio/contrib/bind9/lib/lwres/print.c projects/virtio/contrib/bind9/ltmain.sh projects/virtio/contrib/bind9/make/rules.in projects/virtio/contrib/bind9/version projects/virtio/contrib/binutils/binutils/readelf.c projects/virtio/contrib/binutils/include/elf/common.h projects/virtio/contrib/binutils/ld/ldmain.c projects/virtio/contrib/bmake/ChangeLog projects/virtio/contrib/bmake/Makefile projects/virtio/contrib/bmake/bmake.1 projects/virtio/contrib/bmake/bmake.cat1 projects/virtio/contrib/bmake/compat.c projects/virtio/contrib/bmake/configure projects/virtio/contrib/bmake/configure.in projects/virtio/contrib/bmake/job.c projects/virtio/contrib/bmake/job.h projects/virtio/contrib/bmake/main.c projects/virtio/contrib/bmake/make.1 projects/virtio/contrib/bmake/make.h projects/virtio/contrib/bmake/meta.c projects/virtio/contrib/bmake/mk/ChangeLog projects/virtio/contrib/bmake/mk/init.mk projects/virtio/contrib/bmake/mk/install-mk projects/virtio/contrib/bmake/mk/lib.mk projects/virtio/contrib/bmake/mk/meta2deps.py projects/virtio/contrib/bmake/mk/own.mk projects/virtio/contrib/bmake/mk/prog.mk projects/virtio/contrib/bmake/parse.c projects/virtio/contrib/bmake/unit-tests/Makefile.in projects/virtio/contrib/bmake/var.c projects/virtio/contrib/libc++/include/__bit_reference projects/virtio/contrib/libc++/include/__config projects/virtio/contrib/libc++/include/__functional_base projects/virtio/contrib/libc++/include/__hash_table projects/virtio/contrib/libc++/include/__locale projects/virtio/contrib/libc++/include/__split_buffer projects/virtio/contrib/libc++/include/__std_stream projects/virtio/contrib/libc++/include/__tree projects/virtio/contrib/libc++/include/algorithm projects/virtio/contrib/libc++/include/atomic projects/virtio/contrib/libc++/include/deque projects/virtio/contrib/libc++/include/forward_list projects/virtio/contrib/libc++/include/functional projects/virtio/contrib/libc++/include/future projects/virtio/contrib/libc++/include/istream projects/virtio/contrib/libc++/include/iterator projects/virtio/contrib/libc++/include/list projects/virtio/contrib/libc++/include/locale projects/virtio/contrib/libc++/include/map projects/virtio/contrib/libc++/include/memory projects/virtio/contrib/libc++/include/random projects/virtio/contrib/libc++/include/regex projects/virtio/contrib/libc++/include/string projects/virtio/contrib/libc++/include/type_traits projects/virtio/contrib/libc++/include/unordered_map projects/virtio/contrib/libc++/include/utility projects/virtio/contrib/libc++/include/vector projects/virtio/contrib/libc++/src/debug.cpp projects/virtio/contrib/libc++/src/hash.cpp projects/virtio/contrib/libc++/src/iostream.cpp projects/virtio/contrib/libc++/src/locale.cpp projects/virtio/contrib/libc++/src/stdexcept.cpp projects/virtio/contrib/libc++/src/string.cpp projects/virtio/contrib/libc++/src/thread.cpp projects/virtio/contrib/libcxxrt/atomic.h projects/virtio/contrib/libcxxrt/auxhelper.cc projects/virtio/contrib/libcxxrt/cxxabi.h projects/virtio/contrib/libcxxrt/dwarf_eh.h projects/virtio/contrib/libcxxrt/exception.cc projects/virtio/contrib/libcxxrt/guard.cc projects/virtio/contrib/libcxxrt/memory.cc projects/virtio/contrib/libcxxrt/unwind-itanium.h projects/virtio/contrib/libstdc++/include/c_std/std_cmath.h projects/virtio/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h projects/virtio/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h projects/virtio/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/virtio/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp projects/virtio/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/virtio/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp projects/virtio/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h projects/virtio/contrib/llvm/tools/clang/lib/Headers/cpuid.h projects/virtio/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/virtio/contrib/nvi/LICENSE projects/virtio/contrib/nvi/README projects/virtio/contrib/nvi/catalog/Makefile projects/virtio/contrib/nvi/catalog/README projects/virtio/contrib/nvi/catalog/dump.c projects/virtio/contrib/nvi/catalog/dutch.base (contents, props changed) projects/virtio/contrib/nvi/catalog/french.base (contents, props changed) projects/virtio/contrib/nvi/catalog/german.base (contents, props changed) projects/virtio/contrib/nvi/catalog/german.owner projects/virtio/contrib/nvi/catalog/polish.base (contents, props changed) projects/virtio/contrib/nvi/catalog/ru_RU.KOI8-R.base (contents, props changed) projects/virtio/contrib/nvi/catalog/ru_RU.KOI8-R.owner projects/virtio/contrib/nvi/catalog/spanish.base (contents, props changed) projects/virtio/contrib/nvi/catalog/swedish.base (contents, props changed) projects/virtio/contrib/nvi/catalog/uk_UA.KOI8-U.base (contents, props changed) projects/virtio/contrib/nvi/cl/README.signal projects/virtio/contrib/nvi/cl/cl.h projects/virtio/contrib/nvi/cl/cl_funcs.c projects/virtio/contrib/nvi/cl/cl_main.c projects/virtio/contrib/nvi/cl/cl_read.c projects/virtio/contrib/nvi/cl/cl_screen.c projects/virtio/contrib/nvi/cl/cl_term.c projects/virtio/contrib/nvi/common/args.h projects/virtio/contrib/nvi/common/common.h projects/virtio/contrib/nvi/common/cut.c projects/virtio/contrib/nvi/common/cut.h projects/virtio/contrib/nvi/common/delete.c projects/virtio/contrib/nvi/common/exf.c projects/virtio/contrib/nvi/common/exf.h projects/virtio/contrib/nvi/common/gs.h projects/virtio/contrib/nvi/common/key.c projects/virtio/contrib/nvi/common/key.h projects/virtio/contrib/nvi/common/line.c projects/virtio/contrib/nvi/common/log.c projects/virtio/contrib/nvi/common/main.c projects/virtio/contrib/nvi/common/mark.c projects/virtio/contrib/nvi/common/mark.h projects/virtio/contrib/nvi/common/mem.h projects/virtio/contrib/nvi/common/msg.c projects/virtio/contrib/nvi/common/msg.h projects/virtio/contrib/nvi/common/options.c projects/virtio/contrib/nvi/common/options.h projects/virtio/contrib/nvi/common/options_f.c projects/virtio/contrib/nvi/common/put.c projects/virtio/contrib/nvi/common/recover.c projects/virtio/contrib/nvi/common/screen.c projects/virtio/contrib/nvi/common/screen.h projects/virtio/contrib/nvi/common/search.c projects/virtio/contrib/nvi/common/seq.c projects/virtio/contrib/nvi/common/seq.h projects/virtio/contrib/nvi/common/util.c projects/virtio/contrib/nvi/common/util.h projects/virtio/contrib/nvi/docs/USD.doc/vi.man/vi.1 projects/virtio/contrib/nvi/ex/ex.c projects/virtio/contrib/nvi/ex/ex.h projects/virtio/contrib/nvi/ex/ex_abbrev.c projects/virtio/contrib/nvi/ex/ex_append.c projects/virtio/contrib/nvi/ex/ex_args.c projects/virtio/contrib/nvi/ex/ex_argv.c projects/virtio/contrib/nvi/ex/ex_at.c projects/virtio/contrib/nvi/ex/ex_bang.c projects/virtio/contrib/nvi/ex/ex_cd.c projects/virtio/contrib/nvi/ex/ex_cmd.c projects/virtio/contrib/nvi/ex/ex_cscope.c projects/virtio/contrib/nvi/ex/ex_delete.c projects/virtio/contrib/nvi/ex/ex_display.c projects/virtio/contrib/nvi/ex/ex_edit.c projects/virtio/contrib/nvi/ex/ex_equal.c projects/virtio/contrib/nvi/ex/ex_file.c projects/virtio/contrib/nvi/ex/ex_filter.c projects/virtio/contrib/nvi/ex/ex_global.c projects/virtio/contrib/nvi/ex/ex_init.c projects/virtio/contrib/nvi/ex/ex_join.c projects/virtio/contrib/nvi/ex/ex_map.c projects/virtio/contrib/nvi/ex/ex_mark.c projects/virtio/contrib/nvi/ex/ex_mkexrc.c projects/virtio/contrib/nvi/ex/ex_move.c projects/virtio/contrib/nvi/ex/ex_open.c projects/virtio/contrib/nvi/ex/ex_preserve.c projects/virtio/contrib/nvi/ex/ex_print.c projects/virtio/contrib/nvi/ex/ex_put.c projects/virtio/contrib/nvi/ex/ex_quit.c projects/virtio/contrib/nvi/ex/ex_read.c projects/virtio/contrib/nvi/ex/ex_screen.c projects/virtio/contrib/nvi/ex/ex_script.c projects/virtio/contrib/nvi/ex/ex_set.c projects/virtio/contrib/nvi/ex/ex_shell.c projects/virtio/contrib/nvi/ex/ex_shift.c projects/virtio/contrib/nvi/ex/ex_source.c projects/virtio/contrib/nvi/ex/ex_stop.c projects/virtio/contrib/nvi/ex/ex_subst.c projects/virtio/contrib/nvi/ex/ex_tag.c projects/virtio/contrib/nvi/ex/ex_txt.c projects/virtio/contrib/nvi/ex/ex_undo.c projects/virtio/contrib/nvi/ex/ex_usage.c projects/virtio/contrib/nvi/ex/ex_util.c projects/virtio/contrib/nvi/ex/ex_version.c projects/virtio/contrib/nvi/ex/ex_visual.c projects/virtio/contrib/nvi/ex/ex_write.c projects/virtio/contrib/nvi/ex/ex_yank.c projects/virtio/contrib/nvi/ex/ex_z.c projects/virtio/contrib/nvi/ex/script.h projects/virtio/contrib/nvi/ex/tag.h projects/virtio/contrib/nvi/ex/version.h projects/virtio/contrib/nvi/vi/getc.c projects/virtio/contrib/nvi/vi/v_at.c projects/virtio/contrib/nvi/vi/v_ch.c projects/virtio/contrib/nvi/vi/v_cmd.c projects/virtio/contrib/nvi/vi/v_delete.c projects/virtio/contrib/nvi/vi/v_ex.c projects/virtio/contrib/nvi/vi/v_increment.c projects/virtio/contrib/nvi/vi/v_init.c projects/virtio/contrib/nvi/vi/v_itxt.c projects/virtio/contrib/nvi/vi/v_left.c projects/virtio/contrib/nvi/vi/v_mark.c projects/virtio/contrib/nvi/vi/v_match.c projects/virtio/contrib/nvi/vi/v_paragraph.c projects/virtio/contrib/nvi/vi/v_put.c projects/virtio/contrib/nvi/vi/v_redraw.c projects/virtio/contrib/nvi/vi/v_replace.c projects/virtio/contrib/nvi/vi/v_right.c projects/virtio/contrib/nvi/vi/v_screen.c projects/virtio/contrib/nvi/vi/v_scroll.c projects/virtio/contrib/nvi/vi/v_search.c projects/virtio/contrib/nvi/vi/v_section.c projects/virtio/contrib/nvi/vi/v_sentence.c projects/virtio/contrib/nvi/vi/v_status.c projects/virtio/contrib/nvi/vi/v_txt.c projects/virtio/contrib/nvi/vi/v_ulcase.c projects/virtio/contrib/nvi/vi/v_undo.c projects/virtio/contrib/nvi/vi/v_util.c projects/virtio/contrib/nvi/vi/v_word.c projects/virtio/contrib/nvi/vi/v_xchar.c projects/virtio/contrib/nvi/vi/v_yank.c projects/virtio/contrib/nvi/vi/v_z.c projects/virtio/contrib/nvi/vi/v_zexit.c projects/virtio/contrib/nvi/vi/vi.c projects/virtio/contrib/nvi/vi/vi.h projects/virtio/contrib/nvi/vi/vs_line.c projects/virtio/contrib/nvi/vi/vs_msg.c projects/virtio/contrib/nvi/vi/vs_refresh.c projects/virtio/contrib/nvi/vi/vs_relative.c projects/virtio/contrib/nvi/vi/vs_smap.c projects/virtio/contrib/nvi/vi/vs_split.c projects/virtio/contrib/ofed/libsdp/src/linux/sdp_inet.h projects/virtio/contrib/ofed/management/infiniband-diags/src/sminfo.c projects/virtio/contrib/ofed/management/opensm/opensm/osm_console.c projects/virtio/contrib/ofed/management/opensm/opensm/osm_subnet.c projects/virtio/contrib/serf/CHANGES projects/virtio/contrib/serf/README projects/virtio/contrib/serf/auth/auth.c projects/virtio/contrib/serf/auth/auth.h projects/virtio/contrib/serf/auth/auth_basic.c projects/virtio/contrib/serf/auth/auth_digest.c projects/virtio/contrib/serf/buckets/aggregate_buckets.c projects/virtio/contrib/serf/buckets/buckets.c projects/virtio/contrib/serf/buckets/dechunk_buckets.c projects/virtio/contrib/serf/buckets/headers_buckets.c projects/virtio/contrib/serf/buckets/limit_buckets.c projects/virtio/contrib/serf/buckets/request_buckets.c projects/virtio/contrib/serf/buckets/response_buckets.c projects/virtio/contrib/serf/buckets/simple_buckets.c projects/virtio/contrib/serf/buckets/ssl_buckets.c projects/virtio/contrib/serf/build/gen_def.py projects/virtio/contrib/serf/context.c projects/virtio/contrib/serf/incoming.c projects/virtio/contrib/serf/outgoing.c projects/virtio/contrib/serf/serf.h projects/virtio/contrib/serf/serf_bucket_types.h projects/virtio/contrib/serf/serf_bucket_util.h projects/virtio/contrib/serf/serf_private.h projects/virtio/contrib/serf/ssltunnel.c projects/virtio/contrib/subversion/CHANGES projects/virtio/contrib/subversion/Makefile.in projects/virtio/contrib/subversion/build-outputs.mk projects/virtio/contrib/subversion/configure projects/virtio/contrib/subversion/configure.ac projects/virtio/contrib/subversion/get-deps.sh projects/virtio/contrib/subversion/subversion/include/private/svn_client_private.h projects/virtio/contrib/subversion/subversion/include/private/svn_io_private.h projects/virtio/contrib/subversion/subversion/include/private/svn_ra_private.h projects/virtio/contrib/subversion/subversion/include/svn_version.h projects/virtio/contrib/subversion/subversion/libsvn_client/client.h projects/virtio/contrib/subversion/subversion/libsvn_client/commit.c projects/virtio/contrib/subversion/subversion/libsvn_client/copy.c projects/virtio/contrib/subversion/subversion/libsvn_client/diff.c projects/virtio/contrib/subversion/subversion/libsvn_client/diff_local.c projects/virtio/contrib/subversion/subversion/libsvn_client/log.c projects/virtio/contrib/subversion/subversion/libsvn_client/merge.c projects/virtio/contrib/subversion/subversion/libsvn_client/mergeinfo.c projects/virtio/contrib/subversion/subversion/libsvn_client/ra.c projects/virtio/contrib/subversion/subversion/libsvn_client/switch.c projects/virtio/contrib/subversion/subversion/libsvn_delta/compat.c projects/virtio/contrib/subversion/subversion/libsvn_fs_base/bdb/env.c projects/virtio/contrib/subversion/subversion/libsvn_fs_base/tree.c projects/virtio/contrib/subversion/subversion/libsvn_fs_fs/fs_fs.c projects/virtio/contrib/subversion/subversion/libsvn_fs_fs/rep-cache-db.h projects/virtio/contrib/subversion/subversion/libsvn_fs_fs/tree.c projects/virtio/contrib/subversion/subversion/libsvn_ra/ra_loader.c projects/virtio/contrib/subversion/subversion/libsvn_ra/util.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/blame.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/commit.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/getdate.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/getlocations.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/getlocationsegments.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/getlocks.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/inherited_props.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/log.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/mergeinfo.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/options.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/property.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/ra_serf.h projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/replay.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/serf.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/update.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/util.c projects/virtio/contrib/subversion/subversion/libsvn_ra_serf/xml.c projects/virtio/contrib/subversion/subversion/libsvn_ra_svn/client.c projects/virtio/contrib/subversion/subversion/libsvn_ra_svn/protocol projects/virtio/contrib/subversion/subversion/libsvn_repos/fs-wrap.c projects/virtio/contrib/subversion/subversion/libsvn_subr/config_file.c projects/virtio/contrib/subversion/subversion/libsvn_subr/gpg_agent.c projects/virtio/contrib/subversion/subversion/libsvn_subr/internal_statements.h projects/virtio/contrib/subversion/subversion/libsvn_subr/io.c projects/virtio/contrib/subversion/subversion/libsvn_subr/named_atomic.c projects/virtio/contrib/subversion/subversion/libsvn_subr/sqlite.c projects/virtio/contrib/subversion/subversion/libsvn_subr/stream.c projects/virtio/contrib/subversion/subversion/libsvn_subr/subst.c projects/virtio/contrib/subversion/subversion/libsvn_subr/utf.c projects/virtio/contrib/subversion/subversion/libsvn_wc/adm_ops.c projects/virtio/contrib/subversion/subversion/libsvn_wc/crop.c projects/virtio/contrib/subversion/subversion/libsvn_wc/externals.c projects/virtio/contrib/subversion/subversion/libsvn_wc/update_editor.c projects/virtio/contrib/subversion/subversion/libsvn_wc/upgrade.c projects/virtio/contrib/subversion/subversion/libsvn_wc/wc-checks.h projects/virtio/contrib/subversion/subversion/libsvn_wc/wc-metadata.h projects/virtio/contrib/subversion/subversion/libsvn_wc/wc-queries.h projects/virtio/contrib/subversion/subversion/libsvn_wc/wc-queries.sql projects/virtio/contrib/subversion/subversion/libsvn_wc/wc_db.c projects/virtio/contrib/subversion/subversion/libsvn_wc/wc_db.h projects/virtio/contrib/subversion/subversion/libsvn_wc/wc_db_update_move.c projects/virtio/contrib/subversion/subversion/libsvn_wc/wc_db_wcroot.c projects/virtio/contrib/subversion/subversion/libsvn_wc/workqueue.c projects/virtio/contrib/subversion/subversion/svn/cl.h projects/virtio/contrib/subversion/subversion/svn/conflict-callbacks.c projects/virtio/contrib/subversion/subversion/svn/file-merge.c projects/virtio/contrib/subversion/subversion/svn/merge-cmd.c projects/virtio/contrib/subversion/subversion/svn/mergeinfo-cmd.c projects/virtio/contrib/subversion/subversion/svn/svn.c projects/virtio/contrib/subversion/subversion/svn/util.c projects/virtio/contrib/subversion/subversion/svnadmin/svnadmin.c projects/virtio/contrib/subversion/subversion/svnlook/svnlook.c projects/virtio/contrib/subversion/subversion/svnserve/serve.c projects/virtio/contrib/subversion/win-tests.py projects/virtio/contrib/tcpdump/tcpdump.c projects/virtio/contrib/tzdata/africa projects/virtio/contrib/tzdata/asia projects/virtio/contrib/tzdata/australasia projects/virtio/contrib/tzdata/europe projects/virtio/contrib/tzdata/southamerica projects/virtio/contrib/tzdata/zone.tab projects/virtio/contrib/wpa/COPYING projects/virtio/contrib/wpa/README projects/virtio/contrib/wpa/hostapd/ChangeLog projects/virtio/contrib/wpa/hostapd/README projects/virtio/contrib/wpa/hostapd/README-WPS projects/virtio/contrib/wpa/hostapd/config_file.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/config_file.h (contents, props changed) projects/virtio/contrib/wpa/hostapd/ctrl_iface.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/ctrl_iface.h (contents, props changed) projects/virtio/contrib/wpa/hostapd/defconfig projects/virtio/contrib/wpa/hostapd/dump_state.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/dump_state.h (contents, props changed) projects/virtio/contrib/wpa/hostapd/eap_register.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/eap_register.h (contents, props changed) projects/virtio/contrib/wpa/hostapd/hlr_auc_gw.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/hostapd.conf (contents, props changed) projects/virtio/contrib/wpa/hostapd/hostapd.eap_user projects/virtio/contrib/wpa/hostapd/hostapd_cli.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/main.c (contents, props changed) projects/virtio/contrib/wpa/hostapd/nt_password_hash.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/accounting.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/accounting.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_config.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_config.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_drv_ops.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_drv_ops.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_list.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_list.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_mlme.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ap_mlme.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/authsrv.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/authsrv.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/beacon.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/beacon.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ctrl_iface_ap.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ctrl_iface_ap.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/drv_callbacks.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/hostapd.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/hostapd.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/hw_features.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/hw_features.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/iapp.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/iapp.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_11.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_11.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_11_auth.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_11_auth.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_11_ht.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_1x.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/ieee802_1x.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/peerkey_auth.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/pmksa_cache_auth.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/pmksa_cache_auth.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/preauth_auth.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/preauth_auth.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/sta_info.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/sta_info.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/tkip_countermeasures.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/tkip_countermeasures.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/utils.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/vlan_init.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wmm.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_ft.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_glue.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_glue.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_i.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_ie.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wpa_auth_ie.h (contents, props changed) projects/virtio/contrib/wpa/src/ap/wps_hostapd.c (contents, props changed) projects/virtio/contrib/wpa/src/ap/wps_hostapd.h (contents, props changed) projects/virtio/contrib/wpa/src/common/defs.h projects/virtio/contrib/wpa/src/common/eapol_common.h projects/virtio/contrib/wpa/src/common/ieee802_11_common.c projects/virtio/contrib/wpa/src/common/ieee802_11_common.h projects/virtio/contrib/wpa/src/common/ieee802_11_defs.h projects/virtio/contrib/wpa/src/common/privsep_commands.h projects/virtio/contrib/wpa/src/common/version.h projects/virtio/contrib/wpa/src/common/wpa_common.c projects/virtio/contrib/wpa/src/common/wpa_common.h projects/virtio/contrib/wpa/src/common/wpa_ctrl.c projects/virtio/contrib/wpa/src/common/wpa_ctrl.h projects/virtio/contrib/wpa/src/crypto/aes-cbc.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-ctr.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-eax.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-encblock.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-internal-dec.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-internal-enc.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-omac1.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-unwrap.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes-wrap.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes.h projects/virtio/contrib/wpa/src/crypto/aes_i.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/aes_wrap.h projects/virtio/contrib/wpa/src/crypto/crypto.h projects/virtio/contrib/wpa/src/crypto/crypto_cryptoapi.c projects/virtio/contrib/wpa/src/crypto/crypto_gnutls.c projects/virtio/contrib/wpa/src/crypto/crypto_internal-cipher.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/crypto_internal-modexp.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/crypto_internal-rsa.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/crypto_internal.c projects/virtio/contrib/wpa/src/crypto/crypto_libtomcrypt.c projects/virtio/contrib/wpa/src/crypto/crypto_none.c projects/virtio/contrib/wpa/src/crypto/crypto_nss.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/crypto_openssl.c projects/virtio/contrib/wpa/src/crypto/des-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/des_i.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/dh_group5.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/dh_group5.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/dh_groups.c projects/virtio/contrib/wpa/src/crypto/dh_groups.h projects/virtio/contrib/wpa/src/crypto/fips_prf_cryptoapi.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/fips_prf_gnutls.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/fips_prf_internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/fips_prf_nss.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/fips_prf_openssl.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/md4-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/md5-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/md5.c projects/virtio/contrib/wpa/src/crypto/md5.h projects/virtio/contrib/wpa/src/crypto/md5_i.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/milenage.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/milenage.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/ms_funcs.c projects/virtio/contrib/wpa/src/crypto/ms_funcs.h projects/virtio/contrib/wpa/src/crypto/rc4.c projects/virtio/contrib/wpa/src/crypto/sha1-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha1-pbkdf2.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha1-tlsprf.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha1-tprf.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha1.c projects/virtio/contrib/wpa/src/crypto/sha1.h projects/virtio/contrib/wpa/src/crypto/sha1_i.h (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha256-internal.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/sha256.c projects/virtio/contrib/wpa/src/crypto/sha256.h projects/virtio/contrib/wpa/src/crypto/tls.h projects/virtio/contrib/wpa/src/crypto/tls_gnutls.c projects/virtio/contrib/wpa/src/crypto/tls_internal.c projects/virtio/contrib/wpa/src/crypto/tls_none.c projects/virtio/contrib/wpa/src/crypto/tls_nss.c (contents, props changed) projects/virtio/contrib/wpa/src/crypto/tls_openssl.c projects/virtio/contrib/wpa/src/crypto/tls_schannel.c projects/virtio/contrib/wpa/src/drivers/driver.h projects/virtio/contrib/wpa/src/drivers/driver_ndis.c projects/virtio/contrib/wpa/src/drivers/driver_ndis.h projects/virtio/contrib/wpa/src/drivers/driver_ndis_.c projects/virtio/contrib/wpa/src/drivers/driver_wired.c projects/virtio/contrib/wpa/src/drivers/drivers.c projects/virtio/contrib/wpa/src/drivers/ndis_events.c projects/virtio/contrib/wpa/src/eap_common/chap.c projects/virtio/contrib/wpa/src/eap_common/chap.h projects/virtio/contrib/wpa/src/eap_common/eap_common.c projects/virtio/contrib/wpa/src/eap_common/eap_common.h projects/virtio/contrib/wpa/src/eap_common/eap_defs.h projects/virtio/contrib/wpa/src/eap_common/eap_fast_common.c projects/virtio/contrib/wpa/src/eap_common/eap_fast_common.h projects/virtio/contrib/wpa/src/eap_common/eap_gpsk_common.c projects/virtio/contrib/wpa/src/eap_common/eap_gpsk_common.h projects/virtio/contrib/wpa/src/eap_common/eap_ikev2_common.c projects/virtio/contrib/wpa/src/eap_common/eap_ikev2_common.h projects/virtio/contrib/wpa/src/eap_common/eap_pax_common.c projects/virtio/contrib/wpa/src/eap_common/eap_pax_common.h projects/virtio/contrib/wpa/src/eap_common/eap_peap_common.c projects/virtio/contrib/wpa/src/eap_common/eap_peap_common.h projects/virtio/contrib/wpa/src/eap_common/eap_psk_common.c projects/virtio/contrib/wpa/src/eap_common/eap_psk_common.h projects/virtio/contrib/wpa/src/eap_common/eap_sake_common.c projects/virtio/contrib/wpa/src/eap_common/eap_sake_common.h projects/virtio/contrib/wpa/src/eap_common/eap_sim_common.c projects/virtio/contrib/wpa/src/eap_common/eap_sim_common.h projects/virtio/contrib/wpa/src/eap_common/eap_tlv_common.h projects/virtio/contrib/wpa/src/eap_common/eap_ttls.h projects/virtio/contrib/wpa/src/eap_common/eap_wsc_common.c projects/virtio/contrib/wpa/src/eap_common/eap_wsc_common.h projects/virtio/contrib/wpa/src/eap_common/ikev2_common.c projects/virtio/contrib/wpa/src/eap_common/ikev2_common.h projects/virtio/contrib/wpa/src/eap_peer/eap.c projects/virtio/contrib/wpa/src/eap_peer/eap.h projects/virtio/contrib/wpa/src/eap_peer/eap_aka.c projects/virtio/contrib/wpa/src/eap_peer/eap_config.h projects/virtio/contrib/wpa/src/eap_peer/eap_fast.c projects/virtio/contrib/wpa/src/eap_peer/eap_fast_pac.c projects/virtio/contrib/wpa/src/eap_peer/eap_fast_pac.h projects/virtio/contrib/wpa/src/eap_peer/eap_gpsk.c projects/virtio/contrib/wpa/src/eap_peer/eap_gtc.c projects/virtio/contrib/wpa/src/eap_peer/eap_i.h projects/virtio/contrib/wpa/src/eap_peer/eap_ikev2.c projects/virtio/contrib/wpa/src/eap_peer/eap_leap.c projects/virtio/contrib/wpa/src/eap_peer/eap_md5.c projects/virtio/contrib/wpa/src/eap_peer/eap_methods.c projects/virtio/contrib/wpa/src/eap_peer/eap_methods.h projects/virtio/contrib/wpa/src/eap_peer/eap_mschapv2.c projects/virtio/contrib/wpa/src/eap_peer/eap_otp.c projects/virtio/contrib/wpa/src/eap_peer/eap_pax.c projects/virtio/contrib/wpa/src/eap_peer/eap_peap.c projects/virtio/contrib/wpa/src/eap_peer/eap_psk.c projects/virtio/contrib/wpa/src/eap_peer/eap_sake.c projects/virtio/contrib/wpa/src/eap_peer/eap_sim.c projects/virtio/contrib/wpa/src/eap_peer/eap_tls.c projects/virtio/contrib/wpa/src/eap_peer/eap_tls_common.c projects/virtio/contrib/wpa/src/eap_peer/eap_tls_common.h projects/virtio/contrib/wpa/src/eap_peer/eap_tnc.c projects/virtio/contrib/wpa/src/eap_peer/eap_ttls.c projects/virtio/contrib/wpa/src/eap_peer/eap_vendor_test.c projects/virtio/contrib/wpa/src/eap_peer/eap_wsc.c projects/virtio/contrib/wpa/src/eap_peer/ikev2.c projects/virtio/contrib/wpa/src/eap_peer/ikev2.h projects/virtio/contrib/wpa/src/eap_peer/mschapv2.c projects/virtio/contrib/wpa/src/eap_peer/mschapv2.h projects/virtio/contrib/wpa/src/eap_peer/tncc.c projects/virtio/contrib/wpa/src/eap_peer/tncc.h projects/virtio/contrib/wpa/src/eap_server/eap.h projects/virtio/contrib/wpa/src/eap_server/eap_i.h projects/virtio/contrib/wpa/src/eap_server/eap_methods.h projects/virtio/contrib/wpa/src/eap_server/eap_server.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_aka.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_fast.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_gpsk.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_gtc.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_identity.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_ikev2.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_md5.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_methods.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_mschapv2.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_pax.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_peap.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_psk.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_sake.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_sim.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_tls.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_tls_common.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_tnc.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_ttls.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_vendor_test.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_server_wsc.c (contents, props changed) projects/virtio/contrib/wpa/src/eap_server/eap_sim_db.c projects/virtio/contrib/wpa/src/eap_server/eap_sim_db.h projects/virtio/contrib/wpa/src/eap_server/eap_tls_common.h projects/virtio/contrib/wpa/src/eap_server/ikev2.c projects/virtio/contrib/wpa/src/eap_server/ikev2.h projects/virtio/contrib/wpa/src/eap_server/tncs.c projects/virtio/contrib/wpa/src/eap_server/tncs.h projects/virtio/contrib/wpa/src/eapol_auth/eapol_auth_dump.c (contents, props changed) projects/virtio/contrib/wpa/src/eapol_auth/eapol_auth_sm.c (contents, props changed) projects/virtio/contrib/wpa/src/eapol_auth/eapol_auth_sm.h (contents, props changed) projects/virtio/contrib/wpa/src/eapol_auth/eapol_auth_sm_i.h (contents, props changed) projects/virtio/contrib/wpa/src/eapol_supp/eapol_supp_sm.c projects/virtio/contrib/wpa/src/eapol_supp/eapol_supp_sm.h projects/virtio/contrib/wpa/src/l2_packet/l2_packet.h projects/virtio/contrib/wpa/src/l2_packet/l2_packet_freebsd.c projects/virtio/contrib/wpa/src/l2_packet/l2_packet_ndis.c projects/virtio/contrib/wpa/src/l2_packet/l2_packet_none.c projects/virtio/contrib/wpa/src/radius/radius.c projects/virtio/contrib/wpa/src/radius/radius.h projects/virtio/contrib/wpa/src/radius/radius_client.c projects/virtio/contrib/wpa/src/radius/radius_client.h projects/virtio/contrib/wpa/src/radius/radius_server.c projects/virtio/contrib/wpa/src/radius/radius_server.h projects/virtio/contrib/wpa/src/rsn_supp/peerkey.c projects/virtio/contrib/wpa/src/rsn_supp/peerkey.h projects/virtio/contrib/wpa/src/rsn_supp/pmksa_cache.c projects/virtio/contrib/wpa/src/rsn_supp/pmksa_cache.h projects/virtio/contrib/wpa/src/rsn_supp/preauth.c projects/virtio/contrib/wpa/src/rsn_supp/preauth.h projects/virtio/contrib/wpa/src/rsn_supp/wpa.c projects/virtio/contrib/wpa/src/rsn_supp/wpa.h projects/virtio/contrib/wpa/src/rsn_supp/wpa_ft.c projects/virtio/contrib/wpa/src/rsn_supp/wpa_i.h projects/virtio/contrib/wpa/src/rsn_supp/wpa_ie.c projects/virtio/contrib/wpa/src/rsn_supp/wpa_ie.h projects/virtio/contrib/wpa/src/tls/asn1.c projects/virtio/contrib/wpa/src/tls/asn1.h projects/virtio/contrib/wpa/src/tls/bignum.c projects/virtio/contrib/wpa/src/tls/bignum.h projects/virtio/contrib/wpa/src/tls/libtommath.c projects/virtio/contrib/wpa/src/tls/pkcs1.c (contents, props changed) projects/virtio/contrib/wpa/src/tls/pkcs1.h (contents, props changed) projects/virtio/contrib/wpa/src/tls/pkcs5.c (contents, props changed) projects/virtio/contrib/wpa/src/tls/pkcs5.h (contents, props changed) projects/virtio/contrib/wpa/src/tls/pkcs8.c (contents, props changed) projects/virtio/contrib/wpa/src/tls/pkcs8.h (contents, props changed) projects/virtio/contrib/wpa/src/tls/rsa.c projects/virtio/contrib/wpa/src/tls/rsa.h projects/virtio/contrib/wpa/src/tls/tlsv1_client.c projects/virtio/contrib/wpa/src/tls/tlsv1_client.h projects/virtio/contrib/wpa/src/tls/tlsv1_client_i.h projects/virtio/contrib/wpa/src/tls/tlsv1_client_read.c projects/virtio/contrib/wpa/src/tls/tlsv1_client_write.c projects/virtio/contrib/wpa/src/tls/tlsv1_common.c projects/virtio/contrib/wpa/src/tls/tlsv1_common.h projects/virtio/contrib/wpa/src/tls/tlsv1_cred.c projects/virtio/contrib/wpa/src/tls/tlsv1_cred.h projects/virtio/contrib/wpa/src/tls/tlsv1_record.c projects/virtio/contrib/wpa/src/tls/tlsv1_record.h projects/virtio/contrib/wpa/src/tls/tlsv1_server.c projects/virtio/contrib/wpa/src/tls/tlsv1_server.h projects/virtio/contrib/wpa/src/tls/tlsv1_server_i.h projects/virtio/contrib/wpa/src/tls/tlsv1_server_read.c projects/virtio/contrib/wpa/src/tls/tlsv1_server_write.c projects/virtio/contrib/wpa/src/tls/x509v3.c projects/virtio/contrib/wpa/src/tls/x509v3.h projects/virtio/contrib/wpa/src/utils/base64.c projects/virtio/contrib/wpa/src/utils/base64.h projects/virtio/contrib/wpa/src/utils/build_config.h projects/virtio/contrib/wpa/src/utils/common.c projects/virtio/contrib/wpa/src/utils/common.h projects/virtio/contrib/wpa/src/utils/eloop.c projects/virtio/contrib/wpa/src/utils/eloop.h projects/virtio/contrib/wpa/src/utils/eloop_none.c projects/virtio/contrib/wpa/src/utils/eloop_win.c projects/virtio/contrib/wpa/src/utils/includes.h projects/virtio/contrib/wpa/src/utils/ip_addr.c projects/virtio/contrib/wpa/src/utils/ip_addr.h projects/virtio/contrib/wpa/src/utils/list.h (contents, props changed) projects/virtio/contrib/wpa/src/utils/os.h projects/virtio/contrib/wpa/src/utils/os_internal.c projects/virtio/contrib/wpa/src/utils/os_none.c projects/virtio/contrib/wpa/src/utils/os_unix.c projects/virtio/contrib/wpa/src/utils/os_win32.c projects/virtio/contrib/wpa/src/utils/pcsc_funcs.c projects/virtio/contrib/wpa/src/utils/pcsc_funcs.h projects/virtio/contrib/wpa/src/utils/radiotap.h (contents, props changed) projects/virtio/contrib/wpa/src/utils/radiotap_iter.h (contents, props changed) projects/virtio/contrib/wpa/src/utils/state_machine.h projects/virtio/contrib/wpa/src/utils/trace.c (contents, props changed) projects/virtio/contrib/wpa/src/utils/trace.h (contents, props changed) projects/virtio/contrib/wpa/src/utils/uuid.c projects/virtio/contrib/wpa/src/utils/uuid.h projects/virtio/contrib/wpa/src/utils/wpa_debug.c projects/virtio/contrib/wpa/src/utils/wpa_debug.h projects/virtio/contrib/wpa/src/utils/wpabuf.c projects/virtio/contrib/wpa/src/utils/wpabuf.h projects/virtio/contrib/wpa/src/wps/http_client.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/http_client.h (contents, props changed) projects/virtio/contrib/wpa/src/wps/http_server.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/http_server.h (contents, props changed) projects/virtio/contrib/wpa/src/wps/httpread.c projects/virtio/contrib/wpa/src/wps/httpread.h projects/virtio/contrib/wpa/src/wps/ndef.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/upnp_xml.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/upnp_xml.h (contents, props changed) projects/virtio/contrib/wpa/src/wps/wps.c projects/virtio/contrib/wpa/src/wps/wps.h projects/virtio/contrib/wpa/src/wps/wps_attr_build.c projects/virtio/contrib/wpa/src/wps/wps_attr_parse.c projects/virtio/contrib/wpa/src/wps/wps_attr_process.c projects/virtio/contrib/wpa/src/wps/wps_common.c projects/virtio/contrib/wpa/src/wps/wps_defs.h projects/virtio/contrib/wpa/src/wps/wps_dev_attr.c projects/virtio/contrib/wpa/src/wps/wps_dev_attr.h projects/virtio/contrib/wpa/src/wps/wps_enrollee.c projects/virtio/contrib/wpa/src/wps/wps_er.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/wps_er.h (contents, props changed) projects/virtio/contrib/wpa/src/wps/wps_er_ssdp.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/wps_i.h projects/virtio/contrib/wpa/src/wps/wps_registrar.c projects/virtio/contrib/wpa/src/wps/wps_upnp.c projects/virtio/contrib/wpa/src/wps/wps_upnp.h projects/virtio/contrib/wpa/src/wps/wps_upnp_ap.c (contents, props changed) projects/virtio/contrib/wpa/src/wps/wps_upnp_event.c projects/virtio/contrib/wpa/src/wps/wps_upnp_i.h projects/virtio/contrib/wpa/src/wps/wps_upnp_ssdp.c projects/virtio/contrib/wpa/src/wps/wps_upnp_web.c projects/virtio/contrib/wpa/wpa_supplicant/ChangeLog projects/virtio/contrib/wpa/wpa_supplicant/README projects/virtio/contrib/wpa/wpa_supplicant/README-WPS projects/virtio/contrib/wpa/wpa_supplicant/ap.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/ap.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/bgscan.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/bgscan.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/bgscan_simple.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/blacklist.c projects/virtio/contrib/wpa/wpa_supplicant/blacklist.h projects/virtio/contrib/wpa/wpa_supplicant/bss.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/bss.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/config.c projects/virtio/contrib/wpa/wpa_supplicant/config.h projects/virtio/contrib/wpa/wpa_supplicant/config_file.c projects/virtio/contrib/wpa/wpa_supplicant/config_none.c projects/virtio/contrib/wpa/wpa_supplicant/config_ssid.h projects/virtio/contrib/wpa/wpa_supplicant/ctrl_iface.c projects/virtio/contrib/wpa/wpa_supplicant/ctrl_iface.h projects/virtio/contrib/wpa/wpa_supplicant/ctrl_iface_named_pipe.c projects/virtio/contrib/wpa/wpa_supplicant/ctrl_iface_udp.c projects/virtio/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c projects/virtio/contrib/wpa/wpa_supplicant/dbus/Makefile (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_common.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_common.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_common_i.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_dict_helpers.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_dict_helpers.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_handlers_wps.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_helpers.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_helpers.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_new_introspect.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_old.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_old.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_old_handlers.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_old_handlers.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus_old_handlers_wps.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/defconfig projects/virtio/contrib/wpa/wpa_supplicant/driver_i.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/eap_register.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/eapol_test.c projects/virtio/contrib/wpa/wpa_supplicant/events.c projects/virtio/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-signals.py (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/ibss_rsn.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/ibss_rsn.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/main.c projects/virtio/contrib/wpa/wpa_supplicant/main_none.c projects/virtio/contrib/wpa/wpa_supplicant/notify.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/notify.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/preauth_test.c projects/virtio/contrib/wpa/wpa_supplicant/scan.c projects/virtio/contrib/wpa/wpa_supplicant/scan.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/sme.c (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/sme.h (contents, props changed) projects/virtio/contrib/wpa/wpa_supplicant/tests/test_eap_sim_common.c projects/virtio/contrib/wpa/wpa_supplicant/tests/test_wpa.c projects/virtio/contrib/wpa/wpa_supplicant/wpa_cli.c projects/virtio/contrib/wpa/wpa_supplicant/wpa_passphrase.c projects/virtio/contrib/wpa/wpa_supplicant/wpa_priv.c projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant.c projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant.conf projects/virtio/contrib/wpa/wpa_supplicant/wpa_supplicant_i.h projects/virtio/contrib/wpa/wpa_supplicant/wpas_glue.c projects/virtio/contrib/wpa/wpa_supplicant/wpas_glue.h projects/virtio/contrib/wpa/wpa_supplicant/wps_supplicant.c projects/virtio/contrib/wpa/wpa_supplicant/wps_supplicant.h projects/virtio/crypto/openssl/ssl/s3_cbc.c projects/virtio/etc/Makefile projects/virtio/etc/devd/usb.conf projects/virtio/etc/mtree/BSD.usr.dist projects/virtio/etc/namedb/named.conf projects/virtio/etc/network.subr projects/virtio/etc/newsyslog.conf projects/virtio/etc/rc.d/netif projects/virtio/etc/rc.d/pfsync projects/virtio/etc/rc.d/zfs projects/virtio/etc/rc.resume projects/virtio/etc/syslog.conf projects/virtio/gnu/usr.bin/grep/grep.c projects/virtio/gnu/usr.bin/groff/tmac/mdoc.local projects/virtio/gnu/usr.bin/patch/Makefile projects/virtio/gnu/usr.bin/patch/pch.c projects/virtio/include/iconv.h projects/virtio/include/stdlib.h projects/virtio/lib/bind/config.h projects/virtio/lib/bind/dns/code.h projects/virtio/lib/bind/dns/dns/enumtype.h projects/virtio/lib/bind/dns/dns/rdatastruct.h projects/virtio/lib/bind/isc/Makefile projects/virtio/lib/libc++/Makefile projects/virtio/lib/libc/arm/gen/sigsetjmp.S projects/virtio/lib/libc/db/hash/hash.c projects/virtio/lib/libc/gen/fnmatch.c projects/virtio/lib/libc/gen/sysctl.3 projects/virtio/lib/libc/gen/wordexp.c projects/virtio/lib/libc/iconv/Symbol.map projects/virtio/lib/libc/iconv/citrus_csmapper.c projects/virtio/lib/libc/iconv/citrus_iconv.c projects/virtio/lib/libc/iconv/citrus_iconv.h projects/virtio/lib/libc/iconv/citrus_iconv_local.h projects/virtio/lib/libc/iconv/citrus_lock.h projects/virtio/lib/libc/iconv/citrus_mapper.c projects/virtio/lib/libc/iconv/citrus_none.c projects/virtio/lib/libc/iconv/citrus_stdenc.h projects/virtio/lib/libc/iconv/citrus_stdenc_local.h projects/virtio/lib/libc/iconv/citrus_stdenc_template.h projects/virtio/lib/libc/iconv/iconv.c projects/virtio/lib/libc/locale/cXXrtomb_iconv.h projects/virtio/lib/libc/locale/mbrtocXX_iconv.h projects/virtio/lib/libc/net/getaddrinfo.3 projects/virtio/lib/libc/net/getnameinfo.3 projects/virtio/lib/libc/net/sctp_sys_calls.c projects/virtio/lib/libc/sparc64/gen/makecontext.c projects/virtio/lib/libc/sparc64/gen/signalcontext.c projects/virtio/lib/libc/stdio/Makefile.inc projects/virtio/lib/libc/stdio/Symbol.map projects/virtio/lib/libc/stdio/fwrite.c projects/virtio/lib/libc/stdio/mktemp.3 projects/virtio/lib/libc/stdio/mktemp.c projects/virtio/lib/libc/stdlib/getenv.c projects/virtio/lib/libc/stdlib/rand.c projects/virtio/lib/libc/sys/kqueue.2 projects/virtio/lib/libc/sys/ptrace.2 projects/virtio/lib/libfetch/common.c projects/virtio/lib/libfetch/common.h projects/virtio/lib/libfetch/fetch.3 projects/virtio/lib/libfetch/http.c projects/virtio/lib/libgeom/geom_xml2tree.c projects/virtio/lib/libgeom/libgeom.h projects/virtio/lib/libiconv_modules/BIG5/citrus_big5.c projects/virtio/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c projects/virtio/lib/libiconv_modules/EUC/citrus_euc.c projects/virtio/lib/libiconv_modules/EUCTW/citrus_euctw.c projects/virtio/lib/libiconv_modules/GBK2K/citrus_gbk2k.c projects/virtio/lib/libiconv_modules/HZ/citrus_hz.c projects/virtio/lib/libiconv_modules/ISO2022/citrus_iso2022.c projects/virtio/lib/libiconv_modules/JOHAB/citrus_johab.c projects/virtio/lib/libiconv_modules/MSKanji/citrus_mskanji.c projects/virtio/lib/libiconv_modules/UES/citrus_ues.c projects/virtio/lib/libiconv_modules/UTF1632/citrus_utf1632.c projects/virtio/lib/libiconv_modules/UTF7/citrus_utf7.c projects/virtio/lib/libiconv_modules/UTF8/citrus_utf8.c projects/virtio/lib/libiconv_modules/VIQR/citrus_viqr.c projects/virtio/lib/libiconv_modules/ZW/citrus_zw.c projects/virtio/lib/libiconv_modules/iconv_none/citrus_iconv_none.c projects/virtio/lib/libiconv_modules/iconv_std/citrus_iconv_std.c projects/virtio/lib/libkvm/Makefile projects/virtio/lib/libkvm/kvm.h projects/virtio/lib/libproc/proc_sym.c projects/virtio/lib/libstand/nfs.c projects/virtio/lib/libthread_db/arch/sparc64/libpthread_md.c projects/virtio/lib/libusb/Makefile projects/virtio/lib/libusb/libusb20.c projects/virtio/lib/libusb/libusb20_ugen20.c projects/virtio/lib/libusb/libusb_global_linux.h projects/virtio/lib/msun/src/math.h projects/virtio/release/Makefile projects/virtio/release/ia64/mkisoimages.sh projects/virtio/release/release.conf.sample projects/virtio/release/release.sh projects/virtio/release/sparc64/mkisoimages.sh projects/virtio/sbin/devd/devd.8 projects/virtio/sbin/devd/devd.cc projects/virtio/sbin/devfs/devfs.8 projects/virtio/sbin/dhclient/bpf.c projects/virtio/sbin/dhclient/clparse.c projects/virtio/sbin/dhclient/dhclient.c projects/virtio/sbin/dhclient/dhcpd.h projects/virtio/sbin/dhclient/packet.c projects/virtio/sbin/dhclient/privsep.c projects/virtio/sbin/dhclient/privsep.h projects/virtio/sbin/etherswitchcfg/etherswitchcfg.c projects/virtio/sbin/fdisk_pc98/fdisk.c projects/virtio/sbin/fsck_ffs/fsck.h projects/virtio/sbin/fsck_ffs/fsck_ffs.8 projects/virtio/sbin/fsck_ffs/fsutil.c projects/virtio/sbin/fsck_ffs/main.c projects/virtio/sbin/geom/class/eli/geli.8 projects/virtio/sbin/geom/class/part/gpart.8 projects/virtio/sbin/hastctl/hastctl.c projects/virtio/sbin/hastd/control.c projects/virtio/sbin/ifconfig/af_nd6.c projects/virtio/sbin/ipfw/ipfw.8 projects/virtio/sbin/mdconfig/mdconfig.c projects/virtio/sbin/mount/Makefile (contents, props changed) projects/virtio/sbin/mount/mount.8 projects/virtio/sbin/mount/mount.c projects/virtio/sbin/mount_nfs/mount_nfs.8 projects/virtio/sbin/nvmecontrol/Makefile projects/virtio/sbin/nvmecontrol/devlist.c projects/virtio/sbin/nvmecontrol/firmware.c projects/virtio/sbin/nvmecontrol/identify.c projects/virtio/sbin/nvmecontrol/logpage.c projects/virtio/sbin/nvmecontrol/nvmecontrol.c projects/virtio/sbin/nvmecontrol/nvmecontrol.h projects/virtio/sbin/nvmecontrol/perftest.c projects/virtio/sbin/nvmecontrol/reset.c projects/virtio/sbin/reboot/boot_i386.8 projects/virtio/sbin/recoverdisk/recoverdisk.1 projects/virtio/sbin/route/Makefile projects/virtio/sbin/route/route.c projects/virtio/sbin/swapon/swapon.c projects/virtio/share/doc/legal/Makefile projects/virtio/share/examples/kld/syscall/test/call.c projects/virtio/share/man/man4/Makefile projects/virtio/share/man/man4/ath_hal.4 projects/virtio/share/man/man4/bridge.4 projects/virtio/share/man/man4/ciss.4 projects/virtio/share/man/man4/hptiop.4 projects/virtio/share/man/man4/mfi.4 projects/virtio/share/man/man4/nvd.4 projects/virtio/share/man/man4/nvme.4 projects/virtio/share/man/man4/oce.4 projects/virtio/share/man/man4/random.4 projects/virtio/share/man/man4/usb_quirk.4 projects/virtio/share/man/man5/fstab.5 projects/virtio/share/man/man5/rc.conf.5 projects/virtio/share/man/man5/src.conf.5 projects/virtio/share/man/man7/release.7 projects/virtio/share/man/man9/Makefile projects/virtio/share/man/man9/VOP_GETPAGES.9 projects/virtio/share/man/man9/bus_dma.9 projects/virtio/share/man/man9/microuptime.9 projects/virtio/share/man/man9/mutex.9 projects/virtio/share/man/man9/vm_page_alloc.9 projects/virtio/share/misc/committers-ports.dot projects/virtio/share/misc/committers-src.dot projects/virtio/share/mk/bsd.own.mk projects/virtio/share/monetdef/Makefile projects/virtio/sys/amd64/amd64/identcpu.c projects/virtio/sys/amd64/amd64/initcpu.c projects/virtio/sys/amd64/amd64/machdep.c projects/virtio/sys/amd64/amd64/minidump_machdep.c projects/virtio/sys/amd64/amd64/mp_machdep.c projects/virtio/sys/amd64/amd64/pmap.c projects/virtio/sys/amd64/amd64/sys_machdep.c projects/virtio/sys/amd64/amd64/vm_machdep.c projects/virtio/sys/amd64/conf/GENERIC projects/virtio/sys/amd64/conf/NOTES projects/virtio/sys/amd64/include/md_var.h projects/virtio/sys/amd64/include/pmap.h projects/virtio/sys/amd64/vmm/intel/ept.c projects/virtio/sys/amd64/vmm/intel/vmx.c projects/virtio/sys/amd64/vmm/vmm.c projects/virtio/sys/amd64/vmm/vmm_instruction_emul.c projects/virtio/sys/arm/allwinner/common.c projects/virtio/sys/arm/allwinner/files.a10 projects/virtio/sys/arm/allwinner/timer.c projects/virtio/sys/arm/arm/bus_space_generic.c projects/virtio/sys/arm/arm/busdma_machdep-v6.c projects/virtio/sys/arm/arm/busdma_machdep.c projects/virtio/sys/arm/arm/cpufunc.c projects/virtio/sys/arm/arm/db_trace.c projects/virtio/sys/arm/arm/elf_trampoline.c projects/virtio/sys/arm/arm/exception.S projects/virtio/sys/arm/arm/generic_timer.c projects/virtio/sys/arm/arm/gic.c projects/virtio/sys/arm/arm/identcpu.c projects/virtio/sys/arm/arm/mp_machdep.c projects/virtio/sys/arm/arm/mpcore_timer.c projects/virtio/sys/arm/arm/pl310.c projects/virtio/sys/arm/arm/pmap-v6.c projects/virtio/sys/arm/arm/pmap.c projects/virtio/sys/arm/arm/trap.c projects/virtio/sys/arm/arm/vfp.c projects/virtio/sys/arm/arm/vm_machdep.c projects/virtio/sys/arm/at91/at91.c projects/virtio/sys/arm/broadcom/bcm2835/bcm2835_fb.c projects/virtio/sys/arm/broadcom/bcm2835/bcm2835_mbox.c projects/virtio/sys/arm/broadcom/bcm2835/bcm2835_mbox.h projects/virtio/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/virtio/sys/arm/broadcom/bcm2835/files.bcm2835 projects/virtio/sys/arm/conf/BEAGLEBONE projects/virtio/sys/arm/conf/EFIKA_MX projects/virtio/sys/arm/conf/RPI-B projects/virtio/sys/arm/freescale/imx/console.c projects/virtio/sys/arm/include/armreg.h projects/virtio/sys/arm/include/asmacros.h projects/virtio/sys/arm/include/atomic.h projects/virtio/sys/arm/include/frame.h projects/virtio/sys/arm/include/kdb.h projects/virtio/sys/arm/include/smp.h projects/virtio/sys/arm/mv/armadaxp/armadaxp_mp.c projects/virtio/sys/arm/s3c2xx0/s3c2xx0_space.c projects/virtio/sys/arm/ti/am335x/am335x_pmic.c projects/virtio/sys/arm/ti/am335x/am335x_prcm.c projects/virtio/sys/arm/ti/am335x/am335x_pwm.c projects/virtio/sys/arm/ti/am335x/files.am335x projects/virtio/sys/arm/ti/omap4/omap4_prcm_clks.c projects/virtio/sys/arm/ti/ti_mmchs.c projects/virtio/sys/arm/ti/ti_mmchs.h projects/virtio/sys/arm/ti/ti_prcm.h projects/virtio/sys/arm/xscale/i80321/i80321_space.c projects/virtio/sys/arm/xscale/i8134x/i81342_space.c projects/virtio/sys/arm/xscale/ixp425/ixp425_pci_space.c projects/virtio/sys/boot/arm/uboot/Makefile projects/virtio/sys/boot/common/part.c projects/virtio/sys/boot/fdt/dts/am335x-evm.dts projects/virtio/sys/boot/fdt/dts/am335x.dtsi projects/virtio/sys/boot/fdt/dts/beaglebone-black.dts projects/virtio/sys/boot/fdt/dts/beaglebone.dts projects/virtio/sys/boot/fdt/dts/pandaboard.dts projects/virtio/sys/boot/ficl/loader.c projects/virtio/sys/boot/forth/beastie.4th projects/virtio/sys/boot/forth/color.4th projects/virtio/sys/boot/forth/color.4th.8 projects/virtio/sys/boot/forth/loader.conf projects/virtio/sys/boot/forth/loader.conf.5 projects/virtio/sys/boot/forth/loader.rc projects/virtio/sys/boot/forth/menu.4th projects/virtio/sys/boot/forth/menu.4th.8 projects/virtio/sys/boot/forth/menu.rc projects/virtio/sys/boot/forth/version.4th.8 projects/virtio/sys/boot/i386/gptboot/Makefile projects/virtio/sys/boot/pc98/boot2/boot2.c projects/virtio/sys/boot/pc98/libpc98/biosdisk.c projects/virtio/sys/cam/ata/ata_da.c projects/virtio/sys/cam/cam.h projects/virtio/sys/cam/cam_ccb.h projects/virtio/sys/cam/cam_periph.c projects/virtio/sys/cam/cam_queue.c projects/virtio/sys/cam/cam_queue.h projects/virtio/sys/cam/cam_xpt.c projects/virtio/sys/cam/cam_xpt_internal.h projects/virtio/sys/cam/cam_xpt_periph.h projects/virtio/sys/cam/ctl/ctl.c projects/virtio/sys/cam/ctl/ctl_backend_ramdisk.c projects/virtio/sys/cam/ctl/ctl_frontend_internal.c projects/virtio/sys/cam/scsi/scsi_all.c projects/virtio/sys/cam/scsi/scsi_all.h projects/virtio/sys/cam/scsi/scsi_ch.c projects/virtio/sys/cam/scsi/scsi_da.c projects/virtio/sys/cam/scsi/scsi_xpt.c projects/virtio/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c projects/virtio/sys/cddl/compat/opensolaris/sys/kmem.h projects/virtio/sys/cddl/compat/opensolaris/sys/mutex.h projects/virtio/sys/cddl/compat/opensolaris/sys/rwlock.h projects/virtio/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_impl.h projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/virtio/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/virtio/sys/cddl/dev/dtrace/amd64/dis_tables.c projects/virtio/sys/cddl/dev/dtrace/amd64/dis_tables.h projects/virtio/sys/cddl/dev/dtrace/dtrace_ioctl.c projects/virtio/sys/cddl/dev/dtrace/dtrace_load.c projects/virtio/sys/cddl/dev/dtrace/dtrace_unload.c projects/virtio/sys/cddl/dev/dtrace/i386/dis_tables.c projects/virtio/sys/cddl/dev/dtrace/i386/dis_tables.h projects/virtio/sys/compat/freebsd32/freebsd32.h projects/virtio/sys/compat/freebsd32/freebsd32_misc.c projects/virtio/sys/compat/freebsd32/freebsd32_proto.h projects/virtio/sys/compat/freebsd32/freebsd32_signal.h projects/virtio/sys/compat/freebsd32/freebsd32_syscall.h projects/virtio/sys/compat/freebsd32/freebsd32_syscalls.c projects/virtio/sys/compat/freebsd32/freebsd32_sysent.c projects/virtio/sys/compat/freebsd32/freebsd32_systrace_args.c projects/virtio/sys/compat/freebsd32/syscalls.master projects/virtio/sys/compat/linux/linux_ioctl.c projects/virtio/sys/compat/linux/linux_ioctl.h projects/virtio/sys/compat/linux/linux_misc.c projects/virtio/sys/compat/ndis/subr_ntoskrnl.c projects/virtio/sys/conf/Makefile.amd64 projects/virtio/sys/conf/Makefile.arm projects/virtio/sys/conf/NOTES projects/virtio/sys/conf/WITHOUT_SOURCELESS_HOST projects/virtio/sys/conf/WITHOUT_SOURCELESS_UCODE projects/virtio/sys/conf/files projects/virtio/sys/conf/files.amd64 projects/virtio/sys/conf/files.i386 projects/virtio/sys/conf/kern.pre.mk projects/virtio/sys/conf/kmod.mk projects/virtio/sys/conf/newvers.sh projects/virtio/sys/conf/options projects/virtio/sys/contrib/dev/acpica/changes.txt (contents, props changed) projects/virtio/sys/contrib/dev/acpica/common/dmextern.c projects/virtio/sys/contrib/dev/acpica/common/getopt.c projects/virtio/sys/contrib/dev/acpica/compiler/asloffset.c projects/virtio/sys/contrib/dev/acpica/compiler/asloperands.c projects/virtio/sys/contrib/dev/acpica/compiler/asloptions.c projects/virtio/sys/contrib/dev/acpica/compiler/dttemplate.c projects/virtio/sys/contrib/dev/acpica/components/executer/exoparg1.c projects/virtio/sys/contrib/dev/acpica/components/hardware/hwtimer.c projects/virtio/sys/contrib/dev/acpica/components/namespace/nspredef.c projects/virtio/sys/contrib/dev/acpica/components/namespace/nswalk.c projects/virtio/sys/contrib/dev/acpica/components/namespace/nsxfeval.c projects/virtio/sys/contrib/dev/acpica/components/tables/tbfadt.c projects/virtio/sys/contrib/dev/acpica/components/tables/tbxfroot.c projects/virtio/sys/contrib/dev/acpica/components/utilities/utglobal.c projects/virtio/sys/contrib/dev/acpica/components/utilities/utosi.c projects/virtio/sys/contrib/dev/acpica/components/utilities/utxface.c projects/virtio/sys/contrib/dev/acpica/include/acglobal.h projects/virtio/sys/contrib/dev/acpica/include/aclocal.h projects/virtio/sys/contrib/dev/acpica/include/acnamesp.h projects/virtio/sys/contrib/dev/acpica/include/acpixf.h projects/virtio/sys/contrib/dev/acpica/include/actables.h projects/virtio/sys/contrib/dev/acpica/include/actypes.h projects/virtio/sys/contrib/dev/acpica/include/acutils.h projects/virtio/sys/crypto/sha2/sha2.c projects/virtio/sys/crypto/sha2/sha2.h projects/virtio/sys/dev/aac/aac_pci.c projects/virtio/sys/dev/aac/aacvar.h projects/virtio/sys/dev/acpica/acpi_pcib.c projects/virtio/sys/dev/acpica/acpi_pcib_acpi.c projects/virtio/sys/dev/acpica/acpi_resource.c projects/virtio/sys/dev/ae/if_ae.c projects/virtio/sys/dev/ae/if_aereg.h projects/virtio/sys/dev/agp/agp.c projects/virtio/sys/dev/ahci/ahci.c projects/virtio/sys/dev/ahci/ahci.h projects/virtio/sys/dev/aic7xxx/aic7xxx_pci.c projects/virtio/sys/dev/arcmsr/arcmsr.c projects/virtio/sys/dev/arcmsr/arcmsr.h projects/virtio/sys/dev/ata/ata-pci.h projects/virtio/sys/dev/ata/chipsets/ata-intel.c projects/virtio/sys/dev/ata/chipsets/ata-promise.c projects/virtio/sys/dev/bge/if_bge.c projects/virtio/sys/dev/bge/if_bgereg.h projects/virtio/sys/dev/bktr/bktr_core.c projects/virtio/sys/dev/ciss/ciss.c projects/virtio/sys/dev/cpuctl/cpuctl.c projects/virtio/sys/dev/cxgbe/adapter.h projects/virtio/sys/dev/cxgbe/common/common.h projects/virtio/sys/dev/cxgbe/common/t4_hw.c projects/virtio/sys/dev/cxgbe/common/t4_hw.h projects/virtio/sys/dev/cxgbe/common/t4_msg.h projects/virtio/sys/dev/cxgbe/common/t4_regs_values.h projects/virtio/sys/dev/cxgbe/firmware/t4fw_cfg.txt projects/virtio/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt projects/virtio/sys/dev/cxgbe/firmware/t4fw_interface.h projects/virtio/sys/dev/cxgbe/offload.h projects/virtio/sys/dev/cxgbe/t4_ioctl.h projects/virtio/sys/dev/cxgbe/t4_main.c projects/virtio/sys/dev/cxgbe/t4_sge.c projects/virtio/sys/dev/cxgbe/tom/t4_connect.c projects/virtio/sys/dev/cxgbe/tom/t4_listen.c projects/virtio/sys/dev/cxgbe/tom/t4_tom.c projects/virtio/sys/dev/cxgbe/tom/t4_tom.h projects/virtio/sys/dev/drm/drm_scatter.c projects/virtio/sys/dev/drm2/drm_scatter.c projects/virtio/sys/dev/drm2/i915/i915_gem.c projects/virtio/sys/dev/drm2/i915/intel_ringbuffer.c projects/virtio/sys/dev/drm2/ttm/ttm_bo_util.c projects/virtio/sys/dev/drm2/ttm/ttm_bo_vm.c projects/virtio/sys/dev/drm2/ttm/ttm_page_alloc.c projects/virtio/sys/dev/drm2/ttm/ttm_tt.c projects/virtio/sys/dev/e1000/if_em.c projects/virtio/sys/dev/e1000/if_igb.c projects/virtio/sys/dev/e1000/if_lem.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_7240.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_8216.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_8226.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_8316.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_phy.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_reg.c projects/virtio/sys/dev/etherswitch/arswitch/arswitch_reg.h projects/virtio/sys/dev/etherswitch/arswitch/arswitchreg.h projects/virtio/sys/dev/etherswitch/arswitch/arswitchvar.h projects/virtio/sys/dev/etherswitch/etherswitch.h projects/virtio/sys/dev/etherswitch/ip17x/ip175c.c projects/virtio/sys/dev/etherswitch/ip17x/ip175d.c projects/virtio/sys/dev/etherswitch/ip17x/ip17x_vlans.c projects/virtio/sys/dev/etherswitch/rtl8366/rtl8366rb.c projects/virtio/sys/dev/filemon/filemon.c projects/virtio/sys/dev/filemon/filemon_wrapper.c projects/virtio/sys/dev/hme/if_hme.c projects/virtio/sys/dev/hpt27xx/hpt27xx_config.c projects/virtio/sys/dev/hptiop/hptiop.c projects/virtio/sys/dev/ichsmb/ichsmb_pci.c projects/virtio/sys/dev/ichwd/ichwd.c projects/virtio/sys/dev/ichwd/ichwd.h projects/virtio/sys/dev/ipmi/ipmi_isa.c projects/virtio/sys/dev/ipmi/ipmivars.h projects/virtio/sys/dev/isp/isp.c projects/virtio/sys/dev/isp/ispreg.h projects/virtio/sys/dev/iwn/if_iwn.c projects/virtio/sys/dev/iwn/if_iwnreg.h projects/virtio/sys/dev/iwn/if_iwnvar.h projects/virtio/sys/dev/ixgb/if_ixgb.c projects/virtio/sys/dev/ixgb/ixgb_ids.h projects/virtio/sys/dev/ixgbe/ixgbe.c projects/virtio/sys/dev/ixgbe/ixv.c projects/virtio/sys/dev/md/md.c projects/virtio/sys/dev/mem/memdev.c projects/virtio/sys/dev/mfi/mfi.c projects/virtio/sys/dev/mii/brgphy.c projects/virtio/sys/dev/mii/miidevs projects/virtio/sys/dev/mmc/mmcsd.c projects/virtio/sys/dev/mps/mps.c projects/virtio/sys/dev/mps/mps_config.c projects/virtio/sys/dev/mps/mps_mapping.c projects/virtio/sys/dev/mps/mps_pci.c projects/virtio/sys/dev/mps/mps_sas.c projects/virtio/sys/dev/mps/mps_sas.h projects/virtio/sys/dev/mps/mps_sas_lsi.c projects/virtio/sys/dev/mps/mps_table.c projects/virtio/sys/dev/mps/mps_user.c projects/virtio/sys/dev/mps/mpsvar.h projects/virtio/sys/dev/nvd/nvd.c projects/virtio/sys/dev/nvme/nvme.c projects/virtio/sys/dev/nvme/nvme.h projects/virtio/sys/dev/nvme/nvme_ctrlr.c projects/virtio/sys/dev/nvme/nvme_ctrlr_cmd.c projects/virtio/sys/dev/nvme/nvme_ns.c projects/virtio/sys/dev/nvme/nvme_ns_cmd.c projects/virtio/sys/dev/nvme/nvme_private.h projects/virtio/sys/dev/nvme/nvme_qpair.c projects/virtio/sys/dev/nvme/nvme_sysctl.c projects/virtio/sys/dev/nvme/nvme_test.c projects/virtio/sys/dev/oce/oce_hw.c projects/virtio/sys/dev/oce/oce_hw.h projects/virtio/sys/dev/oce/oce_if.c projects/virtio/sys/dev/oce/oce_if.h projects/virtio/sys/dev/oce/oce_mbox.c projects/virtio/sys/dev/oce/oce_queue.c projects/virtio/sys/dev/oce/oce_sysctl.c projects/virtio/sys/dev/oce/oce_util.c projects/virtio/sys/dev/pci/fixup_pci.c projects/virtio/sys/dev/pci/pci.c projects/virtio/sys/dev/pci/pci_pci.c projects/virtio/sys/dev/pci/pci_private.h projects/virtio/sys/dev/pci/pcib_private.h projects/virtio/sys/dev/pci/pcivar.h projects/virtio/sys/dev/qlxgbe/ql_os.c projects/virtio/sys/dev/ral/rt2560.c projects/virtio/sys/dev/ral/rt2661.c projects/virtio/sys/dev/ral/rt2860.c projects/virtio/sys/dev/random/ivy.c projects/virtio/sys/dev/random/nehemiah.c projects/virtio/sys/dev/random/probe.c projects/virtio/sys/dev/random/randomdev.c projects/virtio/sys/dev/random/randomdev.h projects/virtio/sys/dev/random/randomdev_soft.c projects/virtio/sys/dev/random/randomdev_soft.h projects/virtio/sys/dev/random/yarrow.c projects/virtio/sys/dev/scc/scc_bfe.h projects/virtio/sys/dev/scc/scc_bfe_ebus.c projects/virtio/sys/dev/scc/scc_bfe_macio.c projects/virtio/sys/dev/scc/scc_bfe_quicc.c projects/virtio/sys/dev/scc/scc_bfe_sbus.c projects/virtio/sys/dev/scc/scc_core.c projects/virtio/sys/dev/scc/scc_dev_quicc.c projects/virtio/sys/dev/scc/scc_dev_sab82532.c projects/virtio/sys/dev/scc/scc_dev_z8530.c projects/virtio/sys/dev/sound/pci/ds1.c projects/virtio/sys/dev/sound/pci/hda/hdaa_patches.c projects/virtio/sys/dev/sound/pci/hda/hdac.h projects/virtio/sys/dev/syscons/syscons.c projects/virtio/sys/dev/uart/uart_bus_pci.c projects/virtio/sys/dev/uart/uart_core.c projects/virtio/sys/dev/usb/controller/musb_otg.c projects/virtio/sys/dev/usb/controller/musb_otg.h projects/virtio/sys/dev/usb/controller/musb_otg_atmelarm.c projects/virtio/sys/dev/usb/controller/xhci.c projects/virtio/sys/dev/usb/controller/xhci.h projects/virtio/sys/dev/usb/controller/xhci_pci.c projects/virtio/sys/dev/usb/input/ukbd.c projects/virtio/sys/dev/usb/net/if_ipheth.c projects/virtio/sys/dev/usb/quirk/usb_quirk.c projects/virtio/sys/dev/usb/usb_pf.c projects/virtio/sys/dev/usb/usbdevs projects/virtio/sys/dev/usb/wlan/if_rumvar.h projects/virtio/sys/dev/usb/wlan/if_runvar.h projects/virtio/sys/dev/usb/wlan/if_uathvar.h projects/virtio/sys/dev/usb/wlan/if_upgtvar.h projects/virtio/sys/dev/usb/wlan/if_uralvar.h projects/virtio/sys/dev/usb/wlan/if_urtwn.c projects/virtio/sys/dev/usb/wlan/if_urtwnreg.h projects/virtio/sys/dev/usb/wlan/if_urtwvar.h projects/virtio/sys/dev/usb/wlan/if_zydreg.h projects/virtio/sys/dev/virtio/balloon/virtio_balloon.c projects/virtio/sys/dev/watchdog/watchdog.c projects/virtio/sys/dev/wi/if_wi.c projects/virtio/sys/dev/xen/blkback/blkback.c projects/virtio/sys/dev/xen/netback/netback.c projects/virtio/sys/dev/xen/xenpci/xenpci.c projects/virtio/sys/fs/cd9660/iso.h projects/virtio/sys/fs/devfs/devfs_rule.c projects/virtio/sys/fs/ext2fs/ext2_dir.h projects/virtio/sys/fs/ext2fs/ext2_extern.h projects/virtio/sys/fs/ext2fs/ext2_inode_cnv.c projects/virtio/sys/fs/ext2fs/ext2_lookup.c projects/virtio/sys/fs/ext2fs/ext2_vfsops.c projects/virtio/sys/fs/ext2fs/ext2_vnops.c projects/virtio/sys/fs/ext2fs/ext2fs.h projects/virtio/sys/fs/fuse/fuse_vnops.c projects/virtio/sys/fs/nfs/nfs.h projects/virtio/sys/fs/nfs/nfs_commonkrpc.c projects/virtio/sys/fs/nfs/nfs_commonsubs.c projects/virtio/sys/fs/nfsclient/nfs_clport.c projects/virtio/sys/fs/nfsclient/nfs_clvfsops.c projects/virtio/sys/fs/nullfs/null_vnops.c projects/virtio/sys/fs/smbfs/smbfs_smb.c projects/virtio/sys/fs/tmpfs/tmpfs.h projects/virtio/sys/fs/tmpfs/tmpfs_subr.c projects/virtio/sys/fs/tmpfs/tmpfs_vfsops.c projects/virtio/sys/fs/tmpfs/tmpfs_vnops.c projects/virtio/sys/gdb/gdb_cons.c projects/virtio/sys/geom/geom_disk.c projects/virtio/sys/geom/geom_disk.h projects/virtio/sys/geom/geom_pc98.c projects/virtio/sys/geom/journal/g_journal.c projects/virtio/sys/geom/part/g_part.c projects/virtio/sys/geom/part/g_part_apm.c projects/virtio/sys/geom/part/g_part_gpt.c projects/virtio/sys/geom/part/g_part_pc98.c projects/virtio/sys/geom/raid/g_raid.c projects/virtio/sys/geom/raid/g_raid_ctl.c projects/virtio/sys/i386/conf/GENERIC projects/virtio/sys/i386/conf/NOTES projects/virtio/sys/i386/conf/PAE projects/virtio/sys/i386/conf/XEN projects/virtio/sys/i386/i386/identcpu.c projects/virtio/sys/i386/i386/initcpu.c projects/virtio/sys/i386/i386/machdep.c projects/virtio/sys/i386/i386/mp_machdep.c projects/virtio/sys/i386/i386/pmap.c projects/virtio/sys/i386/i386/support.s projects/virtio/sys/i386/i386/symbols.raw projects/virtio/sys/i386/i386/sys_machdep.c projects/virtio/sys/i386/i386/uio_machdep.c projects/virtio/sys/i386/i386/vm_machdep.c projects/virtio/sys/i386/ibcs2/imgact_coff.c projects/virtio/sys/i386/include/md_var.h projects/virtio/sys/i386/pci/pci_cfgreg.c projects/virtio/sys/i386/xen/mp_machdep.c projects/virtio/sys/i386/xen/pmap.c projects/virtio/sys/ia64/conf/GENERIC projects/virtio/sys/ia64/ia64/mca.c projects/virtio/sys/ia64/ia64/mp_machdep.c projects/virtio/sys/ia64/ia64/pmap.c projects/virtio/sys/ia64/pci/pci_cfgreg.c projects/virtio/sys/kern/imgact_gzip.c projects/virtio/sys/kern/init_main.c projects/virtio/sys/kern/kern_event.c projects/virtio/sys/kern/kern_exec.c projects/virtio/sys/kern/kern_exit.c projects/virtio/sys/kern/kern_intr.c projects/virtio/sys/kern/kern_malloc.c projects/virtio/sys/kern/kern_mbuf.c projects/virtio/sys/kern/kern_mutex.c projects/virtio/sys/kern/kern_ntptime.c projects/virtio/sys/kern/kern_poll.c projects/virtio/sys/kern/kern_priv.c projects/virtio/sys/kern/kern_rmlock.c projects/virtio/sys/kern/kern_sharedpage.c projects/virtio/sys/kern/kern_sig.c projects/virtio/sys/kern/kern_synch.c projects/virtio/sys/kern/kern_sysctl.c projects/virtio/sys/kern/kern_time.c projects/virtio/sys/kern/kern_uuid.c projects/virtio/sys/kern/sched_4bsd.c projects/virtio/sys/kern/subr_bus.c projects/virtio/sys/kern/subr_busdma_bufalloc.c projects/virtio/sys/kern/subr_counter.c projects/virtio/sys/kern/subr_uio.c projects/virtio/sys/kern/subr_vmem.c projects/virtio/sys/kern/subr_witness.c projects/virtio/sys/kern/sysv_shm.c projects/virtio/sys/kern/uipc_mbuf.c projects/virtio/sys/kern/uipc_mqueue.c projects/virtio/sys/kern/uipc_shm.c projects/virtio/sys/kern/uipc_syscalls.c projects/virtio/sys/kern/uipc_usrreq.c projects/virtio/sys/kern/vfs_acl.c projects/virtio/sys/kern/vfs_aio.c projects/virtio/sys/kern/vfs_bio.c projects/virtio/sys/kern/vfs_cache.c projects/virtio/sys/kern/vfs_cluster.c projects/virtio/sys/kern/vfs_lookup.c projects/virtio/sys/kern/vfs_mount.c projects/virtio/sys/kern/vfs_mountroot.c projects/virtio/sys/kern/vfs_subr.c projects/virtio/sys/kern/vfs_vnops.c projects/virtio/sys/kgssapi/gss_impl.c projects/virtio/sys/mips/atheros/ar71xx_chip.c projects/virtio/sys/mips/atheros/ar71xx_cpudef.h projects/virtio/sys/mips/atheros/ar71xx_gpio.c projects/virtio/sys/mips/atheros/ar71xx_setup.c projects/virtio/sys/mips/atheros/ar71xx_setup.h projects/virtio/sys/mips/atheros/ar724x_chip.c projects/virtio/sys/mips/atheros/ar91xx_chip.c projects/virtio/sys/mips/atheros/ar933x_chip.c projects/virtio/sys/mips/atheros/files.ar71xx projects/virtio/sys/mips/atheros/uart_bus_ar71xx.c projects/virtio/sys/mips/atheros/uart_bus_ar933x.c projects/virtio/sys/mips/atheros/uart_cpu_ar71xx.c projects/virtio/sys/mips/atheros/uart_cpu_ar933x.c projects/virtio/sys/mips/cavium/std.octeon1 projects/virtio/sys/mips/conf/AP93.hints projects/virtio/sys/mips/conf/DIR-825 projects/virtio/sys/mips/conf/DIR-825.hints projects/virtio/sys/mips/include/atomic.h projects/virtio/sys/mips/include/elf.h projects/virtio/sys/mips/mips/mp_machdep.c projects/virtio/sys/mips/mips/pmap.c projects/virtio/sys/mips/mips/uio_machdep.c projects/virtio/sys/mips/mips/vm_machdep.c projects/virtio/sys/mips/sibyte/sb_zbpci.c projects/virtio/sys/modules/Makefile projects/virtio/sys/modules/cc/Makefile projects/virtio/sys/modules/cxgbe/Makefile projects/virtio/sys/modules/cxgbe/if_cxgbe/Makefile projects/virtio/sys/modules/cxgbe/t4_firmware/Makefile projects/virtio/sys/modules/cyclic/Makefile projects/virtio/sys/modules/dtrace/dtio/Makefile projects/virtio/sys/modules/dtrace/dtmalloc/Makefile projects/virtio/sys/modules/dtrace/dtnfscl/Makefile projects/virtio/sys/modules/dtrace/dtnfsclient/Makefile projects/virtio/sys/modules/dtrace/dtrace/Makefile projects/virtio/sys/modules/dtrace/dtrace_test/Makefile projects/virtio/sys/modules/dtrace/dtraceall/Makefile projects/virtio/sys/modules/dtrace/fasttrap/Makefile projects/virtio/sys/modules/dtrace/fbt/Makefile projects/virtio/sys/modules/dtrace/lockstat/Makefile projects/virtio/sys/modules/dtrace/profile/Makefile projects/virtio/sys/modules/dtrace/prototype/Makefile projects/virtio/sys/modules/dtrace/sdt/Makefile projects/virtio/sys/modules/dtrace/systrace/Makefile projects/virtio/sys/modules/dtrace/systrace_freebsd32/Makefile projects/virtio/sys/modules/dtrace/systrace_linux32/Makefile projects/virtio/sys/modules/em/Makefile projects/virtio/sys/modules/ext2fs/Makefile projects/virtio/sys/modules/hpt27xx/Makefile projects/virtio/sys/modules/igb/Makefile projects/virtio/sys/modules/iwn/Makefile projects/virtio/sys/modules/iwnfw/Makefile projects/virtio/sys/modules/iwnfw/iwn6000g2a/Makefile projects/virtio/sys/modules/nvme/Makefile projects/virtio/sys/modules/opensolaris/Makefile projects/virtio/sys/modules/usb/Makefile projects/virtio/sys/modules/wi/Makefile projects/virtio/sys/modules/zfs/Makefile projects/virtio/sys/net/ieee8023ad_lacp.c projects/virtio/sys/net/ieee8023ad_lacp.h projects/virtio/sys/net/if.c projects/virtio/sys/net/if_arp.h projects/virtio/sys/net/if_bridge.c projects/virtio/sys/net/if_ethersubr.c projects/virtio/sys/net/if_gif.c projects/virtio/sys/net/if_lagg.c projects/virtio/sys/net/if_lagg.h projects/virtio/sys/net/if_tun.c projects/virtio/sys/net/if_var.h projects/virtio/sys/net/rtsock.c projects/virtio/sys/net/vnet.h projects/virtio/sys/net80211/ieee80211.c projects/virtio/sys/net80211/ieee80211.h projects/virtio/sys/net80211/ieee80211_amrr.c projects/virtio/sys/net80211/ieee80211_freebsd.c projects/virtio/sys/net80211/ieee80211_freebsd.h projects/virtio/sys/net80211/ieee80211_hostap.c projects/virtio/sys/net80211/ieee80211_hwmp.c projects/virtio/sys/net80211/ieee80211_mesh.c projects/virtio/sys/net80211/ieee80211_output.c projects/virtio/sys/net80211/ieee80211_phy.c projects/virtio/sys/net80211/ieee80211_phy.h projects/virtio/sys/net80211/ieee80211_power.c projects/virtio/sys/net80211/ieee80211_proto.c projects/virtio/sys/net80211/ieee80211_proto.h projects/virtio/sys/net80211/ieee80211_superg.c projects/virtio/sys/net80211/ieee80211_var.h projects/virtio/sys/net80211/ieee80211_wds.c projects/virtio/sys/netgraph/bluetooth/socket/ng_btsocket.c projects/virtio/sys/netgraph/ng_base.c projects/virtio/sys/netgraph/ng_pppoe.c projects/virtio/sys/netgraph/ng_pppoe.h projects/virtio/sys/netinet/icmp6.h projects/virtio/sys/netinet/icmp_var.h projects/virtio/sys/netinet/if_ether.c projects/virtio/sys/netinet/in.c projects/virtio/sys/netinet/in_mcast.c projects/virtio/sys/netinet/in_pcb.c projects/virtio/sys/netinet/in_pcb.h projects/virtio/sys/netinet/ip_carp.c projects/virtio/sys/netinet/ip_carp.h projects/virtio/sys/netinet/ip_icmp.c projects/virtio/sys/netinet/ip_input.c projects/virtio/sys/netinet/ip_mroute.c projects/virtio/sys/netinet/ip_mroute.h projects/virtio/sys/netinet/ip_output.c projects/virtio/sys/netinet/ip_var.h projects/virtio/sys/netinet/pim_var.h projects/virtio/sys/netinet/sctp_asconf.c projects/virtio/sys/netinet/sctp_constants.h projects/virtio/sys/netinet/sctp_indata.c projects/virtio/sys/netinet/sctp_indata.h projects/virtio/sys/netinet/sctp_input.c projects/virtio/sys/netinet/sctp_output.c projects/virtio/sys/netinet/sctp_pcb.c projects/virtio/sys/netinet/sctp_sysctl.c projects/virtio/sys/netinet/sctp_sysctl.h projects/virtio/sys/netinet/sctp_usrreq.c projects/virtio/sys/netinet/tcp_input.c projects/virtio/sys/netinet/tcp_syncache.c projects/virtio/sys/netinet/tcp_syncache.h projects/virtio/sys/netinet/tcp_var.h projects/virtio/sys/netinet/udp_usrreq.c projects/virtio/sys/netinet/udp_var.h projects/virtio/sys/netinet6/icmp6.c projects/virtio/sys/netinet6/in6.c projects/virtio/sys/netinet6/in6.h projects/virtio/sys/netinet6/in6_ifattach.c projects/virtio/sys/netinet6/in6_pcb.c projects/virtio/sys/netinet6/in6_proto.c projects/virtio/sys/netinet6/in6_var.h projects/virtio/sys/netinet6/ip6_forward.c projects/virtio/sys/netinet6/ip6_id.c projects/virtio/sys/netinet6/ip6_input.c projects/virtio/sys/netinet6/ip6_mroute.c projects/virtio/sys/netinet6/ip6_mroute.h projects/virtio/sys/netinet6/ip6_output.c projects/virtio/sys/netinet6/ip6_var.h projects/virtio/sys/netinet6/nd6.c projects/virtio/sys/netinet6/nd6_rtr.c projects/virtio/sys/netinet6/pim6_var.h projects/virtio/sys/netinet6/raw_ip6.c projects/virtio/sys/netinet6/raw_ip6.h projects/virtio/sys/netinet6/udp6_usrreq.c projects/virtio/sys/netipsec/ah_var.h projects/virtio/sys/netipsec/esp_var.h projects/virtio/sys/netipsec/ipcomp_var.h projects/virtio/sys/netipsec/ipip_var.h projects/virtio/sys/netipsec/ipsec.c projects/virtio/sys/netipsec/ipsec.h projects/virtio/sys/netipsec/ipsec6.h projects/virtio/sys/netipsec/keysock.c projects/virtio/sys/netipsec/keysock.h projects/virtio/sys/netipsec/xform_ah.c projects/virtio/sys/netipsec/xform_esp.c projects/virtio/sys/netipsec/xform_ipcomp.c projects/virtio/sys/netipsec/xform_ipip.c projects/virtio/sys/netpfil/pf/if_pfsync.c projects/virtio/sys/nfs/bootp_subr.c projects/virtio/sys/nfsclient/nfs_subs.c projects/virtio/sys/nfsclient/nfs_vnops.c projects/virtio/sys/ofed/drivers/net/mlx4/en_netdev.c projects/virtio/sys/ofed/drivers/net/mlx4/en_tx.c projects/virtio/sys/ofed/drivers/net/mlx4/main.c projects/virtio/sys/ofed/include/linux/bitops.h projects/virtio/sys/ofed/include/linux/dma-mapping.h projects/virtio/sys/ofed/include/linux/gfp.h projects/virtio/sys/ofed/include/linux/linux_compat.c projects/virtio/sys/ofed/include/linux/module.h projects/virtio/sys/ofed/include/linux/page.h projects/virtio/sys/ofed/include/linux/sysfs.h projects/virtio/sys/ofed/include/rdma/sdp_socket.h projects/virtio/sys/pc98/pc98/machdep.c projects/virtio/sys/powerpc/aim/mmu_oea.c projects/virtio/sys/powerpc/aim/mmu_oea64.c projects/virtio/sys/powerpc/aim/vm_machdep.c projects/virtio/sys/powerpc/booke/pmap.c projects/virtio/sys/powerpc/booke/vm_machdep.c projects/virtio/sys/powerpc/conf/GENERIC projects/virtio/sys/powerpc/conf/GENERIC64 projects/virtio/sys/powerpc/include/spr.h projects/virtio/sys/powerpc/ofw/ofw_real.c projects/virtio/sys/powerpc/ofw/ofw_syscons.c projects/virtio/sys/powerpc/powermac/macio.c projects/virtio/sys/powerpc/powermac/maciovar.h projects/virtio/sys/powerpc/powerpc/busdma_machdep.c projects/virtio/sys/powerpc/powerpc/mp_machdep.c projects/virtio/sys/powerpc/powerpc/uio_machdep.c projects/virtio/sys/powerpc/wii/wii_ipcreg.h projects/virtio/sys/rpc/rpcsec_gss.h projects/virtio/sys/rpc/rpcsec_gss/rpcsec_gss.c projects/virtio/sys/security/audit/audit.c projects/virtio/sys/sparc64/conf/GENERIC projects/virtio/sys/sparc64/include/atomic.h projects/virtio/sys/sparc64/include/pmap.h projects/virtio/sys/sparc64/include/ucontext.h projects/virtio/sys/sparc64/sparc64/bus_machdep.c projects/virtio/sys/sparc64/sparc64/genassym.c projects/virtio/sys/sparc64/sparc64/machdep.c projects/virtio/sys/sparc64/sparc64/mem.c projects/virtio/sys/sparc64/sparc64/mp_machdep.c projects/virtio/sys/sparc64/sparc64/pmap.c projects/virtio/sys/sparc64/sparc64/uio_machdep.c projects/virtio/sys/sparc64/sparc64/vm_machdep.c projects/virtio/sys/sys/counter.h projects/virtio/sys/sys/diskpc98.h projects/virtio/sys/sys/elf_common.h projects/virtio/sys/sys/event.h projects/virtio/sys/sys/eventhandler.h projects/virtio/sys/sys/kernel.h projects/virtio/sys/sys/libkern.h projects/virtio/sys/sys/mbuf.h projects/virtio/sys/sys/param.h projects/virtio/sys/sys/priv.h projects/virtio/sys/sys/proc.h projects/virtio/sys/sys/sched.h projects/virtio/sys/sys/sdt.h projects/virtio/sys/sys/sf_buf.h projects/virtio/sys/sys/socket.h projects/virtio/sys/sys/syscallsubr.h projects/virtio/sys/sys/systm.h projects/virtio/sys/sys/uuid.h projects/virtio/sys/sys/vnode.h projects/virtio/sys/sys/wait.h projects/virtio/sys/ufs/ffs/ffs_alloc.c projects/virtio/sys/ufs/ffs/ffs_balloc.c projects/virtio/sys/ufs/ffs/ffs_snapshot.c projects/virtio/sys/ufs/ffs/ffs_softdep.c projects/virtio/sys/ufs/ffs/ffs_suspend.c projects/virtio/sys/ufs/ffs/ffs_vfsops.c projects/virtio/sys/ufs/ufs/inode.h projects/virtio/sys/ufs/ufs/ufs_vnops.c projects/virtio/sys/vm/_vm_radix.h projects/virtio/sys/vm/device_pager.c projects/virtio/sys/vm/memguard.c projects/virtio/sys/vm/memguard.h projects/virtio/sys/vm/phys_pager.c projects/virtio/sys/vm/pmap.h projects/virtio/sys/vm/sg_pager.c projects/virtio/sys/vm/swap_pager.c projects/virtio/sys/vm/uma_core.c projects/virtio/sys/vm/uma_int.h projects/virtio/sys/vm/vm.h projects/virtio/sys/vm/vm_extern.h projects/virtio/sys/vm/vm_fault.c projects/virtio/sys/vm/vm_glue.c projects/virtio/sys/vm/vm_init.c projects/virtio/sys/vm/vm_kern.c projects/virtio/sys/vm/vm_kern.h projects/virtio/sys/vm/vm_map.c projects/virtio/sys/vm/vm_map.h projects/virtio/sys/vm/vm_mmap.c projects/virtio/sys/vm/vm_object.c projects/virtio/sys/vm/vm_object.h projects/virtio/sys/vm/vm_page.c projects/virtio/sys/vm/vm_page.h projects/virtio/sys/vm/vm_pageout.c projects/virtio/sys/vm/vm_param.h projects/virtio/sys/vm/vm_phys.c projects/virtio/sys/vm/vm_phys.h projects/virtio/sys/vm/vm_radix.c projects/virtio/sys/vm/vm_radix.h projects/virtio/sys/vm/vm_zeroidle.c projects/virtio/sys/vm/vnode_pager.c projects/virtio/sys/x86/acpica/srat.c projects/virtio/sys/x86/include/specialreg.h projects/virtio/sys/x86/x86/busdma_machdep.c projects/virtio/sys/xen/gnttab.c projects/virtio/tools/build/mk/OptionalObsoleteFiles.inc projects/virtio/tools/build/options/makeman projects/virtio/tools/regression/aio/aiop/aiop.c projects/virtio/tools/regression/aio/aiotest/aiotest.c projects/virtio/tools/regression/lib/libc/gen/test-fpclassify.c projects/virtio/tools/regression/lib/libc/gen/test-ftw.c projects/virtio/tools/regression/lib/libc/gen/test-wordexp.c projects/virtio/tools/regression/lib/libc/stdio/Makefile projects/virtio/tools/regression/priv/Makefile projects/virtio/tools/regression/pthread/cv_cancel1/cv_cancel1.c projects/virtio/tools/regression/sbin/dhclient/Makefile projects/virtio/tools/tools/bootparttest/bootparttest.c projects/virtio/tools/tools/crypto/ipsecstats.c projects/virtio/tools/tools/cxgbetool/cxgbetool.c projects/virtio/tools/tools/sysdoc/sysdoc.sh projects/virtio/tools/tools/sysdoc/tunables.mdoc projects/virtio/tools/tools/zfsboottest/Makefile projects/virtio/tools/tools/zfsboottest/zfsboottest.c projects/virtio/tools/tools/zfsboottest/zfsboottest.sh projects/virtio/usr.bin/bmake/Makefile projects/virtio/usr.bin/bmake/config.h projects/virtio/usr.bin/bmake/unit-tests/Makefile projects/virtio/usr.bin/dtc/fdt.cc projects/virtio/usr.bin/fetch/fetch.1 projects/virtio/usr.bin/fetch/fetch.c projects/virtio/usr.bin/find/function.c projects/virtio/usr.bin/grep/regex/tre-fastmatch.c projects/virtio/usr.bin/iconv/iconv.c projects/virtio/usr.bin/kdump/kdump.c projects/virtio/usr.bin/ldd/ldd.c projects/virtio/usr.bin/mail/popen.c projects/virtio/usr.bin/make/job.c projects/virtio/usr.bin/mkcsmapper/lex.l projects/virtio/usr.bin/mkesdb/lex.l projects/virtio/usr.bin/netstat/inet.c projects/virtio/usr.bin/netstat/inet6.c projects/virtio/usr.bin/netstat/ipsec.c projects/virtio/usr.bin/netstat/main.c projects/virtio/usr.bin/netstat/mbuf.c projects/virtio/usr.bin/netstat/mroute.c projects/virtio/usr.bin/netstat/netstat.1 projects/virtio/usr.bin/netstat/netstat.h projects/virtio/usr.bin/netstat/pfkey.c projects/virtio/usr.bin/netstat/route.c projects/virtio/usr.bin/patch/Makefile projects/virtio/usr.bin/patch/patch.c projects/virtio/usr.bin/patch/pch.c projects/virtio/usr.bin/rwho/rwho.c projects/virtio/usr.bin/script/script.1 projects/virtio/usr.bin/su/su.1 projects/virtio/usr.bin/svn/lib/libapr_util/Makefile projects/virtio/usr.bin/svn/lib/libapr_util/apr_ldap.h projects/virtio/usr.bin/svn/lib/libapr_util/apu.h projects/virtio/usr.bin/svn/lib/libapr_util/apu_config.h projects/virtio/usr.bin/svn/lib/libserf/Makefile projects/virtio/usr.bin/svn/svn_private_config.h projects/virtio/usr.bin/systat/Makefile projects/virtio/usr.bin/systat/cmdtab.c projects/virtio/usr.bin/systat/extern.h projects/virtio/usr.bin/systat/systat.1 projects/virtio/usr.bin/truss/syscall.h projects/virtio/usr.bin/truss/syscalls.c projects/virtio/usr.bin/uniq/uniq.c projects/virtio/usr.bin/vi/Makefile projects/virtio/usr.bin/vi/config.h projects/virtio/usr.bin/vi/pathnames.h projects/virtio/usr.sbin/Makefile projects/virtio/usr.sbin/authpf/Makefile projects/virtio/usr.sbin/bhyve/Makefile projects/virtio/usr.sbin/bhyve/bhyverun.c projects/virtio/usr.sbin/bhyve/pci_emul.c projects/virtio/usr.sbin/bhyve/pci_emul.h projects/virtio/usr.sbin/bhyve/pci_virtio_block.c projects/virtio/usr.sbin/bhyve/pci_virtio_net.c projects/virtio/usr.sbin/bhyve/rtc.c projects/virtio/usr.sbin/bhyve/virtio.h projects/virtio/usr.sbin/boot98cfg/boot98cfg.c projects/virtio/usr.sbin/bsdconfig/USAGE projects/virtio/usr.sbin/bsdconfig/bsdconfig projects/virtio/usr.sbin/bsdconfig/bsdconfig.8 projects/virtio/usr.sbin/bsdconfig/console/USAGE projects/virtio/usr.sbin/bsdconfig/console/console projects/virtio/usr.sbin/bsdconfig/console/font projects/virtio/usr.sbin/bsdconfig/console/keymap projects/virtio/usr.sbin/bsdconfig/console/repeat projects/virtio/usr.sbin/bsdconfig/console/saver projects/virtio/usr.sbin/bsdconfig/console/screenmap projects/virtio/usr.sbin/bsdconfig/console/ttys projects/virtio/usr.sbin/bsdconfig/diskmgmt/USAGE projects/virtio/usr.sbin/bsdconfig/diskmgmt/diskmgmt projects/virtio/usr.sbin/bsdconfig/docsinstall/USAGE projects/virtio/usr.sbin/bsdconfig/docsinstall/docsinstall projects/virtio/usr.sbin/bsdconfig/dot/USAGE projects/virtio/usr.sbin/bsdconfig/dot/dot projects/virtio/usr.sbin/bsdconfig/examples/Makefile projects/virtio/usr.sbin/bsdconfig/include/messages.subr projects/virtio/usr.sbin/bsdconfig/mouse/USAGE projects/virtio/usr.sbin/bsdconfig/mouse/disable projects/virtio/usr.sbin/bsdconfig/mouse/enable projects/virtio/usr.sbin/bsdconfig/mouse/flags projects/virtio/usr.sbin/bsdconfig/mouse/mouse projects/virtio/usr.sbin/bsdconfig/mouse/port projects/virtio/usr.sbin/bsdconfig/mouse/type projects/virtio/usr.sbin/bsdconfig/networking/USAGE projects/virtio/usr.sbin/bsdconfig/networking/defaultrouter projects/virtio/usr.sbin/bsdconfig/networking/devices projects/virtio/usr.sbin/bsdconfig/networking/hostname projects/virtio/usr.sbin/bsdconfig/networking/include/messages.subr projects/virtio/usr.sbin/bsdconfig/networking/nameservers projects/virtio/usr.sbin/bsdconfig/networking/networking projects/virtio/usr.sbin/bsdconfig/networking/share/Makefile projects/virtio/usr.sbin/bsdconfig/networking/share/common.subr projects/virtio/usr.sbin/bsdconfig/networking/share/device.subr projects/virtio/usr.sbin/bsdconfig/networking/share/hostname.subr projects/virtio/usr.sbin/bsdconfig/networking/share/ipaddr.subr projects/virtio/usr.sbin/bsdconfig/networking/share/media.subr projects/virtio/usr.sbin/bsdconfig/networking/share/netmask.subr projects/virtio/usr.sbin/bsdconfig/networking/share/resolv.subr projects/virtio/usr.sbin/bsdconfig/networking/share/routing.subr projects/virtio/usr.sbin/bsdconfig/packages/USAGE projects/virtio/usr.sbin/bsdconfig/packages/packages projects/virtio/usr.sbin/bsdconfig/password/USAGE projects/virtio/usr.sbin/bsdconfig/password/password projects/virtio/usr.sbin/bsdconfig/password/share/password.subr projects/virtio/usr.sbin/bsdconfig/security/USAGE projects/virtio/usr.sbin/bsdconfig/security/kern_securelevel projects/virtio/usr.sbin/bsdconfig/security/security projects/virtio/usr.sbin/bsdconfig/share/common.subr projects/virtio/usr.sbin/bsdconfig/share/device.subr projects/virtio/usr.sbin/bsdconfig/share/dialog.subr projects/virtio/usr.sbin/bsdconfig/share/media/any.subr projects/virtio/usr.sbin/bsdconfig/share/media/cdrom.subr projects/virtio/usr.sbin/bsdconfig/share/media/common.subr projects/virtio/usr.sbin/bsdconfig/share/media/directory.subr projects/virtio/usr.sbin/bsdconfig/share/media/dos.subr projects/virtio/usr.sbin/bsdconfig/share/media/floppy.subr projects/virtio/usr.sbin/bsdconfig/share/media/ftp.subr projects/virtio/usr.sbin/bsdconfig/share/media/http.subr projects/virtio/usr.sbin/bsdconfig/share/media/httpproxy.subr projects/virtio/usr.sbin/bsdconfig/share/media/network.subr projects/virtio/usr.sbin/bsdconfig/share/media/nfs.subr projects/virtio/usr.sbin/bsdconfig/share/media/options.subr projects/virtio/usr.sbin/bsdconfig/share/media/tcpip.subr projects/virtio/usr.sbin/bsdconfig/share/media/ufs.subr projects/virtio/usr.sbin/bsdconfig/share/media/usb.subr projects/virtio/usr.sbin/bsdconfig/share/mustberoot.subr projects/virtio/usr.sbin/bsdconfig/share/packages/categories.subr projects/virtio/usr.sbin/bsdconfig/share/packages/index.subr projects/virtio/usr.sbin/bsdconfig/share/packages/packages.subr projects/virtio/usr.sbin/bsdconfig/share/script.subr projects/virtio/usr.sbin/bsdconfig/share/strings.subr projects/virtio/usr.sbin/bsdconfig/share/struct.subr projects/virtio/usr.sbin/bsdconfig/share/sysrc.subr projects/virtio/usr.sbin/bsdconfig/share/variable.subr projects/virtio/usr.sbin/bsdconfig/startup/USAGE projects/virtio/usr.sbin/bsdconfig/startup/misc projects/virtio/usr.sbin/bsdconfig/startup/rcadd projects/virtio/usr.sbin/bsdconfig/startup/rcconf projects/virtio/usr.sbin/bsdconfig/startup/rcdelete projects/virtio/usr.sbin/bsdconfig/startup/rcvar projects/virtio/usr.sbin/bsdconfig/startup/share/rcconf.subr projects/virtio/usr.sbin/bsdconfig/startup/share/rcvar.subr projects/virtio/usr.sbin/bsdconfig/startup/startup projects/virtio/usr.sbin/bsdconfig/timezone/USAGE projects/virtio/usr.sbin/bsdconfig/timezone/share/continents.subr projects/virtio/usr.sbin/bsdconfig/timezone/share/countries.subr projects/virtio/usr.sbin/bsdconfig/timezone/share/iso3166.subr projects/virtio/usr.sbin/bsdconfig/timezone/share/menus.subr projects/virtio/usr.sbin/bsdconfig/timezone/share/zones.subr projects/virtio/usr.sbin/bsdconfig/timezone/timezone projects/virtio/usr.sbin/bsdconfig/ttys/USAGE projects/virtio/usr.sbin/bsdconfig/ttys/ttys projects/virtio/usr.sbin/bsdconfig/usermgmt/USAGE projects/virtio/usr.sbin/bsdconfig/usermgmt/groupinput projects/virtio/usr.sbin/bsdconfig/usermgmt/share/group_input.subr projects/virtio/usr.sbin/bsdconfig/usermgmt/share/user_input.subr projects/virtio/usr.sbin/bsdconfig/usermgmt/userinput projects/virtio/usr.sbin/bsdinstall/scripts/mirrorselect projects/virtio/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt projects/virtio/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c projects/virtio/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def projects/virtio/usr.sbin/gssd/gssd.8 projects/virtio/usr.sbin/gssd/gssd.c projects/virtio/usr.sbin/makefs/cd9660.c projects/virtio/usr.sbin/makefs/cd9660/iso9660_rrip.c projects/virtio/usr.sbin/makefs/ffs/ufs_bswap.h projects/virtio/usr.sbin/named/Makefile projects/virtio/usr.sbin/ndp/ndp.c projects/virtio/usr.sbin/nfsd/nfsv4.4 projects/virtio/usr.sbin/nvram/nvram.c projects/virtio/usr.sbin/pciconf/cap.c projects/virtio/usr.sbin/pkg/config.c projects/virtio/usr.sbin/portsnap/portsnap/portsnap.sh projects/virtio/usr.sbin/powerd/powerd.8 projects/virtio/usr.sbin/powerd/powerd.c projects/virtio/usr.sbin/ppp/defs.c projects/virtio/usr.sbin/ppp/defs.h projects/virtio/usr.sbin/pw/pw_user.c projects/virtio/usr.sbin/rtadvctl/rtadvctl.c projects/virtio/usr.sbin/rtadvd/config.c projects/virtio/usr.sbin/rtadvd/rrenum.c projects/virtio/usr.sbin/rtadvd/rtadvd.c projects/virtio/usr.sbin/rtadvd/rtadvd.h projects/virtio/usr.sbin/rtadvd/timer.c projects/virtio/usr.sbin/rtadvd/timer.h projects/virtio/usr.sbin/rtadvd/timer_subr.c projects/virtio/usr.sbin/rtadvd/timer_subr.h projects/virtio/usr.sbin/rtsold/dump.c projects/virtio/usr.sbin/rtsold/rtsol.c projects/virtio/usr.sbin/rtsold/rtsold.c projects/virtio/usr.sbin/rtsold/rtsold.h projects/virtio/usr.sbin/rwhod/rwhod.c projects/virtio/usr.sbin/sysrc/sysrc projects/virtio/usr.sbin/sysrc/sysrc.8 projects/virtio/usr.sbin/watchdogd/watchdogd.8 projects/virtio/usr.sbin/watchdogd/watchdogd.c projects/virtio/usr.sbin/wpa/Makefile.crypto projects/virtio/usr.sbin/wpa/Makefile.inc projects/virtio/usr.sbin/wpa/hostapd/Makefile projects/virtio/usr.sbin/wpa/hostapd_cli/Makefile projects/virtio/usr.sbin/wpa/wpa_cli/Makefile projects/virtio/usr.sbin/wpa/wpa_passphrase/Makefile projects/virtio/usr.sbin/wpa/wpa_supplicant/Makefile projects/virtio/usr.sbin/ypserv/yp_access.c projects/virtio/usr.sbin/ypserv/yp_dnslookup.c projects/virtio/usr.sbin/ypserv/yp_main.c Directory Properties: projects/virtio/ (props changed) projects/virtio/cddl/ (props changed) projects/virtio/cddl/contrib/opensolaris/ (props changed) projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ (props changed) projects/virtio/cddl/contrib/opensolaris/cmd/zfs/ (props changed) projects/virtio/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/virtio/contrib/apr/ (props changed) projects/virtio/contrib/apr-util/ (props changed) projects/virtio/contrib/bind9/ (props changed) projects/virtio/contrib/binutils/ (props changed) projects/virtio/contrib/bmake/ (props changed) projects/virtio/contrib/ipfilter/ (props changed) projects/virtio/contrib/libc++/ (props changed) projects/virtio/contrib/libcxxrt/ (props changed) projects/virtio/contrib/libstdc++/ (props changed) projects/virtio/contrib/llvm/ (props changed) projects/virtio/contrib/llvm/tools/clang/ (props changed) projects/virtio/contrib/nvi/ (props changed) projects/virtio/contrib/openbsm/ (props changed) projects/virtio/contrib/serf/ (props changed) projects/virtio/contrib/subversion/ (props changed) projects/virtio/contrib/tcpdump/ (props changed) projects/virtio/contrib/tzdata/ (props changed) projects/virtio/contrib/wpa/ (props changed) projects/virtio/contrib/wpa/hostapd/eap_testing.txt (props changed) projects/virtio/contrib/wpa/hostapd/hostapd.8 (props changed) projects/virtio/contrib/wpa/hostapd/hostapd_cli.1 (props changed) projects/virtio/contrib/wpa/hostapd/logwatch/hostapd.conf (props changed) projects/virtio/contrib/wpa/hostapd/wired.conf (props changed) projects/virtio/contrib/wpa/src/ap/vlan_init.h (props changed) projects/virtio/contrib/wpa/src/ap/wmm.h (props changed) projects/virtio/contrib/wpa/src/utils/radiotap.c (props changed) projects/virtio/contrib/wpa/src/wps/http.h (props changed) projects/virtio/contrib/wpa/wpa_supplicant/dbus/dbus-wpa_supplicant.conf (props changed) projects/virtio/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-getall.py (props changed) projects/virtio/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-wps.py (props changed) projects/virtio/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new.py (props changed) projects/virtio/crypto/openssl/ (props changed) projects/virtio/lib/libc/ (props changed) projects/virtio/sbin/ (props changed) projects/virtio/sbin/ipfw/ (props changed) projects/virtio/share/man/man4/ (props changed) projects/virtio/sys/ (props changed) projects/virtio/sys/amd64/vmm/ (props changed) projects/virtio/sys/boot/ (props changed) projects/virtio/sys/cddl/contrib/opensolaris/ (props changed) projects/virtio/sys/conf/ (props changed) projects/virtio/sys/contrib/dev/acpica/ (props changed) projects/virtio/sys/contrib/dev/acpica/common/ (props changed) projects/virtio/sys/contrib/dev/acpica/compiler/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/disassembler/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/events/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/executer/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/hardware/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/parser/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/resources/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/tables/ (props changed) projects/virtio/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/virtio/sys/contrib/dev/acpica/include/ (props changed) projects/virtio/sys/contrib/dev/acpica/os_specific/ (props changed) projects/virtio/sys/contrib/ipfilter/ (props changed) projects/virtio/sys/dev/usb/serial/uark.c (props changed) projects/virtio/usr.sbin/bhyve/ (props changed) projects/virtio/usr.sbin/rtadvctl/ (props changed) projects/virtio/usr.sbin/rtadvd/ (props changed) projects/virtio/usr.sbin/rtsold/ (props changed) Modified: projects/virtio/MAINTAINERS ============================================================================== --- projects/virtio/MAINTAINERS Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/MAINTAINERS Sun Aug 11 22:06:10 2013 (r254232) @@ -128,3 +128,6 @@ sysdoc trhodes Pre-commit review prefe sh(1) jilles Pre-commit review requested. This also applies to kill(1), printf(1) and test(1) which are compiled in as builtins. +nvme(4) jimharris Pre-commit review requested. +nvd(4) jimharris Pre-commit review requested. +nvmecontrol(8) jimharris Pre-commit review requested. Modified: projects/virtio/Makefile ============================================================================== --- projects/virtio/Makefile Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/Makefile Sun Aug 11 22:06:10 2013 (r254232) @@ -32,6 +32,12 @@ # targets - Print a list of supported TARGET/TARGET_ARCH pairs # for world and kernel targets. # toolchains - Build a toolchain for all world and kernel targets. +# +# "quick" way to test all kernel builds: +# _jflag=`sysctl -n hw.ncpu` +# _jflag=$(($_jflag * 2)) +# [ $_jflag -gt 12 ] && _jflag=12 +# make universe -DMAKE_JUST_KERNELS JFLAG=-j${_jflag} # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the @@ -124,11 +130,34 @@ _MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH .error MAKEOBJDIRPREFIX can only be set in environment, not as a global\ (in make.conf(5)) or command-line variable. .endif -MAKEPATH= ${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE} -BINMAKE= \ - `if [ -x ${MAKEPATH}/make ]; then echo ${MAKEPATH}/make; else echo ${MAKE}; fi` \ + +# We often need to use the tree's version of make to build it. +# Choices add to complexity though. +# We cannot blindly use a make which may not be the one we want +# so be exlicit - until all choice is removed. +.if !defined(WITHOUT_BMAKE) +WANT_MAKE= bmake +.else +WANT_MAKE= fmake +.endif +MYMAKE= ${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE}/${WANT_MAKE} +.if defined(.PARSEDIR) +HAVE_MAKE= bmake +.else +HAVE_MAKE= fmake +.endif +.if exists(${MYMAKE}) +SUB_MAKE:= ${MYMAKE} -m ${.CURDIR}/share/mk +.elif ${WANT_MAKE} != ${HAVE_MAKE} || ${WANT_MAKE} != "bmake" +# It may not exist yet but we may cause it to. +# In the case of fmake, upgrade_checks may cause a newer version to be built. +SUB_MAKE= `test -x ${MYMAKE} && echo ${MYMAKE} || echo ${MAKE}` \ -m ${.CURDIR}/share/mk -_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} +.else +SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk +.endif + +_MAKE= PATH=${PATH} ${SUB_MAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Guess machine architecture from machine type, and vice versa. .if !defined(TARGET_ARCH) && defined(TARGET) @@ -285,11 +314,13 @@ kernel: buildkernel installkernel # Perform a few tests to determine if the installed tools are adequate # for building the world. # +# Note: if we ever need to care about the version of bmake, simply testing +# MAKE_VERSION against a required version should suffice. +# upgrade_checks: -.if !defined(.PARSEDIR) -.if !defined(WITHOUT_BMAKE) - (cd ${.CURDIR} && ${MAKE} bmake) -.else +.if ${HAVE_MAKE} != ${WANT_MAKE} + @(cd ${.CURDIR} && ${MAKE} ${WANT_MAKE:S,^f,,}) +.elif ${WANT_MAKE} == "fmake" @if ! (cd ${.CURDIR}/tools/build/make_check && \ PATH=${PATH} ${BINMAKE} obj >/dev/null 2>&1 && \ PATH=${PATH} ${BINMAKE} >/dev/null 2>&1); \ @@ -297,14 +328,13 @@ upgrade_checks: (cd ${.CURDIR} && ${MAKE} make); \ fi .endif -.endif # # Upgrade make(1) to the current version using the installed # headers, libraries and tools. Also, allow the location of # the system bsdmake-like utility to be overridden. # -MMAKEENV= MAKEOBJDIRPREFIX=${MAKEPATH} \ +MMAKEENV= MAKEOBJDIRPREFIX=${MYMAKE:H} \ DESTDIR= \ INSTALL="sh ${.CURDIR}/tools/install.sh" MMAKE= ${MMAKEENV} ${MAKE} \ @@ -321,7 +351,7 @@ make bmake: .PHONY ${MMAKE} obj && \ ${MMAKE} depend && \ ${MMAKE} all && \ - ${MMAKE} install DESTDIR=${MAKEPATH} BINDIR= + ${MMAKE} install DESTDIR=${MYMAKE:H} BINDIR= PROGNAME=${MYMAKE:T} tinderbox: @cd ${.CURDIR} && ${MAKE} DOING_TINDERBOX=YES universe @@ -371,7 +401,8 @@ MAKEFAIL=tee -a ${FAILFILE} MAKEFAIL=cat .endif -universe: universe_prologue upgrade_checks +universe_prologue: upgrade_checks +universe: universe_prologue universe_prologue: @echo "--------------------------------------------------------------" @echo ">>> make universe started on ${STARTTIME}" @@ -381,9 +412,9 @@ universe_prologue: .endif .for target in ${TARGETS} universe: universe_${target} -.ORDER: universe_prologue upgrade_checks universe_${target} universe_epilogue +universe_epilogue: universe_${target} universe_${target}: universe_${target}_prologue -universe_${target}_prologue: +universe_${target}_prologue: universe_prologue @echo ">> ${target} started on `LC_ALL=C date`" .if !defined(MAKE_JUST_KERNELS) .for target_arch in ${TARGET_ARCHES_${target}} @@ -391,7 +422,7 @@ universe_${target}: universe_${target}_$ universe_${target}_${target_arch}: universe_${target}_prologue @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`" @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ - ${MAKE} ${JFLAG} ${UNIVERSE_TARGET} \ + ${SUB_MAKE} ${JFLAG} ${UNIVERSE_TARGET} \ TARGET=${target} \ TARGET_ARCH=${target_arch} \ > _.${target}.${target_arch}.${UNIVERSE_TARGET} 2>&1 || \ @@ -412,11 +443,11 @@ universe_${target}: universe_${target}_k universe_${target}_kernels: universe_${target}_prologue .if exists(${KERNSRCDIR}/${target}/conf/NOTES) @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ - ${MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ + ${SUB_MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ (echo "${target} 'make LINT' failed," \ "check _.${target}.makeLINT for details"| ${MAKEFAIL})) .endif - @cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} \ + @cd ${.CURDIR} && ${SUB_MAKE} ${.MAKEFLAGS} TARGET=${target} \ universe_kernels .endif @echo ">> ${target} completed on `LC_ALL=C date`" @@ -439,7 +470,7 @@ TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR} universe_kernconfs: universe_kernconf_${TARGET}_${kernel} universe_kernconf_${TARGET}_${kernel}: @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ - ${MAKE} ${JFLAG} buildkernel \ + ${SUB_MAKE} ${JFLAG} buildkernel \ TARGET=${TARGET} \ TARGET_ARCH=${TARGET_ARCH_${kernel}} \ KERNCONF=${kernel} \ Modified: projects/virtio/Makefile.inc1 ============================================================================== --- projects/virtio/Makefile.inc1 Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/Makefile.inc1 Sun Aug 11 22:06:10 2013 (r254232) @@ -833,6 +833,18 @@ distributeworld installworld: installche awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \ ${DESTDIR}/${DISTDIR}/${dist}.meta .endfor +.if ${MK_DEBUG_FILES} != "no" +. for dist in base ${EXTRA_DISTRIBUTIONS} + @# For each file that exists in this dist, print the corresponding + @# line from the METALOG. This relies on the fact that + @# a line containing only the filename will sort immediatly before + @# the relevant mtree line. + cd ${DESTDIR}/${DISTDIR}; \ + find ./${dist}/usr/lib/debug | sort -u ${METALOG} - | \ + awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \ + ${DESTDIR}/${DISTDIR}/${dist}.debug.meta +. endfor +.endif .endif .endif @@ -841,13 +853,29 @@ packageworld: .if defined(NO_ROOT) ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz \ + --exclude usr/lib/debug \ @${DESTDIR}/${DISTDIR}/${dist}.meta .else ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ - tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz . + tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz \ + --exclude usr/lib/debug . .endif .endfor +.if ${MK_DEBUG_FILES} != "no" +. for dist in base ${EXTRA_DISTRIBUTIONS} +. if defined(NO_ROOT) + ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ + tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \ + @${DESTDIR}/${DISTDIR}/${dist}.debug.meta +. else + ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ + tar cvJfL ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \ + usr/lib/debug +. endif +. endfor +.endif + # # reinstall # @@ -1237,7 +1265,7 @@ _kerberos5_bootstrap_tools= \ # Please document (add comment) why something is in 'bootstrap-tools'. # Try to bound the building of the bootstrap-tool to just the # FreeBSD versions that need the tool built at this stage of the build. -bootstrap-tools: +bootstrap-tools: .MAKE .for _tool in \ ${_clang_tblgen} \ ${_kerberos5_bootstrap_tools} \ @@ -1290,7 +1318,7 @@ _gcc_tools= gnu/usr.bin/cc/cc_tools _rescue= rescue/rescue .endif -build-tools: +build-tools: .MAKE .for _tool in \ bin/csh \ bin/sh \ @@ -1303,7 +1331,8 @@ build-tools: usr.bin/awk \ lib/libmagic \ usr.bin/mkesdb_static \ - usr.bin/mkcsmapper_static + usr.bin/mkcsmapper_static \ + usr.bin/vi/catalog ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ @@ -1352,7 +1381,7 @@ _cc= gnu/usr.bin/cc .endif .endif -cross-tools: +cross-tools: .MAKE .for _tool in \ ${_clang_libs} \ ${_clang} \ @@ -1383,12 +1412,12 @@ hierarchy hier: # interdependencies (__L) are built automatically by the # ${.CURDIR}/tools/make_libdeps.sh script. # -libraries: - cd ${.CURDIR}; \ - ${MAKE} -f Makefile.inc1 _prereq_libs; \ - ${MAKE} -f Makefile.inc1 _startup_libs; \ - ${MAKE} -f Makefile.inc1 _prebuild_libs; \ - ${MAKE} -f Makefile.inc1 _generic_libs; +libraries: .MAKE + cd ${.CURDIR} && \ + ${MAKE} -f Makefile.inc1 _prereq_libs && \ + ${MAKE} -f Makefile.inc1 _startup_libs && \ + ${MAKE} -f Makefile.inc1 _prebuild_libs && \ + ${MAKE} -f Makefile.inc1 _generic_libs # # static libgcc.a prerequisite for shared libc @@ -1542,7 +1571,7 @@ lib/libradius__L: lib/libmd__L .endif .for _lib in ${_prereq_libs} -${_lib}__PL: .PHONY +${_lib}__PL: .PHONY .MAKE .if exists(${.CURDIR}/${_lib}) ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_lib} && \ @@ -1554,7 +1583,7 @@ ${_lib}__PL: .PHONY .endfor .for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs} -${_lib}__L: .PHONY +${_lib}__L: .PHONY .MAKE .if exists(${.CURDIR}/${_lib}) ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_lib} && \ @@ -1568,7 +1597,7 @@ ${_lib}__L: .PHONY # libpam is special: we need to build static PAM modules before # static PAM library, and dynamic PAM library before dynamic PAM # modules. -lib/libpam__L: .PHONY +lib/libpam__L: .PHONY .MAKE ${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \ cd ${.CURDIR}/lib/libpam && \ ${MAKE} DIRPRFX=lib/libpam/ obj && \ @@ -1583,7 +1612,7 @@ _generic_libs: ${_generic_libs:S/$/__L/} .for __target in all clean cleandepend cleandir depend includes obj .for entry in ${SUBDIR} -${entry}.${__target}__D: .PHONY +${entry}.${__target}__D: .PHONY .MAKE ${_+_}@set -e; if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \ ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \ edir=${entry}.${MACHINE_ARCH}; \ Modified: projects/virtio/ObsoleteFiles.inc ============================================================================== --- projects/virtio/ObsoleteFiles.inc Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/ObsoleteFiles.inc Sun Aug 11 22:06:10 2013 (r254232) @@ -38,10 +38,13 @@ # xargs -n1 | sort | uniq -d; # done +# 20130710: libkvm version bump +OLD_LIBS+=lib/libkvm.so.5 +OLD_LIBS+=usr/lib32/libkvm.so.5 # 20130623: dialog update from 1.1 to 1.2 OLD_LIBS+=usr/lib/libdialog.so.7 OLD_LIBS+=usr/lib32/libdialog.so.7 -# 20130616: vfs_mounted.9 removed +# 20130616: vfs_mount.9 removed OLD_FILES+=usr/share/man/man9/vfs_mount.9.gz # 20130614: remove CVS from base OLD_FILES+=usr/bin/cvs Modified: projects/virtio/UPDATING ============================================================================== --- projects/virtio/UPDATING Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/UPDATING Sun Aug 11 22:06:10 2013 (r254232) @@ -31,6 +31,63 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130806: + INVARIANTS option now enables DEBUG for code with OpenSolaris and + Illumos origin, including ZFS. If you have INVARIANTS in your + kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG + explicitly. + DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS) + locks if WITNESS option was set. Because that generated a lot of + witness(9) reports and all of them were believed to be false + positives, this is no longer done. New option OPENSOLARIS_WITNESS + can be used to achieve the previous behavior. + +20130806: + Timer values in IPv6 data structures now use time_uptime instead + of time_second. Although this is not a user-visible functional + change, userland utilities which directly use them---ndp(8), + rtadvd(8), and rtsold(8) in the base system---need to be updated + to r253970 or later. + +20130802: + find -delete can now delete the pathnames given as arguments, + instead of only files found below them or if the pathname did + not contain any slashes. Formerly, the following error message + would result: + + find: -delete: : relative path potentially not safe + + Deleting the pathnames given as arguments can be prevented + without error messages using -mindepth 1 or by changing + directory and passing "." as argument to find. This works in the + old as well as the new version of find. + +20130726: + Behavior of devfs rules path matching has been changed. + Pattern is now always matched against fully qualified devfs + path and slash characters must be explicitly matched by + slashes in pattern (FNM_PATHNAME). Rulesets involving devfs + subdirectories must be reviewed. + +20130716: + The default ARM ABI has changed to the ARM EABI. The old ABI is + incompatible with the ARM EABI and all programs and modules will + need to be rebuilt to work with a new kernel. + + To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set. + + NOTE: Support for the old ABI will be removed in the future and + users are advised to upgrade. + +20130709: + pkg_install has been disconnected from the build if you really need it + you should add WITH_PKGTOOLS in your src.conf(5). + +20130709: + Most of network statistics structures were changed to be able + keep 64-bits counters. Thus all tools, that work with networking + statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.) + 20130629: Fix targets that run multiple make's to use && rather than ; so that subsequent steps depend on success of previous. Modified: projects/virtio/bin/pkill/pkill.1 ============================================================================== --- projects/virtio/bin/pkill/pkill.1 Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/pkill/pkill.1 Sun Aug 11 22:06:10 2013 (r254232) @@ -29,7 +29,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 11, 2010 +.Dd August 9, 2013 .Dt PKILL 1 .Os .Sh NAME @@ -44,6 +44,7 @@ .Op Fl N Ar system .Op Fl P Ar ppid .Op Fl U Ar uid +.Op Fl c Ar class .Op Fl d Ar delim .Op Fl g Ar pgrp .Op Fl j Ar jid @@ -60,6 +61,7 @@ .Op Fl N Ar system .Op Fl P Ar ppid .Op Fl U Ar uid +.Op Fl c Ar class .Op Fl g Ar pgrp .Op Fl j Ar jid .Op Fl s Ar sid @@ -130,6 +132,9 @@ or process and all of its ancestors are excluded (unless .Fl v is used). +.It Fl c Ar class +Restrict matches to processes running with specified login class +.Ar class . .It Fl f Match against full argument lists. The default is to match against process names. Modified: projects/virtio/bin/pkill/pkill.c ============================================================================== --- projects/virtio/bin/pkill/pkill.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/pkill/pkill.c Sun Aug 11 22:06:10 2013 (r254232) @@ -79,12 +79,14 @@ enum listtype { LT_TTY, LT_PGRP, LT_JID, - LT_SID + LT_SID, + LT_CLASS }; struct list { SLIST_ENTRY(list) li_chain; long li_number; + char *li_name; }; SLIST_HEAD(listhead, list); @@ -116,6 +118,7 @@ static struct listhead ppidlist = SLIST_ static struct listhead tdevlist = SLIST_HEAD_INITIALIZER(tdevlist); static struct listhead sidlist = SLIST_HEAD_INITIALIZER(sidlist); static struct listhead jidlist = SLIST_HEAD_INITIALIZER(jidlist); +static struct listhead classlist = SLIST_HEAD_INITIALIZER(classlist); static void usage(void) __attribute__((__noreturn__)); static int killact(const struct kinfo_proc *); @@ -179,7 +182,7 @@ main(int argc, char **argv) execf = NULL; coref = _PATH_DEVNULL; - while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnoqs:t:u:vx")) != -1) + while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ac:d:fg:ij:lnoqs:t:u:vx")) != -1) switch (ch) { case 'D': debug_opt++; @@ -222,6 +225,10 @@ main(int argc, char **argv) case 'a': ancestors++; break; + case 'c': + makelist(&classlist, LT_CLASS, optarg); + criteria = 1; + break; case 'd': if (!pgrep) usage(); @@ -469,6 +476,20 @@ main(int argc, char **argv) continue; } + SLIST_FOREACH(li, &classlist, li_chain) { + /* + * We skip P_SYSTEM processes to match ps(1) output. + */ + if ((kp->ki_flag & P_SYSTEM) == 0 && + kp->ki_loginclass != NULL && + strcmp(kp->ki_loginclass, li->li_name) == 0) + break; + } + if (SLIST_FIRST(&classlist) != NULL && li == NULL) { + selected[i] = 0; + continue; + } + if (argc == 0) selected[i] = 1; } @@ -562,9 +583,9 @@ usage(void) fprintf(stderr, "usage: %s %s [-F pidfile] [-G gid] [-M core] [-N system]\n" - " [-P ppid] [-U uid] [-g pgrp] [-j jid] [-s sid]\n" - " [-t tty] [-u euid] pattern ...\n", getprogname(), - ustr); + " [-P ppid] [-U uid] [-c class] [-g pgrp] [-j jid]\n" + " [-s sid] [-t tty] [-u euid] pattern ...\n", + getprogname(), ustr); exit(STATUS_BADUSAGE); } @@ -664,8 +685,10 @@ makelist(struct listhead *head, enum lis SLIST_INSERT_HEAD(head, li, li_chain); empty = 0; - li->li_number = (uid_t)strtol(sp, &ep, 0); - if (*ep == '\0') { + if (type != LT_CLASS) + li->li_number = (uid_t)strtol(sp, &ep, 0); + + if (type != LT_CLASS && *ep == '\0') { switch (type) { case LT_PGRP: if (li->li_number == 0) @@ -750,6 +773,12 @@ foundtty: if ((st.st_mode & S_IFCHR) == errx(STATUS_BADUSAGE, "Invalid jail ID `%s'", sp); break; + case LT_CLASS: + li->li_number = -1; + li->li_name = strdup(sp); + if (li->li_name == NULL) + err(STATUS_ERROR, "Cannot allocate memory"); + break; default: usage(); } Modified: projects/virtio/bin/sh/Makefile ============================================================================== --- projects/virtio/bin/sh/Makefile Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/Makefile Sun Aug 11 22:06:10 2013 (r254232) @@ -8,7 +8,7 @@ SHSRCS= alias.c arith_yacc.c arith_yylex histedit.c input.c jobs.c kill.c mail.c main.c memalloc.c miscbltin.c \ mystring.c options.c output.c parser.c printf.c redir.c show.c \ test.c trap.c var.c -GENSRCS= builtins.c init.c nodes.c syntax.c +GENSRCS= builtins.c nodes.c syntax.c GENHDRS= builtins.h nodes.h syntax.h token.h SRCS= ${SHSRCS} ${GENSRCS} ${GENHDRS} @@ -30,26 +30,21 @@ WFORMAT=0 ${.CURDIR}/../test \ ${.CURDIR}/../../usr.bin/printf -CLEANFILES+= mkinit mkinit.o mknodes mknodes.o \ +CLEANFILES+= mknodes mknodes.o \ mksyntax mksyntax.o CLEANFILES+= ${GENSRCS} ${GENHDRS} -build-tools: mkinit mknodes mksyntax +build-tools: mknodes mksyntax .ORDER: builtins.c builtins.h builtins.c builtins.h: mkbuiltins builtins.def sh ${.CURDIR}/mkbuiltins ${.CURDIR} -init.c: mkinit alias.c eval.c exec.c input.c jobs.c options.c parser.c \ - redir.c trap.c var.c - ./mkinit ${.ALLSRC:S/^mkinit$//} - # XXX this is just to stop the default .c rule being used, so that the # intermediate object has a fixed name. # XXX we have a default .c rule, but no default .o rule. .o: ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} -mkinit: mkinit.o mknodes: mknodes.o mksyntax: mksyntax.o Modified: projects/virtio/bin/sh/TOUR ============================================================================== --- projects/virtio/bin/sh/TOUR Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/TOUR Sun Aug 11 22:06:10 2013 (r254232) @@ -25,38 +25,11 @@ programs is: program input files generates ------- ----------- --------- mkbuiltins builtins builtins.h builtins.c - mkinit *.c init.c mknodes nodetypes nodes.h nodes.c mksyntax - syntax.h syntax.c mktokens - token.h -There are undoubtedly too many of these. Mkinit searches all the -C source files for entries looking like: - - RESET { - x = 2; /* executed when the shell does a longjmp - back to the main command loop */ - } - -It pulls this code out into routines which are when particular -events occur. The intent is to improve modularity by isolating -the information about which modules need to be explicitly -initialized/reset within the modules themselves. - -Mkinit recognizes several constructs for placing declarations in -the init.c file. - INCLUDE "file.h" -includes a file. The storage class MKINIT makes a declaration -available in the init.c file, for example: - MKINIT int funcnest; /* depth of function calls */ -MKINIT alone on a line introduces a structure or union declara- -tion: - MKINIT - struct redirtab { - short renamed[10]; - }; -Preprocessor #define statements are copied to init.c without any -special action to request this. +There are undoubtedly too many of these. EXCEPTIONS: Code for dealing with exceptions appears in exceptions.c. The C language doesn't include exception handling, Modified: projects/virtio/bin/sh/eval.c ============================================================================== --- projects/virtio/bin/sh/eval.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/eval.c Sun Aug 11 22:06:10 2013 (r254232) @@ -76,7 +76,7 @@ __FBSDID("$FreeBSD$"); int evalskip; /* set if we are skipping commands */ int skipcount; /* number of levels to skip */ -MKINIT int loopnest; /* current loop nesting level */ +static int loopnest; /* current loop nesting level */ int funcnest; /* depth of function calls */ static int builtin_flags; /* evalcommand flags for builtins */ @@ -104,16 +104,13 @@ static void prehash(union node *); * Called to reset things after an exception. */ -#ifdef mkinit -INCLUDE "eval.h" - -RESET { +void +reseteval(void) +{ evalskip = 0; loopnest = 0; funcnest = 0; } -#endif - /* Modified: projects/virtio/bin/sh/eval.h ============================================================================== --- projects/virtio/bin/sh/eval.h Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/eval.h Sun Aug 11 22:06:10 2013 (r254232) @@ -46,6 +46,8 @@ struct backcmd { /* result of evalbackc struct job *jp; /* job structure for command */ }; +void reseteval(void); + /* flags in argument to evaltree/evalstring */ #define EV_EXIT 01 /* exit after evaluating tree */ #define EV_TESTED 02 /* exit status is checked; ignore -e flag */ Modified: projects/virtio/bin/sh/exec.c ============================================================================== --- projects/virtio/bin/sh/exec.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/exec.c Sun Aug 11 22:06:10 2013 (r254232) @@ -70,7 +70,6 @@ __FBSDID("$FreeBSD$"); #include "syntax.h" #include "memalloc.h" #include "error.h" -#include "init.h" #include "mystring.h" #include "show.h" #include "jobs.h" Modified: projects/virtio/bin/sh/input.c ============================================================================== --- projects/virtio/bin/sh/input.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/input.c Sun Aug 11 22:06:10 2013 (r254232) @@ -92,7 +92,7 @@ struct parsefile { int plinno = 1; /* input line number */ int parsenleft; /* copy of parsefile->nleft */ -MKINIT int parselleft; /* copy of parsefile->lleft */ +static int parselleft; /* copy of parsefile->lleft */ const char *parsenextc; /* copy of parsefile->nextc */ static char basebuf[BUFSIZ + 1];/* buffer for top level input file */ static struct parsefile basepf = { /* top level input file */ @@ -108,15 +108,12 @@ static void pushfile(void); static int preadfd(void); static void popstring(void); -#ifdef mkinit -INCLUDE "input.h" -INCLUDE "error.h" - -RESET { +void +resetinput(void) +{ popallfiles(); parselleft = parsenleft = 0; /* clear input buffer */ } -#endif /* Modified: projects/virtio/bin/sh/input.h ============================================================================== --- projects/virtio/bin/sh/input.h Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/input.h Sun Aug 11 22:06:10 2013 (r254232) @@ -47,6 +47,7 @@ extern const char *parsenextc; /* next c struct alias; struct parsefile; +void resetinput(void); char *pfgets(char *, int); int pgetc(void); int preadbuffer(void); Modified: projects/virtio/bin/sh/jobs.c ============================================================================== --- projects/virtio/bin/sh/jobs.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/jobs.c Sun Aug 11 22:06:10 2013 (r254232) @@ -77,8 +77,8 @@ __FBSDID("$FreeBSD$"); static struct job *jobtab; /* array of jobs */ static int njobs; /* size of array */ -MKINIT pid_t backgndpid = -1; /* pid of last background process */ -MKINIT struct job *bgjob = NULL; /* last background process */ +static pid_t backgndpid = -1; /* pid of last background process */ +static struct job *bgjob = NULL; /* last background process */ #if JOBS static struct job *jobmru; /* most recently used job list */ static pid_t initialpgrp; /* pgrp of shell on invocation */ @@ -116,7 +116,7 @@ static void showjob(struct job *, int); * Turn job control on and off. */ -MKINIT int jobctl; +static int jobctl; #if JOBS void Modified: projects/virtio/bin/sh/main.c ============================================================================== --- projects/virtio/bin/sh/main.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/main.c Sun Aug 11 22:06:10 2013 (r254232) @@ -68,10 +68,10 @@ __FBSDID("$FreeBSD$"); #include "show.h" #include "memalloc.h" #include "error.h" -#include "init.h" #include "mystring.h" #include "exec.h" #include "cd.h" +#include "redir.h" #include "builtins.h" int rootpid; @@ -79,6 +79,7 @@ int rootshell; struct jmploc main_handler; int localeisutf8, initial_localeisutf8; +static void reset(void); static void cmdloop(int); static void read_profile(const char *); static char *find_dot_file(char *); @@ -170,8 +171,8 @@ state3: if (minusc) { evalstring(minusc, sflag ? 0 : EV_EXIT); } +state4: if (sflag || minusc == NULL) { -state4: /* XXX ??? - why isn't this before the "if" statement */ cmdloop(1); } exitshell(exitstatus); @@ -179,6 +180,14 @@ state4: /* XXX ??? - why isn't this befo return 0; } +static void +reset(void) +{ + reseteval(); + resetinput(); + resetparser(); + resetredir(); +} /* * Read and execute commands. "Top" is nonzero for the top level command Modified: projects/virtio/bin/sh/output.c ============================================================================== --- projects/virtio/bin/sh/output.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/output.c Sun Aug 11 22:06:10 2013 (r254232) @@ -75,25 +75,6 @@ struct output memout = {NULL, 0, NULL, 0 struct output *out1 = &output; struct output *out2 = &errout; - - -#ifdef mkinit - -INCLUDE "output.h" -INCLUDE "memalloc.h" - -RESET { - out1 = &output; - out2 = &errout; - if (memout.buf != NULL) { - ckfree(memout.buf); - memout.buf = NULL; - } -} - -#endif - - void outcslow(int c, struct output *file) { Modified: projects/virtio/bin/sh/parser.c ============================================================================== --- projects/virtio/bin/sh/parser.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/parser.c Sun Aug 11 22:06:10 2013 (r254232) @@ -96,9 +96,9 @@ static struct heredoc *heredoclist; /* l static int doprompt; /* if set, prompt the user */ static int needprompt; /* true if interactive and at start of line */ static int lasttoken; /* last token read */ -MKINIT int tokpushback; /* last token pushed back */ +int tokpushback; /* last token pushed back */ static char *wordtext; /* text of last word returned by readtoken */ -MKINIT int checkkwd; /* 1 == check for kwds, 2 == also eat newlines */ +static int checkkwd; static struct nodelist *backquotelist; static union node *redirnode; static struct heredoc *heredoc; @@ -1819,13 +1819,13 @@ parsearith: { } /* end of readtoken */ - -#ifdef mkinit -RESET { +void +resetparser(void) +{ tokpushback = 0; checkkwd = 0; } -#endif + /* * Returns true if the text contains nothing to expand (no dollar signs Modified: projects/virtio/bin/sh/parser.h ============================================================================== --- projects/virtio/bin/sh/parser.h Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/parser.h Sun Aug 11 22:06:10 2013 (r254232) @@ -79,6 +79,7 @@ extern const char *const parsekwd[]; union node *parsecmd(int); void fixredir(union node *, const char *, int); +void resetparser(void); int goodname(const char *); int isassignment(const char *); char *getprompt(void *); Modified: projects/virtio/bin/sh/redir.c ============================================================================== --- projects/virtio/bin/sh/redir.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/redir.c Sun Aug 11 22:06:10 2013 (r254232) @@ -66,14 +66,13 @@ __FBSDID("$FreeBSD$"); #define CLOSED -1 /* fd was not open before redir */ -MKINIT struct redirtab { struct redirtab *next; int renamed[10]; }; -MKINIT struct redirtab *redirlist; +static struct redirtab *redirlist; /* * We keep track of whether or not fd0 has been redirected. This is for @@ -324,16 +323,13 @@ popredir(void) * Undo all redirections. Called on error or interrupt. */ -#ifdef mkinit - -INCLUDE "redir.h" - -RESET { +void +resetredir(void) +{ while (redirlist) popredir(); } -#endif /* Return true if fd 0 has already been redirected at least once. */ int Modified: projects/virtio/bin/sh/redir.h ============================================================================== --- projects/virtio/bin/sh/redir.h Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/redir.h Sun Aug 11 22:06:10 2013 (r254232) @@ -40,6 +40,7 @@ union node; void redirect(union node *, int); void popredir(void); +void resetredir(void); int fd0_redirected_p(void); void clearredir(void); Modified: projects/virtio/bin/sh/shell.h ============================================================================== --- projects/virtio/bin/sh/shell.h Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/shell.h Sun Aug 11 22:06:10 2013 (r254232) @@ -63,7 +63,6 @@ typedef intmax_t arith_t; #define ARITH_MAX INTMAX_MAX typedef void *pointer; -#define MKINIT /* empty */ #include Modified: projects/virtio/bin/sh/trap.c ============================================================================== --- projects/virtio/bin/sh/trap.c Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/bin/sh/trap.c Sun Aug 11 22:06:10 2013 (r254232) @@ -72,7 +72,7 @@ __FBSDID("$FreeBSD$"); #define S_RESET 5 /* temporary - to reset a hard ignored sig */ -MKINIT char sigmode[NSIG]; /* current value of signal */ +static char sigmode[NSIG]; /* current value of signal */ volatile sig_atomic_t pendingsig; /* indicates some signal received */ int in_dotrap; /* do we execute in a trap handler? */ static char *volatile trap[NSIG]; /* trap handler commands */ Modified: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl ============================================================================== --- projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl Sun Aug 11 21:54:20 2013 (r254231) +++ projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/cmd/scripts/dtest.pl Sun Aug 11 22:06:10 2013 (r254232) @@ -583,6 +583,8 @@ if ($opt_x) { die "$PNAME: failed to open $PNAME.$$.log: $!\n" unless (!$opt_l || open(LOG, ">$PNAME.$$.log")); +$ENV{'DTRACE_DEBUG_REGSET'} = 'true'; + if ($opt_g) { $ENV{'UMEM_DEBUG'} = 'default,verbose'; $ENV{'UMEM_LOGGING'} = 'fail,contents'; Copied: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d (from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d Sun Aug 11 22:06:10 2013 (r254232, copy of r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d) @@ -0,0 +1,35 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#pragma D option quiet + +/* + * Make sure the sizes of compatible keys doesn't affect the sort order. + */ + +BEGIN +{ + @[(int)1, 0] = sum(10); + @[(uint64_t)2, 0] = sum(20); + @[(int)3, 0] = sum(30); + @[(uint64_t)4, 0] = sum(40); + printa(@); + + exit(0); +} Copied: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out (from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out Sun Aug 11 22:06:10 2013 (r254232, copy of r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.sizedkeys.d.out) @@ -0,0 +1,6 @@ + + 1 0 10 + 2 0 20 + 3 0 30 + 4 0 40 + Copied: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out (from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out Sun Aug 11 22:06:10 2013 (r254232, copy of r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.basics.d.out) @@ -0,0 +1,8 @@ +The value of i is 6 +The value of i is 18 +The value of i is 72 +The value of i is 25920 +The value of i is 935761216 +The value of i is -91738734 +The value of i is -91738729 + Copied: projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d (from r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/virtio/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d Sun Aug 11 22:06:10 2013 (r254232, copy of r254230, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/arithmetic/tst.compcast.d) @@ -0,0 +1,50 @@ +/* + * CDDL HEADER START + * + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + * + * CDDL HEADER END + */ + +/* *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 09:03:35 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 15F5EDE; Mon, 12 Aug 2013 09:03:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 036A92635; Mon, 12 Aug 2013 09:03:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C93YV0005510; Mon, 12 Aug 2013 09:03:34 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C93YuZ005509; Mon, 12 Aug 2013 09:03:34 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308120903.r7C93YuZ005509@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 09:03:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254240 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 09:03:35 -0000 Author: mav Date: Mon Aug 12 09:03:34 2013 New Revision: 254240 URL: http://svnweb.freebsd.org/changeset/base/254240 Log: - Properly reimplement target and device lists traversal in async_process(). - Polish locking around async delivery. Though we still don't properly lock registration and delivery for consumers using SIM lock (few SIMs). Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 08:15:58 2013 (r254239) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 09:03:34 2013 (r254240) @@ -3942,30 +3942,87 @@ xpt_async_size(u_int32_t async_code) return (0); } +static int +xpt_async_process_dev(struct cam_ed *device, void *arg) +{ + union ccb *ccb = arg; + struct cam_path *path = ccb->ccb_h.path; + void *async_arg = ccb->casync.async_arg_ptr; + u_int32_t async_code = ccb->casync.async_code; + int relock; + + if (path->device != device + && path->device->lun_id != CAM_LUN_WILDCARD + && device->lun_id != CAM_LUN_WILDCARD) + return (1); + + /* + * The async callback could free the device. + * If it is a broadcast async, it doesn't hold + * device reference, so take our own reference. + */ + xpt_acquire_device(device); + + /* + * If async for specific device is to be delivered to + * the wildcard client, take the specific device lock. + * XXX: We may need a way for client to specify it. + */ + if ((device->lun_id == CAM_LUN_WILDCARD && + path->device->lun_id != CAM_LUN_WILDCARD) || + (device->target->target_id == CAM_TARGET_WILDCARD && + path->target->target_id != CAM_TARGET_WILDCARD)) { + mtx_unlock(&device->device_mtx); + xpt_path_lock(path); + relock = 1; + } else + relock = 0; + + (*(device->target->bus->xport->async))(async_code, + device->target->bus, device->target, device, async_arg); + xpt_async_bcast(&device->asyncs, async_code, path, async_arg); + + if (relock) { + xpt_path_unlock(path); + mtx_lock(&device->device_mtx); + } + xpt_release_device(device); + return (1); +} + +static int +xpt_async_process_tgt(struct cam_et *target, void *arg) +{ + union ccb *ccb = arg; + struct cam_path *path = ccb->ccb_h.path; + + if (path->target != target + && path->target->target_id != CAM_TARGET_WILDCARD + && target->target_id != CAM_TARGET_WILDCARD) + return (1); + + if (ccb->casync.async_code == AC_SENT_BDR) { + /* Update our notion of when the last reset occurred */ + microtime(&target->last_reset); + } + + return (xptdevicetraverse(target, NULL, xpt_async_process_dev, ccb)); +} + static void xpt_async_process(struct cam_periph *periph, union ccb *ccb) { struct cam_eb *bus; - struct cam_et *target, *next_target; - struct cam_ed *device, *next_device; struct cam_path *path; void *async_arg; u_int32_t async_code; path = ccb->ccb_h.path; + xpt_path_unlock(path); async_code = ccb->casync.async_code; async_arg = ccb->casync.async_arg_ptr; -// mtx_assert(path->bus->sim->mtx, MA_OWNED); CAM_DEBUG(path, CAM_DEBUG_TRACE | CAM_DEBUG_INFO, ("xpt_async(%s)\n", xpt_async_string(async_code))); - - /* - * Most async events come from a CAM interrupt context. In - * a few cases, the error recovery code at the peripheral layer, - * which may run from our SWI or a process context, may signal - * deferred events with a call to xpt_async. - */ - bus = path->bus; if (async_code == AC_BUS_RESET) { @@ -3973,61 +4030,25 @@ xpt_async_process(struct cam_periph *per microtime(&bus->last_reset); } - for (target = TAILQ_FIRST(&bus->et_entries); - target != NULL; - target = next_target) { - - next_target = TAILQ_NEXT(target, links); - - if (path->target != target - && path->target->target_id != CAM_TARGET_WILDCARD - && target->target_id != CAM_TARGET_WILDCARD) - continue; - - if (async_code == AC_SENT_BDR) { - /* Update our notion of when the last reset occurred */ - microtime(&path->target->last_reset); - } - - for (device = TAILQ_FIRST(&target->ed_entries); - device != NULL; - device = next_device) { - - next_device = TAILQ_NEXT(device, links); - - if (path->device != device - && path->device->lun_id != CAM_LUN_WILDCARD - && device->lun_id != CAM_LUN_WILDCARD) - continue; - /* - * The async callback could free the device. - * If it is a broadcast async, it doesn't hold - * device reference, so take our own reference. - */ - xpt_acquire_device(device); - (*(bus->xport->async))(async_code, bus, - target, device, - async_arg); - - xpt_async_bcast(&device->asyncs, async_code, - path, async_arg); - xpt_release_device(device); - } - } + xpttargettraverse(bus, NULL, xpt_async_process_tgt, ccb); /* * If this wasn't a fully wildcarded async, tell all * clients that want all async events. */ - if (bus != xpt_periph->path->bus) - xpt_async_bcast(&xpt_periph->path->device->asyncs, async_code, - path, async_arg); - if (path->device != NULL) + if (bus != xpt_periph->path->bus) { + xpt_path_lock(xpt_periph->path); + xpt_async_process_dev(xpt_periph->path->device, ccb); + xpt_path_unlock(xpt_periph->path); + } + + if (path->device != NULL && path->device->lun_id != CAM_LUN_WILDCARD) xpt_release_devq(path, 1, TRUE); else xpt_release_simq(path->bus->sim, TRUE); if (ccb->casync.async_arg_size > 0) free(async_arg, M_CAMXPT); + xpt_path_lock(path); xpt_free_path(path); xpt_free_ccb(ccb); } @@ -4094,7 +4115,7 @@ xpt_async(u_int32_t async_code, struct c ccb->casync.async_arg_size = size; } else if (size < 0) ccb->casync.async_arg_size = size; - if (path->device != NULL) + if (path->device != NULL && path->device->lun_id != CAM_LUN_WILDCARD) xpt_freeze_devq(path, 1); else xpt_freeze_simq(path->bus->sim, 1); @@ -4869,13 +4890,11 @@ xpt_register_async(int event, ac_callbac int xptpath = 0; if (path == NULL) { - mtx_lock(&xsoftc.xpt_lock); status = xpt_create_path(&path, /*periph*/NULL, CAM_XPT_PATH_ID, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); - if (status != CAM_REQ_CMP) { - mtx_unlock(&xsoftc.xpt_lock); + if (status != CAM_REQ_CMP) return (status); - } + xpt_path_lock(path); xptpath = 1; } @@ -4888,8 +4907,8 @@ xpt_register_async(int event, ac_callbac status = csa.ccb_h.status; if (xptpath) { + xpt_path_unlock(path); xpt_free_path(path); - mtx_unlock(&xsoftc.xpt_lock); } if ((status == CAM_REQ_CMP) && From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 09:17:47 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 378A6A1F; Mon, 12 Aug 2013 09:17:47 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 246F52733; Mon, 12 Aug 2013 09:17:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C9Hk0l010511; Mon, 12 Aug 2013 09:17:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C9Hkfp010510; Mon, 12 Aug 2013 09:17:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308120917.r7C9Hkfp010510@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 09:17:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254242 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 09:17:47 -0000 Author: mav Date: Mon Aug 12 09:17:46 2013 New Revision: 254242 URL: http://svnweb.freebsd.org/changeset/base/254242 Log: Make xpt_dev_async_default() to not complain if called for wildcard path. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 09:15:33 2013 (r254241) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 09:17:46 2013 (r254242) @@ -4127,6 +4127,14 @@ xpt_dev_async_default(u_int32_t async_co struct cam_et *target, struct cam_ed *device, void *async_arg) { + + /* + * We only need to handle events for real devices. + */ + if (target->target_id == CAM_TARGET_WILDCARD + || device->lun_id == CAM_LUN_WILDCARD) + return; + printf("%s called\n", __func__); } From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 10:15:10 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C25DCEA5; Mon, 12 Aug 2013 10:15:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AFAED2C36; Mon, 12 Aug 2013 10:15:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CAFAbm033147; Mon, 12 Aug 2013 10:15:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CAF9KJ033143; Mon, 12 Aug 2013 10:15:09 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121015.r7CAF9KJ033143@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 10:15:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254246 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 10:15:10 -0000 Author: mav Date: Mon Aug 12 10:15:09 2013 New Revision: 254246 URL: http://svnweb.freebsd.org/changeset/base/254246 Log: Revert r254226. We can't create per-SIM threads while holding SIM lock. Modified: projects/camlock/sys/cam/cam_sim.c projects/camlock/sys/cam/cam_sim.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h Modified: projects/camlock/sys/cam/cam_sim.c ============================================================================== --- projects/camlock/sys/cam/cam_sim.c Mon Aug 12 10:11:10 2013 (r254245) +++ projects/camlock/sys/cam/cam_sim.c Mon Aug 12 10:15:09 2013 (r254246) @@ -33,7 +33,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -66,7 +65,6 @@ cam_sim_alloc(sim_action_func sim_action int max_tagged_dev_transactions, struct cam_devq *queue) { struct cam_sim *sim; - int error; if (mtx == NULL) return (NULL); @@ -99,13 +97,7 @@ cam_sim_alloc(sim_action_func sim_action } mtx_init(&sim->sim_doneq_mtx, "CAM doneq", NULL, MTX_DEF); TAILQ_INIT(&sim->sim_doneq); - error = kproc_kthread_add(xpt_done_td, sim, &cam_proc, NULL, 0, 0, - "cam", "%s%d", sim_name, unit); - if (error != 0) { - mtx_destroy(&sim->sim_doneq_mtx); - free(sim, M_CAMSIM); - return (NULL); - } + return (sim); } @@ -122,12 +114,7 @@ cam_sim_free(struct cam_sim *sim, int fr } KASSERT(sim->refcount == 0, ("sim->refcount == 0")); - mtx_lock(&sim->sim_doneq_mtx); - sim->sim_doneq_flags |= CAM_SIM_DQ_EXIT; - wakeup(&sim->sim_doneq); - mtx_unlock(&sim->sim_doneq_mtx); - while (sim->sim_doneq_flags & CAM_SIM_DQ_EXIT) - msleep(&sim->sim_doneq_flags, sim->mtx, PRIBIO, "simfree2", 0); + if (free_devq) cam_simq_free(sim->devq); mtx_destroy(&sim->sim_doneq_mtx); Modified: projects/camlock/sys/cam/cam_sim.h ============================================================================== --- projects/camlock/sys/cam/cam_sim.h Mon Aug 12 10:11:10 2013 (r254245) +++ projects/camlock/sys/cam/cam_sim.h Mon Aug 12 10:15:09 2013 (r254246) @@ -97,7 +97,6 @@ struct cam_sim { TAILQ_HEAD(, ccb_hdr) sim_doneq; struct mtx sim_doneq_mtx; int sim_doneq_flags; -#define CAM_SIM_DQ_EXIT 0x01 #define CAM_SIM_DQ_ONQ 0x04 #define CAM_SIM_DQ_POLLED 0x08 #define CAM_SIM_DQ_BATCH 0x10 Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 10:11:10 2013 (r254245) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 10:15:09 2013 (r254246) @@ -156,7 +156,15 @@ TUNABLE_INT("kern.cam.boot_delay", &xsof SYSCTL_INT(_kern_cam, OID_AUTO, boot_delay, CTLFLAG_RDTUN, &xsoftc.boot_delay, 0, "Bus registration wait time"); -struct proc *cam_proc; +/* Queues for our software interrupt handler */ +typedef TAILQ_HEAD(cam_isrq, ccb_hdr) cam_isrq_t; +typedef TAILQ_HEAD(cam_simq, cam_sim) cam_simq_t; +static cam_simq_t cam_simq; +static struct mtx cam_simq_lock; + +/* Pointers to software interrupt handlers */ +static void *cambio_ih; + struct cam_periph *xpt_periph; static periph_init_t xpt_periph_init; @@ -241,6 +249,7 @@ static int xpt_schedule_dev(struct camq static xpt_devicefunc_t xptpassannouncefunc; static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); +static void camisr(void *); static void camisr_runqueue(struct cam_sim *); static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus); @@ -832,10 +841,12 @@ xpt_init(void *dummy) cam_status status; TAILQ_INIT(&xsoftc.xpt_busses); + TAILQ_INIT(&cam_simq); TAILQ_INIT(&xsoftc.ccb_scanq); STAILQ_INIT(&xsoftc.highpowerq); xsoftc.num_highpower = CAM_MAX_HIGHPOWER; + mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); xsoftc.xpt_taskq = taskqueue_create("CAM XPT task", M_WAITOK, @@ -893,6 +904,8 @@ xpt_init(void *dummy) path, NULL, 0, xpt_sim); xpt_free_path(path); mtx_unlock(&xsoftc.xpt_lock); + /* Install our software interrupt handlers */ + swi_add(NULL, "cambio", camisr, NULL, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih); /* * Register a callback for when interrupts are enabled. */ @@ -4284,7 +4297,7 @@ void xpt_done(union ccb *done_ccb) { struct cam_sim *sim; - int run; + int first; CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_done\n")); if ((done_ccb->ccb_h.func_code & XPT_FC_QUEUED) != 0) { @@ -4299,13 +4312,16 @@ xpt_done(union ccb *done_ccb) done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; if ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | CAM_SIM_DQ_POLLED | CAM_SIM_DQ_BATCH)) == 0) { + mtx_lock(&cam_simq_lock); + first = TAILQ_EMPTY(&cam_simq); + TAILQ_INSERT_TAIL(&cam_simq, sim, links); + mtx_unlock(&cam_simq_lock); sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; - run = 1; } else - run = 0; + first = 0; mtx_unlock(&sim->sim_doneq_mtx); - if (run) - wakeup(&sim->sim_doneq); + if (first) + swi_sched(cambio_ih, 0); } } @@ -4812,8 +4828,7 @@ xpt_config(void *arg) callout_reset(&xsoftc.boot_callout, hz * xsoftc.boot_delay / 1000, xpt_boot_delay, NULL); /* Fire up rescan thread. */ - if (kproc_kthread_add(xpt_scanner_thread, NULL, &cam_proc, NULL, 0, 0, - "cam", "scanner")) { + if (kproc_create(xpt_scanner_thread, NULL, NULL, 0, 0, "xpt_thrd")) { printf("xpt_config: failed to create rescan thread.\n"); } } @@ -5037,30 +5052,25 @@ xpt_path_mtx(struct cam_path *path) return (&path->device->device_mtx); } -void -xpt_done_td(void *arg) +static void +camisr(void *dummy) { - struct cam_sim *sim = arg; + cam_simq_t queue; + struct cam_sim *sim; - mtx_lock(&sim->sim_doneq_mtx); - while (1) { - if (TAILQ_EMPTY(&sim->sim_doneq)) { - if (sim->sim_doneq_flags & CAM_SIM_DQ_EXIT) { - mtx_unlock(&sim->sim_doneq_mtx); - CAM_SIM_LOCK(sim); - sim->sim_doneq_flags &= ~CAM_SIM_DQ_EXIT; - wakeup(&sim->sim_doneq_flags); - CAM_SIM_UNLOCK(sim); - kthread_exit(); - } - msleep(&sim->sim_doneq, &sim->sim_doneq_mtx, PRIBIO, - "-", 0); - continue; + mtx_lock(&cam_simq_lock); + TAILQ_INIT(&queue); + while (!TAILQ_EMPTY(&cam_simq)) { + TAILQ_CONCAT(&queue, &cam_simq, links); + mtx_unlock(&cam_simq_lock); + + while ((sim = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, sim, links); + camisr_runqueue(sim); } - mtx_unlock(&sim->sim_doneq_mtx); - camisr_runqueue(sim); - mtx_lock(&sim->sim_doneq_mtx); + mtx_lock(&cam_simq_lock); } + mtx_unlock(&cam_simq_lock); } static void Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Mon Aug 12 10:11:10 2013 (r254245) +++ projects/camlock/sys/cam/cam_xpt.h Mon Aug 12 10:15:09 2013 (r254246) @@ -62,7 +62,6 @@ struct async_node { SLIST_HEAD(async_list, async_node); SLIST_HEAD(periph_list, cam_periph); -extern struct proc *cam_proc; void xpt_action(union ccb *new_ccb); void xpt_action_default(union ccb *new_ccb); @@ -124,7 +123,6 @@ void xpt_copy_path(struct cam_path *ne struct cam_path *path); void xpt_release_path(struct cam_path *path); -void xpt_done_td(void *); #endif /* _KERNEL */ From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 11:41:39 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DB8F0D1F; Mon, 12 Aug 2013 11:41:39 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C9998257C; Mon, 12 Aug 2013 11:41:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CBfdjR065565; Mon, 12 Aug 2013 11:41:39 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CBfd5i065564; Mon, 12 Aug 2013 11:41:39 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121141.r7CBfd5i065564@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 11:41:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254247 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 11:41:39 -0000 Author: mav Date: Mon Aug 12 11:41:39 2013 New Revision: 254247 URL: http://svnweb.freebsd.org/changeset/base/254247 Log: Small addition to r254240. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 10:15:09 2013 (r254246) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 11:41:39 2013 (r254247) @@ -3984,7 +3984,9 @@ xpt_async_process_dev(struct cam_ed *dev if ((device->lun_id == CAM_LUN_WILDCARD && path->device->lun_id != CAM_LUN_WILDCARD) || (device->target->target_id == CAM_TARGET_WILDCARD && - path->target->target_id != CAM_TARGET_WILDCARD)) { + path->target->target_id != CAM_TARGET_WILDCARD) || + (device->target->bus->path_id == CAM_BUS_WILDCARD && + path->target->bus->path_id != CAM_BUS_WILDCARD)) { mtx_unlock(&device->device_mtx); xpt_path_lock(path); relock = 1; From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 14:30:12 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3E63B535; Mon, 12 Aug 2013 14:30:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2C1B12230; Mon, 12 Aug 2013 14:30:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CEUCXs029908; Mon, 12 Aug 2013 14:30:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CEUCWo029907; Mon, 12 Aug 2013 14:30:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121430.r7CEUCWo029907@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 14:30:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254249 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 14:30:12 -0000 Author: mav Date: Mon Aug 12 14:30:11 2013 New Revision: 254249 URL: http://svnweb.freebsd.org/changeset/base/254249 Log: Take a lock for the bus wildcard path inside xptsetasyncbusfunc(). Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 13:52:15 2013 (r254248) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 14:30:11 2013 (r254249) @@ -2374,12 +2374,14 @@ xptsetasyncbusfunc(struct cam_eb *bus, v bus->sim->path_id, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); + xpt_path_lock(&path); xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); csa->callback(csa->callback_arg, AC_PATH_REGISTERED, &path, &cpi); + xpt_path_unlock(&path); xpt_release_path(&path); return(1); From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 15:35:10 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A90B485B; Mon, 12 Aug 2013 15:35:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9704D275F; Mon, 12 Aug 2013 15:35:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CFZAmL053701; Mon, 12 Aug 2013 15:35:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CFZAYd053700; Mon, 12 Aug 2013 15:35:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121535.r7CFZAYd053700@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 15:35:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254250 - projects/camlock/sys/cam/scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 15:35:10 -0000 Author: mav Date: Mon Aug 12 15:35:10 2013 New Revision: 254250 URL: http://svnweb.freebsd.org/changeset/base/254250 Log: Switch targ(4) to using new per-device lock. Modified: projects/camlock/sys/cam/scsi/scsi_target.c Modified: projects/camlock/sys/cam/scsi/scsi_target.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_target.c Mon Aug 12 14:30:11 2013 (r254249) +++ projects/camlock/sys/cam/scsi/scsi_target.c Mon Aug 12 15:35:10 2013 (r254250) @@ -236,7 +236,6 @@ targioctl(struct cdev *dev, u_long cmd, { struct ioc_enable_lun *new_lun; struct cam_path *path; - struct cam_sim *sim; new_lun = (struct ioc_enable_lun *)addr; status = xpt_create_path(&path, /*periph*/NULL, @@ -247,12 +246,11 @@ targioctl(struct cdev *dev, u_long cmd, printf("Couldn't create path, status %#x\n", status); break; } - sim = xpt_path_sim(path); - mtx_lock(sim->mtx); + xpt_path_lock(path); status = targenable(softc, path, new_lun->grp6_len, new_lun->grp7_len); + xpt_path_unlock(path); xpt_free_path(path); - mtx_unlock(sim->mtx); break; } case TARGIOCDISABLE: From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 19:42:26 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1513E93D; Mon, 12 Aug 2013 19:42:26 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0224A26A5; Mon, 12 Aug 2013 19:42:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CJgPvF048299; Mon, 12 Aug 2013 19:42:25 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CJgPvL048297; Mon, 12 Aug 2013 19:42:25 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121942.r7CJgPvL048297@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 19:42:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254254 - projects/camlock/sys/cam/ctl X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 19:42:26 -0000 Author: mav Date: Mon Aug 12 19:42:25 2013 New Revision: 254254 URL: http://svnweb.freebsd.org/changeset/base/254254 Log: Switch CTL to the new per-device locks. I am not sure if it is completely correct, at least lun_softc_list is not locked, but it builds and seems like working at least locally. Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c projects/camlock/sys/cam/ctl/scsi_ctl.c Modified: projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c ============================================================================== --- projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Mon Aug 12 19:16:55 2013 (r254253) +++ projects/camlock/sys/cam/ctl/ctl_frontend_cam_sim.c Mon Aug 12 19:42:25 2013 (r254254) @@ -504,14 +504,9 @@ static void cfcs_done(union ctl_io *io) { union ccb *ccb; - struct cfcs_softc *softc; - struct cam_sim *sim; ccb = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; - sim = xpt_path_sim(ccb->ccb_h.path); - softc = (struct cfcs_softc *)cam_sim_softc(sim); - /* * At this point we should have status. If we don't, that's a bug. */ @@ -550,10 +545,7 @@ cfcs_done(union ctl_io *io) break; } - mtx_lock(sim->mtx); xpt_done(ccb); - mtx_unlock(sim->mtx); - ctl_free_io(io); } Modified: projects/camlock/sys/cam/ctl/scsi_ctl.c ============================================================================== --- projects/camlock/sys/cam/ctl/scsi_ctl.c Mon Aug 12 19:16:55 2013 (r254253) +++ projects/camlock/sys/cam/ctl/scsi_ctl.c Mon Aug 12 19:42:25 2013 (r254254) @@ -319,7 +319,6 @@ ctlfeasync(void *callback_arg, uint32_t #ifdef CTLFE_INIT_ENABLE if (ctlfe_num_targets >= ctlfe_max_targets) { union ccb *ccb; - struct cam_sim *sim; ccb = (union ccb *)malloc(sizeof(*ccb), M_TEMP, M_NOWAIT | M_ZERO); @@ -327,18 +326,12 @@ ctlfeasync(void *callback_arg, uint32_t printf("%s: unable to malloc CCB!\n", __func__); return; } - xpt_setup_ccb(&ccb->ccb_h, cpi->ccb_h.path, - CAM_PRIORITY_NONE); - - sim = xpt_path_sim(cpi->ccb_h.path); + xpt_setup_ccb(&ccb->ccb_h, path, CAM_PRIORITY_NONE); ccb->ccb_h.func_code = XPT_SET_SIM_KNOB; ccb->knob.xport_specific.valid = KNOB_VALID_ROLE; ccb->knob.xport_specific.fc.role = KNOB_ROLE_INITIATOR; - /* We should hold the SIM lock here */ - mtx_assert(sim->mtx, MA_OWNED); - xpt_action(ccb); if ((ccb->ccb_h.status & CAM_STATUS_MASK) != @@ -380,7 +373,7 @@ ctlfeasync(void *callback_arg, uint32_t } bus_softc->path_id = cpi->ccb_h.path_id; - bus_softc->sim = xpt_path_sim(cpi->ccb_h.path); + bus_softc->sim = xpt_path_sim(path); STAILQ_INIT(&bus_softc->lun_softc_list); fe = &bus_softc->fe; @@ -549,7 +542,8 @@ ctlferegister(struct cam_periph *periph, TAILQ_INIT(&softc->work_queue); softc->periph = periph; - callout_init_mtx(&softc->dma_callout, sim->mtx, /*flags*/ 0); + callout_init_mtx(&softc->dma_callout, xpt_path_mtx(periph->path), + /*flags*/ 0); periph->softc = softc; xpt_setup_ccb(&en_lun_ccb.ccb_h, periph->path, CAM_PRIORITY_NONE); @@ -1660,17 +1654,12 @@ ctlfe_onoffline(void *arg, int online) union ccb *ccb; cam_status status; struct cam_path *path; - struct cam_sim *sim; int set_wwnn; bus_softc = (struct ctlfe_softc *)arg; set_wwnn = 0; - sim = bus_softc->sim; - - mtx_assert(sim->mtx, MA_OWNED); - status = xpt_create_path(&path, /*periph*/ NULL, bus_softc->path_id, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); if (status != CAM_REQ_CMP) { @@ -1835,8 +1824,6 @@ ctlfe_online(void *arg) bus_softc = (struct ctlfe_softc *)arg; sim = bus_softc->sim; - CAM_SIM_LOCK(sim); - /* * Create the wildcard LUN before bringing the port online. */ @@ -1846,7 +1833,6 @@ ctlfe_online(void *arg) if (status != CAM_REQ_CMP) { printf("%s: unable to create path for wildcard periph\n", __func__); - CAM_SIM_UNLOCK(sim); return; } @@ -1856,10 +1842,10 @@ ctlfe_online(void *arg) xpt_print(path, "%s: unable to allocate softc for " "wildcard periph\n", __func__); xpt_free_path(path); - CAM_SIM_UNLOCK(sim); return; } + xpt_path_lock(path); lun_softc->parent_softc = bus_softc; lun_softc->flags |= CTLFE_LUN_WILDCARD; @@ -1887,11 +1873,10 @@ ctlfe_online(void *arg) entry->status_text : "Unknown", status); } - xpt_free_path(path); - ctlfe_onoffline(arg, /*online*/ 1); - CAM_SIM_UNLOCK(sim); + xpt_path_unlock(path); + xpt_free_path(path); } static void @@ -1906,10 +1891,6 @@ ctlfe_offline(void *arg) bus_softc = (struct ctlfe_softc *)arg; sim = bus_softc->sim; - CAM_SIM_LOCK(sim); - - ctlfe_onoffline(arg, /*online*/ 0); - /* * Disable the wildcard LUN for this port now that we have taken * the port offline. @@ -1924,13 +1905,15 @@ ctlfe_offline(void *arg) return; } + xpt_path_lock(path); + + ctlfe_onoffline(arg, /*online*/ 0); if ((periph = cam_periph_find(path, "ctl")) != NULL) cam_periph_invalidate(periph); + xpt_path_unlock(path); xpt_free_path(path); - - CAM_SIM_UNLOCK(sim); } static int @@ -1973,13 +1956,13 @@ ctlfe_lun_enable(void *arg, struct ctl_i } softc = malloc(sizeof(*softc), M_CTLFE, M_WAITOK | M_ZERO); - CAM_SIM_LOCK(sim); + xpt_path_lock(path); periph = cam_periph_find(path, "ctl"); if (periph != NULL) { /* We've already got a periph, no need to alloc a new one. */ + xpt_path_unlock(path); xpt_free_path(path); free(softc, M_CTLFE); - CAM_SIM_UNLOCK(sim); return (0); } @@ -1997,10 +1980,8 @@ ctlfe_lun_enable(void *arg, struct ctl_i 0, softc); + xpt_path_unlock(path); xpt_free_path(path); - - CAM_SIM_UNLOCK(sim); - return (0); } @@ -2018,7 +1999,6 @@ ctlfe_lun_disable(void *arg, struct ctl_ softc = (struct ctlfe_softc *)arg; sim = softc->sim; - CAM_SIM_LOCK(sim); STAILQ_FOREACH(lun_softc, &softc->lun_softc_list, links) { struct cam_path *path; @@ -2030,16 +2010,14 @@ ctlfe_lun_disable(void *arg, struct ctl_ } } if (lun_softc == NULL) { - CAM_SIM_UNLOCK(sim); printf("%s: can't find target %d lun %d\n", __func__, targ_id.id, lun_id); return (1); } + cam_periph_lock(lun_softc->periph); cam_periph_invalidate(lun_softc->periph); - - CAM_SIM_UNLOCK(sim); - + cam_periph_unlock(lun_softc->periph); return (0); } @@ -2180,17 +2158,13 @@ static void ctlfe_datamove_done(union ctl_io *io) { union ccb *ccb; - struct cam_sim *sim; struct cam_periph *periph; struct ctlfe_lun_softc *softc; ccb = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; - sim = xpt_path_sim(ccb->ccb_h.path); - - CAM_SIM_LOCK(sim); - periph = xpt_path_periph(ccb->ccb_h.path); + cam_periph_lock(periph); softc = (struct ctlfe_lun_softc *)periph->softc; @@ -2235,7 +2209,7 @@ ctlfe_datamove_done(union ctl_io *io) xpt_schedule(periph, /*priority*/ 1); } - CAM_SIM_UNLOCK(sim); + cam_periph_unlock(periph); } static void From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 19:43:49 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3A736B46; Mon, 12 Aug 2013 19:43:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0E42A26CA; Mon, 12 Aug 2013 19:43:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CJhmCL048560; Mon, 12 Aug 2013 19:43:48 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CJhmDC048559; Mon, 12 Aug 2013 19:43:48 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121943.r7CJhmDC048559@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 19:43:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254255 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 19:43:49 -0000 Author: mav Date: Mon Aug 12 19:43:48 2013 New Revision: 254255 URL: http://svnweb.freebsd.org/changeset/base/254255 Log: Remove mtx_assert() from xpt_path_periph(). Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 19:42:25 2013 (r254254) +++ projects/camlock/sys/cam/cam_xpt.c Mon Aug 12 19:43:48 2013 (r254255) @@ -3621,7 +3621,6 @@ struct cam_periph* xpt_path_periph(struct cam_path *path) { - xpt_path_assert(path, MA_OWNED); return (path->periph); } From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 19:50:12 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5F213D13; Mon, 12 Aug 2013 19:50:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 48F3B270E; Mon, 12 Aug 2013 19:50:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CJoCfB049830; Mon, 12 Aug 2013 19:50:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CJo9k1049811; Mon, 12 Aug 2013 19:50:09 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308121950.r7CJo9k1049811@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 19:50:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254256 - in projects/camlock: . bin/pkill cddl/contrib/opensolaris/cmd/ztest cddl/contrib/opensolaris/lib/libdtrace/common contrib/bmake contrib/nvi contrib/nvi/build contrib/nvi/catal... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 19:50:12 -0000 Author: mav Date: Mon Aug 12 19:50:08 2013 New Revision: 254256 URL: http://svnweb.freebsd.org/changeset/base/254256 Log: MFC @ r254255 Added: projects/camlock/contrib/nvi/catalog/zh_CN.GB2312.base - copied unchanged from r254255, head/contrib/nvi/catalog/zh_CN.GB2312.base projects/camlock/contrib/nvi/catalog/zh_CN.GB2312.owner - copied unchanged from r254255, head/contrib/nvi/catalog/zh_CN.GB2312.owner projects/camlock/contrib/nvi/cl/extern.h - copied unchanged from r254255, head/contrib/nvi/cl/extern.h projects/camlock/contrib/nvi/common/conv.c - copied unchanged from r254255, head/contrib/nvi/common/conv.c projects/camlock/contrib/nvi/common/conv.h - copied unchanged from r254255, head/contrib/nvi/common/conv.h projects/camlock/contrib/nvi/common/encoding.c - copied unchanged from r254255, head/contrib/nvi/common/encoding.c projects/camlock/contrib/nvi/common/extern.h - copied unchanged from r254255, head/contrib/nvi/common/extern.h projects/camlock/contrib/nvi/common/multibyte.h - copied unchanged from r254255, head/contrib/nvi/common/multibyte.h projects/camlock/contrib/nvi/common/options_def.h - copied unchanged from r254255, head/contrib/nvi/common/options_def.h projects/camlock/contrib/nvi/ex/ex_def.h - copied unchanged from r254255, head/contrib/nvi/ex/ex_def.h projects/camlock/contrib/nvi/ex/extern.h - copied unchanged from r254255, head/contrib/nvi/ex/extern.h projects/camlock/contrib/nvi/regex/ - copied from r254255, head/contrib/nvi/regex/ projects/camlock/contrib/nvi/vi/extern.h - copied unchanged from r254255, head/contrib/nvi/vi/extern.h projects/camlock/share/man/man9/vm_page_busy.9 - copied unchanged from r254255, head/share/man/man9/vm_page_busy.9 projects/camlock/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu - copied unchanged from r254255, head/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu projects/camlock/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu - copied unchanged from r254255, head/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu projects/camlock/sys/dev/random/random_adaptors.c - copied unchanged from r254255, head/sys/dev/random/random_adaptors.c projects/camlock/sys/dev/random/random_adaptors.h - copied unchanged from r254255, head/sys/dev/random/random_adaptors.h projects/camlock/sys/modules/iwnfw/iwn2030/ - copied from r254255, head/sys/modules/iwnfw/iwn2030/ projects/camlock/tools/regression/lib/libc/stdio/test-mkostemp.c - copied unchanged from r254255, head/tools/regression/lib/libc/stdio/test-mkostemp.c projects/camlock/tools/tools/usbtest/ - copied from r254255, head/tools/tools/usbtest/ projects/camlock/usr.bin/vi/catalog/ - copied from r254255, head/usr.bin/vi/catalog/ Deleted: projects/camlock/contrib/nvi/FAQ projects/camlock/contrib/nvi/LAYOUT projects/camlock/contrib/nvi/build/ projects/camlock/contrib/nvi/catalog/dutch projects/camlock/contrib/nvi/catalog/dutch.check projects/camlock/contrib/nvi/catalog/english projects/camlock/contrib/nvi/catalog/english.base projects/camlock/contrib/nvi/catalog/english.check projects/camlock/contrib/nvi/catalog/french projects/camlock/contrib/nvi/catalog/french.check projects/camlock/contrib/nvi/catalog/german projects/camlock/contrib/nvi/catalog/german.check projects/camlock/contrib/nvi/catalog/polish projects/camlock/contrib/nvi/catalog/polish.check projects/camlock/contrib/nvi/catalog/ru_RU.KOI8-R projects/camlock/contrib/nvi/catalog/ru_RU.KOI8-R.check projects/camlock/contrib/nvi/catalog/spanish projects/camlock/contrib/nvi/catalog/spanish.check projects/camlock/contrib/nvi/catalog/swedish projects/camlock/contrib/nvi/catalog/swedish.check projects/camlock/contrib/nvi/catalog/uk_UA.KOI8-U projects/camlock/contrib/nvi/cl/cl_bsd.c projects/camlock/contrib/nvi/clib/ projects/camlock/contrib/nvi/common/api.c projects/camlock/contrib/nvi/ex/ex_perl.c projects/camlock/contrib/nvi/ex/ex_tcl.c projects/camlock/contrib/nvi/include/ projects/camlock/contrib/nvi/ip/ projects/camlock/contrib/nvi/ip_cl/ projects/camlock/contrib/nvi/perl_api/ projects/camlock/contrib/nvi/perl_scripts/ projects/camlock/contrib/nvi/tcl_api/ projects/camlock/contrib/nvi/tcl_scripts/ projects/camlock/contrib/nvi/tk/ projects/camlock/share/man/man9/vm_page_io.9 projects/camlock/share/man/man9/vm_page_sleep_if_busy.9 projects/camlock/share/man/man9/vm_page_wakeup.9 projects/camlock/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.3.fw.uu projects/camlock/usr.bin/vi/port.h Modified: projects/camlock/Makefile.inc1 projects/camlock/bin/pkill/pkill.1 projects/camlock/bin/pkill/pkill.c projects/camlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/camlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/camlock/contrib/bmake/parse.c projects/camlock/contrib/nvi/LICENSE projects/camlock/contrib/nvi/README projects/camlock/contrib/nvi/catalog/Makefile projects/camlock/contrib/nvi/catalog/README projects/camlock/contrib/nvi/catalog/dump.c projects/camlock/contrib/nvi/catalog/dutch.base (contents, props changed) projects/camlock/contrib/nvi/catalog/french.base (contents, props changed) projects/camlock/contrib/nvi/catalog/german.base (contents, props changed) projects/camlock/contrib/nvi/catalog/german.owner projects/camlock/contrib/nvi/catalog/polish.base (contents, props changed) projects/camlock/contrib/nvi/catalog/ru_RU.KOI8-R.base (contents, props changed) projects/camlock/contrib/nvi/catalog/ru_RU.KOI8-R.owner projects/camlock/contrib/nvi/catalog/spanish.base (contents, props changed) projects/camlock/contrib/nvi/catalog/swedish.base (contents, props changed) projects/camlock/contrib/nvi/catalog/uk_UA.KOI8-U.base (contents, props changed) projects/camlock/contrib/nvi/cl/README.signal projects/camlock/contrib/nvi/cl/cl.h projects/camlock/contrib/nvi/cl/cl_funcs.c projects/camlock/contrib/nvi/cl/cl_main.c projects/camlock/contrib/nvi/cl/cl_read.c projects/camlock/contrib/nvi/cl/cl_screen.c projects/camlock/contrib/nvi/cl/cl_term.c projects/camlock/contrib/nvi/common/args.h projects/camlock/contrib/nvi/common/common.h projects/camlock/contrib/nvi/common/cut.c projects/camlock/contrib/nvi/common/cut.h projects/camlock/contrib/nvi/common/delete.c projects/camlock/contrib/nvi/common/exf.c projects/camlock/contrib/nvi/common/exf.h projects/camlock/contrib/nvi/common/gs.h projects/camlock/contrib/nvi/common/key.c projects/camlock/contrib/nvi/common/key.h projects/camlock/contrib/nvi/common/line.c projects/camlock/contrib/nvi/common/log.c projects/camlock/contrib/nvi/common/main.c projects/camlock/contrib/nvi/common/mark.c projects/camlock/contrib/nvi/common/mark.h projects/camlock/contrib/nvi/common/mem.h projects/camlock/contrib/nvi/common/msg.c projects/camlock/contrib/nvi/common/msg.h projects/camlock/contrib/nvi/common/options.c projects/camlock/contrib/nvi/common/options.h projects/camlock/contrib/nvi/common/options_f.c projects/camlock/contrib/nvi/common/put.c projects/camlock/contrib/nvi/common/recover.c projects/camlock/contrib/nvi/common/screen.c projects/camlock/contrib/nvi/common/screen.h projects/camlock/contrib/nvi/common/search.c projects/camlock/contrib/nvi/common/seq.c projects/camlock/contrib/nvi/common/seq.h projects/camlock/contrib/nvi/common/util.c projects/camlock/contrib/nvi/common/util.h projects/camlock/contrib/nvi/docs/USD.doc/vi.man/vi.1 projects/camlock/contrib/nvi/ex/ex.c projects/camlock/contrib/nvi/ex/ex.h projects/camlock/contrib/nvi/ex/ex_abbrev.c projects/camlock/contrib/nvi/ex/ex_append.c projects/camlock/contrib/nvi/ex/ex_args.c projects/camlock/contrib/nvi/ex/ex_argv.c projects/camlock/contrib/nvi/ex/ex_at.c projects/camlock/contrib/nvi/ex/ex_bang.c projects/camlock/contrib/nvi/ex/ex_cd.c projects/camlock/contrib/nvi/ex/ex_cmd.c projects/camlock/contrib/nvi/ex/ex_cscope.c projects/camlock/contrib/nvi/ex/ex_delete.c projects/camlock/contrib/nvi/ex/ex_display.c projects/camlock/contrib/nvi/ex/ex_edit.c projects/camlock/contrib/nvi/ex/ex_equal.c projects/camlock/contrib/nvi/ex/ex_file.c projects/camlock/contrib/nvi/ex/ex_filter.c projects/camlock/contrib/nvi/ex/ex_global.c projects/camlock/contrib/nvi/ex/ex_init.c projects/camlock/contrib/nvi/ex/ex_join.c projects/camlock/contrib/nvi/ex/ex_map.c projects/camlock/contrib/nvi/ex/ex_mark.c projects/camlock/contrib/nvi/ex/ex_mkexrc.c projects/camlock/contrib/nvi/ex/ex_move.c projects/camlock/contrib/nvi/ex/ex_open.c projects/camlock/contrib/nvi/ex/ex_preserve.c projects/camlock/contrib/nvi/ex/ex_print.c projects/camlock/contrib/nvi/ex/ex_put.c projects/camlock/contrib/nvi/ex/ex_quit.c projects/camlock/contrib/nvi/ex/ex_read.c projects/camlock/contrib/nvi/ex/ex_screen.c projects/camlock/contrib/nvi/ex/ex_script.c projects/camlock/contrib/nvi/ex/ex_set.c projects/camlock/contrib/nvi/ex/ex_shell.c projects/camlock/contrib/nvi/ex/ex_shift.c projects/camlock/contrib/nvi/ex/ex_source.c projects/camlock/contrib/nvi/ex/ex_stop.c projects/camlock/contrib/nvi/ex/ex_subst.c projects/camlock/contrib/nvi/ex/ex_tag.c projects/camlock/contrib/nvi/ex/ex_txt.c projects/camlock/contrib/nvi/ex/ex_undo.c projects/camlock/contrib/nvi/ex/ex_usage.c projects/camlock/contrib/nvi/ex/ex_util.c projects/camlock/contrib/nvi/ex/ex_version.c projects/camlock/contrib/nvi/ex/ex_visual.c projects/camlock/contrib/nvi/ex/ex_write.c projects/camlock/contrib/nvi/ex/ex_yank.c projects/camlock/contrib/nvi/ex/ex_z.c projects/camlock/contrib/nvi/ex/script.h projects/camlock/contrib/nvi/ex/tag.h projects/camlock/contrib/nvi/ex/version.h projects/camlock/contrib/nvi/vi/getc.c projects/camlock/contrib/nvi/vi/v_at.c projects/camlock/contrib/nvi/vi/v_ch.c projects/camlock/contrib/nvi/vi/v_cmd.c projects/camlock/contrib/nvi/vi/v_delete.c projects/camlock/contrib/nvi/vi/v_ex.c projects/camlock/contrib/nvi/vi/v_increment.c projects/camlock/contrib/nvi/vi/v_init.c projects/camlock/contrib/nvi/vi/v_itxt.c projects/camlock/contrib/nvi/vi/v_left.c projects/camlock/contrib/nvi/vi/v_mark.c projects/camlock/contrib/nvi/vi/v_match.c projects/camlock/contrib/nvi/vi/v_paragraph.c projects/camlock/contrib/nvi/vi/v_put.c projects/camlock/contrib/nvi/vi/v_redraw.c projects/camlock/contrib/nvi/vi/v_replace.c projects/camlock/contrib/nvi/vi/v_right.c projects/camlock/contrib/nvi/vi/v_screen.c projects/camlock/contrib/nvi/vi/v_scroll.c projects/camlock/contrib/nvi/vi/v_search.c projects/camlock/contrib/nvi/vi/v_section.c projects/camlock/contrib/nvi/vi/v_sentence.c projects/camlock/contrib/nvi/vi/v_status.c projects/camlock/contrib/nvi/vi/v_txt.c projects/camlock/contrib/nvi/vi/v_ulcase.c projects/camlock/contrib/nvi/vi/v_undo.c projects/camlock/contrib/nvi/vi/v_util.c projects/camlock/contrib/nvi/vi/v_word.c projects/camlock/contrib/nvi/vi/v_xchar.c projects/camlock/contrib/nvi/vi/v_yank.c projects/camlock/contrib/nvi/vi/v_z.c projects/camlock/contrib/nvi/vi/v_zexit.c projects/camlock/contrib/nvi/vi/vi.c projects/camlock/contrib/nvi/vi/vi.h projects/camlock/contrib/nvi/vi/vs_line.c projects/camlock/contrib/nvi/vi/vs_msg.c projects/camlock/contrib/nvi/vi/vs_refresh.c projects/camlock/contrib/nvi/vi/vs_relative.c projects/camlock/contrib/nvi/vi/vs_smap.c projects/camlock/contrib/nvi/vi/vs_split.c projects/camlock/contrib/ofed/libsdp/src/linux/sdp_inet.h projects/camlock/contrib/ofed/management/infiniband-diags/src/sminfo.c projects/camlock/contrib/ofed/management/opensm/opensm/osm_console.c projects/camlock/contrib/ofed/management/opensm/opensm/osm_subnet.c projects/camlock/contrib/sendmail/include/sm/os/sm_os_freebsd.h projects/camlock/contrib/wpa/src/drivers/driver_wired.c projects/camlock/crypto/openssl/ssl/s3_cbc.c projects/camlock/etc/namedb/named.conf projects/camlock/gnu/usr.bin/grep/grep.c projects/camlock/gnu/usr.bin/groff/tmac/mdoc.local projects/camlock/include/stdlib.h projects/camlock/lib/libc/db/hash/hash.c projects/camlock/lib/libc/gen/fnmatch.c projects/camlock/lib/libc/iconv/citrus_iconv.c projects/camlock/lib/libc/stdio/Makefile.inc projects/camlock/lib/libc/stdio/Symbol.map projects/camlock/lib/libc/stdio/mktemp.3 projects/camlock/lib/libc/stdio/mktemp.c projects/camlock/lib/libproc/proc_sym.c projects/camlock/share/man/man4/random.4 projects/camlock/share/man/man4/rsu.4 projects/camlock/share/man/man7/release.7 projects/camlock/share/man/man9/Makefile projects/camlock/share/man/man9/VOP_GETPAGES.9 projects/camlock/share/man/man9/mutex.9 projects/camlock/share/man/man9/vm_page_alloc.9 projects/camlock/sys/amd64/amd64/minidump_machdep.c projects/camlock/sys/amd64/amd64/pmap.c projects/camlock/sys/amd64/conf/GENERIC projects/camlock/sys/amd64/include/pmap.h projects/camlock/sys/arm/arm/bus_space_generic.c projects/camlock/sys/arm/arm/busdma_machdep-v6.c projects/camlock/sys/arm/arm/pmap-v6.c projects/camlock/sys/arm/arm/pmap.c projects/camlock/sys/arm/s3c2xx0/s3c2xx0_space.c projects/camlock/sys/boot/common/part.c projects/camlock/sys/boot/ficl/loader.c projects/camlock/sys/boot/forth/beastie.4th projects/camlock/sys/boot/forth/color.4th projects/camlock/sys/boot/forth/color.4th.8 projects/camlock/sys/boot/forth/loader.conf.5 projects/camlock/sys/boot/forth/menu.4th projects/camlock/sys/boot/forth/menu.4th.8 projects/camlock/sys/boot/forth/menu.rc projects/camlock/sys/boot/forth/version.4th.8 projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/camlock/sys/conf/files projects/camlock/sys/conf/newvers.sh projects/camlock/sys/dev/agp/agp.c projects/camlock/sys/dev/bge/if_bge.c projects/camlock/sys/dev/bge/if_bgereg.h projects/camlock/sys/dev/cpuctl/cpuctl.c projects/camlock/sys/dev/drm2/i915/i915_gem.c projects/camlock/sys/dev/drm2/ttm/ttm_bo_vm.c projects/camlock/sys/dev/drm2/ttm/ttm_page_alloc.c projects/camlock/sys/dev/drm2/ttm/ttm_tt.c projects/camlock/sys/dev/iwn/if_iwn.c projects/camlock/sys/dev/iwn/if_iwnvar.h projects/camlock/sys/dev/md/md.c projects/camlock/sys/dev/mps/mps.c projects/camlock/sys/dev/mps/mps_sas.c projects/camlock/sys/dev/mps/mps_sas.h projects/camlock/sys/dev/mps/mps_sas_lsi.c projects/camlock/sys/dev/mps/mpsvar.h projects/camlock/sys/dev/pci/fixup_pci.c projects/camlock/sys/dev/random/ivy.c projects/camlock/sys/dev/random/nehemiah.c projects/camlock/sys/dev/random/probe.c projects/camlock/sys/dev/random/randomdev.c projects/camlock/sys/dev/random/randomdev.h projects/camlock/sys/dev/random/randomdev_soft.c projects/camlock/sys/dev/random/randomdev_soft.h projects/camlock/sys/dev/random/yarrow.c projects/camlock/sys/dev/usb/controller/ehci.c projects/camlock/sys/dev/usb/usb_compat_linux.c projects/camlock/sys/dev/usb/usb_hub.c projects/camlock/sys/dev/usb/usb_ioctl.h projects/camlock/sys/dev/usb/usb_request.c projects/camlock/sys/dev/virtio/balloon/virtio_balloon.c projects/camlock/sys/fs/ext2fs/ext2_hash.c projects/camlock/sys/fs/fuse/fuse_vnops.c projects/camlock/sys/fs/tmpfs/tmpfs_subr.c projects/camlock/sys/fs/tmpfs/tmpfs_vnops.c projects/camlock/sys/geom/mirror/g_mirror.c projects/camlock/sys/geom/part/g_part_gpt.c projects/camlock/sys/i386/conf/GENERIC projects/camlock/sys/i386/i386/pmap.c projects/camlock/sys/i386/xen/pmap.c projects/camlock/sys/ia64/conf/GENERIC projects/camlock/sys/ia64/ia64/pmap.c projects/camlock/sys/kern/init_main.c projects/camlock/sys/kern/kern_event.c projects/camlock/sys/kern/kern_exec.c projects/camlock/sys/kern/kern_malloc.c projects/camlock/sys/kern/kern_mutex.c projects/camlock/sys/kern/kern_synch.c projects/camlock/sys/kern/kern_sysctl.c projects/camlock/sys/kern/subr_bus.c projects/camlock/sys/kern/subr_uio.c projects/camlock/sys/kern/subr_witness.c projects/camlock/sys/kern/uipc_shm.c projects/camlock/sys/kern/uipc_syscalls.c projects/camlock/sys/kern/vfs_acl.c projects/camlock/sys/kern/vfs_bio.c projects/camlock/sys/kern/vfs_cluster.c projects/camlock/sys/mips/atheros/ar71xx_gpio.c projects/camlock/sys/mips/mips/pmap.c projects/camlock/sys/modules/iwnfw/Makefile projects/camlock/sys/modules/iwnfw/iwn6000g2a/Makefile projects/camlock/sys/net80211/ieee80211.c projects/camlock/sys/net80211/ieee80211_freebsd.c projects/camlock/sys/net80211/ieee80211_freebsd.h projects/camlock/sys/net80211/ieee80211_hostap.c projects/camlock/sys/net80211/ieee80211_hwmp.c projects/camlock/sys/net80211/ieee80211_mesh.c projects/camlock/sys/net80211/ieee80211_output.c projects/camlock/sys/net80211/ieee80211_power.c projects/camlock/sys/net80211/ieee80211_proto.c projects/camlock/sys/net80211/ieee80211_proto.h projects/camlock/sys/net80211/ieee80211_superg.c projects/camlock/sys/net80211/ieee80211_var.h projects/camlock/sys/net80211/ieee80211_wds.c projects/camlock/sys/netinet/sctp.h projects/camlock/sys/netinet/sctp_indata.c projects/camlock/sys/netinet/sctp_output.c projects/camlock/sys/netinet/sctp_pcb.h projects/camlock/sys/ofed/include/linux/bitops.h projects/camlock/sys/ofed/include/linux/page.h projects/camlock/sys/ofed/include/linux/sysfs.h projects/camlock/sys/ofed/include/rdma/sdp_socket.h projects/camlock/sys/powerpc/aim/mmu_oea.c projects/camlock/sys/powerpc/aim/mmu_oea64.c projects/camlock/sys/powerpc/booke/pmap.c projects/camlock/sys/powerpc/conf/GENERIC projects/camlock/sys/powerpc/conf/GENERIC64 projects/camlock/sys/sparc64/conf/GENERIC projects/camlock/sys/sparc64/sparc64/genassym.c projects/camlock/sys/sparc64/sparc64/pmap.c projects/camlock/sys/sys/event.h projects/camlock/sys/sys/param.h projects/camlock/sys/sys/proc.h projects/camlock/sys/sys/socket.h projects/camlock/sys/sys/wait.h projects/camlock/sys/vm/_vm_radix.h projects/camlock/sys/vm/device_pager.c projects/camlock/sys/vm/memguard.c projects/camlock/sys/vm/phys_pager.c projects/camlock/sys/vm/sg_pager.c projects/camlock/sys/vm/swap_pager.c projects/camlock/sys/vm/uma_core.c projects/camlock/sys/vm/uma_int.h projects/camlock/sys/vm/vm_fault.c projects/camlock/sys/vm/vm_glue.c projects/camlock/sys/vm/vm_object.c projects/camlock/sys/vm/vm_object.h projects/camlock/sys/vm/vm_page.c projects/camlock/sys/vm/vm_page.h projects/camlock/sys/vm/vm_pageout.c projects/camlock/sys/vm/vm_param.h projects/camlock/sys/vm/vm_phys.c projects/camlock/sys/vm/vm_phys.h projects/camlock/sys/vm/vm_radix.c projects/camlock/sys/vm/vm_radix.h projects/camlock/sys/vm/vm_zeroidle.c projects/camlock/sys/vm/vnode_pager.c projects/camlock/sys/x86/acpica/srat.c projects/camlock/tools/regression/lib/libc/gen/test-fnmatch.c projects/camlock/tools/regression/lib/libc/stdio/Makefile projects/camlock/tools/tools/sysdoc/sysdoc.sh projects/camlock/tools/tools/sysdoc/tunables.mdoc projects/camlock/usr.bin/bmake/Makefile projects/camlock/usr.bin/su/su.1 projects/camlock/usr.bin/vi/Makefile projects/camlock/usr.bin/vi/config.h projects/camlock/usr.bin/vi/pathnames.h projects/camlock/usr.sbin/watchdogd/watchdogd.c Directory Properties: projects/camlock/ (props changed) projects/camlock/cddl/ (props changed) projects/camlock/cddl/contrib/opensolaris/ (props changed) projects/camlock/contrib/bmake/ (props changed) projects/camlock/contrib/nvi/ (props changed) projects/camlock/contrib/sendmail/ (props changed) projects/camlock/contrib/wpa/ (props changed) projects/camlock/crypto/openssl/ (props changed) projects/camlock/lib/libc/ (props changed) projects/camlock/share/man/man4/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/boot/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) projects/camlock/sys/conf/ (props changed) Modified: projects/camlock/Makefile.inc1 ============================================================================== --- projects/camlock/Makefile.inc1 Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/Makefile.inc1 Mon Aug 12 19:50:08 2013 (r254256) @@ -1331,7 +1331,8 @@ build-tools: .MAKE usr.bin/awk \ lib/libmagic \ usr.bin/mkesdb_static \ - usr.bin/mkcsmapper_static + usr.bin/mkcsmapper_static \ + usr.bin/vi/catalog ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ Modified: projects/camlock/bin/pkill/pkill.1 ============================================================================== --- projects/camlock/bin/pkill/pkill.1 Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/bin/pkill/pkill.1 Mon Aug 12 19:50:08 2013 (r254256) @@ -29,7 +29,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 11, 2010 +.Dd August 9, 2013 .Dt PKILL 1 .Os .Sh NAME @@ -44,6 +44,7 @@ .Op Fl N Ar system .Op Fl P Ar ppid .Op Fl U Ar uid +.Op Fl c Ar class .Op Fl d Ar delim .Op Fl g Ar pgrp .Op Fl j Ar jid @@ -60,6 +61,7 @@ .Op Fl N Ar system .Op Fl P Ar ppid .Op Fl U Ar uid +.Op Fl c Ar class .Op Fl g Ar pgrp .Op Fl j Ar jid .Op Fl s Ar sid @@ -130,6 +132,9 @@ or process and all of its ancestors are excluded (unless .Fl v is used). +.It Fl c Ar class +Restrict matches to processes running with specified login class +.Ar class . .It Fl f Match against full argument lists. The default is to match against process names. Modified: projects/camlock/bin/pkill/pkill.c ============================================================================== --- projects/camlock/bin/pkill/pkill.c Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/bin/pkill/pkill.c Mon Aug 12 19:50:08 2013 (r254256) @@ -79,12 +79,14 @@ enum listtype { LT_TTY, LT_PGRP, LT_JID, - LT_SID + LT_SID, + LT_CLASS }; struct list { SLIST_ENTRY(list) li_chain; long li_number; + char *li_name; }; SLIST_HEAD(listhead, list); @@ -116,6 +118,7 @@ static struct listhead ppidlist = SLIST_ static struct listhead tdevlist = SLIST_HEAD_INITIALIZER(tdevlist); static struct listhead sidlist = SLIST_HEAD_INITIALIZER(sidlist); static struct listhead jidlist = SLIST_HEAD_INITIALIZER(jidlist); +static struct listhead classlist = SLIST_HEAD_INITIALIZER(classlist); static void usage(void) __attribute__((__noreturn__)); static int killact(const struct kinfo_proc *); @@ -179,7 +182,7 @@ main(int argc, char **argv) execf = NULL; coref = _PATH_DEVNULL; - while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnoqs:t:u:vx")) != -1) + while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ac:d:fg:ij:lnoqs:t:u:vx")) != -1) switch (ch) { case 'D': debug_opt++; @@ -222,6 +225,10 @@ main(int argc, char **argv) case 'a': ancestors++; break; + case 'c': + makelist(&classlist, LT_CLASS, optarg); + criteria = 1; + break; case 'd': if (!pgrep) usage(); @@ -469,6 +476,20 @@ main(int argc, char **argv) continue; } + SLIST_FOREACH(li, &classlist, li_chain) { + /* + * We skip P_SYSTEM processes to match ps(1) output. + */ + if ((kp->ki_flag & P_SYSTEM) == 0 && + kp->ki_loginclass != NULL && + strcmp(kp->ki_loginclass, li->li_name) == 0) + break; + } + if (SLIST_FIRST(&classlist) != NULL && li == NULL) { + selected[i] = 0; + continue; + } + if (argc == 0) selected[i] = 1; } @@ -562,9 +583,9 @@ usage(void) fprintf(stderr, "usage: %s %s [-F pidfile] [-G gid] [-M core] [-N system]\n" - " [-P ppid] [-U uid] [-g pgrp] [-j jid] [-s sid]\n" - " [-t tty] [-u euid] pattern ...\n", getprogname(), - ustr); + " [-P ppid] [-U uid] [-c class] [-g pgrp] [-j jid]\n" + " [-s sid] [-t tty] [-u euid] pattern ...\n", + getprogname(), ustr); exit(STATUS_BADUSAGE); } @@ -664,8 +685,10 @@ makelist(struct listhead *head, enum lis SLIST_INSERT_HEAD(head, li, li_chain); empty = 0; - li->li_number = (uid_t)strtol(sp, &ep, 0); - if (*ep == '\0') { + if (type != LT_CLASS) + li->li_number = (uid_t)strtol(sp, &ep, 0); + + if (type != LT_CLASS && *ep == '\0') { switch (type) { case LT_PGRP: if (li->li_number == 0) @@ -750,6 +773,12 @@ foundtty: if ((st.st_mode & S_IFCHR) == errx(STATUS_BADUSAGE, "Invalid jail ID `%s'", sp); break; + case LT_CLASS: + li->li_number = -1; + li->li_name = strdup(sp); + if (li->li_name == NULL) + err(STATUS_ERROR, "Cannot allocate memory"); + break; default: usage(); } Modified: projects/camlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- projects/camlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Mon Aug 12 19:50:08 2013 (r254256) @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012 Martin Matuska . All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. @@ -186,6 +186,7 @@ static const ztest_shared_opts_t ztest_o extern uint64_t metaslab_gang_bang; extern uint64_t metaslab_df_alloc_threshold; +extern uint64_t zfs_deadman_synctime; static ztest_shared_opts_t *ztest_shared_opts; static ztest_shared_opts_t ztest_opts; @@ -365,7 +366,7 @@ ztest_info_t ztest_info[] = { { ztest_fault_inject, 1, &zopt_sometimes }, { ztest_ddt_repair, 1, &zopt_sometimes }, { ztest_dmu_snapshot_hold, 1, &zopt_sometimes }, - { ztest_reguid, 1, &zopt_sometimes }, + { ztest_reguid, 1, &zopt_rarely }, { ztest_spa_rename, 1, &zopt_rarely }, { ztest_scrub, 1, &zopt_rarely }, { ztest_spa_upgrade, 1, &zopt_rarely }, @@ -768,6 +769,16 @@ ztest_kill(ztest_shared_t *zs) { zs->zs_alloc = metaslab_class_get_alloc(spa_normal_class(ztest_spa)); zs->zs_space = metaslab_class_get_space(spa_normal_class(ztest_spa)); + + /* + * Before we kill off ztest, make sure that the config is updated. + * See comment above spa_config_sync(). + */ + mutex_enter(&spa_namespace_lock); + spa_config_sync(ztest_spa, B_FALSE, B_FALSE); + mutex_exit(&spa_namespace_lock); + + zfs_dbgmsg_print(FTAG); (void) kill(getpid(), SIGKILL); } @@ -2732,7 +2743,7 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, uint64_t leaf, top; uint64_t ashift = ztest_get_ashift(); uint64_t oldguid, pguid; - size_t oldsize, newsize; + uint64_t oldsize, newsize; char oldpath[MAXPATHLEN], newpath[MAXPATHLEN]; int replacing; int oldvd_has_siblings = B_FALSE; @@ -2891,8 +2902,8 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, if (error != expected_error && expected_error != EBUSY) { fatal(0, "attach (%s %llu, %s %llu, %d) " "returned %d, expected %d", - oldpath, (longlong_t)oldsize, newpath, - (longlong_t)newsize, replacing, error, expected_error); + oldpath, oldsize, newpath, + newsize, replacing, error, expected_error); } VERIFY(mutex_unlock(&ztest_vdev_lock) == 0); @@ -3606,6 +3617,9 @@ ztest_dmu_read_write(ztest_ds_t *zd, uin else dmu_tx_hold_write(tx, bigobj, bigoff, bigsize); + /* This accounts for setting the checksum/compression. */ + dmu_tx_hold_bonus(tx, bigobj); + txg = ztest_tx_assign(tx, TXG_MIGHTWAIT, FTAG); if (txg == 0) { umem_free(packbuf, packsize); @@ -4756,6 +4770,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 ASSERT(leaves >= 1); /* + * Grab the name lock as reader. There are some operations + * which don't like to have their vdevs changed while + * they are in progress (i.e. spa_change_guid). Those + * operations will have grabbed the name lock as writer. + */ + (void) rw_rdlock(&ztest_name_lock); + + /* * We need SCL_STATE here because we're going to look at vd0->vdev_tsd. */ spa_config_enter(spa, SCL_STATE, FTAG, RW_READER); @@ -4784,7 +4806,14 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (vd0 != NULL && vd0->vdev_top->vdev_islog) islog = B_TRUE; - if (vd0 != NULL && maxfaults != 1) { + /* + * If the top-level vdev needs to be resilvered + * then we only allow faults on the device that is + * resilvering. + */ + if (vd0 != NULL && maxfaults != 1 && + (!vdev_resilver_needed(vd0->vdev_top, NULL, NULL) || + vd0->vdev_resilver_txg != 0)) { /* * Make vd0 explicitly claim to be unreadable, * or unwriteable, or reach behind its back @@ -4815,6 +4844,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 if (sav->sav_count == 0) { spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); return; } vd0 = sav->sav_vdevs[ztest_random(sav->sav_count)]; @@ -4828,6 +4858,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6 } spa_config_exit(spa, SCL_STATE, FTAG); + (void) rw_unlock(&ztest_name_lock); /* * If we can tolerate two or more faults, or we're dealing @@ -5293,16 +5324,33 @@ static void * ztest_deadman_thread(void *arg) { ztest_shared_t *zs = arg; - int grace = 300; - hrtime_t delta; - - delta = (zs->zs_thread_stop - zs->zs_thread_start) / NANOSEC + grace; + spa_t *spa = ztest_spa; + hrtime_t delta, total = 0; - (void) poll(NULL, 0, (int)(1000 * delta)); + for (;;) { + delta = (zs->zs_thread_stop - zs->zs_thread_start) / + NANOSEC + zfs_deadman_synctime; - fatal(0, "failed to complete within %d seconds of deadline", grace); + (void) poll(NULL, 0, (int)(1000 * delta)); - return (NULL); + /* + * If the pool is suspended then fail immediately. Otherwise, + * check to see if the pool is making any progress. If + * vdev_deadman() discovers that there hasn't been any recent + * I/Os then it will end up aborting the tests. + */ + if (spa_suspended(spa)) { + fatal(0, "aborting test after %llu seconds because " + "pool has transitioned to a suspended state.", + zfs_deadman_synctime); + return (NULL); + } + vdev_deadman(spa->spa_root_vdev); + + total += zfs_deadman_synctime; + (void) printf("ztest has been running for %lld seconds\n", + total); + } } static void @@ -5616,6 +5664,7 @@ ztest_run(ztest_shared_t *zs) zs->zs_alloc = metaslab_class_get_alloc(spa_normal_class(spa)); zs->zs_space = metaslab_class_get_space(spa_normal_class(spa)); + zfs_dbgmsg_print(FTAG); umem_free(tid, ztest_opts.zo_threads * sizeof (thread_t)); @@ -6031,6 +6080,7 @@ main(int argc, char **argv) (void) setvbuf(stdout, NULL, _IOLBF, 0); dprintf_setup(&argc, argv); + zfs_deadman_synctime = 300; ztest_fd_rand = open("/dev/urandom", O_RDONLY); ASSERT3S(ztest_fd_rand, >=, 0); Modified: projects/camlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- projects/camlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Mon Aug 12 19:50:08 2013 (r254256) @@ -1086,7 +1086,17 @@ dt_vopen(int version, int flags, int *er dtfd = open("/dev/dtrace/dtrace", O_RDWR); err = errno; /* save errno from opening dtfd */ - +#if defined(__FreeBSD__) + /* + * Automatically load the 'dtraceall' module if we couldn't open the + * char device. + */ + if (err == ENOENT && modfind("dtraceall") < 0) { + kldload("dtraceall"); /* ignore the error */ + dtfd = open("/dev/dtrace/dtrace", O_RDWR); + err = errno; + } +#endif #if defined(sun) ftfd = open("/dev/dtrace/provider/fasttrap", O_RDWR); #else Modified: projects/camlock/contrib/bmake/parse.c ============================================================================== --- projects/camlock/contrib/bmake/parse.c Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/bmake/parse.c Mon Aug 12 19:50:08 2013 (r254256) @@ -2582,6 +2582,16 @@ ParseGetLine(int flags, int *length) if (cf->P_end == NULL) /* End of string (aka for loop) data */ break; + /* see if there is more we can parse */ + while (ptr++ < cf->P_end) { + if ((ch = *ptr) == '\n') { + if (ptr > line && ptr[-1] == '\\') + continue; + Parse_Error(PARSE_WARNING, + "Zero byte read from file, skipping rest of line."); + break; + } + } if (cf->nextbuf != NULL) { /* * End of this buffer; return EOF and outer logic Modified: projects/camlock/contrib/nvi/LICENSE ============================================================================== --- projects/camlock/contrib/nvi/LICENSE Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/LICENSE Mon Aug 12 19:50:08 2013 (r254256) @@ -1,14 +1,19 @@ -The vi program is freely redistributable. You are welcome to copy, modify -and share it with others under the conditions listed in this file. If any -company (not any individual!) finds vi sufficiently useful that you would -have purchased it, or if any company wishes to redistribute it, contributions -to the authors would be appreciated. - /*- + * $Id: LICENSE,v 8.18 2011/07/10 11:58:35 zy Exp $ + */ + +The following are the copyrights and redistribution conditions that apply +to this copy of the Vi software. + +/* * Copyright (c) 1991, 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 * Keith Bostic. All rights reserved. + * Copyright (c) 1999, 2000 + * Sven Verdoolaege. All rights reserved. + * Copyright (c) 2011 + * Zhihao Yuan. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -18,11 +23,7 @@ to the authors would be appreciated. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * Modified: projects/camlock/contrib/nvi/README ============================================================================== --- projects/camlock/contrib/nvi/README Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/README Mon Aug 12 19:50:08 2013 (r254256) @@ -1,31 +1,32 @@ -# @(#)README 8.147 (Berkeley) 10/19/96 +# $Id: README,v 9.0 2012/10/07 09:13:54 zy Exp $ -This is the README for nex/nvi, a freely redistributable implementation -of the ex/vi text editors originally distributed as part of the Fourth -Berkeley Software Distribution (4BSD), by the University of California, -Berkeley. - -The source code for nex/nvi can be retrieved by using anonymous ftp to -ftp.cs.berkeley.edu. The file ucb/4bsd/nvi.tar.gz is the gzip'd archive, -of version 1.71 of nex/nvi. This version is believed to be stable and -problem free. The file ucb/4bsd/nvi-###.ALPHA.tar.gz is a gzip'd archive -of the current alpha-test release of nex/nvi. This version reflects the -current development tree, and will be more likely to have problems. - -See the file: - build/README for information on building nvi. - LAYOUT for a description of where everything is. - LICENSE for the copyright and redistribution terms. - -If you have any questions about nex/nvi, problems with it, or concerns -about the conditions for redistribution, please contact me: - - Keith Bostic +1-508-287-4781 - 394 E. Riding Dr. bostic@bostic.com - Carlisle, MA 01741 - USA +This is version 2.1.1 (2012-10-07) of nex/nvi, a reimplementation of the ex/vi +text editors originally distributed as part of the Fourth Berkeley +Software Distribution (4BSD), by the University of California, Berkeley. + +The directory layout is as follows: + + LICENSE ....... Copyright, use and redistribution information. + README ........ This file. + build ......... Build directory. + catalog ....... Message catalogs; see catalog/README. + cl ............ Vi interface to the curses(3) library. + common ........ Code shared by ex and vi. + docs .......... Ex/vi documentation, both current and historic. + ex ............ Ex source code. + regex ......... Modified regex library with wide character support. + vi ............ Vi source code. -Keith Bostic +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +o Nvi was written by Keith Bostic, and the last version is 1.79. After that, + + Sven Verdoolaege added the iconv support and the DB3 locking. + + Jun-ichiro itojun Hagino developed the file encoding detection + techniques in his nvi-m17n. + +The following acknowledgments were written by Keith Bostic: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= o This software is several years old and is the product of many folks' work. @@ -63,51 +64,3 @@ o From the original vi acknowledgements, o And... The financial support of UUNET Communications Services is gratefully acknowledged. - -=-=-=-=-=-=-=-=-=-=-= -o Status: - -This software is in beta test, and it's pretty stable. Almost all of the -historic functionality in ex/vi is there, the only major missing pieces -are open mode and the lisp edit option. - -Nvi is largely 8-bit clean. This isn't difficult to fix, and was left in -during initial development to keep things simple. Wide character support -will be integrated at the same time that it is made fully 8-bit clean. - -There aren't a lot of new features in nex/nvi, but there are a few things -you might like. The "Additional Features" section of the reference work -(docs/USD.doc/vi.ref/vi.ref.txt, docs/USD.doc/vi.ref/vi.ref.ps) has more -information. - -=-=-=-=-=-=-=-=-=-=-= -o Debugging: - -Code fixes are greatly appreciated, of course, but if you can't provide -them, please email me as much information as you can as to how I might -reproduce the bug, and I'll try to fix it locally. Stack traces of core -dumps are only rarely helpful -- an example file with a set of keystrokes -that causes the problem is almost invariably necessary. I know it's -annoying, but simply playing with the bug until you can reproduce it at -will, with minimal keystrokes, is immensely helpful to me. - -Please include the following in the bug report; - - o The version of nvi you're running (use :version to get it). - o The row/column dimensions of the screen (80 x 32). - o Unless you're confident that they're not part of the problem, - your startup files (.exrc, .nexrc) and the environment variable - (EXINIT, NEXINIT) values. (Cutting and pasting the output - of ":set all" is usually sufficient.) - -If you want to do your own debugging, recompile the program with DEBUG -defined. (Configuring with --enable-debug will do this for you.) This -turns on the additional command-line option -D, that takes either s or w -as an argument. The option -Ds causes nvi to ignore the EXINIT and -.exrc files on startup, and -Dw causes nvi to print out the process id -and wait for you to enter a to continue. - -If you're running a memory checker (e.g. Purify) on nvi, you will first -want to recompile everything with "-DPURIFY" set in the CFLAGS. This -initializes allocated pages in the DB code, and free's allocated memory -at the end of the nvi execution. Modified: projects/camlock/contrib/nvi/catalog/Makefile ============================================================================== --- projects/camlock/contrib/nvi/catalog/Makefile Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/Makefile Mon Aug 12 19:50:08 2013 (r254256) @@ -1,7 +1,8 @@ -# @(#)Makefile 8.29 (Berkeley) 10/19/96 +# $Id: Makefile,v 9.0 2012/10/19 15:13:11 zy Exp $ -CAT= dutch english french german polish ru_SU.KOI8-R spanish swedish -FILES= ../cl/*.c ../common/*.c ../ex/*.c ../tk/*.c ../vi/*.c +CAT= dutch english french german polish ru_RU.KOI8-R spanish swedish \ + uk_UA.KOI8-U zh_CN.GB2312 +FILES= ../cl/*.c ../common/*.c ../ex/*.c ../vi/*.c all: dump ${CAT} @@ -18,13 +19,10 @@ ${CAT}: english.base print "DUPLICATE MESSAGE NUMBER " $$1; \ exit 1; \ } \ - for (; nline < $$1; ++nline) \ - print ""; \ print $0; \ }' | \ - sed -e '1s/^/VI_MESSAGE_CATALOG/' \ - -e '/"/s/^[^"]*"//' \ - -e '1!s/"$$/X/' > $@; \ + sed -e '1s/^/$$set 1~$$quote "~/; 1y/~/\n/' | \ + gencat $@ /dev/stdin; \ chmod 444 $@; \ if grep DUPLICATE $@ > /dev/null; then \ grep DUPLICATE $@; \ @@ -34,7 +32,8 @@ ${CAT}: english.base fi CHK= dutch.check english.check french.check german.check \ - polish.check ru_SU.KOI8-R.check spanish.check swedish.check + polish.check ru_RU.KOI8-R.check spanish.check swedish.check \ + uk_UA.KOI8-U.check zh_CN.GB2312.check check: ${CHK} ${CHK}: ${CAT} @echo "... $@"; \ @@ -63,19 +62,14 @@ ${CHK}: ${CAT} echo "Duplicate messages, both id and message (this is okay):"; \ sed '/^$$/d' < $$f.base | sort | uniq -c | \ awk '$$1 != 1 { print $$0 }' | sort -n; \ - echo =========================; \ - echo "Duplicate messages, just message (this is okay):"; \ - sed '/^$$/d' < $$f | sort | uniq -c | \ - awk '$$1 != 1 { print $$0 }' | sort -n; \ echo =========================) > $@ english.base: dump ${FILES} #Makefile ./dump ${FILES} |\ sed -e '/|/!d' \ -e 's/|/ "/' \ - -e 's/^"//' \ - -e 's/\\"/"/g' |\ - sort -n > $@ + -e 's/^"//' |\ + sort -nu > $@ dump: dump.c ${CC} -O -o dump dump.c Modified: projects/camlock/contrib/nvi/catalog/README ============================================================================== --- projects/camlock/contrib/nvi/catalog/README Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/README Mon Aug 12 19:50:08 2013 (r254256) @@ -1,15 +1,9 @@ -# @(#)README 8.4 (Berkeley) 11/22/94 +# $Id: README,v 9.0 2012/10/19 17:06:15 zy Exp $ Generally, all non-system error and informational messages in nvi are catalog messages, i.e. they can be tailored to a specific langauge. -Command strings, usage strings, system errors and other "known text" -are not. It would certainly be possible to internationalize all the -text strings in nvi, but it's unclear that it's the right thing to do. - -First, there's no portable way to do message catalogs. The System V -scheme is a reasonable choice, but none of the 4BSD derived systems -support it. So, catalogs are completely implemented within nvi, and -don't require any library support. +Command strings, usage strings, system errors and other 'known text' +are not. Message catalogs in nvi are fairly simple. Every catalog message consists of two parts -- an initial number followed by a pipe (`|') @@ -33,19 +27,7 @@ For example: msgq(sp, M_ERR, "002|Error: %d %x", arg1, arg2); -is a format string that displays two arguments. It is possible, however, -to reorder the arguments or to not display all of them. The convention -nvi uses is the System V printf(3) convention, i.e. "%[0-9]*$" is the name -of a specific, numbered argument. For example: - - msgq(sp, M_ERR, "002|Error: %2$d %1$x", arg1, arg2); - -displays the arguments in reverse order. - -If the system supports this convention in its library printf routines -(as specified by the test #define NL_ARGMAX), nvi uses those routines. -Otherwise, there is some serious magic going on in common/msg.c to make -this all work. +is a format string that displays two arguments. Arguments to the msgq function are required to contain ONLY printable characters. No further translation is done by the msgq routine before @@ -54,14 +36,16 @@ displaying the message on the screen. F msgq(sp, M_ERR, "003|File: %s", file_name); "file_name" must contain only printable characters. The routine -msg_print() returns a printable version of a string in allocated -memory. For example: +msg_print() returns a printable version of a string; the third argument +indicates whether the string needs to be freed. For example: char *p; + int nf; - p = msg_print(sp, file_name); - msgq(sp, M_ERR, M("003", "File: %s"), p); - FREE_SPACE(sp, p, 0); + p = msg_print(sp, file_name, &nf); + msgq(sp, M_ERR, "003|File: %s", p); + if (nf) + FREE_SPACE(sp, p, 0); makes sure that "file_name" is printable before calling the msgq routine. @@ -71,63 +55,40 @@ routine. The message catalogs themselves are maintained in two files. The first is the "base file" which contains two fields, a record number and the message itself. All base files are named using the convention -"vi_.base", e.g. the English one is "vi_english.base". For +".base", e.g. the English one is "english.base". For example: - 002 "Unable to create temporary file" - 003 "Warning: %s is not a regular file" - 004 "%s already locked, session is read-only" - 005 "%s: remove" - 006 "%s: close" - 007 "%s: remove" - 008 "%s: remove" - 009 "Read-only file, not written; use ! to override" - 010 "Read-only file, not written" - -are the first few lines of the current vi_english.base file. Note that -message #1 is missing -- the first message of each catalog is a special -one, so that nvi can recognize message catalog files. It's added by the -Makefile script that creates the second version of the message catalog. - -The second file is the file used by nvi to access messages, and is a list -of the messages, one per line: - - VI_MESSAGE_CATALOG - Unable to create temporary fileX - Warning: %s is not a regular fileX - %s already locked, session is read-onlyX - %s: removeX - %s: closeX - %s: removeX - %s: removeX - Read-only file, not written; use ! to overrideX - Read-only file, not writtenX - -Note that all messages have had a trailing 'X' character appended. This -is to provide nvi a place to store a trailing nul for the message so that -C library routines that expect one won't be disappointed. + 002 "Line length overflow" + 003 "unable to delete line %lu" + 004 "unable to append to line %lu" + 005 "unable to insert at line %lu" + 006 "unable to store line %lu" + 007 "unable to get last line" + +are the first few lines of the current english.base file. + +Before this file being converted to the second file, the POSIX formatted +message catalog file, by gencat(1), two lines: + + $set 1 + $quote " + +will be inserted before the base text to setup the set_id and the quote +character. So the double-quote needs to be escaped by a backslash to be +included in a message; same as the backslash itself. -These files are named for their language, e.g. "vi_english". The second -files are automatically created from the first files. +These files are named for their language, e.g. "english". However, a +locale(1) name is also recommended. To create a new catalog for nvi: -Copy the file vi_english.base to a file that you can modify , e.g. "cp -vi_english.base vi_german.base". For each of the messages in the file, -replace the message with the string that you want to use. To find out -what the arguments to a message are, I'm afraid you'll have to search -the source code for the message number. You can find them fairly quickly -by doing: - - cd ..; egrep '123\|' */*.[chys] - -I'm sorry that there's not an easier way, but I couldn't think of -anything that wasn't a lot of work. - -If, for some reason, you don't have the file vi_english.base, or you -have new sources for which you want to create a new base catalog, you -can create it by running the command "make english" in the catalog -directory. +Copy the file english.base to a file that you can modify , e.g. "cp +english.base german.base". For each of the messages in the file, +replace the message with the string that you want to use. If you have +doubts about the meaning of a message, just email me. + +A latest english.base can be created from source by running the command +"make english" in the catalog/ directory. Once you've translated all of the strings, then add your catalog to the "CAT=" line of the Makefile, and run the command "make catalog". This @@ -156,11 +117,11 @@ a single place. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= To select a catalog when running nvi, set the "msgcat" option. If the value of this option ends with a '/', it is treated as the name of a -directory that contains a message catalog "vi_XXXX", where XXXX is the -value of the LANG environmental variable, if it's set, or the value of -the LC_MESSAGES environmental variable if it's not. If neither of those -environmental variables are set, or if the option doesn't end in a '/', -the option is treated as the full path name of the message catalog to use. +directory that contains a message catalog "$LC_MESSAGES", which is set +through the LC_MESSAGES environment variable but returned by setlocale(3). +Check the output of locale(1) to validate such a value. If the option +doesn't end in a '/', the option is treated as the full path name of the +message catalog to use. If any messages are missing from the catalog, the backup text (English) is used instead. Modified: projects/camlock/contrib/nvi/catalog/dump.c ============================================================================== --- projects/camlock/contrib/nvi/catalog/dump.c Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/dump.c Mon Aug 12 19:50:08 2013 (r254256) @@ -105,10 +105,10 @@ main(argc, argv) for (; *argv != NULL; ++argv) { if ((fp = fopen(*argv, "r")) == NULL) { perror(*argv); - exit (1); + return (1); } parse(fp); (void)fclose(fp); } - exit (0); + return (0); } Modified: projects/camlock/contrib/nvi/catalog/dutch.base ============================================================================== --- projects/camlock/contrib/nvi/catalog/dutch.base Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/dutch.base Mon Aug 12 19:50:08 2013 (r254256) @@ -43,8 +43,7 @@ 044 "De lisp optie is niet ondersteund" 045 "messages niet uitgeschakeld: %s" 046 "messages niet geactiveerd: %s" -048 "De paragraph optie moet karakter paren bevatten" -049 "De section optie moet karakter paren bevatten" +047 "De %s optie moet karakter paren bevatten" 053 "De standaard buffer is leeg" 054 "Buffer %s is leeg" 055 "Bestanden met newlines in de naam kunnen niet hersteld worden" @@ -97,16 +96,16 @@ 103 "Ongeldig adres: het bestand is leeg" 104 "Het %s commando staat het adres 0 niet toe" 105 "Geen afkortingen om weer te geven" -106 "Afkortingen moeten eindigen met een "woord" letter" +106 "Afkortingen moeten eindigen met een \"woord\" letter" 107 "Afkortingen mogen geen tabulaties of spaties bevatten" 108 "Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het einde" -109 ""%s" is geen afkorting" +109 "\"%s\" is geen afkorting" 110 "Vi commando mislukt: gemappede toetsen genegeerd" 111 "Dit is het laatste bestand" 112 "Dit is het eerste bestand" 113 "Dit is het eerste bestand" 114 "lijst met bestanden is leeg" -115 "Geen voorgaand commando om "!" te vervangen" +115 "Geen voorgaand commando om \"!\" te vervangen" 116 "Geen bestandsnaam voor %%" 117 "Geen bestandsnaam voor #" 118 "Fout: execl: %s" @@ -119,14 +118,14 @@ 125 "%s/%s: niet gelezen: noch U noch root is de eigenaar" 126 "%s/%s: niet gelezen: U bent niet de eigenaar" 127 "%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikers" -128 "%s: niet gelezen: noch U noch root is de eigenaar"" +128 "%s: niet gelezen: noch U noch root is de eigenaar" 129 "%s: niet gelezen: U bent niet de eigenaar" 130 "%s: niet gelezen: kan gewijzigd worden door andere gebruikers" 131 "Geen volgende regel om samen te voegen" 132 "Geen input map entries" 133 "Geen command map entries" 134 "Het %s karakter kan niet ge-remapped worden" -135 ""%s" is niet gemapped" +135 "\"%s\" is niet gemapped" 136 "Merk naam moet een enkel karakter zijn" 137 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren" 138 "Nieuw .exrc bestand: %s. " @@ -296,7 +295,7 @@ 306 "Vi was niet geladen met een Perl interpreter" 307 "Geen ex commando om uit te voeren" 308 "Kies om commando uit te voeren, :q om te stoppen" -309 "Gebruik "cscope help" voor uitleg" +309 "Gebruik \"cscope help\" voor uitleg" 310 "Nog geen cscope connectie aanwezig" 311 "%s: onbekend zoek type: gebruik een van %s" 312 "%d: onbekende cscope sessie" Modified: projects/camlock/contrib/nvi/catalog/french.base ============================================================================== --- projects/camlock/contrib/nvi/catalog/french.base Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/french.base Mon Aug 12 19:50:08 2013 (r254256) @@ -43,8 +43,7 @@ 044 "L'option lisp n'est pas implémentée" 045 "Les messages ne sont pas désactivés : %s" 046 "Les messages ne sont pas activés : %s" -048 "L'option de paragraphe doit être en groupe de deux caractères" -049 "L'option de section doit être en groupe de deux caractères" +047 "L'option de %s doit être en groupe de deux caractères" 053 "Le tampon par défaut est vide" 054 "Le tampon %s est vide" 055 "Les fichiers dont le nom contient des caractères de saut de ligne sont irrécupérables" @@ -97,16 +96,16 @@ 103 "Adresse non valide : le fichier est vide" 104 "La commande %s ne permet pas une adresse de 0" 105 "Pas d'abréviations à afficher" -106 "Les abréviations doivent finir par un caractère"mot" +106 "Les abréviations doivent finir par un caractère \"mot\"" 107 "Les abréviations ne peuvent pas contenir de tabulations ni d'espaces" 108 "Les abréviations ne peuvent pas contenir un mélange de caractères mot/non-mot, sauf à la fin" -109 ""%s" n'est pas une abréviation" +109 "\"%s\" n'est pas une abréviation" 110 "La commande Vi a échoué : Les touches affectées ont été abandonnées" 111 "Plus de fichiers à éditer" 112 "Pas de fichiers précédents à éditer" 113 "Pas de fichiers précédents à rembobiner" 114 "Pas de liste de fichiers à afficher" -115 "Pas de commande précédente à remplacer"!"" +115 "Pas de commande précédente à remplacer \"!\"" 116 "Pas de nom de fichier à substituer à %%" 117 "Pas de nom de fichier à substituer à #" 118 "Erreur : execl : %s" @@ -126,7 +125,7 @@ 132 "Pas d'entrées de mappage d'entrée" 133 "Pas d'entrées de mappage de commandes" 134 "Le caractère %s ne peut pas être remappé" -135 ""%s" n'est pas actuellement mappé" +135 "\"%s\" n'est pas actuellement mappé" 136 "Les noms de marque ne doivent avoir qu'un caractère" 137 "%s existe, non enregistré; utiliser ! pour outrepasser" 138 "Nouveau fichier exrc : %s" @@ -200,7 +199,6 @@ 207 "La commande Q nécessite une interface terminal ex" 208 "Pas de commande à répéter" 209 "Le fichier est vide" -209 "Le fichier est vide" 210 "Vous ne pouvez pas utiliser %s comme commande de déplacement" 211 "Déjà en mode commande" 212 "Le curseur n'est pas dans un mot" @@ -293,12 +291,11 @@ 302 "Vi n'a pas été chargé avec un interprétateur Tcl" 303 "Ficher modifié depuis le dernier enregistrement." 304 "L'expansion du shell a échoué" -304 "L'expansion du shell a échoué" 305 "Pas d'option d'édition %s spécifiée" 306 "Vi n'a pas été chargé avec un interprétateur Perl" 307 "Pas de commande ex à exécuter" 308 "Entrez pour exécuter une commande, :q pour quitter" -309 "Utiliser "cscope help" pour obtenir de l'aide" +309 "Utiliser \"cscope help\" pour obtenir de l'aide" 310 "Aucune connexion cscope n'est lancée" 311 "%s : type de recherche inconnu : utiliser un des %s" 312 "%d : Il n'existe pas de telle session cscope" Modified: projects/camlock/contrib/nvi/catalog/german.base ============================================================================== --- projects/camlock/contrib/nvi/catalog/german.base Mon Aug 12 19:43:48 2013 (r254255) +++ projects/camlock/contrib/nvi/catalog/german.base Mon Aug 12 19:50:08 2013 (r254256) @@ -1,67 +1,66 @@ -002 "Zeilenlaengen Ueberlauf" -003 "kann Zeile %lu nicht loeschen" -004 "kann an Zeile %lu nicht anfuegen" -005 "kann in Zeile %lu nicht einfuegen" +002 "Zeilenlängen-Überlauf" +003 "kann Zeile %lu nicht löschen" +004 "kann an Zeile %lu nicht anfügen" +005 "kann in Zeile %lu nicht einfügen" 006 "kann Zeile %lu nicht speichern" 007 "kann letzte Zeile nicht lesen" 008 "Fehler: kann Zeile %lu nicht wiederherstellen" 009 "Protokolldatei" -010 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich" -011 "Keine Aenderungen rueckgaengig zu machen" -012 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich" -013 "Keine Protokollierung aktiv, Wiederholung von Aenderungen nicht moeglich" -014 "Keine Aenderungen zu wiederholen" +010 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +011 "Keine Änderungen rückgängig zu machen" +012 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +013 "Keine Protokollierung aktiv, Wiederholung von Änderungen nicht möglich" +014 "Keine Änderungen zu wiederholen" 015 "%s/%d: Protokollschreibfehler" -016 "Vi's Standardein- und ausgabe muss ein Terminal sein" +016 "Vi's Standardein- und -ausgabe muß ein Terminal sein" 017 "Marke %s: nicht gesetzt" -018 "Marke %s: die Zeile wurde geloescht" +018 "Marke %s: die Zeile wurde gelöscht" 019 "Marke %s: Cursorposition existiert nicht mehr" 020 "Fehler: " 021 "neue Datei" -022 "Name geaendert" -023 "geaendert" -024 "nicht geaendert" -025 "NICHT GELOCKED" +022 "Name geändert" +023 "geändert" +024 "nicht geändert" +025 "NICHT GELOCKT" 026 "nur zum Lesen" 027 "Zeile %lu von %lu [%ld%%]" 028 "leere Datei" 029 "Zeile %lu" 030 "Die Datei %s ist kein Meldungskatalog" -031 "Setzen der Voreinstellung fuer %s Option nicht moeglich" +031 "Setzen der Voreinstellung für %s Option nicht möglich" 032 "Benutzung: %s" 033 "set: keine %s Option: 'set all' zeigt alle Optionen mit Werten an" 034 "set: der [no]%s Option kann kein Wert zugewiesen werden" -035 "set: %s ist keine boolsche Option" +035 "set: %s ist keine Boolsche Option" 036 "set: %s Option: %s" -037 "set: %s Option: %s: Wert Ueberlauf" -038 "set: %s Option: %s ist eine ungueltige Zahl" -039 "set: %s ist keine boolsche Option" -040 "Anzeige hat zu wenig Spalten, weniger als %d" -041 "Anzeige hat zu viele Spalten, mehr als %d" -042 "Anzeige hat zu wenig Zeilen, weniger als %d" -043 "Anzeige hat zu viele Zeilen, mehr als %d" -044 "Die lisp Option ist nicht implementiert" -045 "Messages nicht abgeschalten: %s" -046 "Messages nicht eingeschalten: %s" -048 "Die paragraph Option muss Gruppen zu zwei Zeichen enthalten" -049 "Die section Option muss Gruppen zu zwei Zeichen enthalten" +037 "set: %s Option: %s: Werte-Überlauf" +038 "set: %s Option: %s ist eine ungültige Zahl" +039 "set: %s ist keine Boolsche Option" +040 "Bildschirm hat zu wenig Spalten, weniger als %d" +041 "Bildschirm hat zu viele Spalten, mehr als %d" +042 "Bildschirm hat zu wenig Zeilen, weniger als %d" +043 "Bildschirm hat zu viele Zeilen, mehr als %d" +044 "Die lisp-Option ist nicht implementiert" +045 "Meldungen nicht abgeschaltet: %s" +046 "Meldungen nicht eingeschaltet: %s" +047 "Die %s-Option muß Gruppen zu zwei Zeichen enthalten" 053 "Der Standardpuffer ist leer" 054 "Puffer %s ist leer" 055 "Dateien mit newlines im Namen sind nicht wiederherstellbar" -056 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht" -057 "kopiere Datei fuer Wiederherstellung ..." +056 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" +057 "kopiere Datei für Wiederherstellung ..." 058 "Rettungsmechanismus funktioniert nicht: %s" -059 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht" +059 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" 060 "Sicherung der Datei gescheitert: %s" -061 "kopiere Datei fuer Wiederherstellung ..." -062 "Informationen ueber den Benutzer mit id %u nicht gefunden" -063 "Wiederherstellungsdatei kann nicht gesperrt werden" -064 "Puffer der Wiederherstellungsdatei uebergelaufen" +061 "kopiere Datei für Wiederherstellung ..." +062 "Informationen über den Benutzer mit id %u nicht gefunden" +063 "Wiederherstellungsdatei kann nicht gelockt werden" +064 "Puffer der Wiederherstellungsdatei übergelaufen" 065 "Wiederherstellungsdatei" 066 "%s: Wiederherstellungsdatei hat falsches Format" 067 "%s: Wiederherstellungsdatei hat falsches Format" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Aug 12 20:27:25 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 077433FC; Mon, 12 Aug 2013 20:27:25 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E8BFE295D; Mon, 12 Aug 2013 20:27:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CKROPm064978; Mon, 12 Aug 2013 20:27:24 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CKROGL064977; Mon, 12 Aug 2013 20:27:24 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308122027.r7CKROGL064977@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 20:27:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254258 - projects/camlock/sys/dev/mps X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 20:27:25 -0000 Author: mav Date: Mon Aug 12 20:27:24 2013 New Revision: 254258 URL: http://svnweb.freebsd.org/changeset/base/254258 Log: MFC @ r254257 Modified: projects/camlock/sys/dev/mps/mps_sas.c Directory Properties: projects/camlock/ (props changed) projects/camlock/sys/ (props changed) Modified: projects/camlock/sys/dev/mps/mps_sas.c ============================================================================== --- projects/camlock/sys/dev/mps/mps_sas.c Mon Aug 12 20:17:37 2013 (r254257) +++ projects/camlock/sys/dev/mps/mps_sas.c Mon Aug 12 20:27:24 2013 (r254258) @@ -308,7 +308,7 @@ mpssas_log_command(struct mps_command *c return; /* No need to be in here if debugging isn't enabled */ - if (cm->cm_sc->mps_debug & level) == 0) + if ((cm->cm_sc->mps_debug & level) == 0) return; sbuf_new(&sb, str, sizeof(str), 0); From owner-svn-src-projects@FreeBSD.ORG Tue Aug 13 10:24:43 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7E0F5A30; Tue, 13 Aug 2013 10:24:43 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6BD4D2AF1; Tue, 13 Aug 2013 10:24:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DAOhHH051621; Tue, 13 Aug 2013 10:24:43 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DAOhgR051620; Tue, 13 Aug 2013 10:24:43 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308131024.r7DAOhgR051620@svn.freebsd.org> From: Alexander Motin Date: Tue, 13 Aug 2013 10:24:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254280 - projects/camlock/sys/cam/scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 10:24:43 -0000 Author: mav Date: Tue Aug 13 10:24:42 2013 New Revision: 254280 URL: http://svnweb.freebsd.org/changeset/base/254280 Log: Add missing xpt_free_ccb(work_ccb); on malloc() failure during scan. Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Aug 13 09:58:27 2013 (r254279) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Aug 13 10:24:42 2013 (r254280) @@ -1903,6 +1903,7 @@ scsi_scan_bus(struct cam_periph *periph, (work_ccb->cpi.max_target * sizeof (u_int)), M_CAMXPT, M_ZERO|M_NOWAIT); if (scan_info == NULL) { request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL; + xpt_free_ccb(work_ccb); xpt_done(request_ccb); return; } From owner-svn-src-projects@FreeBSD.ORG Tue Aug 13 16:05:48 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C835D119; Tue, 13 Aug 2013 16:05:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B49532198; Tue, 13 Aug 2013 16:05:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DG5mrL079692; Tue, 13 Aug 2013 16:05:48 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DG5lhi079687; Tue, 13 Aug 2013 16:05:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308131605.r7DG5lhi079687@svn.freebsd.org> From: Alexander Motin Date: Tue, 13 Aug 2013 16:05:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254284 - in projects/camlock/sys/cam: . ata scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 16:05:48 -0000 Author: mav Date: Tue Aug 13 16:05:47 2013 New Revision: 254284 URL: http://svnweb.freebsd.org/changeset/base/254284 Log: - Introduce new CCB flag CAM_UNLOCKED to allow completion callback to be called without lock held. - Use the flag above for asyncs instead of dropping it inside the handler. - Tune bus scan locking to sinlence WITTNESS warnings and protect state. Modified: projects/camlock/sys/cam/ata/ata_xpt.c projects/camlock/sys/cam/cam_ccb.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_xpt.c Tue Aug 13 15:40:43 2013 (r254283) +++ projects/camlock/sys/cam/ata/ata_xpt.c Tue Aug 13 16:05:47 2013 (r254284) @@ -1321,6 +1321,7 @@ ata_scan_bus(struct cam_periph *periph, struct cam_path *path; ata_scan_bus_info *scan_info; union ccb *work_ccb, *reset_ccb; + struct mtx *mtx; cam_status status; CAM_DEBUG(request_ccb->ccb_h.path, CAM_DEBUG_TRACE, @@ -1396,11 +1397,14 @@ ata_scan_bus(struct cam_periph *periph, xpt_done(request_ccb); break; } + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); goto scan_next; case XPT_SCAN_LUN: work_ccb = request_ccb; /* Reuse the same CCB to query if a device was really found */ scan_info = (ata_scan_bus_info *)work_ccb->ccb_h.ppriv_ptr0; + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); + mtx_lock(mtx); /* If there is PMP... */ if ((scan_info->cpi->hba_inquiry & PI_SATAPM) && (scan_info->counter == scan_info->cpi->max_target)) { @@ -1429,6 +1433,7 @@ ata_scan_bus(struct cam_periph *periph, ((scan_info->cpi->hba_inquiry & PI_SATAPM) ? 0 : scan_info->cpi->max_target)) { done: + mtx_unlock(mtx); xpt_free_ccb(work_ccb); xpt_free_ccb((union ccb *)scan_info->cpi); request_ccb = scan_info->request_ccb; @@ -1445,6 +1450,8 @@ scan_next: scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); if (status != CAM_REQ_CMP) { + if (request_ccb->ccb_h.func_code == XPT_SCAN_LUN) + mtx_unlock(mtx); printf("xpt_scan_bus: xpt_create_path failed" " with status %#x, bus scan halted\n", status); @@ -1460,9 +1467,15 @@ scan_next: scan_info->request_ccb->ccb_h.pinfo.priority); work_ccb->ccb_h.func_code = XPT_SCAN_LUN; work_ccb->ccb_h.cbfcnp = ata_scan_bus; + work_ccb->ccb_h.flags |= CAM_UNLOCKED; work_ccb->ccb_h.ppriv_ptr0 = scan_info; work_ccb->crcn.flags = scan_info->request_ccb->crcn.flags; + mtx_unlock(mtx); + if (request_ccb->ccb_h.func_code == XPT_SCAN_LUN) + mtx = NULL; xpt_action(work_ccb); + if (mtx != NULL) + mtx_lock(mtx); break; default: break; @@ -1512,6 +1525,7 @@ ata_scan_lun(struct cam_periph *periph, } xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_XPT); request_ccb->ccb_h.cbfcnp = xptscandone; + request_ccb->ccb_h.flags |= CAM_UNLOCKED; request_ccb->ccb_h.func_code = XPT_SCAN_LUN; request_ccb->crcn.flags = flags; } Modified: projects/camlock/sys/cam/cam_ccb.h ============================================================================== --- projects/camlock/sys/cam/cam_ccb.h Tue Aug 13 15:40:43 2013 (r254283) +++ projects/camlock/sys/cam/cam_ccb.h Tue Aug 13 16:05:47 2013 (r254284) @@ -104,7 +104,9 @@ typedef enum { CAM_SEND_SENSE = 0x08000000,/* Send sense data with status */ CAM_TERM_IO = 0x10000000,/* Terminate I/O Message sup. */ CAM_DISCONNECT = 0x20000000,/* Disconnects are mandatory */ - CAM_SEND_STATUS = 0x40000000 /* Send status after data phase */ + CAM_SEND_STATUS = 0x40000000,/* Send status after data phase */ + + CAM_UNLOCKED = 0x80000000 /* Call callback without lock. */ } ccb_flags; /* XPT Opcodes for xpt_action */ Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Tue Aug 13 15:40:43 2013 (r254283) +++ projects/camlock/sys/cam/cam_xpt.c Tue Aug 13 16:05:47 2013 (r254284) @@ -770,6 +770,7 @@ static void xpt_scanner_thread(void *dummy) { union ccb *ccb; + struct cam_path path; xpt_lock_buses(); for (;;) { @@ -780,7 +781,16 @@ xpt_scanner_thread(void *dummy) TAILQ_REMOVE(&xsoftc.ccb_scanq, &ccb->ccb_h, sim_links.tqe); xpt_unlock_buses(); + /* + * Since lock can be dropped inside and path freed + * by completion callback even before return here, + * take our own path copy for reference. + */ + xpt_copy_path(&path, ccb->ccb_h.path); + xpt_path_lock(&path); xpt_action(ccb); + xpt_path_unlock(&path); + xpt_release_path(&path); xpt_lock_buses(); } @@ -4034,7 +4044,6 @@ xpt_async_process(struct cam_periph *per u_int32_t async_code; path = ccb->ccb_h.path; - xpt_path_unlock(path); async_code = ccb->casync.async_code; async_arg = ccb->casync.async_arg_ptr; CAM_DEBUG(path, CAM_DEBUG_TRACE | CAM_DEBUG_INFO, @@ -4064,7 +4073,6 @@ xpt_async_process(struct cam_periph *per xpt_release_simq(path->bus->sim, TRUE); if (ccb->casync.async_arg_size > 0) free(async_arg, M_CAMXPT); - xpt_path_lock(path); xpt_free_path(path); xpt_free_ccb(ccb); } @@ -4115,6 +4123,7 @@ xpt_async(u_int32_t async_code, struct c ccb->ccb_h.path->periph = NULL; ccb->ccb_h.func_code = XPT_ASYNC; ccb->ccb_h.cbfcnp = xpt_async_process; + ccb->ccb_h.flags |= CAM_UNLOCKED; ccb->casync.async_code = async_code; ccb->casync.async_arg_size = 0; size = xpt_async_size(async_code); @@ -5169,9 +5178,15 @@ camisr_runqueue(struct cam_sim *sim) ccb_h->status &= ~CAM_DEV_QFRZN; } + if (ccb_h->flags & CAM_UNLOCKED) { + mtx_unlock(mtx); + mtx = NULL; + } + /* Call the peripheral driver's callback */ (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); - mtx_unlock(mtx); + if (mtx != NULL) + mtx_unlock(mtx); mtx_lock(&sim->sim_doneq_mtx); } sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Aug 13 15:40:43 2013 (r254283) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Tue Aug 13 16:05:47 2013 (r254284) @@ -1836,6 +1836,8 @@ typedef struct { static void scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb) { + struct mtx *mtx; + CAM_DEBUG(request_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("scsi_scan_bus\n")); switch (request_ccb->ccb_h.func_code) { @@ -1934,6 +1936,8 @@ scsi_scan_bus(struct cam_periph *periph, scan_info->counter--; } } + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); + mtx_unlock(mtx); for (i = low_target; i <= max_target; i++) { cam_status status; @@ -1966,10 +1970,13 @@ scsi_scan_bus(struct cam_periph *periph, request_ccb->ccb_h.pinfo.priority); work_ccb->ccb_h.func_code = XPT_SCAN_LUN; work_ccb->ccb_h.cbfcnp = scsi_scan_bus; + work_ccb->ccb_h.flags |= CAM_UNLOCKED; work_ccb->ccb_h.ppriv_ptr0 = scan_info; work_ccb->crcn.flags = request_ccb->crcn.flags; xpt_action(work_ccb); } + + mtx_lock(mtx); break; } case XPT_SCAN_LUN: @@ -2002,6 +2009,8 @@ scsi_scan_bus(struct cam_periph *periph, target = request_ccb->ccb_h.path->target; next_target = 1; + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); + mtx_lock(mtx); if (target->luns) { uint32_t first; u_int nluns = scsi_4btoul(target->luns->length) / 8; @@ -2125,6 +2134,7 @@ scsi_scan_bus(struct cam_periph *periph, } } if (done) { + mtx_unlock(mtx); xpt_free_ccb(request_ccb); xpt_free_ccb((union ccb *)scan_info->cpi); request_ccb = scan_info->request_ccb; @@ -2138,6 +2148,7 @@ scsi_scan_bus(struct cam_periph *periph, } if ((scan_info->cpi->hba_misc & PIM_SEQSCAN) == 0) { + mtx_unlock(mtx); xpt_free_ccb(request_ccb); break; } @@ -2145,6 +2156,7 @@ scsi_scan_bus(struct cam_periph *periph, scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); if (status != CAM_REQ_CMP) { + mtx_unlock(mtx); printf("scsi_scan_bus: xpt_create_path failed" " with status %#x, bus scan halted\n", status); @@ -2160,6 +2172,7 @@ scsi_scan_bus(struct cam_periph *periph, request_ccb->ccb_h.pinfo.priority); request_ccb->ccb_h.func_code = XPT_SCAN_LUN; request_ccb->ccb_h.cbfcnp = scsi_scan_bus; + request_ccb->ccb_h.flags |= CAM_UNLOCKED; request_ccb->ccb_h.ppriv_ptr0 = scan_info; request_ccb->crcn.flags = scan_info->request_ccb->crcn.flags; @@ -2183,10 +2196,12 @@ scsi_scan_bus(struct cam_periph *periph, request_ccb->ccb_h.pinfo.priority); request_ccb->ccb_h.func_code = XPT_SCAN_LUN; request_ccb->ccb_h.cbfcnp = scsi_scan_bus; + request_ccb->ccb_h.flags |= CAM_UNLOCKED; request_ccb->ccb_h.ppriv_ptr0 = scan_info; request_ccb->crcn.flags = scan_info->request_ccb->crcn.flags; } + mtx_unlock(mtx); xpt_action(request_ccb); break; } @@ -2251,6 +2266,7 @@ scsi_scan_lun(struct cam_periph *periph, xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_XPT); request_ccb->ccb_h.cbfcnp = xptscandone; request_ccb->ccb_h.func_code = XPT_SCAN_LUN; + request_ccb->ccb_h.flags |= CAM_UNLOCKED; request_ccb->crcn.flags = flags; } From owner-svn-src-projects@FreeBSD.ORG Tue Aug 13 19:55:13 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9617CF84; Tue, 13 Aug 2013 19:55:13 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 558F320DC; Tue, 13 Aug 2013 19:55:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DJtD79066417; Tue, 13 Aug 2013 19:55:13 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DJtCLg066415; Tue, 13 Aug 2013 19:55:12 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308131955.r7DJtCLg066415@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 13 Aug 2013 19:55:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254290 - in projects/atomic64/sys: amd64/include i386/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:55:13 -0000 Author: jkim Date: Tue Aug 13 19:55:12 2013 New Revision: 254290 URL: http://svnweb.freebsd.org/changeset/base/254290 Log: Re-add "memory" back to clobber lists where CMPXCHG instructions are used. Note this instruction with LOCK prefix implicitly serializes load/store. Modified: projects/atomic64/sys/amd64/include/atomic.h projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/amd64/include/atomic.h ============================================================================== --- projects/atomic64/sys/amd64/include/atomic.h Tue Aug 13 19:20:50 2013 (r254289) +++ projects/atomic64/sys/amd64/include/atomic.h Tue Aug 13 19:55:12 2013 (r254290) @@ -149,7 +149,7 @@ atomic_cmpset_int(volatile u_int *dst, u "+m" (*dst), /* 1 */ "+a" (expect) /* 2 */ : "r" (src) /* 3 */ - : "cc"); + : "memory", "cc"); return (res); } @@ -168,7 +168,7 @@ atomic_cmpset_long(volatile u_long *dst, "+m" (*dst), /* 1 */ "+a" (expect) /* 2 */ : "r" (src) /* 3 */ - : "cc"); + : "memory", "cc"); return (res); } @@ -288,7 +288,7 @@ atomic_load_acq_##TYPE(volatile u_##TYPE __asm __volatile(MPLOCKED LOP \ : "=a" (res), /* 0 */ \ "+m" (*p) /* 1 */ \ - : : "cc"); \ + : : "memory", "cc"); \ \ return (res); \ } \ Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Tue Aug 13 19:20:50 2013 (r254289) +++ projects/atomic64/sys/i386/include/atomic.h Tue Aug 13 19:55:12 2013 (r254290) @@ -211,7 +211,7 @@ atomic_cmpset_64_i586(volatile uint64_t "+A" (expect) /* 2 */ : "b" ((uint32_t)src), /* 3 */ "c" ((uint32_t)(src >> 32)) /* 4 */ - : "cc"); + : "memory", "cc"); return (res); } @@ -227,7 +227,7 @@ atomic_load_acq_64_i586(volatile uint64_ " cmpxchg8b %1" : "=&A" (res), /* 0 */ "+m" (*p) /* 1 */ - : : "cc"); + : : "memory", "cc"); return (res); } @@ -244,7 +244,7 @@ atomic_store_rel_64_i586(volatile uint64 " jne 1b" : "+m" (*p), /* 0 */ "+A" (v) /* 1 */ - : : "ebx", "ecx", "cc"); + : : "ebx", "ecx", "memory", "cc"); } static __inline uint64_t @@ -260,7 +260,7 @@ atomic_swap_64_i586(volatile uint64_t *p " jne 1b" : "+m" (*p), /* 0 */ "+A" (v) /* 1 */ - : : "ebx", "ecx", "cc"); + : : "ebx", "ecx", "memory", "cc"); return (v); } @@ -320,7 +320,7 @@ atomic_cmpset_int(volatile u_int *dst, u "+m" (*dst), /* 1 */ "+a" (expect) /* 2 */ : "r" (src) /* 3 */ - : "cc"); + : "memory", "cc"); return (res); } @@ -410,7 +410,7 @@ atomic_load_acq_##TYPE(volatile u_##TYPE __asm __volatile(MPLOCKED LOP \ : "=a" (res), /* 0 */ \ "+m" (*p) /* 1 */ \ - : : "cc"); \ + : : "memory", "cc"); \ \ return (res); \ } \ From owner-svn-src-projects@FreeBSD.ORG Wed Aug 14 06:27:59 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id EFB0B818; Wed, 14 Aug 2013 06:27:59 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CCE9F21B2; Wed, 14 Aug 2013 06:27:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E6RxmM027051; Wed, 14 Aug 2013 06:27:59 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E6Rx3T027043; Wed, 14 Aug 2013 06:27:59 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201308140627.r7E6Rx3T027043@svn.freebsd.org> From: Neel Natu Date: Wed, 14 Aug 2013 06:27:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254317 - in projects/bhyve_npt_pmap/sys/amd64: amd64 include vmm vmm/intel X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 06:28:00 -0000 Author: neel Date: Wed Aug 14 06:27:58 2013 New Revision: 254317 URL: http://svnweb.freebsd.org/changeset/base/254317 Log: Add support for accessed/dirty bit emulation in amd64/pmap. This is motivated by nested page table implementations that do not keep track of accessed/dirty bits. Accessed Bit emulation is done by enforcing that PG_A is always set concurrently with PG_V. Thus, the accessed bit is "cleared" by removing the mapping entirely from the pmap. Dirty Bit emulation is done by temporarily mapping the page as readonly and then setting the (PG_RW|PG_M) bits on a write fault. Mappings that are truly readonly are identified with the PG_RO pseudo-flag. Modified: projects/bhyve_npt_pmap/sys/amd64/amd64/pmap.c projects/bhyve_npt_pmap/sys/amd64/include/pmap.h projects/bhyve_npt_pmap/sys/amd64/vmm/intel/ept.c projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Modified: projects/bhyve_npt_pmap/sys/amd64/amd64/pmap.c ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/amd64/pmap.c Wed Aug 14 06:06:39 2013 (r254316) +++ projects/bhyve_npt_pmap/sys/amd64/amd64/pmap.c Wed Aug 14 06:27:58 2013 (r254317) @@ -344,6 +344,8 @@ static struct md_page *pv_table; pt_entry_t *CMAP1 = 0; caddr_t CADDR1 = 0; +static int pmap_flags = PMAP_PDE_SUPERPAGE; /* flags for x86 pmaps */ + /* * Crashdump maps. */ @@ -773,7 +775,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); - kernel_pmap->pm_flags = PMAP_PDE_SUPERPAGE; + kernel_pmap->pm_flags = pmap_flags; /* * Initialize the global pv list lock. @@ -1089,6 +1091,13 @@ pmap_cache_mask(pmap_t pmap, boolean_t i } static __inline boolean_t +pmap_emulate_ad_bits(pmap_t pmap) +{ + + return ((pmap->pm_flags & PMAP_EMULATE_AD_BITS) != 0); +} + +static __inline boolean_t pmap_ps_enabled(pmap_t pmap) { @@ -1445,7 +1454,7 @@ pmap_invalidate_range(pmap_t pmap, vm_of invlpg(addr); break; case PT_EPT: - pmap->eptgen++; + pmap->pm_eptgen++; break; default: panic("pmap_invalidate_range: unknown type: %d", pmap->pm_type); @@ -1977,7 +1986,7 @@ pmap_pinit0(pmap_t pmap) PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); - pmap->pm_flags = PMAP_PDE_SUPERPAGE; + pmap->pm_flags = pmap_flags; } /* @@ -2031,6 +2040,7 @@ pmap_pinit_type(pmap_t pmap, enum pmap_t TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); pmap->pm_flags = flags; + pmap->pm_eptgen = 0; return (1); } @@ -2039,7 +2049,7 @@ int pmap_pinit(pmap_t pmap) { - return (pmap_pinit_type(pmap, PT_X86, PMAP_PDE_SUPERPAGE)); + return (pmap_pinit_type(pmap, PT_X86, pmap_flags)); } /* @@ -2473,7 +2483,7 @@ reclaim_pv_chunk(pmap_t locked_pmap, str vm_page_t free, m, m_pc; uint64_t inuse; int bit, field, freed; - + rw_assert(&pvh_global_lock, RA_LOCKED); PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED); KASSERT(lockp != NULL, ("reclaim_pv_chunk: lockp is NULL")); @@ -2527,8 +2537,11 @@ reclaim_pv_chunk(pmap_t locked_pmap, str if ((tpte & PG_G) != 0) pmap_invalidate_page(pmap, va); m = PHYS_TO_VM_PAGE(tpte & PG_FRAME); - if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) + if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((tpte & PG_RO) == 0, + ("readonly modified PTE %#lx", tpte)); vm_page_dirty(m); + } if ((tpte & PG_A) != 0) vm_page_aflag_set(m, PGA_REFERENCED); CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m); @@ -3187,8 +3200,11 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t eva = sva + NBPDR; for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); va < eva; va += PAGE_SIZE, m++) { - if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) + if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((oldpde & PG_RO) == 0, + ("readonly modified PDE %#lx", oldpde)); vm_page_dirty(m); + } if (oldpde & PG_A) vm_page_aflag_set(m, PGA_REFERENCED); if (TAILQ_EMPTY(&m->md.pv_list) && @@ -3235,8 +3251,11 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t pmap_resident_count_dec(pmap, 1); if (oldpte & PG_MANAGED) { m = PHYS_TO_VM_PAGE(oldpte & PG_FRAME); - if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) + if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((oldpte & PG_RO) == 0, + ("readonly modified PTE %#lx", oldpte)); vm_page_dirty(m); + } if (oldpte & PG_A) vm_page_aflag_set(m, PGA_REFERENCED); CHANGE_PV_LIST_LOCK_TO_VM_PAGE(lockp, m); @@ -3480,8 +3499,11 @@ small_mappings: /* * Update the vm_page_t clean and reference bits. */ - if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) + if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((tpte & PG_RO) == 0, + ("readonly modified PTE %#lx", tpte)); vm_page_dirty(m); + } pmap_unuse_pt(pmap, pv->pv_va, *pde, &free); pmap_invalidate_page(pmap, pv->pv_va); TAILQ_REMOVE(&m->md.pv_list, pv, pv_next); @@ -3518,11 +3540,17 @@ retry: eva = sva + NBPDR; for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); va < eva; va += PAGE_SIZE, m++) - if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) + if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((oldpde & PG_RO) == 0, + ("readonly modified PDE %#lx", oldpde)); vm_page_dirty(m); + } } - if ((prot & VM_PROT_WRITE) == 0) + if ((prot & VM_PROT_WRITE) == 0) { newpde &= ~(PG_RW | PG_M); + if (pmap_emulate_ad_bits(pmap)) + newpde |= PG_RO; + } if ((prot & VM_PROT_EXECUTE) == 0) newpde |= pg_nx; if (newpde != oldpde) { @@ -3652,10 +3680,15 @@ retry: if ((prot & VM_PROT_WRITE) == 0) { if ((pbits & (PG_MANAGED | PG_M | PG_RW)) == (PG_MANAGED | PG_M | PG_RW)) { + KASSERT((pbits & PG_RO) == 0, + ("readonly modified PTE %#lx", + pbits)); m = PHYS_TO_VM_PAGE(pbits & PG_FRAME); vm_page_dirty(m); } pbits &= ~(PG_RW | PG_M); + if (pmap_emulate_ad_bits(pmap)) + pbits |= PG_RO; } if ((prot & VM_PROT_EXECUTE) == 0) pbits |= pg_nx; @@ -3716,6 +3749,8 @@ setpde: return; } if ((newpde & (PG_M | PG_RW)) == PG_RW) { + KASSERT(!pmap_emulate_ad_bits(pmap), + ("invalid RW/M bits for dirty bit emulation %#lx", newpde)); /* * When PG_M is already clear, PG_RW can be cleared without * a TLB invalidation. @@ -3741,6 +3776,9 @@ setpte: return; } if ((oldpte & (PG_M | PG_RW)) == PG_RW) { + KASSERT(!pmap_emulate_ad_bits(pmap), + ("invalid RW/M bits for dirty bit " + "emulation %#lx", oldpte)); /* * When PG_M is already clear, PG_RW can be cleared * without a TLB invalidation. @@ -3799,6 +3837,14 @@ setpte: " in pmap %p", va, pmap); } +static __inline boolean_t +pmap_writeable_mapping(pmap_t pmap, pt_entry_t pte) +{ + + return ((pte & PG_RW) != 0 || + (pmap_emulate_ad_bits(pmap) && (pte & PG_RO) == 0)); +} + /* * Insert the given physical page (p) at * the specified virtual address (v) in the @@ -3855,6 +3901,38 @@ pmap_enter(pmap_t pmap, vm_offset_t va, newpte |= PG_G; newpte |= pmap_cache_bits(pmap, m->md.pat_mode, 0); + if (pmap_emulate_ad_bits(pmap)) { + /* + * Set modified bit gratuitously for writeable mappings if + * the page is unmanaged. We do not want to take a fault + * to do the dirty bit accounting for these mappings. + */ + if ((m->oflags & VPO_UNMANAGED) != 0) { + if ((newpte & PG_RW) != 0) + newpte |= PG_M; + } + + /* + * Dirty bit emulation enforces the following PG_RW behavior: + * - if PG_RW = 1 then PG_M = 1 + * - if PG_RW = 0 then PG_M = 0 + * + * If PG_RW = 0 then there are two possibilities: + * - the mapping is permanently readonly (PG_RO = 1) + * - the mapping is temporarily readonly for dirty bit emulation + */ + if ((newpte & PG_RW) == 0) + newpte |= PG_RO; + else if ((newpte & PG_M) == 0) + newpte &= ~PG_RW; + + if (((newpte & (PG_M | PG_RW)) != (PG_M | PG_RW)) && + ((newpte & (PG_M | PG_RW)) != 0)) { + panic("pmap_enter: invalid rw/modified bits for " + "dirty bit emulation %#lx", newpte); + } + } + mpte = NULL; lock = NULL; @@ -3921,7 +3999,7 @@ retry: */ if ((origpte & PG_MANAGED) != 0) { newpte |= PG_MANAGED; - if ((newpte & PG_RW) != 0) + if (pmap_writeable_mapping(pmap, newpte)) vm_page_aflag_set(m, PGA_WRITEABLE); } if (((origpte ^ newpte) & ~(PG_M | PG_A)) == 0) @@ -3946,7 +4024,7 @@ retry: pv->pv_va = va; CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, pa); TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next); - if ((newpte & PG_RW) != 0) + if (pmap_writeable_mapping(pmap, newpte)) vm_page_aflag_set(m, PGA_WRITEABLE); } @@ -3961,8 +4039,12 @@ validate: if ((origpte & PG_MANAGED) != 0) { om = PHYS_TO_VM_PAGE(opa); if ((origpte & (PG_M | PG_RW)) == (PG_M | - PG_RW)) + PG_RW)) { + KASSERT((origpte & PG_RO) == 0, + ("readonly modified PTE %#lx", + origpte)); vm_page_dirty(om); + } if ((origpte & PG_A) != 0) vm_page_aflag_set(om, PGA_REFERENCED); CHANGE_PV_LIST_LOCK_TO_PHYS(&lock, opa); @@ -3975,8 +4057,11 @@ validate: } } else if ((newpte & PG_M) == 0 && (origpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { - if ((origpte & PG_MANAGED) != 0) + if ((origpte & PG_MANAGED) != 0) { + KASSERT((origpte & PG_RO) == 0, + ("readonly modified PTE %#lx", origpte)); vm_page_dirty(m); + } /* * Although the PTE may still have PG_RW set, TLB @@ -4027,6 +4112,15 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t rw_assert(&pvh_global_lock, RA_LOCKED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); + + /* + * Software emulation of the accessed bit requires that if PG_V is set + * then PG_A is also set. Therefore we defer setting up the mapping + * until the process actually tries to access it. + */ + if (pmap_emulate_ad_bits(pmap)) + return (FALSE); + if ((mpde = pmap_allocpde(pmap, va, NULL)) == NULL) { CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx" " in pmap %p", va, pmap); @@ -4170,6 +4264,14 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ PMAP_LOCK_ASSERT(pmap, MA_OWNED); /* + * Software emulation of the accessed bit requires that if PG_V is set + * then PG_A is also set. Therefore we defer setting up the mapping + * until the process actually tries to access it. + */ + if (pmap_emulate_ad_bits(pmap)) + return (NULL); + + /* * In the case that a page table page is not * resident, we are creating it here. */ @@ -4444,6 +4546,9 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm if (dst_addr != src_addr) return; + if (pmap_emulate_ad_bits(dst_pmap)) + return; + lock = NULL; rw_rlock(&pvh_global_lock); if (dst_pmap < src_pmap) { @@ -4868,6 +4973,9 @@ pmap_remove_pages(pmap_t pmap) * Update the vm_page_t clean/reference bits. */ if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((tpte & PG_RO) == 0, + ("readonly modified PTE %#lx", + tpte)); if ((tpte & PG_PS) != 0) { for (mt = m; mt < &m[NBPDR / PAGE_SIZE]; mt++) vm_page_dirty(mt); @@ -4992,7 +5100,7 @@ pmap_is_modified_pvh(struct md_page *pvh /* * pmap_is_prefaultable: * - * Return whether or not the specified virtual address is elgible + * Return whether or not the specified virtual address is eligible * for prefault. */ boolean_t @@ -5071,7 +5179,7 @@ pmap_remove_write(vm_page_t m) pmap_t pmap; pv_entry_t next_pv, pv; pd_entry_t *pde; - pt_entry_t oldpte, *pte, PG_M; + pt_entry_t oldpte, newpte, *pte, PG_M; vm_offset_t va; KASSERT((m->oflags & VPO_UNMANAGED) == 0, @@ -5111,12 +5219,17 @@ small_mappings: pte = pmap_pde_to_pte(pde, pv->pv_va); retry: oldpte = *pte; - if (oldpte & PG_RW) { - if (!atomic_cmpset_long(pte, oldpte, oldpte & - ~(PG_RW | PG_M))) + newpte = oldpte & ~(PG_RW | PG_M); + if (pmap_emulate_ad_bits(pmap)) + newpte |= PG_RO; + if (newpte != oldpte) { + if (!atomic_cmpset_long(pte, oldpte, newpte)) goto retry; - if ((oldpte & PG_M) != 0) + if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((oldpte & PG_RO) == 0, + ("readonly modified PTE %#lx", oldpte)); vm_page_dirty(m); + } pmap_invalidate_page(pmap, pv->pv_va); } PMAP_UNLOCK(pmap); @@ -5147,6 +5260,7 @@ pmap_ts_referenced(vm_page_t m) pt_entry_t *pte, PG_A; vm_offset_t va; int rtval = 0; + vm_page_t free = NULL; KASSERT((m->oflags & VPO_UNMANAGED) == 0, ("pmap_ts_referenced: page %p is not managed", m)); @@ -5187,8 +5301,10 @@ pmap_ts_referenced(vm_page_t m) } small_mappings: if ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { - pvf = pv; + pvf = NULL; do { + if (pvf == NULL) + pvf = pv; pvn = TAILQ_NEXT(pv, pv_next); TAILQ_REMOVE(&m->md.pv_list, pv, pv_next); TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_next); @@ -5200,8 +5316,23 @@ small_mappings: " found a 2mpage in page %p's pv list", m)); pte = pmap_pde_to_pte(pde, pv->pv_va); if ((*pte & PG_A) != 0) { - atomic_clear_long(pte, PG_A); - pmap_invalidate_page(pmap, pv->pv_va); + if (pmap_emulate_ad_bits(pmap)) { + /* + * Wired pages cannot be paged out so + * doing accessed bit emulation for + * them is wasted effort. We do the + * hard work for unwired pages only. + */ + if ((*pte & PG_W) == 0) { + pmap_remove_page(pmap, + pv->pv_va, pde, &free); + if (pvf == pv) + pvf = NULL; + } + } else { + atomic_clear_long(pte, PG_A); + pmap_invalidate_page(pmap, pv->pv_va); + } rtval++; if (rtval > 4) pvn = NULL; @@ -5211,6 +5342,7 @@ small_mappings: } out: rw_wunlock(&pvh_global_lock); + pmap_free_zero_pages(free); return (rtval); } @@ -5226,6 +5358,7 @@ pmap_clear_modify(vm_page_t m) pd_entry_t oldpde, *pde; pt_entry_t oldpte, *pte, PG_M; vm_offset_t va; + long clear_bits; KASSERT((m->oflags & VPO_UNMANAGED) == 0, ("pmap_clear_modify: page %p is not managed", m)); @@ -5263,14 +5396,18 @@ pmap_clear_modify(vm_page_t m) PG_PS_FRAME); pte = pmap_pde_to_pte(pde, va); oldpte = *pte; - if ((oldpte & PG_V) != 0) { - while (!atomic_cmpset_long(pte, - oldpte, - oldpte & ~(PG_M | PG_RW))) - oldpte = *pte; - vm_page_dirty(m); - pmap_invalidate_page(pmap, va); - } + + if ((oldpte & (PG_RO | PG_RW | PG_M)) != + (PG_RW | PG_M)) + panic("inconsistent pte %#lx " + "after demotion from pde " + "%#lx", oldpte, oldpde); + + while (!atomic_cmpset_long(pte, oldpte, + oldpte & ~(PG_M | PG_RW))) + oldpte = *pte; + vm_page_dirty(m); + pmap_invalidate_page(pmap, va); } } } @@ -5285,8 +5422,22 @@ small_mappings: KASSERT((*pde & PG_PS) == 0, ("pmap_clear_modify: found" " a 2mpage in page %p's pv list", m)); pte = pmap_pde_to_pte(pde, pv->pv_va); - if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { - atomic_clear_long(pte, PG_M); + oldpte = *pte; + if (pmap_emulate_ad_bits(pmap)) { + if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + KASSERT((oldpte & PG_RO) == 0, + ("modified readonly pte %#lx", oldpte)); + } else { + KASSERT((oldpte & (PG_M | PG_RW)) == 0, + ("invalid RW/M bits for dirty bit " + "emulation %#lx", oldpte)); + } + } + if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + clear_bits = PG_M; + if (pmap_emulate_ad_bits(pmap)) + clear_bits |= PG_RW; + atomic_clear_long(pte, clear_bits); pmap_invalidate_page(pmap, pv->pv_va); } PMAP_UNLOCK(pmap); @@ -5308,6 +5459,7 @@ pmap_clear_reference(vm_page_t m) pd_entry_t oldpde, *pde; pt_entry_t *pte, PG_A; vm_offset_t va; + vm_page_t free = NULL; KASSERT((m->oflags & VPO_UNMANAGED) == 0, ("pmap_clear_reference: page %p is not managed", m)); @@ -5339,7 +5491,7 @@ pmap_clear_reference(vm_page_t m) PMAP_UNLOCK(pmap); } small_mappings: - TAILQ_FOREACH(pv, &m->md.pv_list, pv_next) { + TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_next, next_pv) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); PG_A = pmap_accessed_bit(pmap); @@ -5348,12 +5500,26 @@ small_mappings: " a 2mpage in page %p's pv list", m)); pte = pmap_pde_to_pte(pde, pv->pv_va); if (*pte & PG_A) { - atomic_clear_long(pte, PG_A); - pmap_invalidate_page(pmap, pv->pv_va); + if (pmap_emulate_ad_bits(pmap)) { + /* + * Wired pages cannot be paged out so doing + * accessed bit emulation for them is wasted + * effort. We do the hard work for unwired + * pages only. + */ + if ((*pte & PG_W) == 0) { + pmap_remove_page(pmap, pv->pv_va, pde, + &free); + } + } else { + atomic_clear_long(pte, PG_A); + pmap_invalidate_page(pmap, pv->pv_va); + } } PMAP_UNLOCK(pmap); } rw_wunlock(&pvh_global_lock); + pmap_free_zero_pages(free); } /* @@ -5921,6 +6087,71 @@ pmap_align_superpage(vm_object_t object, *addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset; } +#ifdef INVARIANTS +static unsigned long num_dirty_emulations; +SYSCTL_ULONG(_vm_pmap, OID_AUTO, num_dirty_emulations, CTLFLAG_RW, + &num_dirty_emulations, 0, NULL); +#endif +int +pmap_emulate_dirty(pmap_t pmap, vm_offset_t va) +{ + int rv = -1; + struct rwlock *lock; + vm_page_t m, mpte; + pd_entry_t *pde; + pt_entry_t *pte, PG_A, PG_M; + + if (!pmap_emulate_ad_bits(pmap)) + return (-1); + + PG_A = pmap_accessed_bit(pmap); + PG_M = pmap_modified_bit(pmap); + + lock = NULL; + rw_rlock(&pvh_global_lock); + PMAP_LOCK(pmap); + + /* + * Dirty bit emulation is done in the fast path if 'va' is + * already mapped as a regular page and is writeable. + */ + pde = pmap_pde(pmap, va); + if (pde != NULL && (*pde & (PG_PS | PG_V)) == PG_V) { + pte = pmap_pde_to_pte(pde, va); + if ((*pte & (PG_V | PG_RO)) == PG_V) { + KASSERT((*pte & PG_A) != 0, + ("pmap_emulate_dirty: accessed and valid bits ", + "mismatch %#lx", *pte)); + atomic_set_long(pte, PG_M | PG_RW); + rv = 0; /* success */ + +#ifdef INVARIANTS + atomic_add_long(&num_dirty_emulations, 1); +#endif + + /* try to promote the mapping */ + if (va < VM_MAXUSER_ADDRESS) + mpte = PHYS_TO_VM_PAGE(*pde & PG_FRAME); + else + mpte = NULL; + + m = PHYS_TO_VM_PAGE(*pte & PG_FRAME); + + if ((mpte == NULL || mpte->wire_count == NPTEPG) && + pg_ps_enabled && pmap_ps_enabled(pmap) && + (m->flags & PG_FICTITIOUS) == 0 && + vm_reserv_level_iffullpop(m) == 0) + pmap_promote_pde(pmap, pde, va, &lock); + } + } + + if (lock != NULL) + rw_wunlock(lock); + rw_runlock(&pvh_global_lock); + PMAP_UNLOCK(pmap); + return (rv); +} + void pmap_get_mapping(pmap_t pmap, vm_offset_t va, uint64_t *ptr, int *num) { Modified: projects/bhyve_npt_pmap/sys/amd64/include/pmap.h ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/include/pmap.h Wed Aug 14 06:06:39 2013 (r254316) +++ projects/bhyve_npt_pmap/sys/amd64/include/pmap.h Wed Aug 14 06:27:58 2013 (r254317) @@ -79,6 +79,12 @@ #define PG_PROT (PG_RW|PG_U) /* all protection bits . */ #define PG_N (PG_NC_PWT|PG_NC_PCD) /* Non-cacheable */ +/* + * "readonly" pseudo-flag used in pmap entries that require software emulation + * of accessed/dirty bits. + */ +#define PG_RO (1ul << 52) + /* Page level cache control fields used to determine the PAT type */ #define PG_PDE_CACHE (PG_PDE_PAT | PG_NC_PWT | PG_NC_PCD) #define PG_PTE_CACHE (PG_PTE_PAT | PG_NC_PWT | PG_NC_PCD) @@ -88,7 +94,7 @@ * (PTE) page mappings have identical settings for the following fields: */ #define PG_PTE_PROMOTE (PG_NX | PG_MANAGED | PG_W | PG_G | PG_PTE_CACHE | \ - PG_M | PG_A | PG_U | PG_RW | PG_V) + PG_M | PG_A | PG_U | PG_RW | PG_V | PG_RO) /* * Page Protection Exception bits @@ -264,6 +270,7 @@ struct pmap { /* flags */ #define PMAP_PDE_SUPERPAGE (1 << 0) /* supports 2MB superpages */ +#define PMAP_EMULATE_AD_BITS (1 << 1) /* needs A/D bits emulation */ typedef struct pmap *pmap_t; @@ -283,6 +290,7 @@ extern struct pmap kernel_pmap_store; #define PMAP_UNLOCK(pmap) mtx_unlock(&(pmap)->pm_mtx) int pmap_pinit_type(pmap_t pmap, enum pmap_type pm_type, int flags); +int pmap_emulate_dirty(pmap_t pmap, vm_offset_t va); #endif /* Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/intel/ept.c ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/vmm/intel/ept.c Wed Aug 14 06:06:39 2013 (r254316) +++ projects/bhyve_npt_pmap/sys/amd64/vmm/intel/ept.c Wed Aug 14 06:27:58 2013 (r254317) @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -69,6 +70,7 @@ static int ept_enable_ad_bits; int ept_init(void) { + int use_hw_ad_bits; uint64_t cap; cap = rdmsr(MSR_VMX_EPT_VPID_CAP); @@ -91,8 +93,12 @@ ept_init(void) if (EPT_PDE_SUPERPAGE(cap)) ept_pmap_flags |= PMAP_PDE_SUPERPAGE; /* 2MB superpage */ - if (AD_BITS_SUPPORTED(cap)) + use_hw_ad_bits = 1; + TUNABLE_INT_FETCH("vmx.ept.use_hw_ad_bits", &use_hw_ad_bits); + if (use_hw_ad_bits && AD_BITS_SUPPORTED(cap)) ept_enable_ad_bits = 1; + else + ept_pmap_flags |= PMAP_EMULATE_AD_BITS; return (0); } Modified: projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c ============================================================================== --- projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Aug 14 06:06:39 2013 (r254316) +++ projects/bhyve_npt_pmap/sys/amd64/vmm/vmm.c Wed Aug 14 06:27:58 2013 (r254317) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include "vmm_ktr.h" #include "vmm_host.h" #include "vmm_mem.h" #include "vmm_util.h" @@ -736,23 +737,41 @@ vm_handle_hlt(struct vm *vm, int vcpuid, static int vm_handle_paging(struct vm *vm, int vcpuid, boolean_t *retu) { - int rv; + int rv, ftype, prot; struct vm_map *map; - vm_prot_t ftype; struct vcpu *vcpu; struct vm_exit *vme; vcpu = &vm->vcpu[vcpuid]; vme = &vcpu->exitinfo; - map = &vm->vmspace->vm_map; ftype = vme->u.paging.fault_type; + KASSERT(ftype == VM_PROT_WRITE || + ftype == VM_PROT_EXECUTE || + ftype == VM_PROT_READ, + ("vm_handle_paging: invalid fault_type %d", ftype)); + + /* + * If the mapping exists then the write fault may be intentional + * for doing dirty bit emulation. + */ + prot = vme->u.paging.protection; + if ((prot & VM_PROT_READ) != 0 && ftype == VM_PROT_WRITE) { + rv = pmap_emulate_dirty(vmspace_pmap(vm->vmspace), + vme->u.paging.gpa); + if (rv == 0) + goto done; + } + map = &vm->vmspace->vm_map; rv = vm_fault(map, vme->u.paging.gpa, ftype, VM_FAULT_NORMAL); + VMM_CTR3(vm, vcpuid, "vm_handle_paging rv = %d, gpa = %#lx, ftype = %d", + rv, vme->u.paging.gpa, ftype); + if (rv != KERN_SUCCESS) return (EFAULT); - +done: /* restart execution at the faulting instruction */ vme->inst_length = 0; From owner-svn-src-projects@FreeBSD.ORG Wed Aug 14 06:36:32 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D6E6FC10; Wed, 14 Aug 2013 06:36:32 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B4F942229; Wed, 14 Aug 2013 06:36:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E6aWbb030674; Wed, 14 Aug 2013 06:36:32 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E6aWEe030673; Wed, 14 Aug 2013 06:36:32 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308140636.r7E6aWEe030673@svn.freebsd.org> From: Alexander Motin Date: Wed, 14 Aug 2013 06:36:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254318 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 06:36:32 -0000 Author: mav Date: Wed Aug 14 06:36:32 2013 New Revision: 254318 URL: http://svnweb.freebsd.org/changeset/base/254318 Log: Take new approach to multiple completion threads. Create number of global threads and spread the load between them using hash of the device address. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 06:27:58 2013 (r254317) +++ projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 06:36:32 2013 (r254318) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -156,14 +157,18 @@ TUNABLE_INT("kern.cam.boot_delay", &xsof SYSCTL_INT(_kern_cam, OID_AUTO, boot_delay, CTLFLAG_RDTUN, &xsoftc.boot_delay, 0, "Bus registration wait time"); -/* Queues for our software interrupt handler */ -typedef TAILQ_HEAD(cam_isrq, ccb_hdr) cam_isrq_t; -typedef TAILQ_HEAD(cam_simq, cam_sim) cam_simq_t; -static cam_simq_t cam_simq; -static struct mtx cam_simq_lock; +struct cam_doneq { + struct mtx_padalign cam_doneq_mtx; + TAILQ_HEAD(, ccb_hdr) cam_doneq; +}; -/* Pointers to software interrupt handlers */ -static void *cambio_ih; +static struct cam_doneq cam_doneqs[MAXCPU]; +static int cam_num_doneqs; +static struct proc *cam_proc; + +TUNABLE_INT("kern.cam.num_doneqs", &cam_num_doneqs); +SYSCTL_INT(_kern_cam, OID_AUTO, num_doneqs, CTLFLAG_RDTUN, + &cam_num_doneqs, 0, "Number of completion queues/threads"); struct cam_periph *xpt_periph; @@ -249,8 +254,9 @@ static int xpt_schedule_dev(struct camq static xpt_devicefunc_t xptpassannouncefunc; static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); -static void camisr(void *); static void camisr_runqueue(struct cam_sim *); +static void xpt_done_process(struct ccb_hdr *ccb_h); +static void xpt_done_td(void *); static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus); static dev_match_ret xptdevicematch(struct dev_match_pattern *patterns, @@ -849,14 +855,13 @@ xpt_init(void *dummy) struct cam_path *path; struct cam_devq *devq; cam_status status; + int error, i; TAILQ_INIT(&xsoftc.xpt_busses); - TAILQ_INIT(&cam_simq); TAILQ_INIT(&xsoftc.ccb_scanq); STAILQ_INIT(&xsoftc.highpowerq); xsoftc.num_highpower = CAM_MAX_HIGHPOWER; - mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); xsoftc.xpt_taskq = taskqueue_create("CAM XPT task", M_WAITOK, @@ -914,8 +919,26 @@ xpt_init(void *dummy) path, NULL, 0, xpt_sim); xpt_free_path(path); mtx_unlock(&xsoftc.xpt_lock); - /* Install our software interrupt handlers */ - swi_add(NULL, "cambio", camisr, NULL, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih); + if (cam_num_doneqs < 1) + cam_num_doneqs = 1 + mp_ncpus / 6; + else if (cam_num_doneqs > MAXCPU) + cam_num_doneqs = MAXCPU; + for (i = 0; i < cam_num_doneqs; i++) { + mtx_init(&cam_doneqs[i].cam_doneq_mtx, "CAM doneq", NULL, + MTX_DEF); + TAILQ_INIT(&cam_doneqs[i].cam_doneq); + error = kproc_kthread_add(xpt_done_td, &cam_doneqs[i], + &cam_proc, NULL, 0, 0, "cam", "doneq%d", i); + if (error != 0) { + cam_num_doneqs = i; + break; + } + } + if (cam_num_doneqs < 1) { + printf("xpt_init: Cannot init completion queues " + "- failing attach\n"); + return (ENOMEM); + } /* * Register a callback for when interrupts are enabled. */ @@ -4309,7 +4332,8 @@ void xpt_done(union ccb *done_ccb) { struct cam_sim *sim; - int first; + struct cam_doneq *queue; + int run, hash; CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_done\n")); if ((done_ccb->ccb_h.func_code & XPT_FC_QUEUED) != 0) { @@ -4319,21 +4343,24 @@ xpt_done(union ccb *done_ccb) */ sim = done_ccb->ccb_h.path->bus->sim; mtx_lock(&sim->sim_doneq_mtx); - TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h, + if (sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) { + TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h, + sim_links.tqe); + mtx_unlock(&sim->sim_doneq_mtx); + return; + } + mtx_unlock(&sim->sim_doneq_mtx); + hash = (done_ccb->ccb_h.path_id + done_ccb->ccb_h.target_id + + done_ccb->ccb_h.target_lun) % cam_num_doneqs; + queue = &cam_doneqs[hash]; + mtx_lock(&queue->cam_doneq_mtx); + run = TAILQ_EMPTY(&queue->cam_doneq); + TAILQ_INSERT_TAIL(&queue->cam_doneq, &done_ccb->ccb_h, sim_links.tqe); done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; - if ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | - CAM_SIM_DQ_POLLED | CAM_SIM_DQ_BATCH)) == 0) { - mtx_lock(&cam_simq_lock); - first = TAILQ_EMPTY(&cam_simq); - TAILQ_INSERT_TAIL(&cam_simq, sim, links); - mtx_unlock(&cam_simq_lock); - sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; - } else - first = 0; - mtx_unlock(&sim->sim_doneq_mtx); - if (first) - swi_sched(cambio_ih, 0); + mtx_unlock(&queue->cam_doneq_mtx); + if (run) + wakeup(&queue->cam_doneq); } } @@ -4351,22 +4378,21 @@ xpt_batch_start(struct cam_sim *sim) void xpt_batch_done(struct cam_sim *sim) { - int runq; + struct ccb_hdr *ccb_h; + CAM_SIM_UNLOCK(sim); mtx_lock(&sim->sim_doneq_mtx); KASSERT((sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) != 0, ("Batch flag was not set")); sim->sim_doneq_flags &= ~CAM_SIM_DQ_BATCH; - runq = ((sim->sim_doneq_flags & (CAM_SIM_DQ_ONQ | - CAM_SIM_DQ_POLLED)) == 0); - if (runq) - sim->sim_doneq_flags |= CAM_SIM_DQ_ONQ; - mtx_unlock(&sim->sim_doneq_mtx); - if (runq) { - CAM_SIM_UNLOCK(sim); - camisr_runqueue(sim); - CAM_SIM_LOCK(sim); + while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { + TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); + mtx_unlock(&sim->sim_doneq_mtx); + xpt_done_process(ccb_h); + mtx_lock(&sim->sim_doneq_mtx); } + mtx_unlock(&sim->sim_doneq_mtx); + CAM_SIM_LOCK(sim); } union ccb * @@ -4840,7 +4866,8 @@ xpt_config(void *arg) callout_reset(&xsoftc.boot_callout, hz * xsoftc.boot_delay / 1000, xpt_boot_delay, NULL); /* Fire up rescan thread. */ - if (kproc_create(xpt_scanner_thread, NULL, NULL, 0, 0, "xpt_thrd")) { + if (kproc_kthread_add(xpt_scanner_thread, NULL, &cam_proc, NULL, 0, 0, + "cam", "scanner")) { printf("xpt_config: failed to create rescan thread.\n"); } } @@ -5065,133 +5092,140 @@ xpt_path_mtx(struct cam_path *path) } static void -camisr(void *dummy) +xpt_done_process(struct ccb_hdr *ccb_h) { - cam_simq_t queue; struct cam_sim *sim; + struct mtx *mtx; - mtx_lock(&cam_simq_lock); - TAILQ_INIT(&queue); - while (!TAILQ_EMPTY(&cam_simq)) { - TAILQ_CONCAT(&queue, &cam_simq, links); - mtx_unlock(&cam_simq_lock); - - while ((sim = TAILQ_FIRST(&queue)) != NULL) { - TAILQ_REMOVE(&queue, sim, links); - camisr_runqueue(sim); - } - mtx_lock(&cam_simq_lock); - } - mtx_unlock(&cam_simq_lock); -} + if (ccb_h->flags & CAM_HIGH_POWER) { + struct highpowerlist *hphead; + struct cam_ed *device; -static void -camisr_runqueue(struct cam_sim *sim) -{ - struct ccb_hdr *ccb_h; - struct mtx *mtx; + mtx_lock(&xsoftc.xpt_lock); + hphead = &xsoftc.highpowerq; - mtx_lock(&sim->sim_doneq_mtx); - while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { - TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); - mtx_unlock(&sim->sim_doneq_mtx); - ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; + device = STAILQ_FIRST(hphead); - CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE, - ("camisr\n")); + /* + * Increment the count since this command is done. + */ + xsoftc.num_highpower++; - if (ccb_h->flags & CAM_HIGH_POWER) { - struct highpowerlist *hphead; - struct cam_ed *device; + /* + * Any high powered commands queued up? + */ + if (device != NULL) { - mtx_lock(&xsoftc.xpt_lock); - hphead = &xsoftc.highpowerq; + STAILQ_REMOVE_HEAD(hphead, highpowerq_entry); + mtx_unlock(&xsoftc.xpt_lock); - device = STAILQ_FIRST(hphead); + mtx_lock(&device->sim->devq->send_mtx); + xpt_release_devq_device(device, + /*count*/1, /*runqueue*/TRUE); + mtx_unlock(&device->sim->devq->send_mtx); + } else + mtx_unlock(&xsoftc.xpt_lock); + } - /* - * Increment the count since this command is done. - */ - xsoftc.num_highpower++; + sim = ccb_h->path->bus->sim; + mtx = xpt_path_mtx(ccb_h->path); + mtx_lock(mtx); - /* - * Any high powered commands queued up? - */ - if (device != NULL) { + if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) { + struct cam_ed *dev; - STAILQ_REMOVE_HEAD(hphead, highpowerq_entry); - mtx_unlock(&xsoftc.xpt_lock); + mtx_lock(&sim->devq->send_mtx); + sim->devq->send_active--; + sim->devq->send_openings++; + + dev = ccb_h->path->device; + cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h); + + if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0 + && (dev->ccbq.dev_active == 0))) { + dev->flags &= ~CAM_DEV_REL_ON_QUEUE_EMPTY; + xpt_release_devq_device(dev, /*count*/1, + /*run_queue*/FALSE); + } - mtx_lock(&device->sim->devq->send_mtx); - xpt_release_devq_device(device, - /*count*/1, /*runqueue*/TRUE); - mtx_unlock(&device->sim->devq->send_mtx); - } else - mtx_unlock(&xsoftc.xpt_lock); + if (((dev->flags & CAM_DEV_REL_ON_COMPLETE) != 0 + && (ccb_h->status&CAM_STATUS_MASK) != CAM_REQUEUE_REQ)) { + dev->flags &= ~CAM_DEV_REL_ON_COMPLETE; + xpt_release_devq_device(dev, /*count*/1, + /*run_queue*/FALSE); } - mtx = xpt_path_mtx(ccb_h->path); - mtx_lock(mtx); + if (!device_is_queued(dev)) + (void)xpt_schedule_devq(sim->devq, dev); + mtx_unlock(&sim->devq->send_mtx); - if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) { - struct cam_ed *dev; + if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 + && (--dev->tag_delay_count == 0)) + xpt_start_tags(ccb_h->path); + } - mtx_lock(&sim->devq->send_mtx); - sim->devq->send_active--; - sim->devq->send_openings++; - - dev = ccb_h->path->device; - cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h); - - if (((dev->flags & CAM_DEV_REL_ON_QUEUE_EMPTY) != 0 - && (dev->ccbq.dev_active == 0))) { - dev->flags &= ~CAM_DEV_REL_ON_QUEUE_EMPTY; - xpt_release_devq_device(dev, /*count*/1, - /*run_queue*/FALSE); - } + if (ccb_h->status & CAM_RELEASE_SIMQ) { + xpt_release_simq(sim, /*run_queue*/FALSE); + ccb_h->status &= ~CAM_RELEASE_SIMQ; + } - if (((dev->flags & CAM_DEV_REL_ON_COMPLETE) != 0 - && (ccb_h->status&CAM_STATUS_MASK) != CAM_REQUEUE_REQ)) { - dev->flags &= ~CAM_DEV_REL_ON_COMPLETE; - xpt_release_devq_device(dev, /*count*/1, - /*run_queue*/FALSE); - } + if ((ccb_h->flags & CAM_DEV_QFRZDIS) + && (ccb_h->status & CAM_DEV_QFRZN)) { + xpt_release_devq(ccb_h->path, /*count*/1, + /*run_queue*/FALSE); + ccb_h->status &= ~CAM_DEV_QFRZN; + } - if (!device_is_queued(dev)) - (void)xpt_schedule_devq(sim->devq, dev); - mtx_unlock(&sim->devq->send_mtx); + if (ccb_h->flags & CAM_UNLOCKED) { + mtx_unlock(mtx); + mtx = NULL; + } - if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 - && (--dev->tag_delay_count == 0)) - xpt_start_tags(ccb_h->path); - } + /* Call the peripheral driver's callback */ + (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); + if (mtx != NULL) + mtx_unlock(mtx); - if (ccb_h->status & CAM_RELEASE_SIMQ) { - xpt_release_simq(sim, /*run_queue*/FALSE); - ccb_h->status &= ~CAM_RELEASE_SIMQ; - } + mtx_lock(&sim->devq->send_mtx); + xpt_run_devq(sim->devq); + mtx_unlock(&sim->devq->send_mtx); +} - if ((ccb_h->flags & CAM_DEV_QFRZDIS) - && (ccb_h->status & CAM_DEV_QFRZN)) { - xpt_release_devq(ccb_h->path, /*count*/1, - /*run_queue*/FALSE); - ccb_h->status &= ~CAM_DEV_QFRZN; - } +void +xpt_done_td(void *arg) +{ + struct cam_doneq *queue = arg; + struct ccb_hdr *ccb_h; - if (ccb_h->flags & CAM_UNLOCKED) { - mtx_unlock(mtx); - mtx = NULL; + mtx_lock(&queue->cam_doneq_mtx); + while (1) { + if ((ccb_h = TAILQ_FIRST(&queue->cam_doneq)) == NULL) { + msleep(&queue->cam_doneq, &queue->cam_doneq_mtx, + PRIBIO, "-", 0); + continue; } + TAILQ_REMOVE(&queue->cam_doneq, ccb_h, sim_links.tqe); + mtx_unlock(&queue->cam_doneq_mtx); + xpt_done_process(ccb_h); + mtx_lock(&queue->cam_doneq_mtx); + } +} + +static void +camisr_runqueue(struct cam_sim *sim) +{ + struct ccb_hdr *ccb_h; + + mtx_lock(&sim->sim_doneq_mtx); + while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { + TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); + mtx_unlock(&sim->sim_doneq_mtx); + ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; + + xpt_done_process(ccb_h); - /* Call the peripheral driver's callback */ - (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); - if (mtx != NULL) - mtx_unlock(mtx); mtx_lock(&sim->sim_doneq_mtx); } sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; mtx_unlock(&sim->sim_doneq_mtx); - mtx_lock(&sim->devq->send_mtx); - xpt_run_devq(sim->devq); - mtx_unlock(&sim->devq->send_mtx); } From owner-svn-src-projects@FreeBSD.ORG Wed Aug 14 12:06:47 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2F1B5116; Wed, 14 Aug 2013 12:06:47 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1D5D324FE; Wed, 14 Aug 2013 12:06:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EC6ktD031821; Wed, 14 Aug 2013 12:06:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EC6kPl031818; Wed, 14 Aug 2013 12:06:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308141206.r7EC6kPl031818@svn.freebsd.org> From: Alexander Motin Date: Wed, 14 Aug 2013 12:06:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254324 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 12:06:47 -0000 Author: mav Date: Wed Aug 14 12:06:46 2013 New Revision: 254324 URL: http://svnweb.freebsd.org/changeset/base/254324 Log: Turn locking tools into macros to make lock profiling, etc. usable. Modified: projects/camlock/sys/cam/cam_periph.h projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h Modified: projects/camlock/sys/cam/cam_periph.h ============================================================================== --- projects/camlock/sys/cam/cam_periph.h Wed Aug 14 11:11:49 2013 (r254323) +++ projects/camlock/sys/cam/cam_periph.h Wed Aug 14 12:06:46 2013 (r254324) @@ -186,39 +186,26 @@ void cam_periph_freeze_after_event(stru int cam_periph_error(union ccb *ccb, cam_flags camflags, u_int32_t sense_flags, union ccb *save_ccb); -static __inline void -cam_periph_lock(struct cam_periph *periph) +static __inline struct mtx * +cam_periph_mtx(struct cam_periph *periph) { - xpt_path_lock(periph->path); + return (xpt_path_mtx(periph->path)); } -static __inline void -cam_periph_unlock(struct cam_periph *periph) -{ - xpt_path_unlock(periph->path); -} +#define cam_periph_owned(periph) \ + mtx_owned(xpt_path_mtx((periph)->path)) -static __inline int -cam_periph_owned(struct cam_periph *periph) -{ - return (xpt_path_owned(periph->path)); -} +#define cam_periph_lock(periph) \ + mtx_lock(xpt_path_mtx((periph)->path)) + +#define cam_periph_unlock(periph) \ + mtx_unlock(xpt_path_mtx((periph)->path)) #define cam_periph_assert(periph, what) \ mtx_assert(xpt_path_mtx((periph)->path), (what)) -static __inline int -cam_periph_sleep(struct cam_periph *periph, void *chan, int priority, - const char *wmesg, int timo) -{ - return (xpt_path_sleep(periph->path, chan, priority, wmesg, timo)); -} - -static __inline struct mtx * -cam_periph_mtx(struct cam_periph *periph) -{ - return (xpt_path_mtx(periph->path)); -} +#define cam_periph_sleep(periph, chan, priority, wmesg, timo) \ + xpt_path_sleep((periph)->path, (chan), (priority), (wmesg), (timo)) static inline struct cam_periph * cam_periph_acquire_first(struct periph_driver *driver) Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 11:11:49 2013 (r254323) +++ projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 12:06:46 2013 (r254324) @@ -5055,35 +5055,6 @@ xpt_unlock_buses(void) mtx_unlock(&xsoftc.xpt_topo_lock); } -void -xpt_path_lock(struct cam_path *path) -{ - - mtx_lock(&path->device->device_mtx); -} - -void -xpt_path_unlock(struct cam_path *path) -{ - - mtx_unlock(&path->device->device_mtx); -} - -int -xpt_path_owned(struct cam_path *path) -{ - - return (mtx_owned(&path->device->device_mtx)); -} - -int -xpt_path_sleep(struct cam_path *path, void *chan, int priority, - const char *wmesg, int timo) -{ - - return (msleep(chan, &path->device->device_mtx, priority, wmesg, timo)); -} - struct mtx * xpt_path_mtx(struct cam_path *path) { Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Wed Aug 14 11:11:49 2013 (r254323) +++ projects/camlock/sys/cam/cam_xpt.h Wed Aug 14 12:06:46 2013 (r254324) @@ -102,14 +102,13 @@ void xpt_hold_boot(void); void xpt_release_boot(void); void xpt_lock_buses(void); void xpt_unlock_buses(void); -void xpt_path_lock(struct cam_path *path); -void xpt_path_unlock(struct cam_path *path); -#define xpt_path_assert(path, what) mtx_assert(xpt_path_mtx(path), (what)) -int xpt_path_owned(struct cam_path *path); -int xpt_path_sleep(struct cam_path *path, void *chan, - int priority, const char *wmesg, - int timo); struct mtx * xpt_path_mtx(struct cam_path *path); +#define xpt_path_lock(path) mtx_lock(xpt_path_mtx(path)) +#define xpt_path_unlock(path) mtx_unlock(xpt_path_mtx(path)) +#define xpt_path_assert(path, what) mtx_assert(xpt_path_mtx(path), (what)) +#define xpt_path_owned(path) mtx_owned(xpt_path_mtx(path)) +#define xpt_path_sleep(path, chan, priority, wmesg, timo) \ + msleep((chan), xpt_path_mtx(path), (priority), (wmesg), (timo)) cam_status xpt_register_async(int event, ac_callback_t *cbfunc, void *cbarg, struct cam_path *path); cam_status xpt_compile_path(struct cam_path *new_path, From owner-svn-src-projects@FreeBSD.ORG Wed Aug 14 12:43:02 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 40F32116; Wed, 14 Aug 2013 12:43:02 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1E912271E; Wed, 14 Aug 2013 12:43:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7ECh1qH046185; Wed, 14 Aug 2013 12:43:01 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7ECh1Dt046184; Wed, 14 Aug 2013 12:43:01 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308141243.r7ECh1Dt046184@svn.freebsd.org> From: Alexander Motin Date: Wed, 14 Aug 2013 12:43:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254325 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 12:43:02 -0000 Author: mav Date: Wed Aug 14 12:43:01 2013 New Revision: 254325 URL: http://svnweb.freebsd.org/changeset/base/254325 Log: Don't use send_mtx to protect what left from allocation queue. It left from previous failed locking attempt and no longer needed. The allocation queues are protected now by new per-device mutexes. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 12:06:46 2013 (r254324) +++ projects/camlock/sys/cam/cam_xpt.c Wed Aug 14 12:43:01 2013 (r254325) @@ -3044,13 +3044,12 @@ xpt_schedule(struct cam_periph *periph, struct cam_devq *devq; CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("xpt_schedule\n")); + cam_periph_assert(periph, MA_OWNED); devq = periph->sim->devq; - mtx_lock(&devq->send_mtx); if (new_priority < periph->scheduled_priority) { periph->scheduled_priority = new_priority; xpt_run_allocq(periph); } - mtx_unlock(&devq->send_mtx); } @@ -3109,7 +3108,7 @@ xpt_run_allocq(struct cam_periph *periph uint32_t prio; devq = periph->sim->devq; - mtx_assert(&devq->send_mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); if (periph->periph_allocating) return; periph->periph_allocating = 1; @@ -3145,9 +3144,7 @@ xpt_run_allocq(struct cam_periph *periph periph->scheduled_priority = CAM_PRIORITY_NONE; CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("calling periph_start()\n")); - mtx_unlock(&devq->send_mtx); periph->periph_start(periph, ccb); - mtx_lock(&devq->send_mtx); } } periph->periph_allocating = 0; @@ -3710,16 +3707,15 @@ xpt_release_ccb(union ccb *free_ccb) struct cam_periph *periph; CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_release_ccb\n")); + xpt_path_assert(free_ccb->ccb_h.path, MA_OWNED); device = free_ccb->ccb_h.path->device; devq = device->sim->devq; periph = free_ccb->ccb_h.path->periph; xpt_free_ccb(free_ccb); - mtx_lock(&devq->send_mtx); periph->periph_allocated--; cam_ccbq_release_opening(&device->ccbq); xpt_run_allocq(periph); - mtx_unlock(&devq->send_mtx); } /* Functions accessed by SIM drivers */ @@ -4446,25 +4442,20 @@ xpt_get_ccb(struct cam_periph *periph) union ccb * cam_periph_getccb(struct cam_periph *periph, u_int32_t priority) { - struct cam_devq *devq; struct ccb_hdr *ccb_h; CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("cam_periph_getccb\n")); - devq = periph->sim->devq; - cam_periph_unlock(periph); - mtx_lock(&devq->send_mtx); + cam_periph_assert(periph, MA_OWNED); while ((ccb_h = SLIST_FIRST(&periph->ccb_list)) == NULL || ccb_h->pinfo.priority != priority) { if (priority < periph->immediate_priority) { periph->immediate_priority = priority; xpt_run_allocq(periph); } else - mtx_sleep(&periph->ccb_list, &devq->send_mtx, PRIBIO, + cam_periph_sleep(periph, &periph->ccb_list, PRIBIO, "cgticb", 0); } SLIST_REMOVE_HEAD(&periph->ccb_list, periph_links.sle); - mtx_unlock(&devq->send_mtx); - cam_periph_lock(periph); return ((union ccb *)ccb_h); } From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 00:03:18 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2EB2642D; Thu, 15 Aug 2013 00:03:18 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1BC4E21DD; Thu, 15 Aug 2013 00:03:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F03Hqj033121; Thu, 15 Aug 2013 00:03:17 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F03Hdr033119; Thu, 15 Aug 2013 00:03:17 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308150003.r7F03Hdr033119@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 15 Aug 2013 00:03:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254343 - in projects/atomic64/sys/i386: i386 include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 00:03:18 -0000 Author: jkim Date: Thu Aug 15 00:03:17 2013 New Revision: 254343 URL: http://svnweb.freebsd.org/changeset/base/254343 Log: Try to improve performance on i486 class CPUs. - Partially revert r253876. [1] - Use conditional jumps instead of function pointers. [2] Note this change may break KPI, i. e., atomic_load_acq_64() and atomic_store_rel_64() are now real functions. Note this changes are not tested because I do not have i486-class CPUs. Objected by: attilio [1] Suggested by: bde [2] Modified: projects/atomic64/sys/i386/i386/machdep.c projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/i386/i386/machdep.c ============================================================================== --- projects/atomic64/sys/i386/i386/machdep.c Wed Aug 14 23:36:33 2013 (r254342) +++ projects/atomic64/sys/i386/i386/machdep.c Thu Aug 15 00:03:17 2013 (r254343) @@ -1548,29 +1548,55 @@ idle_sysctl(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, idle_sysctl, "A", "currently selected idle function"); -int (*atomic_cmpset_64)(volatile uint64_t *, uint64_t, uint64_t) = - atomic_cmpset_64_i386; -uint64_t (*atomic_load_acq_64)(volatile uint64_t *) = - atomic_load_acq_64_i386; -void (*atomic_store_rel_64)(volatile uint64_t *, uint64_t) = - atomic_store_rel_64_i386; -uint64_t (*atomic_swap_64)(volatile uint64_t *, uint64_t) = - atomic_swap_64_i386; -int (*atomic_testandset_64)(volatile uint64_t *, int) = - atomic_testandset_64_i386; +static int cpu_ident_cmxchg8b = 0; static void cpu_probe_cmpxchg8b(void) { if ((cpu_feature & CPUID_CX8) != 0 || - cpu_vendor_id == CPU_VENDOR_RISE) { - atomic_cmpset_64 = atomic_cmpset_64_i586; - atomic_load_acq_64 = atomic_load_acq_64_i586; - atomic_store_rel_64 = atomic_store_rel_64_i586; - atomic_swap_64 = atomic_swap_64_i586; - atomic_testandset_64 = atomic_testandset_64_i586; - } + cpu_vendor_id == CPU_VENDOR_RISE) + cpu_ident_cmxchg8b = 1; +} + +int +atomic_cmpset_64(volatile uint64_t *dst, uint64_t expect, uint64_t src) +{ + + if (cpu_ident_cmxchg8b) + return (atomic_cmpset_64_i586(dst, expect, src)); + else + return (atomic_cmpset_64_i386(dst, expect, src)); +} + +uint64_t +atomic_load_acq_64(volatile uint64_t *p) +{ + + if (cpu_ident_cmxchg8b) + return (atomic_load_acq_64_i586(p)); + else + return (atomic_load_acq_64_i386(p)); +} + +void +atomic_store_rel_64(volatile uint64_t *p, uint64_t v) +{ + + if (cpu_ident_cmxchg8b) + atomic_store_rel_64_i586(p, v); + else + atomic_store_rel_64_i386(p, v); +} + +uint64_t +atomic_swap_64(volatile uint64_t *p, uint64_t v) +{ + + if (cpu_ident_cmxchg8b) + return (atomic_swap_64_i586(p, v)); + else + return (atomic_swap_64_i386(p, v)); } /* Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Wed Aug 14 23:36:33 2013 (r254342) +++ projects/atomic64/sys/i386/include/atomic.h Thu Aug 15 00:03:17 2013 (r254343) @@ -124,76 +124,101 @@ atomic_##NAME##_barr_##TYPE(volatile u_# } \ struct __hack -#define ATOMIC_LOCK_I386(f) \ - __asm __volatile("pushfl; popl %0; cli" : "=r" (f)) -#define ATOMIC_UNLOCK_I386(f) \ - __asm __volatile("pushl %0; popfl" : : "r" (f)) - #if defined(_KERNEL) && !defined(WANT_FUNCTIONS) /* I486 does not support SMP or CMPXCHG8B. */ static __inline int atomic_cmpset_64_i386(volatile uint64_t *dst, uint64_t expect, uint64_t src) { - int res; - register_t lock; + volatile uint32_t *p; - res = 0; - ATOMIC_LOCK_I386(lock); - if (*dst == expect) { - *dst = src; - res = 1; - } - ATOMIC_UNLOCK_I386(lock); - return (res); + p = (volatile uint32_t *)dst; + __asm __volatile( + " pushfl ; " + " cli ; " + " xorl %1, %%eax ; " + " xorl %2, %%edx ; " + " orl %%edx, %%eax ; " + " jnz 1f ; " + " movl %3, %1 ; " + " movl %4, %2 ; " + " movl $1, %%eax ; " + " jmp 2f ; " + "1: " + " xorl %%eax, %%eax ; " + "2: " + " popfl" + : "+A" (expect), /* 0 */ + "+m" (*p), /* 1 */ + "+m" (*(p + 1)) /* 2 */ + : "r" ((uint32_t)src), /* 3 */ + "r" ((uint32_t)(src >> 32)) /* 4 */ + : "memory", "cc"); + + return (expect); } static __inline uint64_t atomic_load_acq_64_i386(volatile uint64_t *p) { + volatile uint32_t *q; uint64_t res; - register_t lock; - ATOMIC_LOCK_I386(lock); - res = *p; - ATOMIC_UNLOCK_I386(lock); + q = (volatile uint32_t *)p; + __asm __volatile( + " pushfl ; " + " cli ; " + " movl %1, %%eax ; " + " movl %2, %%edx ; " + " popfl" + : "=&A" (res) /* 0 */ + : "m" (*q), /* 1 */ + "m" (*(q + 1)) /* 2 */ + : "memory"); + return (res); } static __inline void atomic_store_rel_64_i386(volatile uint64_t *p, uint64_t v) { - register_t lock; + volatile uint32_t *q; - ATOMIC_LOCK_I386(lock); - *p = v; - ATOMIC_UNLOCK_I386(lock); + q = (volatile uint32_t *)p; + __asm __volatile( + " pushfl ; " + " cli ; " + " movl %%eax, %0 ; " + " movl %%edx, %1 ; " + " popfl" + : "=m" (*q), /* 0 */ + "=m" (*(q + 1)) /* 1 */ + : "A" (v) /* 2 */ + : "memory"); } static __inline uint64_t atomic_swap_64_i386(volatile uint64_t *p, uint64_t v) { + volatile uint32_t *q; uint64_t res; - register_t lock; - ATOMIC_LOCK_I386(lock); - res = *p; - *p = v; - ATOMIC_UNLOCK_I386(lock); - return (res); -} - -static __inline int -atomic_testandset_64_i386(volatile uint64_t *p, u_int v) -{ - const uint64_t s = 1ULL << (v & 0x3f); - int res; - register_t lock; + q = (volatile uint32_t *)p; + __asm __volatile( + " pushfl ; " + " cli ; " + " movl %1, %%eax ; " + " movl %2, %%edx ; " + " movl %4, %2 ; " + " movl %3, %1 ; " + " popfl" + : "=&A" (res), /* 0 */ + "+m" (*q), /* 1 */ + "+m" (*(q + 1)) /* 2 */ + : "r" ((uint32_t)v), /* 3 */ + "r" ((uint32_t)(v >> 32)) /* 4 */ + : "memory"); - ATOMIC_LOCK_I386(lock); - res = (*p & s) != 0; - *p |= s; - ATOMIC_UNLOCK_I386(lock); return (res); } @@ -264,18 +289,6 @@ atomic_swap_64_i586(volatile uint64_t *p return (v); } -static __inline int -atomic_testandset_64_i586(volatile uint64_t *p, u_int v) -{ - const uint64_t s = 1ULL << (v & 0x3f); - uint64_t n; - - do { - n = *p; - } while (!atomic_cmpset_64_i586(p, n, n | s)); - return ((n & s) != 0); -} - #endif /* _KERNEL && !WANT_FUNCTIONS */ /* @@ -457,11 +470,10 @@ ATOMIC_STORE(long); #ifndef WANT_FUNCTIONS #ifdef _KERNEL -extern int (*atomic_cmpset_64)(volatile uint64_t *, uint64_t, uint64_t); -extern uint64_t (*atomic_load_acq_64)(volatile uint64_t *); -extern void (*atomic_store_rel_64)(volatile uint64_t *, uint64_t); -extern uint64_t (*atomic_swap_64)(volatile uint64_t *, uint64_t); -extern int (*atomic_testandset_64)(volatile uint64_t *, u_int); +int atomic_cmpset_64(volatile uint64_t *, uint64_t, uint64_t); +uint64_t atomic_load_acq_64(volatile uint64_t *); +void atomic_store_rel_64(volatile uint64_t *, uint64_t); +uint64_t atomic_swap_64(volatile uint64_t *, uint64_t); #endif static __inline int From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 00:13:26 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7BC89939; Thu, 15 Aug 2013 00:13:26 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 69DC522F2; Thu, 15 Aug 2013 00:13:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F0DQ4q037151; Thu, 15 Aug 2013 00:13:26 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F0DQxv037150; Thu, 15 Aug 2013 00:13:26 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308150013.r7F0DQxv037150@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 15 Aug 2013 00:13:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254344 - projects/atomic64/sys/i386/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 00:13:26 -0000 Author: jkim Date: Thu Aug 15 00:13:25 2013 New Revision: 254344 URL: http://svnweb.freebsd.org/changeset/base/254344 Log: Remove "memory" from clobber list for atomic_swap_64_i386(). This function does not have any variants with memory barriers. Modified: projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Thu Aug 15 00:03:17 2013 (r254343) +++ projects/atomic64/sys/i386/include/atomic.h Thu Aug 15 00:13:25 2013 (r254344) @@ -216,8 +216,7 @@ atomic_swap_64_i386(volatile uint64_t *p "+m" (*q), /* 1 */ "+m" (*(q + 1)) /* 2 */ : "r" ((uint32_t)v), /* 3 */ - "r" ((uint32_t)(v >> 32)) /* 4 */ - : "memory"); + "r" ((uint32_t)(v >> 32))); /* 4 */ return (res); } From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 10:17:21 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A04B973; Thu, 15 Aug 2013 10:17:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 73CDE24DC; Thu, 15 Aug 2013 10:17:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FAHLli066175; Thu, 15 Aug 2013 10:17:21 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FAHLCH066173; Thu, 15 Aug 2013 10:17:21 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151017.r7FAHLCH066173@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 10:17:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254359 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 10:17:21 -0000 Author: mav Date: Thu Aug 15 10:17:20 2013 New Revision: 254359 URL: http://svnweb.freebsd.org/changeset/base/254359 Log: Take SIM lock when executing async handler if lock was owned when registered. This should be partial workaround for rare SIMs that want to receive events. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt.h Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 08:21:00 2013 (r254358) +++ projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 10:17:20 2013 (r254359) @@ -2822,6 +2822,8 @@ call_sim: break; } cur_entry->event_enable = csa->event_enable; + cur_entry->event_lock = + mtx_owned(path->bus->sim->mtx) ? 1 : 0; cur_entry->callback_arg = csa->callback_arg; cur_entry->callback = csa->callback; SLIST_INSERT_HEAD(async_head, cur_entry, links); @@ -4102,6 +4104,7 @@ xpt_async_bcast(struct async_list *async struct cam_path *path, void *async_arg) { struct async_node *cur_entry; + int lock; cur_entry = SLIST_FIRST(async_head); while (cur_entry != NULL) { @@ -4112,10 +4115,16 @@ xpt_async_bcast(struct async_list *async * can delete its async callback entry. */ next_entry = SLIST_NEXT(cur_entry, links); - if ((cur_entry->event_enable & async_code) != 0) + if ((cur_entry->event_enable & async_code) != 0) { + lock = cur_entry->event_lock; + if (lock) + CAM_SIM_LOCK(path->device->sim); cur_entry->callback(cur_entry->callback_arg, async_code, path, async_arg); + if (lock) + CAM_SIM_UNLOCK(path->device->sim); + } cur_entry = next_entry; } } Modified: projects/camlock/sys/cam/cam_xpt.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt.h Thu Aug 15 08:21:00 2013 (r254358) +++ projects/camlock/sys/cam/cam_xpt.h Thu Aug 15 10:17:20 2013 (r254359) @@ -55,6 +55,7 @@ struct cam_path; struct async_node { SLIST_ENTRY(async_node) links; u_int32_t event_enable; /* Async Event enables */ + u_int32_t event_lock; /* Take SIM lock for handlers. */ void (*callback)(void *arg, u_int32_t code, struct cam_path *path, void *args); void *callback_arg; From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 11:41:53 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B65EC6E4; Thu, 15 Aug 2013 11:41:53 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A3BE52939; Thu, 15 Aug 2013 11:41:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FBfrpx099533; Thu, 15 Aug 2013 11:41:53 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FBfr5b099532; Thu, 15 Aug 2013 11:41:53 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151141.r7FBfr5b099532@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 11:41:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254363 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 11:41:53 -0000 Author: mav Date: Thu Aug 15 11:41:53 2013 New Revision: 254363 URL: http://svnweb.freebsd.org/changeset/base/254363 Log: Make polling work in new locking environment. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 11:01:25 2013 (r254362) +++ projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 11:41:53 2013 (r254363) @@ -2977,13 +2977,12 @@ xpt_polled_action(union ccb *start_ccb) struct cam_devq *devq; struct cam_ed *dev; - timeout = start_ccb->ccb_h.timeout * 10; sim = start_ccb->ccb_h.path->bus->sim; devq = sim->devq; dev = start_ccb->ccb_h.path->device; - mtx_assert(sim->mtx, MA_OWNED); + mtx_unlock(&dev->device_mtx); /* Don't use ISR for this SIM while polling. */ mtx_lock(&sim->sim_doneq_mtx); @@ -2994,23 +2993,29 @@ xpt_polled_action(union ccb *start_ccb) * Steal an opening so that no other queued requests * can get it before us while we simulate interrupts. */ + mtx_lock(&devq->send_mtx); dev->ccbq.devq_openings--; dev->ccbq.dev_openings--; - - while(((devq != NULL && devq->send_openings <= 0) || - dev->ccbq.dev_openings < 0) && (--timeout > 0)) { + while((devq->send_openings <= 0 || dev->ccbq.dev_openings < 0) && + (--timeout > 0)) { + mtx_unlock(&devq->send_mtx); DELAY(100); + CAM_SIM_LOCK(sim); (*(sim->sim_poll))(sim); + CAM_SIM_UNLOCK(sim); camisr_runqueue(sim); + mtx_lock(&devq->send_mtx); } - dev->ccbq.devq_openings++; dev->ccbq.dev_openings++; + mtx_unlock(&devq->send_mtx); if (timeout != 0) { xpt_action(start_ccb); while(--timeout > 0) { + CAM_SIM_LOCK(sim); (*(sim->sim_poll))(sim); + CAM_SIM_UNLOCK(sim); camisr_runqueue(sim); if ((start_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG) @@ -3034,6 +3039,8 @@ xpt_polled_action(union ccb *start_ccb) mtx_lock(&sim->sim_doneq_mtx); sim->sim_doneq_flags &= ~CAM_SIM_DQ_POLLED; mtx_unlock(&sim->sim_doneq_mtx); + camisr_runqueue(sim); + mtx_lock(&dev->device_mtx); } /* @@ -4351,15 +4358,18 @@ xpt_done(union ccb *done_ccb) if (sim->sim_doneq_flags & CAM_SIM_DQ_BATCH) { TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h, sim_links.tqe); + done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; mtx_unlock(&sim->sim_doneq_mtx); return; } + run = ((sim->sim_doneq_flags & CAM_SIM_DQ_POLLED) == 0); mtx_unlock(&sim->sim_doneq_mtx); hash = (done_ccb->ccb_h.path_id + done_ccb->ccb_h.target_id + done_ccb->ccb_h.target_lun) % cam_num_doneqs; queue = &cam_doneqs[hash]; mtx_lock(&queue->cam_doneq_mtx); - run = TAILQ_EMPTY(&queue->cam_doneq); + if (!TAILQ_EMPTY(&queue->cam_doneq)) + run = 0; TAILQ_INSERT_TAIL(&queue->cam_doneq, &done_ccb->ccb_h, sim_links.tqe); done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX; @@ -4393,6 +4403,7 @@ xpt_batch_done(struct cam_sim *sim) while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); mtx_unlock(&sim->sim_doneq_mtx); + ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; xpt_done_process(ccb_h); mtx_lock(&sim->sim_doneq_mtx); } @@ -5177,6 +5188,7 @@ xpt_done_td(void *arg) } TAILQ_REMOVE(&queue->cam_doneq, ccb_h, sim_links.tqe); mtx_unlock(&queue->cam_doneq_mtx); + ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; xpt_done_process(ccb_h); mtx_lock(&queue->cam_doneq_mtx); } @@ -5186,17 +5198,32 @@ static void camisr_runqueue(struct cam_sim *sim) { struct ccb_hdr *ccb_h; + struct cam_doneq *queue; + int i; + /* Process per-SIM queue. */ mtx_lock(&sim->sim_doneq_mtx); while ((ccb_h = TAILQ_FIRST(&sim->sim_doneq)) != NULL) { TAILQ_REMOVE(&sim->sim_doneq, ccb_h, sim_links.tqe); mtx_unlock(&sim->sim_doneq_mtx); ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; - xpt_done_process(ccb_h); - mtx_lock(&sim->sim_doneq_mtx); } sim->sim_doneq_flags &= ~CAM_SIM_DQ_ONQ; mtx_unlock(&sim->sim_doneq_mtx); + + /* Process global queues. */ + for (i = 0; i < cam_num_doneqs; i++) { + queue = &cam_doneqs[i]; + mtx_lock(&queue->cam_doneq_mtx); + while ((ccb_h = TAILQ_FIRST(&queue->cam_doneq)) != NULL) { + TAILQ_REMOVE(&queue->cam_doneq, ccb_h, sim_links.tqe); + mtx_unlock(&queue->cam_doneq_mtx); + ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; + xpt_done_process(ccb_h); + mtx_lock(&queue->cam_doneq_mtx); + } + mtx_unlock(&queue->cam_doneq_mtx); + } } From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 12:55:58 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0CB039B; Thu, 15 Aug 2013 12:55:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ED7312E20; Thu, 15 Aug 2013 12:55:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FCtvb7026845; Thu, 15 Aug 2013 12:55:57 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FCtvFM026844; Thu, 15 Aug 2013 12:55:57 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151255.r7FCtvFM026844@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 12:55:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254365 - projects/camlock/sys/cam/scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 12:55:58 -0000 Author: mav Date: Thu Aug 15 12:55:57 2013 New Revision: 254365 URL: http://svnweb.freebsd.org/changeset/base/254365 Log: Remove check for zero sized BIOs. I don't remember why have I added it, but if such BIOs exist, they probably could be completed at GEOM layer. Modified: projects/camlock/sys/cam/scsi/scsi_da.c Modified: projects/camlock/sys/cam/scsi/scsi_da.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_da.c Thu Aug 15 12:19:16 2013 (r254364) +++ projects/camlock/sys/cam/scsi/scsi_da.c Thu Aug 15 12:55:57 2013 (r254365) @@ -1349,9 +1349,7 @@ dastrategy(struct bio *bp) * Place it in the queue of disk activities for this disk */ if (bp->bio_cmd == BIO_DELETE) { - if (bp->bio_bcount == 0) - biodone(bp); - else if (DA_SIO) + if (DA_SIO) bioq_disksort(&softc->delete_queue, bp); else bioq_insert_tail(&softc->delete_queue, bp); From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 15:12:15 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5CAFC153; Thu, 15 Aug 2013 15:12:15 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4A2CB266B; Thu, 15 Aug 2013 15:12:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FFCFDS079145; Thu, 15 Aug 2013 15:12:15 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FFCE8k079140; Thu, 15 Aug 2013 15:12:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151512.r7FFCE8k079140@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 15:12:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254369 - in projects/camlock/sys/cam: ata scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 15:12:15 -0000 Author: mav Date: Thu Aug 15 15:12:14 2013 New Revision: 254369 URL: http://svnweb.freebsd.org/changeset/base/254369 Log: Make da(4) and ada(4) drivers call biodone() without holding any locks. That both reduces lock hold time improving performance, and makes devices reenterable, that may be needed for direct-dispatching GEOM. As side effect this removes limit on number of BIO_DELETEs aggregated in single ATA TRIM command. Modified: projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/scsi/scsi_da.c Modified: projects/camlock/sys/cam/ata/ata_da.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_da.c Thu Aug 15 14:41:39 2013 (r254368) +++ projects/camlock/sys/cam/ata/ata_da.c Thu Aug 15 15:12:14 2013 (r254369) @@ -122,10 +122,9 @@ struct disk_params { #define TRIM_MAX_BLOCKS 8 #define TRIM_MAX_RANGES (TRIM_MAX_BLOCKS * ATA_DSM_BLK_RANGES) -#define TRIM_MAX_BIOS (TRIM_MAX_RANGES * 4) struct trim_request { uint8_t data[TRIM_MAX_RANGES * ATA_DSM_RANGE_SIZE]; - struct bio *bps[TRIM_MAX_BIOS]; + TAILQ_HEAD(, bio) bps; }; struct ada_softc { @@ -1375,10 +1374,11 @@ adastart(struct cam_periph *periph, unio struct trim_request *req = &softc->trim_req; struct bio *bp1; uint64_t lastlba = (uint64_t)-1; - int bps = 0, c, lastcount = 0, off, ranges = 0; + int c, lastcount = 0, off, ranges = 0; softc->trim_running = 1; bzero(req, sizeof(*req)); + TAILQ_INIT(&req->bps); bp1 = bp; do { uint64_t lba = bp1->bio_pblkno; @@ -1421,10 +1421,9 @@ adastart(struct cam_periph *periph, unio */ } lastlba = lba; - req->bps[bps++] = bp1; + TAILQ_INSERT_TAIL(&req->bps, bp1, bio_queue); bp1 = bioq_first(&softc->trim_queue); - if (bps >= TRIM_MAX_BIOS || - bp1 == NULL || + if (bp1 == NULL || bp1->bio_bcount / softc->params.secsize > (softc->trim_max_ranges - ranges) * ATA_DSM_RANGE_MAX) @@ -1443,6 +1442,7 @@ adastart(struct cam_periph *periph, unio ATA_DSM_TRIM, 0, (ranges + ATA_DSM_BLK_RANGES - 1) / ATA_DSM_BLK_RANGES); start_ccb->ccb_h.ccb_state = ADA_CCB_TRIM; + start_ccb->ccb_h.flags |= CAM_UNLOCKED; goto out; } /* Run regular command. */ @@ -1611,6 +1611,7 @@ adastart(struct cam_periph *periph, unio break; } start_ccb->ccb_h.ccb_state = ADA_CCB_BUFFER_IO; + start_ccb->ccb_h.flags |= CAM_UNLOCKED; out: start_ccb->ccb_h.ccb_bp = bp; softc->outstanding_cmds++; @@ -1678,10 +1679,12 @@ adadone(struct cam_periph *periph, union struct bio *bp; int error; + cam_periph_lock(periph); if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { error = adaerror(done_ccb, 0, 0); if (error == ERESTART) { /* A retry was scheduled, so just return. */ + cam_periph_unlock(periph); return; } if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) @@ -1711,14 +1714,18 @@ adadone(struct cam_periph *periph, union softc->outstanding_cmds--; if (softc->outstanding_cmds == 0) softc->flags |= ADA_FLAG_WENT_IDLE; + xpt_release_ccb(done_ccb); if (state == ADA_CCB_TRIM) { - struct trim_request *req = - (struct trim_request *)ataio->data_ptr; - int i; - - for (i = 1; i < TRIM_MAX_BIOS && req->bps[i]; i++) { - struct bio *bp1 = req->bps[i]; + TAILQ_HEAD(, bio) queue; + struct bio *bp1; + TAILQ_INIT(&queue); + TAILQ_CONCAT(&queue, &softc->trim_req.bps, bio_queue); + softc->trim_running = 0; + adaschedule(periph); + cam_periph_unlock(periph); + while ((bp1 = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, bp1, bio_queue); bp1->bio_error = bp->bio_error; if (bp->bio_flags & BIO_ERROR) { bp1->bio_flags |= BIO_ERROR; @@ -1727,12 +1734,11 @@ adadone(struct cam_periph *periph, union bp1->bio_resid = 0; biodone(bp1); } - softc->trim_running = 0; - biodone(bp); - adaschedule(periph); - } else + } else { + cam_periph_unlock(periph); biodone(bp); - break; + } + return; } case ADA_CCB_RAHEAD: { Modified: projects/camlock/sys/cam/scsi/scsi_da.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_da.c Thu Aug 15 14:41:39 2013 (r254368) +++ projects/camlock/sys/cam/scsi/scsi_da.c Thu Aug 15 15:12:14 2013 (r254369) @@ -2271,6 +2271,7 @@ skipstate: break; } start_ccb->ccb_h.ccb_state = DA_CCB_BUFFER_IO; + start_ccb->ccb_h.flags |= CAM_UNLOCKED; out: /* @@ -2583,6 +2584,7 @@ da_delete_unmap(struct cam_periph *perip /*sense_len*/SSD_FULL_SIZE, da_default_timeout * 1000); ccb->ccb_h.ccb_state = DA_CCB_DELETE; + ccb->ccb_h.flags |= CAM_UNLOCKED; } static void @@ -2663,6 +2665,7 @@ da_delete_trim(struct cam_periph *periph /*sense_len*/SSD_FULL_SIZE, da_default_timeout * 1000); ccb->ccb_h.ccb_state = DA_CCB_DELETE; + ccb->ccb_h.flags |= CAM_UNLOCKED; } /* @@ -2719,6 +2722,7 @@ da_delete_ws(struct cam_periph *periph, /*sense_len*/SSD_FULL_SIZE, da_default_timeout * 1000); ccb->ccb_h.ccb_state = DA_CCB_DELETE; + ccb->ccb_h.flags |= CAM_UNLOCKED; } static int @@ -2853,6 +2857,7 @@ dadone(struct cam_periph *periph, union { struct bio *bp, *bp1; + cam_periph_lock(periph); bp = (struct bio *)done_ccb->ccb_h.ccb_bp; if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { int error; @@ -2869,6 +2874,7 @@ dadone(struct cam_periph *periph, union * A retry was scheduled, so * just return. */ + cam_periph_unlock(periph); return; } bp = (struct bio *)done_ccb->ccb_h.ccb_bp; @@ -2945,9 +2951,18 @@ dadone(struct cam_periph *periph, union if (softc->outstanding_cmds == 0) softc->flags |= DA_FLAG_WENT_IDLE; + xpt_release_ccb(done_ccb); if (state == DA_CCB_DELETE) { - while ((bp1 = bioq_takefirst(&softc->delete_run_queue)) - != NULL) { + TAILQ_HEAD(, bio) queue; + + TAILQ_INIT(&queue); + TAILQ_CONCAT(&queue, &softc->delete_run_queue.queue, bio_queue); + softc->delete_run_queue.insert_point = NULL; + softc->delete_running = 0; + daschedule(periph); + cam_periph_unlock(periph); + while ((bp1 = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, bp1, bio_queue); bp1->bio_error = bp->bio_error; if (bp->bio_flags & BIO_ERROR) { bp1->bio_flags |= BIO_ERROR; @@ -2956,13 +2971,11 @@ dadone(struct cam_periph *periph, union bp1->bio_resid = 0; biodone(bp1); } - softc->delete_running = 0; - if (bp != NULL) - biodone(bp); - daschedule(periph); - } else if (bp != NULL) + } else + cam_periph_unlock(periph); + if (bp != NULL) biodone(bp); - break; + return; } case DA_CCB_PROBE_RC: case DA_CCB_PROBE_RC16: From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 19:00:37 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3D13F702; Thu, 15 Aug 2013 19:00:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2A2E22325; Thu, 15 Aug 2013 19:00:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FJ0bkB065389; Thu, 15 Aug 2013 19:00:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FJ0aeN065284; Thu, 15 Aug 2013 19:00:36 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151900.r7FJ0aeN065284@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 19:00:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254375 - in projects/camlock/sys/cam: . scsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 19:00:37 -0000 Author: mav Date: Thu Aug 15 19:00:36 2013 New Revision: 254375 URL: http://svnweb.freebsd.org/changeset/base/254375 Log: Introduce new per-target lock to protect list of LUNs reported by device. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h projects/camlock/sys/cam/scsi/scsi_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 17:44:44 2013 (r254374) +++ projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 19:00:36 2013 (r254375) @@ -4526,6 +4526,7 @@ xpt_alloc_target(struct cam_eb *bus, tar target->refcount = 1; target->generation = 0; target->luns = NULL; + mtx_init(&target->luns_mtx, "CAM LUNs lock", NULL, MTX_DEF); timevalclear(&target->last_reset); /* * Hold a reference to our parent bus so it @@ -4572,6 +4573,7 @@ xpt_release_target(struct cam_et *target KASSERT(TAILQ_EMPTY(&target->ed_entries), ("destroying target, but device list is not empty")); xpt_release_bus(bus); + mtx_destroy(&target->luns_mtx); if (target->luns) free(target->luns, M_CAMXPT); free(target, M_CAMXPT); Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Thu Aug 15 17:44:44 2013 (r254374) +++ projects/camlock/sys/cam/cam_xpt_internal.h Thu Aug 15 19:00:36 2013 (r254375) @@ -147,6 +147,7 @@ struct cam_et { struct timeval last_reset; u_int rpl_size; struct scsi_report_luns_data *luns; + struct mtx luns_mtx; /* Protection for luns field. */ }; /* Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_xpt.c Thu Aug 15 17:44:44 2013 (r254374) +++ projects/camlock/sys/cam/scsi/scsi_xpt.c Thu Aug 15 19:00:36 2013 (r254375) @@ -1728,11 +1728,12 @@ probe_purge_old(struct cam_path *path, s if (path->target == NULL) { return; } - if (path->target->luns == NULL) { - path->target->luns = new; - return; - } + mtx_lock(&path->target->luns_mtx); old = path->target->luns; + path->target->luns = new; + mtx_unlock(&path->target->luns_mtx); + if (old == NULL) + return; nlun_old = scsi_4btoul(old->length) / 8; nlun_new = scsi_4btoul(new->length) / 8; @@ -1774,7 +1775,6 @@ probe_purge_old(struct cam_path *path, s } } free(old, M_CAMXPT); - path->target->luns = new; } static void @@ -2011,6 +2011,7 @@ scsi_scan_bus(struct cam_periph *periph, mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); mtx_lock(mtx); + mtx_lock(&target->luns_mtx); if (target->luns) { uint32_t first; u_int nluns = scsi_4btoul(target->luns->length) / 8; @@ -2028,6 +2029,7 @@ scsi_scan_bus(struct cam_periph *periph, if (scan_info->lunindex[target_id] < nluns) { CAM_GET_SIMPLE_LUN(target->luns, scan_info->lunindex[target_id], lun_id); + mtx_unlock(&target->luns_mtx); next_target = 0; CAM_DEBUG(request_ccb->ccb_h.path, CAM_DEBUG_PROBE, @@ -2035,6 +2037,7 @@ scsi_scan_bus(struct cam_periph *periph, scan_info->lunindex[target_id], lun_id)); scan_info->lunindex[target_id]++; } else { + mtx_unlock(&target->luns_mtx); /* * We're done with scanning all luns. * @@ -2053,7 +2056,9 @@ scsi_scan_bus(struct cam_periph *periph, } } } - } else if (request_ccb->ccb_h.status != CAM_REQ_CMP) { + } else { + mtx_unlock(&target->luns_mtx); + if (request_ccb->ccb_h.status != CAM_REQ_CMP) { int phl; /* @@ -2085,7 +2090,7 @@ scsi_scan_bus(struct cam_periph *periph, if (lun_id == request_ccb->ccb_h.target_lun || lun_id > scan_info->cpi->max_lun) next_target = 1; - } else { + } else { device = request_ccb->ccb_h.path->device; @@ -2101,6 +2106,7 @@ scsi_scan_bus(struct cam_periph *periph, if (lun_id == request_ccb->ccb_h.target_lun || lun_id > scan_info->cpi->max_lun) next_target = 1; + } } /* From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 19:46:31 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E1CB845A; Thu, 15 Aug 2013 19:46:31 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B5D6925CE; Thu, 15 Aug 2013 19:46:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FJkVjZ083196; Thu, 15 Aug 2013 19:46:31 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FJkVVf083194; Thu, 15 Aug 2013 19:46:31 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308151946.r7FJkVVf083194@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 19:46:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254377 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 19:46:32 -0000 Author: mav Date: Thu Aug 15 19:46:31 2013 New Revision: 254377 URL: http://svnweb.freebsd.org/changeset/base/254377 Log: Remove remnants of per-device periph allocation queues. It was axed out during previous locking attempt and theoretically could be restored now, but since we removed per-SIM allocation queue for good, it gives quite small real benefit to recomplicate things again. Modified: projects/camlock/sys/cam/cam_xpt.c projects/camlock/sys/cam/cam_xpt_internal.h Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 19:32:08 2013 (r254376) +++ projects/camlock/sys/cam/cam_xpt.c Thu Aug 15 19:46:31 2013 (r254377) @@ -987,14 +987,6 @@ xpt_add_periph(struct cam_periph *periph device = periph->path->device; status = CAM_REQ_CMP; if (device != NULL) { - /* - * Make room for this peripheral - * so it will fit in the queue - * when it's scheduled to run - */ - status = camq_resize(&device->drvq, - device->drvq.array_size + 1); - mtx_lock(&device->target->bus->eb_mtx); device->generation++; SLIST_INSERT_HEAD(&device->periphs, periph, periph_links); @@ -1011,9 +1003,6 @@ xpt_remove_periph(struct cam_periph *per device = periph->path->device; if (device != NULL) { - /* Release the slot for this peripheral */ - camq_resize(&device->drvq, device->drvq.array_size - 1); - mtx_lock(&device->target->bus->eb_mtx); device->generation++; SLIST_REMOVE(&device->periphs, periph, cam_periph, periph_links); @@ -4630,14 +4619,8 @@ xpt_alloc_device(struct cam_eb *bus, str device->target = target; device->lun_id = lun_id; device->sim = bus->sim; - /* Initialize our queues */ - if (camq_init(&device->drvq, 0) != 0) { - free(device, M_CAMDEV); - return (NULL); - } if (cam_ccbq_init(&device->ccbq, bus->sim->max_dev_openings) != 0) { - camq_fini(&device->drvq); free(device, M_CAMDEV); return (NULL); } @@ -4710,7 +4693,6 @@ xpt_release_device(struct cam_ed *device xpt_release_target(device->target); - camq_fini(&device->drvq); cam_ccbq_fini(&device->ccbq); /* * Free allocated memory. free(9) does nothing if the Modified: projects/camlock/sys/cam/cam_xpt_internal.h ============================================================================== --- projects/camlock/sys/cam/cam_xpt_internal.h Thu Aug 15 19:32:08 2013 (r254376) +++ projects/camlock/sys/cam/cam_xpt_internal.h Thu Aug 15 19:46:31 2013 (r254377) @@ -77,10 +77,6 @@ struct cam_ed { struct cam_et *target; struct cam_sim *sim; lun_id_t lun_id; - struct camq drvq; /* - * Queue of type drivers wanting to do - * work on this device. - */ struct cam_ccbq ccbq; /* Queue of pending ccbs */ struct async_list asyncs; /* Async callback info for this B/T/L */ struct periph_list periphs; /* All attached devices */ From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 20:28:20 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F3262EC7; Thu, 15 Aug 2013 20:28:19 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD49927C2; Thu, 15 Aug 2013 20:28:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FKSJGH099072; Thu, 15 Aug 2013 20:28:19 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FKSEbN099031; Thu, 15 Aug 2013 20:28:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308152028.r7FKSEbN099031@svn.freebsd.org> From: Alexander Motin Date: Thu, 15 Aug 2013 20:28:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254381 - in projects/camlock: . bin/sh crypto/openssh gnu/lib/libstdc++ include lib lib/libc/db/btree lib/libc/db/hash lib/libc/gmon lib/libc/iconv lib/libc/stdlib lib/libiconv_compat ... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:28:20 -0000 Author: mav Date: Thu Aug 15 20:28:13 2013 New Revision: 254381 URL: http://svnweb.freebsd.org/changeset/base/254381 Log: MFC @ r254380 Added: projects/camlock/lib/libiconv_compat/ - copied from r254380, head/lib/libiconv_compat/ projects/camlock/sys/arm/freescale/imx/imx51_machdep.c - copied unchanged from r254380, head/sys/arm/freescale/imx/imx51_machdep.c projects/camlock/sys/fs/ext2fs/ext2_extents.c - copied unchanged from r254380, head/sys/fs/ext2fs/ext2_extents.c projects/camlock/sys/fs/ext2fs/ext2_extents.h - copied unchanged from r254380, head/sys/fs/ext2fs/ext2_extents.h - copied unchanged from r254380, head/sys/x86/include/acpica_machdep.h projects/camlock/tools/regression/bin/sh/builtins/local4.0 - copied unchanged from r254380, head/tools/regression/bin/sh/builtins/local4.0 projects/camlock/tools/regression/bin/sh/parser/only-redir2.0 - copied unchanged from r254380, head/tools/regression/bin/sh/parser/only-redir2.0 projects/camlock/tools/regression/bin/sh/parser/only-redir3.0 - copied unchanged from r254380, head/tools/regression/bin/sh/parser/only-redir3.0 projects/camlock/tools/regression/bin/sh/parser/only-redir4.0 - copied unchanged from r254380, head/tools/regression/bin/sh/parser/only-redir4.0 Directory Properties: projects/camlock/sys/x86/include/acpica_machdep.h (props changed) Deleted: projects/camlock/sys/arm/freescale/imx/imx_machdep.c Modified: projects/camlock/UPDATING projects/camlock/bin/sh/parser.c projects/camlock/bin/sh/var.c projects/camlock/crypto/openssh/sftp.c projects/camlock/gnu/lib/libstdc++/config.h projects/camlock/include/Makefile projects/camlock/include/iconv.h projects/camlock/lib/Makefile projects/camlock/lib/libc/db/btree/bt_open.c projects/camlock/lib/libc/db/hash/hash_page.c projects/camlock/lib/libc/gmon/gmon.c projects/camlock/lib/libc/iconv/Symbol.map projects/camlock/lib/libc/iconv/iconv.c projects/camlock/lib/libc/stdlib/system.c projects/camlock/lib/libkiconv/xlat16_iconv.c projects/camlock/release/release.conf.sample projects/camlock/release/release.sh projects/camlock/sbin/init/init.c projects/camlock/share/man/man7/release.7 projects/camlock/share/man/man9/EVENTHANDLER.9 projects/camlock/share/man/man9/netisr.9 projects/camlock/share/misc/committers-ports.dot projects/camlock/share/mk/bsd.own.mk projects/camlock/sys/amd64/amd64/initcpu.c projects/camlock/sys/amd64/include/acpica_machdep.h projects/camlock/sys/arm/freescale/imx/files.imx51 projects/camlock/sys/arm/freescale/imx/imx_gpt.c projects/camlock/sys/arm/freescale/imx/imx_gptreg.h projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/ctl/ctl.c projects/camlock/sys/cam/scsi/scsi_da.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/camlock/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/camlock/sys/cddl/dev/dtrace/dtrace_load.c projects/camlock/sys/cddl/dev/dtrace/dtrace_unload.c projects/camlock/sys/cddl/dev/fbt/fbt.c projects/camlock/sys/cddl/dev/sdt/sdt.c projects/camlock/sys/compat/freebsd32/freebsd32_misc.c projects/camlock/sys/conf/files projects/camlock/sys/conf/kern.post.mk projects/camlock/sys/dev/aacraid/aacraid_pci.c projects/camlock/sys/dev/acpica/Osd/OsdSynch.c projects/camlock/sys/dev/advansys/adw_pci.c projects/camlock/sys/dev/aic7xxx/ahc_pci.c projects/camlock/sys/dev/aic7xxx/ahd_pci.c projects/camlock/sys/dev/amr/amr_pci.c projects/camlock/sys/dev/an/if_an_pci.c projects/camlock/sys/dev/arcmsr/arcmsr.c projects/camlock/sys/dev/asr/asr.c projects/camlock/sys/dev/ata/ata-pci.c projects/camlock/sys/dev/bktr/bktr_os.c projects/camlock/sys/dev/buslogic/bt_pci.c projects/camlock/sys/dev/bwi/bwimac.c projects/camlock/sys/dev/dpt/dpt_pci.c projects/camlock/sys/dev/e1000/if_em.c projects/camlock/sys/dev/e1000/if_igb.c projects/camlock/sys/dev/e1000/if_lem.c projects/camlock/sys/dev/fatm/if_fatm.c projects/camlock/sys/dev/firewire/fwohci_pci.c projects/camlock/sys/dev/fxp/if_fxp.c projects/camlock/sys/dev/hatm/if_hatm.c projects/camlock/sys/dev/iir/iir.c projects/camlock/sys/dev/iir/iir.h projects/camlock/sys/dev/iir/iir_ctrl.c projects/camlock/sys/dev/iir/iir_pci.c projects/camlock/sys/dev/ips/ips_pci.c projects/camlock/sys/dev/isp/isp_freebsd.c projects/camlock/sys/dev/isp/isp_pci.c projects/camlock/sys/dev/iwn/if_iwn.c projects/camlock/sys/dev/ixgb/if_ixgb.c projects/camlock/sys/dev/ixgbe/ixgbe.c projects/camlock/sys/dev/ixgbe/ixv.c projects/camlock/sys/dev/mfi/mfi_pci.c projects/camlock/sys/dev/mfi/mfi_syspd.c projects/camlock/sys/dev/mly/mly.c projects/camlock/sys/dev/mn/if_mn.c projects/camlock/sys/dev/mps/mps_pci.c projects/camlock/sys/dev/mpt/mpt_pci.c projects/camlock/sys/dev/mwl/if_mwl_pci.c projects/camlock/sys/dev/mxge/if_mxge.c projects/camlock/sys/dev/nvme/nvme.c projects/camlock/sys/dev/nvme/nvme.h projects/camlock/sys/dev/nvme/nvme_ctrlr.c projects/camlock/sys/dev/nvme/nvme_private.h projects/camlock/sys/dev/pccbb/pccbb_pci.c projects/camlock/sys/dev/pst/pst-pci.c projects/camlock/sys/dev/rp/rp_pci.c projects/camlock/sys/dev/safe/safe.c projects/camlock/sys/dev/sound/pci/als4000.c projects/camlock/sys/dev/sound/pci/aureal.c projects/camlock/sys/dev/sound/pci/cmi.c projects/camlock/sys/dev/sound/pci/cs4281.c projects/camlock/sys/dev/sound/pci/csa.c projects/camlock/sys/dev/sound/pci/ds1.c projects/camlock/sys/dev/sound/pci/emu10k1.c projects/camlock/sys/dev/sound/pci/emu10kx.c projects/camlock/sys/dev/sound/pci/envy24.c projects/camlock/sys/dev/sound/pci/envy24ht.c projects/camlock/sys/dev/sound/pci/es137x.c projects/camlock/sys/dev/sound/pci/fm801.c projects/camlock/sys/dev/sound/pci/hdspe.c projects/camlock/sys/dev/sound/pci/maestro.c projects/camlock/sys/dev/sound/pci/maestro3.c projects/camlock/sys/dev/sound/pci/neomagic.c projects/camlock/sys/dev/sound/pci/solo.c projects/camlock/sys/dev/sound/pci/t4dwave.c projects/camlock/sys/dev/sound/pci/via82c686.c projects/camlock/sys/dev/sound/pci/vibes.c projects/camlock/sys/dev/stge/if_stge.c projects/camlock/sys/dev/sym/sym_hipd.c projects/camlock/sys/dev/tdfx/tdfx_pci.c projects/camlock/sys/dev/twa/tw_osl_freebsd.c projects/camlock/sys/dev/tws/tws.c projects/camlock/sys/dev/ubsec/ubsec.c projects/camlock/sys/dev/wi/if_wi_pci.c projects/camlock/sys/fs/ext2fs/ext2_alloc.c projects/camlock/sys/fs/ext2fs/ext2_balloc.c projects/camlock/sys/fs/ext2fs/ext2_bmap.c projects/camlock/sys/fs/ext2fs/ext2_dinode.h projects/camlock/sys/fs/ext2fs/ext2_extern.h projects/camlock/sys/fs/ext2fs/ext2_inode.c projects/camlock/sys/fs/ext2fs/ext2_inode_cnv.c projects/camlock/sys/fs/ext2fs/ext2_subr.c projects/camlock/sys/fs/ext2fs/ext2_vfsops.c projects/camlock/sys/fs/ext2fs/ext2_vnops.c projects/camlock/sys/fs/ext2fs/ext2fs.h projects/camlock/sys/fs/ext2fs/inode.h projects/camlock/sys/fs/nfs/nfsport.h projects/camlock/sys/fs/nfs/nfsrvcache.h projects/camlock/sys/fs/nfsserver/nfs_nfsdcache.c projects/camlock/sys/fs/nfsserver/nfs_nfsdport.c projects/camlock/sys/geom/raid/g_raid.c projects/camlock/sys/geom/raid/g_raid.h projects/camlock/sys/geom/raid/tr_raid5.c projects/camlock/sys/i386/include/acpica_machdep.h projects/camlock/sys/ia64/include/acpica_machdep.h projects/camlock/sys/kern/kern_descrip.c projects/camlock/sys/kern/kern_event.c projects/camlock/sys/kern/kern_exec.c projects/camlock/sys/kern/kern_exit.c projects/camlock/sys/kern/kern_fork.c projects/camlock/sys/kern/kern_linker.c projects/camlock/sys/kern/kern_malloc.c projects/camlock/sys/kern/kern_proc.c projects/camlock/sys/kern/kern_rangelock.c projects/camlock/sys/kern/kern_sdt.c projects/camlock/sys/kern/kern_sig.c projects/camlock/sys/kern/kern_timeout.c projects/camlock/sys/kern/subr_vmem.c projects/camlock/sys/kern/sys_pipe.c projects/camlock/sys/kern/sys_socket.c projects/camlock/sys/kern/tty_pts.c projects/camlock/sys/kern/uipc_mqueue.c projects/camlock/sys/kern/uipc_sem.c projects/camlock/sys/kern/uipc_shm.c projects/camlock/sys/kern/uipc_syscalls.c projects/camlock/sys/kern/vfs_syscalls.c projects/camlock/sys/kern/vfs_vnops.c projects/camlock/sys/modules/dtrace/sdt/Makefile projects/camlock/sys/modules/ext2fs/Makefile projects/camlock/sys/net80211/ieee80211.c projects/camlock/sys/net80211/ieee80211_action.c projects/camlock/sys/net80211/ieee80211_node.c projects/camlock/sys/net80211/ieee80211_phy.c projects/camlock/sys/net80211/ieee80211_power.c projects/camlock/sys/net80211/ieee80211_proto.c projects/camlock/sys/net80211/ieee80211_scan_sta.c projects/camlock/sys/netinet/ip_carp.c projects/camlock/sys/netinet/sctp_dtrace_define.h projects/camlock/sys/netinet/sctp_output.c projects/camlock/sys/ofed/include/linux/linux_compat.c projects/camlock/sys/opencrypto/cryptodev.c projects/camlock/sys/pci/ncr.c projects/camlock/sys/sys/eventhandler.h projects/camlock/sys/sys/file.h projects/camlock/sys/sys/linker.h projects/camlock/sys/sys/param.h projects/camlock/sys/sys/rangelock.h projects/camlock/sys/sys/sdt.h projects/camlock/sys/sys/socket.h projects/camlock/sys/sys/vmmeter.h projects/camlock/sys/vm/memguard.c projects/camlock/sys/vm/vm_kern.h projects/camlock/sys/vm/vm_page.c projects/camlock/sys/vm/vm_page.h projects/camlock/sys/vm/vm_pageout.c projects/camlock/sys/x86/isa/clock.c projects/camlock/tools/build/mk/OptionalObsoleteFiles.inc projects/camlock/usr.bin/calendar/calendars/calendar.freebsd projects/camlock/usr.bin/dtc/input_buffer.cc projects/camlock/usr.bin/kdump/kdump.c projects/camlock/usr.bin/kdump/mksubr projects/camlock/usr.bin/su/su.c projects/camlock/usr.sbin/bsdinstall/scripts/mirrorselect Directory Properties: projects/camlock/ (props changed) projects/camlock/crypto/openssh/ (props changed) projects/camlock/gnu/lib/ (props changed) projects/camlock/lib/libc/ (props changed) projects/camlock/sbin/ (props changed) projects/camlock/sys/ (props changed) projects/camlock/sys/cddl/contrib/opensolaris/ (props changed) projects/camlock/sys/conf/ (props changed) projects/camlock/usr.bin/calendar/ (props changed) Modified: projects/camlock/UPDATING ============================================================================== --- projects/camlock/UPDATING Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/UPDATING Thu Aug 15 20:28:13 2013 (r254381) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130813: + WITH_ICONV has been split into two feature sets. WITH_ICONV now + enables just the iconv* functionality and is now on by default. + WITH_LIBICONV_COMPAT enables the libiconv api and link time + compatability. Set WITHOUT_ICONV to build the old way. + If you have been using WITH_ICONV before, you will very likely + need to turn on WITH_LIBICONV_COMPAT. + 20130806: INVARIANTS option now enables DEBUG for code with OpenSolaris and Illumos origin, including ZFS. If you have INVARIANTS in your Modified: projects/camlock/bin/sh/parser.c ============================================================================== --- projects/camlock/bin/sh/parser.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/bin/sh/parser.c Thu Aug 15 20:28:13 2013 (r254381) @@ -577,6 +577,9 @@ TRACE(("expecting DO got %s %s\n", tokna case TSEMI: case TAND: case TOR: + case TPIPE: + case TENDCASE: + case TFALLTHRU: /* * An empty command before a ; doesn't make much sense, and * should certainly be disallowed in the case of `if ;'. Modified: projects/camlock/bin/sh/var.c ============================================================================== --- projects/camlock/bin/sh/var.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/bin/sh/var.c Thu Aug 15 20:28:13 2013 (r254381) @@ -710,6 +710,7 @@ localcmd(int argc __unused, char **argv { char *name; + nextopt(""); if (! in_function()) error("Not in a function"); while ((name = *argptr++) != NULL) { Modified: projects/camlock/crypto/openssh/sftp.c ============================================================================== --- projects/camlock/crypto/openssh/sftp.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/crypto/openssh/sftp.c Thu Aug 15 20:28:13 2013 (r254381) @@ -1328,7 +1328,8 @@ parse_dispatch_command(struct sftp_conn case I_SYMLINK: sflag = 1; case I_LINK: - path1 = make_absolute(path1, *pwd); + if (!sflag) + path1 = make_absolute(path1, *pwd); path2 = make_absolute(path2, *pwd); err = (sflag ? do_symlink : do_hardlink)(conn, path1, path2); break; Modified: projects/camlock/gnu/lib/libstdc++/config.h ============================================================================== --- projects/camlock/gnu/lib/libstdc++/config.h Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/gnu/lib/libstdc++/config.h Thu Aug 15 20:28:13 2013 (r254381) @@ -212,13 +212,13 @@ #define HAVE_LOG10F 1 /* Define to 1 if you have the `log10l' function. */ -/* #undef HAVE_LOG10L */ +#define HAVE_LOG10L 1 /* Define to 1 if you have the `logf' function. */ #define HAVE_LOGF 1 /* Define to 1 if you have the `logl' function. */ -/* #undef HAVE_LOGL */ +#define HAVE_LOGL 1 /* Define to 1 if you have the header file. */ #define HAVE_MACHINE_ENDIAN_H 1 Modified: projects/camlock/include/Makefile ============================================================================== --- projects/camlock/include/Makefile Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/include/Makefile Thu Aug 15 20:28:13 2013 (r254381) @@ -72,10 +72,6 @@ _dev_ieee488= dev/ieee488 INCS+= hesiod.h .endif -.if ${MK_ICONV} != "no" -INCS+= iconv.h -.endif - .if ${MK_BLUETOOTH} != "no" LSUBSUBDIRS+= netgraph/bluetooth/include .endif @@ -85,6 +81,20 @@ LSUBSUBDIRS+= netgraph/bluetooth/include _netipx= netipx #.endif +# Handle the #define aliases for libiconv +.if ${MK_ICONV} == "yes" +CLEANFILES+= _libiconv_compat.h +INCS+= _libiconv_compat.h iconv.h +_libiconv_compat.h: ${.CURDIR}/Makefile + echo "/* Indicate whether libiconv symbols are present */" > _libiconv_compat.h +.if ${MK_LIBICONV_COMPAT} == "yes" + echo "#define __LIBICONV_COMPAT" >> _libiconv_compat.h +.else + echo "#undef __LIBICONV_COMPAT" >> _libiconv_compat.h +.endif +.endif + + # Define SHARED to indicate whether you want symbolic links to the system # source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is # probably only useful for developers and should be avoided if you do not Modified: projects/camlock/include/iconv.h ============================================================================== --- projects/camlock/include/iconv.h Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/include/iconv.h Thu Aug 15 20:28:13 2013 (r254381) @@ -41,20 +41,23 @@ #include #include -#define iconv_open libiconv_open -#define iconv_close libiconv_close -#define iconv libiconv -#define iconv_t libiconv_t +#include <_libiconv_compat.h> +#ifdef __LIBICONV_COMPAT +#define libiconv_open iconv_open +#define libiconv_close iconv_close +#define libiconv iconv +#define libiconv_t iconv_t +#endif struct __tag_iconv_t; typedef struct __tag_iconv_t *iconv_t; __BEGIN_DECLS -iconv_t libiconv_open(const char *, const char *); -size_t libiconv(iconv_t, const char ** __restrict, - size_t * __restrict, char ** __restrict, - size_t * __restrict); -int libiconv_close(iconv_t); +iconv_t iconv_open(const char *, const char *); +size_t iconv(iconv_t, const char ** __restrict, + size_t * __restrict, char ** __restrict, + size_t * __restrict); +int iconv_close(iconv_t); /* * non-portable interfaces for iconv */ @@ -67,20 +70,28 @@ size_t __iconv(iconv_t, const char **, s /* * GNU interfaces for iconv */ -#define iconv_open_into libiconv_open_into -#define iconvctl libiconvctl -#define iconvlist libiconvlist +#ifdef __LIBICONV_COMPAT +#define libiconv_open_into iconv_open_into +#define libiconvctl iconvctl +#define libiconvlist iconvlist +#define libiconv_set_relocation_prefix iconv_set_relocation_prefix +#endif /* We have iconvctl() */ -#define _LIBICONV_VERSION 0x0108 -extern int _libiconv_version; +#define _ICONV_VERSION 0x0108 +extern int _iconv_version; + +#ifdef __LIBICONV_COMPAT +#define _libiconv_version _iconv_version +#define _LIBICONV_VERSION _ICONV_VERSION +#endif typedef struct { void *spaceholder[64]; } iconv_allocation_t; int iconv_open_into(const char *, const char *, iconv_allocation_t *); -void libiconv_set_relocation_prefix (const char *orig_prefix, +void iconv_set_relocation_prefix(const char *orig_prefix, const char *curr_prefix); /* Modified: projects/camlock/lib/Makefile ============================================================================== --- projects/camlock/lib/Makefile Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/Makefile Thu Aug 15 20:28:13 2013 (r254381) @@ -78,6 +78,7 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_libgpib} \ ${_libgssapi} \ ${_librpcsec_gss} \ + ${_libiconv_compat} \ libipsec \ ${_libipx} \ libjail \ @@ -189,6 +190,10 @@ _libcxxrt= libcxxrt _libcplusplus= libc++ .endif +.if ${MK_LIBICONV_COMPAT} != "no" +_libiconv_compat= libiconv_compat +.endif + .if ${MK_LIBTHR} != "no" _libthr= libthr .endif Modified: projects/camlock/lib/libc/db/btree/bt_open.c ============================================================================== --- projects/camlock/lib/libc/db/btree/bt_open.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/db/btree/bt_open.c Thu Aug 15 20:28:13 2013 (r254381) @@ -196,7 +196,7 @@ __bt_open(const char *fname, int flags, goto einval; } - if ((t->bt_fd = _open(fname, flags, mode)) < 0) + if ((t->bt_fd = _open(fname, flags | O_CLOEXEC, mode)) < 0) goto err; } else { @@ -207,9 +207,6 @@ __bt_open(const char *fname, int flags, F_SET(t, B_INMEM); } - if (_fcntl(t->bt_fd, F_SETFD, 1) == -1) - goto err; - if (_fstat(t->bt_fd, &sb)) goto err; if (sb.st_size) { @@ -405,7 +402,7 @@ tmp(void) (void)sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); - if ((fd = mkstemp(path)) != -1) + if ((fd = mkostemp(path, O_CLOEXEC)) != -1) (void)unlink(path); (void)_sigprocmask(SIG_SETMASK, &oset, NULL); return(fd); Modified: projects/camlock/lib/libc/db/hash/hash_page.c ============================================================================== --- projects/camlock/lib/libc/db/hash/hash_page.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/db/hash/hash_page.c Thu Aug 15 20:28:13 2013 (r254381) @@ -862,10 +862,8 @@ open_temp(HTAB *hashp) /* Block signals; make sure file goes away at process exit. */ (void)sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); - if ((hashp->fp = mkstemp(path)) != -1) { + if ((hashp->fp = mkostemp(path, O_CLOEXEC)) != -1) (void)unlink(path); - (void)_fcntl(hashp->fp, F_SETFD, 1); - } (void)_sigprocmask(SIG_SETMASK, &oset, (sigset_t *)NULL); return (hashp->fp != -1 ? 0 : -1); } Modified: projects/camlock/lib/libc/gmon/gmon.c ============================================================================== --- projects/camlock/lib/libc/gmon/gmon.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/gmon/gmon.c Thu Aug 15 20:28:13 2013 (r254381) @@ -163,13 +163,13 @@ _mcleanup(void) else snprintf(outname, sizeof(outname), "%s.gmon", _getprogname()); - fd = _open(outname, O_CREAT|O_TRUNC|O_WRONLY, 0666); + fd = _open(outname, O_CREAT|O_TRUNC|O_WRONLY|O_CLOEXEC, 0666); if (fd < 0) { _warn("_mcleanup: %s", outname); return; } #ifdef DEBUG - log = _open("gmon.log", O_CREAT|O_TRUNC|O_WRONLY, 0664); + log = _open("gmon.log", O_CREAT|O_TRUNC|O_WRONLY|O_CLOEXEC, 0664); if (log < 0) { _warn("_mcleanup: gmon.log"); return; Modified: projects/camlock/lib/libc/iconv/Symbol.map ============================================================================== --- projects/camlock/lib/libc/iconv/Symbol.map Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/iconv/Symbol.map Thu Aug 15 20:28:13 2013 (r254381) @@ -18,6 +18,7 @@ FBSD_1.2 { }; FBSD_1.3 { + _iconv_version; iconv; iconv_open; iconv_close; @@ -49,6 +50,7 @@ FBSDprivate_1.0 { _citrus_bcs_strtoul; _citrus_bcs_tolower; _citrus_bcs_toupper; + _citrus_bcs_trunc_rws_len; _citrus_bcs_trunc_ws_len; _citrus_csmapper_open; _citrus_csmapper_close; Modified: projects/camlock/lib/libc/iconv/iconv.c ============================================================================== --- projects/camlock/lib/libc/iconv/iconv.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/iconv/iconv.c Thu Aug 15 20:28:13 2013 (r254381) @@ -47,17 +47,21 @@ #include "citrus_hash.h" #include "citrus_iconv.h" -__weak_reference(libiconv, iconv); -__weak_reference(libiconv_open, iconv_open); -__weak_reference(libiconv_open_into, iconv_open_into); -__weak_reference(libiconv_close, iconv_close); -__weak_reference(libiconvlist, iconvlist); -__weak_reference(libiconvctl, iconvctl); -__weak_reference(libiconv_set_relocation_prefix, iconv_set_relocation_prefix); +#include <_libiconv_compat.h> +#ifdef __LIBICONV_COMPAT +__weak_reference(iconv, libiconv); +__weak_reference(iconv_open, libiconv_open); +__weak_reference(iconv_open_into, libiconv_open_into); +__weak_reference(iconv_close, libiconv_close); +__weak_reference(iconvlist, libiconvlist); +__weak_reference(iconvctl, libiconvctl); +__weak_reference(iconv_set_relocation_prefix, libiconv_set_relocation_prefix); +__weak_reference(_iconv_version, _libiconv_version); +#endif #define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1) -int _libiconv_version = _LIBICONV_VERSION; +int _iconv_version = _ICONV_VERSION; iconv_t _iconv_open(const char *out, const char *in, struct _citrus_iconv *prealloc); @@ -100,14 +104,14 @@ _iconv_open(const char *out, const char } iconv_t -libiconv_open(const char *out, const char *in) +iconv_open(const char *out, const char *in) { return (_iconv_open(out, in, NULL)); } int -libiconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr) +iconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr) { struct _citrus_iconv *handle; @@ -116,7 +120,7 @@ libiconv_open_into(const char *out, cons } int -libiconv_close(iconv_t handle) +iconv_close(iconv_t handle) { if (ISBADF(handle)) { @@ -130,7 +134,7 @@ libiconv_close(iconv_t handle) } size_t -libiconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout) +iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout) { size_t ret; int err; @@ -210,7 +214,7 @@ qsort_helper(const void *first, const vo } void -libiconvlist(int (*do_one) (unsigned int, const char * const *, +iconvlist(int (*do_one) (unsigned int, const char * const *, void *), void *data) { char **list, **names; @@ -264,7 +268,7 @@ __inline const char } int -libiconvctl(iconv_t cd, int request, void *argument) +iconvctl(iconv_t cd, int request, void *argument) { struct _citrus_iconv *cv; struct iconv_hooks *hooks; @@ -316,7 +320,7 @@ libiconvctl(iconv_t cd, int request, voi } void -libiconv_set_relocation_prefix(const char *orig_prefix __unused, +iconv_set_relocation_prefix(const char *orig_prefix __unused, const char *curr_prefix __unused) { Modified: projects/camlock/lib/libc/stdlib/system.c ============================================================================== --- projects/camlock/lib/libc/stdlib/system.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libc/stdlib/system.c Thu Aug 15 20:28:13 2013 (r254381) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -56,37 +57,36 @@ __system(const char *command) if (!command) /* just checking... */ return(1); - /* - * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save - * existing signal dispositions. - */ - ign.sa_handler = SIG_IGN; - (void)sigemptyset(&ign.sa_mask); - ign.sa_flags = 0; - (void)_sigaction(SIGINT, &ign, &intact); - (void)_sigaction(SIGQUIT, &ign, &quitact); (void)sigemptyset(&newsigblock); (void)sigaddset(&newsigblock, SIGCHLD); (void)_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); - switch(pid = fork()) { + switch(pid = vfork()) { case -1: /* error */ - break; + (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + return (-1); case 0: /* child */ /* * Restore original signal dispositions and exec the command. */ - (void)_sigaction(SIGINT, &intact, NULL); - (void)_sigaction(SIGQUIT, &quitact, NULL); (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); _exit(127); - default: /* parent */ - savedpid = pid; - do { - pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); - } while (pid == -1 && errno == EINTR); - break; } + /* + * If we are running means that the child has either completed + * its execve, or has failed. + * Block SIGINT/QUIT because sh -c handles it and wait for + * it to clean up. + */ + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = SIG_IGN; + (void)sigemptyset(&ign.sa_mask); + (void)_sigaction(SIGINT, &ign, &intact); + (void)_sigaction(SIGQUIT, &ign, &quitact); + savedpid = pid; + do { + pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); + } while (pid == -1 && errno == EINTR); (void)_sigaction(SIGINT, &intact, NULL); (void)_sigaction(SIGQUIT, &quitact, NULL); (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); Modified: projects/camlock/lib/libkiconv/xlat16_iconv.c ============================================================================== --- projects/camlock/lib/libkiconv/xlat16_iconv.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/lib/libkiconv/xlat16_iconv.c Thu Aug 15 20:28:13 2013 (r254381) @@ -49,8 +49,6 @@ #include "quirks.h" -typedef void *iconv_t; - struct xlat16_table { uint32_t * idx[0x200]; void * data; @@ -61,6 +59,7 @@ static struct xlat16_table kiconv_xlat16 static int chklocale(int, const char *); #ifdef ICONV_DLOPEN +typedef void *iconv_t; static int my_iconv_init(void); static iconv_t (*my_iconv_open)(const char *, const char *); static size_t (*my_iconv)(iconv_t, const char **, size_t *, char **, size_t *); Modified: projects/camlock/release/release.conf.sample ============================================================================== --- projects/camlock/release/release.conf.sample Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/release/release.conf.sample Thu Aug 15 20:28:13 2013 (r254381) @@ -10,18 +10,13 @@ CHROOTDIR="/scratch" SVNROOT="svn://svn.FreeBSD.org" ## Set the src/, ports/, and doc/ branches or tags. -SRCBRANCH="base/head" -DOCBRANCH="doc/head" -PORTBRANCH="ports/head" +SRCBRANCH="base/head@rHEAD" +DOCBRANCH="doc/head@rHEAD" +PORTBRANCH="ports/head@rHEAD" ## Run svn co --force for src checkout. #SRC_FORCE_CHECKOUT=yes -## Set the src/, ports/, and doc/ revisions. -SRCREVISION="-rHEAD" -DOCREVISION="-rHEAD" -PORTREVISION="-rHEAD" - ## Set to override the default target architecture. #TARGET="amd64" #TARGET_ARCH="amd64" Modified: projects/camlock/release/release.sh ============================================================================== --- projects/camlock/release/release.sh Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/release/release.sh Thu Aug 15 20:28:13 2013 (r254381) @@ -41,19 +41,14 @@ CHROOTDIR="/scratch" # The default svn checkout server, and svn branches for src/, doc/, # and ports/. SVNROOT="svn://svn.freebsd.org" -SRCBRANCH="base/head" -DOCBRANCH="doc/head" -PORTBRANCH="ports/head" +SRCBRANCH="base/head@rHEAD" +DOCBRANCH="doc/head@rHEAD" +PORTBRANCH="ports/head@rHEAD" # Sometimes one needs to checkout src with --force svn option. # If custom kernel configs copied to src tree before checkout, e.g. SRC_FORCE_CHECKOUT= -# The default src/, doc/, and ports/ revisions. -SRCREVISION="-rHEAD" -DOCREVISION="-rHEAD" -PORTREVISION="-rHEAD" - # The default make.conf and src.conf to use. Set to /dev/null # by default to avoid polluting the chroot(8) environment with # non-default settings. @@ -62,34 +57,22 @@ SRC_CONF="/dev/null" # The number of make(1) jobs, defaults to the number of CPUs available for # buildworld, and half of number of CPUs available for buildkernel. -WORLD_FLAGS="-j$(sysctl -n hw.ncpu)" -KERNEL_FLAGS="-j$(expr $(sysctl -n hw.ncpu) / 2)" +NCPU=$(sysctl -n hw.ncpu) +if [ ${NCPU} -gt 1 ]; then + WORLD_FLAGS="-j${NCPU}" + KERNEL_FLAGS="-j$(expr ${NCPU} / 2)" +fi MAKE_FLAGS="-s" # The name of the kernel to build, defaults to GENERIC. KERNEL="GENERIC" -# The TARGET and TARGET_ARCH to build, defaults to the running system. -TARGET="$(uname -p)" -TARGET_ARCH="${TARGET}" - # Set to non-empty value to disable checkout of doc/ and/or ports/. Disabling # ports/ checkout also forces NODOC to be set. NODOC= NOPORTS= MAKE_FLAGS="${MAKE_FLAGS}" -get_rev_branch () { - # Set up the OSVERSION, BRANCH, and REVISION based on the src/ tree - # checked out. - OSVERSION=$(grep '#define __FreeBSD_version' ${CHROOTDIR}/usr/src/sys/sys/param.h | awk '{print $3}') - BRANCH=$(grep '^BRANCH=' ${CHROOTDIR}/usr/src/sys/conf/newvers.sh \ - | awk -F\= '{print $2}' | sed -e 's,",,g') - REVISION=$(grep '^REVISION=' ${CHROOTDIR}/usr/src/sys/conf/newvers.sh \ - | awk -F\= '{print $2}' | sed -e 's,",,g') - OSRELEASE="${REVISION}-${BRANCH}" -} - usage() { echo "Usage: $0 [-c release.conf]" exit 1 @@ -136,7 +119,11 @@ fi # this file, unless overridden by release.conf. In most cases, these # will not need to be changed. CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}" -ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}" +if [ "x${TARGET}" != "x" ] && [ "x${TARGET_ARCH}" != "x" ]; then + ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}" +else + ARCH_FLAGS= +fi CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}" CHROOT_IMAKEFLAGS="${CONF_FILES}" CHROOT_DMAKEFLAGS="${CONF_FILES}" @@ -165,16 +152,14 @@ set -e # Everything must succeed mkdir -p ${CHROOTDIR}/usr -svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION +svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src if [ "x${NODOC}" = "x" ]; then - svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc $DOCREVISION + svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc fi if [ "x${NOPORTS}" = "x" ]; then - svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports $PORTREVISION + svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports fi -get_rev_branch - cd ${CHROOTDIR}/usr/src make ${CHROOT_WMAKEFLAGS} buildworld make ${CHROOT_IMAKEFLAGS} installworld DESTDIR=${CHROOTDIR} Modified: projects/camlock/sbin/init/init.c ============================================================================== --- projects/camlock/sbin/init/init.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/sbin/init/init.c Thu Aug 15 20:28:13 2013 (r254381) @@ -1729,7 +1729,8 @@ setprocresources(const char *cname) login_cap_t *lc; if ((lc = login_getclassbyname(cname, NULL)) != NULL) { setusercontext(lc, (struct passwd*)NULL, 0, - LOGIN_SETPRIORITY | LOGIN_SETRESOURCES); + LOGIN_SETPRIORITY | LOGIN_SETRESOURCES | + LOGIN_SETLOGINCLASS | LOGIN_SETCPUMASK); login_close(lc); } } Modified: projects/camlock/share/man/man7/release.7 ============================================================================== --- projects/camlock/share/man/man7/release.7 Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/share/man/man7/release.7 Thu Aug 15 20:28:13 2013 (r254381) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 11, 2013 +.Dd August 14, 2013 .Dt RELEASE 7 .Os .Sh NAME @@ -149,41 +149,23 @@ The .Li src/ branch to use. Defaults to -.Va head/ . +.Va head/@rHEAD . .It Va DOCBRANCH The .Li doc/ branch to use. Defaults to -.Va head/ . +.Va head/@rHEAD . .It Va PORTBRANCH The .Li ports/ branch to use. Defaults to -.Va head/ . -.It Va SRCREVISION -The revision of the -.Li src/ -tree to use. -Defaults to the current top of tree revision. -.It Va DOCREVISION -The revision of the -.Li doc/ -tree to use. -Defaults to the current top of tree revision. -.It Va PORTREVISION -The revision of the -.Li ports/ -tree to use. -Defaults to the current top of tree revision. +.Va head/@rHEAD . .It Va TARGET -The target machine type for the release. -Defaults to the current machine type. +The target machine type for cross-building a release. .It Va TARGET_ARCH -The target machine architecture for the release. -Defaults to the value of -.Va TARGET . +The target machine architecture for cross-building a release. .Pp For the supported list of .Va TARGET @@ -227,7 +209,7 @@ Defaults to setting the number of .Xr make 1 jobs .Pq Ar -j -to the number of CPUs available on the system. +to the number of CPUs available on a SMP-capable system. .It Va KERNEL_FLAGS Additional flags to pass to .Xr make 1 @@ -238,7 +220,7 @@ Defaults to setting the number of .Xr make 1 jobs .Pq Ar -j -to half the number of CPUs available on the system. +to half the number of CPUs available on a SMP-capable system. .It Va NODOC Set to a non-empty value to skip the .Li doc/ Modified: projects/camlock/share/man/man9/EVENTHANDLER.9 ============================================================================== --- projects/camlock/share/man/man9/EVENTHANDLER.9 Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/share/man/man9/EVENTHANDLER.9 Thu Aug 15 20:28:13 2013 (r254381) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" $FreeBSD$ .\" -.Dd May 11, 2012 +.Dd August 1, 2013 .Dt EVENTHANDLER 9 .Os .Sh NAME @@ -199,6 +199,12 @@ Callbacks invoked when a new network int Callbacks invoked when a network interface is taken down. .It Vt bpf_track Callbacks invoked when a BPF listener attaches to/detaches from network interface. +.It Vt kld_load +Callbacks invoked after a linker file has been loaded. +.It Vt kld_unload +Callbacks invoked before a linker file is about to be unloaded. +These callbacks may be used to return an error and prevent the unload from +proceeding. .It Vt power_profile_change Callbacks invoked when the power profile of the system changes. .It Vt process_exec Modified: projects/camlock/share/man/man9/netisr.9 ============================================================================== --- projects/camlock/share/man/man9/netisr.9 Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/share/man/man9/netisr.9 Thu Aug 15 20:28:13 2013 (r254381) @@ -83,7 +83,7 @@ and .Nm supports multi-processor execution of handlers, and relies on a combination of source ordering and protocol-specific ordering and work-placement -policies to decide how do distribute work across one or more worker +policies to decide how to distribute work across one or more worker threads. Registering protocols will declare one of three policies: .Bl -tag -width NETISR_POLICY_SOURCE Modified: projects/camlock/share/misc/committers-ports.dot ============================================================================== --- projects/camlock/share/misc/committers-ports.dot Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/share/misc/committers-ports.dot Thu Aug 15 20:28:13 2013 (r254381) @@ -155,6 +155,7 @@ miwi [label="Martin Wilke\nmiwi@FreeBSD. mm [label="Martin Matuska\nmm@FreeBSD.org\n2007/04/04"] mnag [label="Marcus Alves Grando\nmnag@FreeBSD.org\n2005/09/15"] mva [label="Marcus von Appen\nmva@FreeBSD.org\n2009/02/16"] +nemysis [label="Rusmir Dusko\nnemysis@FreeBSD.org\n2013/07/31"] nemoliu [label="Tong Liu\nnemoliu@FreeBSD.org\n2007/04/25"] netchild [label="Alexander Leidinger\nnetchild@FreeBSD.org\n2002/03/19"] nobutaka [label="Nobutaka Mantani\nnobutaka@FreeBSD.org\n2001/11/02"] @@ -421,6 +422,7 @@ miwi -> lme miwi -> makc miwi -> mandree miwi -> mva +miwi -> nemysis miwi -> nox miwi -> olivierd miwi -> pawel @@ -456,6 +458,8 @@ pav -> josef pav -> kwm pav -> mnag +pawel -> nemysis + pgj -> ashish pgj -> jacula @@ -525,9 +529,12 @@ wen -> cs wen -> culot wen -> pawel +wg -> nemysis + will -> lioux wxs -> jsa +wxs -> nemysis wxs -> sahil wxs -> skreuzer wxs -> swills Modified: projects/camlock/share/mk/bsd.own.mk ============================================================================== --- projects/camlock/share/mk/bsd.own.mk Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/share/mk/bsd.own.mk Thu Aug 15 20:28:13 2013 (r254381) @@ -292,6 +292,7 @@ __DEFAULT_YES_OPTIONS = \ GPIO \ GROFF \ HTML \ + ICONV \ INET \ INET6 \ INFO \ @@ -377,7 +378,7 @@ __DEFAULT_NO_OPTIONS = \ GNU_PATCH \ GPL_DTC \ HESIOD \ - ICONV \ + LIBICONV_COMPAT \ INSTALL_AS_USER \ LDNS_UTILS \ NMTREE \ @@ -484,6 +485,10 @@ MK_BIND_NAMED:= no MK_BIND_UTILS:= no .endif +.if ${MK_ICONV} == "no" +MK_LIBICONV_COMPAT:= no +.endif + .if ${MK_LDNS} == "no" MK_LDNS_UTILS:= no .endif Modified: projects/camlock/sys/amd64/amd64/initcpu.c ============================================================================== --- projects/camlock/sys/amd64/amd64/initcpu.c Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/sys/amd64/amd64/initcpu.c Thu Aug 15 20:28:13 2013 (r254381) @@ -192,7 +192,7 @@ initializecpu(void) } void -initializecpucache() +initializecpucache(void) { /* Modified: projects/camlock/sys/amd64/include/acpica_machdep.h ============================================================================== --- projects/camlock/sys/amd64/include/acpica_machdep.h Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/sys/amd64/include/acpica_machdep.h Thu Aug 15 20:28:13 2013 (r254381) @@ -1,80 +1,6 @@ /*- - * Copyright (c) 2002 Mitsuru IWASAKI - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ + * This file is in the public domain. */ +/* $FreeBSD$ */ -/****************************************************************************** - * - * Name: acpica_machdep.h - arch-specific defines, etc. - * $Revision$ - * - *****************************************************************************/ - -#ifndef __ACPICA_MACHDEP_H__ -#define __ACPICA_MACHDEP_H__ - -#ifdef _KERNEL -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -/* Asm macros */ - -#define ACPI_ASM_MACROS -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() disable_intr() -#define ACPI_ENABLE_IRQS() enable_intr() - -#define ACPI_FLUSH_CPU_CACHE() wbinvd() - -/* Section 5.2.9.1: global lock acquire/release functions */ -extern int acpi_acquire_global_lock(uint32_t *lock); -extern int acpi_release_global_lock(uint32_t *lock); -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_release_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) - -void acpi_SetDefaultIntrModel(int model); -void acpi_cpu_c1(void); -void *acpi_map_table(vm_paddr_t pa, const char *sig); -void acpi_unmap_table(void *table); -vm_paddr_t acpi_find_table(const char *sig); - -#endif /* _KERNEL */ - -#endif /* __ACPICA_MACHDEP_H__ */ +#include Modified: projects/camlock/sys/arm/freescale/imx/files.imx51 ============================================================================== --- projects/camlock/sys/arm/freescale/imx/files.imx51 Thu Aug 15 20:19:17 2013 (r254380) +++ projects/camlock/sys/arm/freescale/imx/files.imx51 Thu Aug 15 20:28:13 2013 (r254381) @@ -8,7 +8,7 @@ arm/arm/irq_dispatch.S standard kern/kern_clocksource.c standard # Init -arm/freescale/imx/imx_machdep.c standard +arm/freescale/imx/imx51_machdep.c standard arm/freescale/imx/common.c standard arm/freescale/imx/bus_space.c standard Copied: projects/camlock/sys/arm/freescale/imx/imx51_machdep.c (from r254380, head/sys/arm/freescale/imx/imx51_machdep.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/camlock/sys/arm/freescale/imx/imx51_machdep.c Thu Aug 15 20:28:13 2013 (r254381, copy of r254380, head/sys/arm/freescale/imx/imx51_machdep.c) @@ -0,0 +1,142 @@ +/*- + * Copyright (c) 1994-1998 Mark Brinicombe. + * Copyright (c) 1994 Brini. + * Copyright (c) 2012, 2013 The FreeBSD Foundation + * All rights reserved. + * + * + * This code is derived from software written for Brini by Mark Brinicombe + * Portions of this software were developed by Oleksandr Rybalko + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Brini. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY BRINI ``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 BRINI 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. + * + * from: FreeBSD: //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c, rev 45 + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#define _ARM32_BUS_DMA_PRIVATE +#include +#include +#include +#include + +#include +#include + +#include +#include /* For trapframe_t, used in */ +#include +#include + +#include + +#define IMX51_DEV_VIRT_BASE 0xe0000000 +vm_offset_t +initarm_lastaddr(void) +{ + + boothowto |= RB_VERBOSE|RB_MULTIPLE; + bootverbose = 1; + + if (fdt_immr_addr(IMX51_DEV_VIRT_BASE) != 0) + while (1); + + /* Platform-specific initialisation */ + return (fdt_immr_va - ARM_NOCACHE_KVA_SIZE); +} + +/* + * Set initial values of GPIO output ports + */ +void +initarm_gpio_init(void) +{ + +} + +void +initarm_late_init(void) +{ + +} + +#define FDT_DEVMAP_MAX 2 +static struct pmap_devmap fdt_devmap[FDT_DEVMAP_MAX] = { + { 0, 0, 0, 0, 0, }, + { 0, 0, 0, 0, 0, } +}; + +/* + * Construct pmap_devmap[] with DT-derived config data. + */ +int +platform_devmap_init(void) +{ + + /* + * Map segment where UART1 and UART2 located. + */ + fdt_devmap[0].pd_va = IMX51_DEV_VIRT_BASE + 0x03f00000; + fdt_devmap[0].pd_pa = 0x73f00000; + fdt_devmap[0].pd_size = 0x00100000; + 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) +{ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Aug 15 23:58:17 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D2F13FD; Thu, 15 Aug 2013 23:58:17 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C03BD2137; Thu, 15 Aug 2013 23:58:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FNwHIF078079; Thu, 15 Aug 2013 23:58:17 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FNwG9L078072; Thu, 15 Aug 2013 23:58:16 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308152358.r7FNwG9L078072@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 15 Aug 2013 23:58:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254390 - projects/atomic64/sys/dev/iir X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 23:58:18 -0000 Author: jkim Date: Thu Aug 15 23:58:16 2013 New Revision: 254390 URL: http://svnweb.freebsd.org/changeset/base/254390 Log: MFC: r254379 Avoid potential redefinition of the macro. Modified: projects/atomic64/sys/dev/iir/iir.c projects/atomic64/sys/dev/iir/iir.h projects/atomic64/sys/dev/iir/iir_ctrl.c projects/atomic64/sys/dev/iir/iir_pci.c Directory Properties: projects/atomic64/sys/ (props changed) Modified: projects/atomic64/sys/dev/iir/iir.c ============================================================================== --- projects/atomic64/sys/dev/iir/iir.c Thu Aug 15 22:52:39 2013 (r254389) +++ projects/atomic64/sys/dev/iir/iir.c Thu Aug 15 23:58:16 2013 (r254390) @@ -399,7 +399,7 @@ iir_init(struct gdt_softc *gdt) gdt->oem_name[7]='\0'; } else { /* Old method, based on PCI ID */ - if (gdt->sc_vendor == INTEL_VENDOR_ID) + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) strcpy(gdt->oem_name,"Intel "); else strcpy(gdt->oem_name,"ICP "); @@ -1374,7 +1374,7 @@ iir_action( struct cam_sim *sim, union c (bus == gdt->sc_virt_bus ? 127 : gdt->sc_bus_id[bus]); cpi->base_transfer_speed = 3300; strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); - if (gdt->sc_vendor == INTEL_VENDOR_ID) + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) strncpy(cpi->hba_vid, "Intel Corp.", HBA_IDLEN); else strncpy(cpi->hba_vid, "ICP vortex ", HBA_IDLEN); Modified: projects/atomic64/sys/dev/iir/iir.h ============================================================================== --- projects/atomic64/sys/dev/iir/iir.h Thu Aug 15 22:52:39 2013 (r254389) +++ projects/atomic64/sys/dev/iir/iir.h Thu Aug 15 23:58:16 2013 (r254390) @@ -63,7 +63,7 @@ #define GDT_DEVICE_ID_MAX 0x2ff #define GDT_DEVICE_ID_NEWRX 0x300 -#define INTEL_VENDOR_ID 0x8086 +#define INTEL_VENDOR_ID_IIR 0x8086 #define INTEL_DEVICE_ID_IIR 0x600 #define GDT_MAXBUS 6 /* XXX Why not 5? */ Modified: projects/atomic64/sys/dev/iir/iir_ctrl.c ============================================================================== --- projects/atomic64/sys/dev/iir/iir_ctrl.c Thu Aug 15 22:52:39 2013 (r254389) +++ projects/atomic64/sys/dev/iir/iir_ctrl.c Thu Aug 15 23:58:16 2013 (r254390) @@ -273,7 +273,7 @@ iir_ioctl(struct cdev *dev, u_long cmd, return (ENXIO); /* only RP controllers */ p->ext_type = 0x6000 | gdt->sc_device; - if (gdt->sc_vendor == INTEL_VENDOR_ID) { + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) { p->oem_id = OEM_ID_INTEL; p->type = 0xfd; /* new -> subdevice into ext_type */ Modified: projects/atomic64/sys/dev/iir/iir_pci.c ============================================================================== --- projects/atomic64/sys/dev/iir/iir_pci.c Thu Aug 15 22:52:39 2013 (r254389) +++ projects/atomic64/sys/dev/iir/iir_pci.c Thu Aug 15 23:58:16 2013 (r254390) @@ -163,7 +163,7 @@ MODULE_DEPEND(iir, cam, 1, 1, 1); static int iir_pci_probe(device_t dev) { - if (pci_get_vendor(dev) == INTEL_VENDOR_ID && + if (pci_get_vendor(dev) == INTEL_VENDOR_ID_IIR && pci_get_device(dev) == INTEL_DEVICE_ID_IIR) { device_set_desc(dev, "Intel Integrated RAID Controller"); return (BUS_PROBE_DEFAULT); From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 00:00:37 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 76570203; Fri, 16 Aug 2013 00:00:37 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6503E2169; Fri, 16 Aug 2013 00:00:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G00bdP079069; Fri, 16 Aug 2013 00:00:37 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G00blb079067; Fri, 16 Aug 2013 00:00:37 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308160000.r7G00blb079067@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 16 Aug 2013 00:00:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254391 - projects/atomic64/sys/i386/i386 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 00:00:37 -0000 Author: jkim Date: Fri Aug 16 00:00:36 2013 New Revision: 254391 URL: http://svnweb.freebsd.org/changeset/base/254391 Log: MFC: r254384 Simplify check for CMPXCHG8B instruction. Note CMPXCHG8B instruction is always available for Rise mP6 processors although it is not set by CPUID. Modified: projects/atomic64/sys/i386/i386/initcpu.c projects/atomic64/sys/i386/i386/machdep.c Modified: projects/atomic64/sys/i386/i386/initcpu.c ============================================================================== --- projects/atomic64/sys/i386/i386/initcpu.c Thu Aug 15 23:58:16 2013 (r254390) +++ projects/atomic64/sys/i386/i386/initcpu.c Fri Aug 16 00:00:36 2013 (r254391) @@ -424,6 +424,19 @@ init_6x86(void) #ifdef I586_CPU /* + * Rise mP6 + */ +static void +init_rise(void) +{ + + /* + * The CMPXCHG8B instruction is always available but hidden. + */ + cpu_feature |= CPUID_CX8; +} + +/* * IDT WinChip C6/2/2A/2B/3 * * http://www.centtech.com/winchip_bios_writers_guide_v4_0.pdf @@ -690,6 +703,9 @@ initializecpu(void) case CPU_VENDOR_TRANSMETA: init_transmeta(); break; + case CPU_VENDOR_RISE: + init_rise(); + break; } break; #endif Modified: projects/atomic64/sys/i386/i386/machdep.c ============================================================================== --- projects/atomic64/sys/i386/i386/machdep.c Thu Aug 15 23:58:16 2013 (r254390) +++ projects/atomic64/sys/i386/i386/machdep.c Fri Aug 16 00:00:36 2013 (r254391) @@ -1554,8 +1554,7 @@ static void cpu_probe_cmpxchg8b(void) { - if ((cpu_feature & CPUID_CX8) != 0 || - cpu_vendor_id == CPU_VENDOR_RISE) + if ((cpu_feature & CPUID_CX8) != 0) cpu_ident_cmxchg8b = 1; } From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 00:04:59 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 20A723AD; Fri, 16 Aug 2013 00:04:59 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0CA762196; Fri, 16 Aug 2013 00:04:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G04wB2081584; Fri, 16 Aug 2013 00:04:58 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G04wGA081581; Fri, 16 Aug 2013 00:04:58 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308160004.r7G04wGA081581@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 16 Aug 2013 00:04:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254392 - in projects/atomic64/sys/i386: i386 include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 00:04:59 -0000 Author: jkim Date: Fri Aug 16 00:04:58 2013 New Revision: 254392 URL: http://svnweb.freebsd.org/changeset/base/254392 Log: - Optimize atomic_cmpset_64_i386(). - Move all 64-bit atomic functions to atomic.h. Suggested by: bde Modified: projects/atomic64/sys/i386/i386/machdep.c projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/i386/i386/machdep.c ============================================================================== --- projects/atomic64/sys/i386/i386/machdep.c Fri Aug 16 00:00:36 2013 (r254391) +++ projects/atomic64/sys/i386/i386/machdep.c Fri Aug 16 00:04:58 2013 (r254392) @@ -1548,56 +1548,6 @@ idle_sysctl(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, idle_sysctl, "A", "currently selected idle function"); -static int cpu_ident_cmxchg8b = 0; - -static void -cpu_probe_cmpxchg8b(void) -{ - - if ((cpu_feature & CPUID_CX8) != 0) - cpu_ident_cmxchg8b = 1; -} - -int -atomic_cmpset_64(volatile uint64_t *dst, uint64_t expect, uint64_t src) -{ - - if (cpu_ident_cmxchg8b) - return (atomic_cmpset_64_i586(dst, expect, src)); - else - return (atomic_cmpset_64_i386(dst, expect, src)); -} - -uint64_t -atomic_load_acq_64(volatile uint64_t *p) -{ - - if (cpu_ident_cmxchg8b) - return (atomic_load_acq_64_i586(p)); - else - return (atomic_load_acq_64_i386(p)); -} - -void -atomic_store_rel_64(volatile uint64_t *p, uint64_t v) -{ - - if (cpu_ident_cmxchg8b) - atomic_store_rel_64_i586(p, v); - else - atomic_store_rel_64_i386(p, v); -} - -uint64_t -atomic_swap_64(volatile uint64_t *p, uint64_t v) -{ - - if (cpu_ident_cmxchg8b) - return (atomic_swap_64_i586(p, v)); - else - return (atomic_swap_64_i386(p, v)); -} - /* * Reset registers to default values on exec. */ @@ -2859,7 +2809,6 @@ init386(first) thread0.td_pcb->pcb_gsd = PCPU_GET(fsgs_gdt)[1]; cpu_probe_amdc1e(); - cpu_probe_cmpxchg8b(); } #else @@ -3150,7 +3099,6 @@ init386(first) thread0.td_frame = &proc0_tf; cpu_probe_amdc1e(); - cpu_probe_cmpxchg8b(); #ifdef FDT x86_init_fdt(); Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:00:36 2013 (r254391) +++ projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:04:58 2013 (r254392) @@ -32,6 +32,11 @@ #error this file needs sys/cdefs.h as a prerequisite #endif +#ifdef _KERNEL +#include +#include +#endif + #define mb() __asm __volatile("lock; addl $0,(%%esp)" : : : "memory", "cc") #define wmb() __asm __volatile("lock; addl $0,(%%esp)" : : : "memory", "cc") #define rmb() __asm __volatile("lock; addl $0,(%%esp)" : : : "memory", "cc") @@ -87,6 +92,11 @@ u_##TYPE atomic_load_acq_##TYPE(volatile #define ATOMIC_STORE(TYPE) \ void atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v) +int atomic_cmpset_64(volatile uint64_t *, uint64_t, uint64_t); +uint64_t atomic_load_acq_64(volatile uint64_t *); +void atomic_store_rel_64(volatile uint64_t *, uint64_t); +uint64_t atomic_swap_64(volatile uint64_t *, uint64_t); + #else /* !KLD_MODULE && __GNUCLIKE_ASM */ /* @@ -124,7 +134,155 @@ atomic_##NAME##_barr_##TYPE(volatile u_# } \ struct __hack -#if defined(_KERNEL) && !defined(WANT_FUNCTIONS) +/* + * Atomic compare and set, used by the mutex functions + * + * if (*dst == expect) *dst = src (all 32 bit words) + * + * Returns 0 on failure, non-zero on success + */ + +#ifdef CPU_DISABLE_CMPXCHG + +static __inline int +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) +{ + int res; + register_t lock; + + res = 0; + ATOMIC_LOCK_I386(lock); + if (*dst == expect) { + *dst = src; + res = 1; + } + ATOMIC_UNLOCK_I386(lock); + return (res); +} + +#else /* !CPU_DISABLE_CMPXCHG */ + +static __inline int +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) +{ + u_char res; + + __asm __volatile( + " " MPLOCKED " " + " cmpxchgl %3, %1 ; " + " sete %0 ; " + "# atomic_cmpset_int" + : "=q" (res), /* 0 */ + "+m" (*dst), /* 1 */ + "+a" (expect) /* 2 */ + : "r" (src) /* 3 */ + : "memory", "cc"); + + return (res); +} + +#endif /* CPU_DISABLE_CMPXCHG */ + +/* + * Atomically add the value of v to the integer pointed to by p and return + * the previous value of *p. + */ +static __inline u_int +atomic_fetchadd_int(volatile u_int *p, u_int v) +{ + + __asm __volatile( + " " MPLOCKED " " + " xaddl %0, %1 ; " + "# atomic_fetchadd_int" + : "+r" (v), /* 0 (result) */ + "+m" (*p) /* 1 */ + : : "cc"); + return (v); +} + +static __inline int +atomic_testandset_int(volatile u_int *p, u_int v) +{ + u_char res; + + __asm __volatile( + " " MPLOCKED " " + " btsl %2, %1 ; " + " setc %0 ; " + "# atomic_testandset_int" + : "=q" (res), /* 0 */ + "+m" (*p) /* 1 */ + : "Ir" (v & 0x1f) /* 2 */ + : "cc"); + return (res); +} + +/* + * We assume that a = b will do atomic loads and stores. Due to the + * IA32 memory model, a simple store guarantees release semantics. + * + * However, loads may pass stores, so for atomic_load_acq we have to + * ensure a Store/Load barrier to do the load in SMP kernels. We use + * "lock cmpxchg" as recommended by the AMD Software Optimization + * Guide, and not mfence. For UP kernels, however, the cache of the + * single processor is always consistent, so we only need to take care + * of the compiler. + */ +#define ATOMIC_STORE(TYPE) \ +static __inline void \ +atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\ +{ \ + __compiler_membar(); \ + *p = v; \ +} \ +struct __hack + +#if defined(_KERNEL) && !defined(SMP) + +#define ATOMIC_LOAD(TYPE, LOP) \ +static __inline u_##TYPE \ +atomic_load_acq_##TYPE(volatile u_##TYPE *p) \ +{ \ + u_##TYPE tmp; \ + \ + tmp = *p; \ + __compiler_membar(); \ + return (tmp); \ +} \ +struct __hack + +#else /* !(_KERNEL && !SMP) */ + +#define ATOMIC_LOAD(TYPE, LOP) \ +static __inline u_##TYPE \ +atomic_load_acq_##TYPE(volatile u_##TYPE *p) \ +{ \ + u_##TYPE res; \ + \ + __asm __volatile(MPLOCKED LOP \ + : "=a" (res), /* 0 */ \ + "+m" (*p) /* 1 */ \ + : : "memory", "cc"); \ + \ + return (res); \ +} \ +struct __hack + +#endif /* _KERNEL && !SMP */ + +#ifdef _KERNEL + +#ifdef WANT_FUNCTIONS +int atomic_cmpset_64_i386(volatile uint64_t *, uint64_t, uint64_t); +int atomic_cmpset_64_i586(volatile uint64_t *, uint64_t, uint64_t); +uint64_t atomic_load_acq_64_i386(volatile uint64_t *); +uint64_t atomic_load_acq_64_i586(volatile uint64_t *); +void atomic_store_rel_64_i386(volatile uint64_t *, uint64_t); +void atomic_store_rel_64_i586(volatile uint64_t *, uint64_t); +uint64_t atomic_swap_64_i386(volatile uint64_t *, uint64_t); +uint64_t atomic_swap_64_i586(volatile uint64_t *, uint64_t); +#endif /* I486 does not support SMP or CMPXCHG8B. */ static __inline int @@ -139,14 +297,12 @@ atomic_cmpset_64_i386(volatile uint64_t " xorl %1, %%eax ; " " xorl %2, %%edx ; " " orl %%edx, %%eax ; " - " jnz 1f ; " + " sete %%al ; " + " movzbl %%al, %%eax ; " + " jne 1f ; " " movl %3, %1 ; " " movl %4, %2 ; " - " movl $1, %%eax ; " - " jmp 2f ; " "1: " - " xorl %%eax, %%eax ; " - "2: " " popfl" : "+A" (expect), /* 0 */ "+m" (*p), /* 1 */ @@ -288,147 +444,47 @@ atomic_swap_64_i586(volatile uint64_t *p return (v); } -#endif /* _KERNEL && !WANT_FUNCTIONS */ - -/* - * Atomic compare and set, used by the mutex functions - * - * if (*dst == expect) *dst = src (all 32 bit words) - * - * Returns 0 on failure, non-zero on success - */ - -#ifdef CPU_DISABLE_CMPXCHG - static __inline int -atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) +atomic_cmpset_64(volatile uint64_t *dst, uint64_t expect, uint64_t src) { - int res; - register_t lock; - res = 0; - ATOMIC_LOCK_I386(lock); - if (*dst == expect) { - *dst = src; - res = 1; - } - ATOMIC_UNLOCK_I386(lock); - return (res); + if ((cpu_feature & CPUID_CX8) == 0) + return (atomic_cmpset_64_i386(dst, expect, src)); + else + return (atomic_cmpset_64_i586(dst, expect, src)); } -#else /* !CPU_DISABLE_CMPXCHG */ - -static __inline int -atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) +static __inline uint64_t +atomic_load_acq_64(volatile uint64_t *p) { - u_char res; - - __asm __volatile( - " " MPLOCKED " " - " cmpxchgl %3, %1 ; " - " sete %0 ; " - "# atomic_cmpset_int" - : "=q" (res), /* 0 */ - "+m" (*dst), /* 1 */ - "+a" (expect) /* 2 */ - : "r" (src) /* 3 */ - : "memory", "cc"); - return (res); + if ((cpu_feature & CPUID_CX8) == 0) + return (atomic_load_acq_64_i386(p)); + else + return (atomic_load_acq_64_i586(p)); } -#endif /* CPU_DISABLE_CMPXCHG */ - -#undef ATOMIC_LOCK_I386 -#undef ATOMIC_UNLOCK_I386 - -/* - * Atomically add the value of v to the integer pointed to by p and return - * the previous value of *p. - */ -static __inline u_int -atomic_fetchadd_int(volatile u_int *p, u_int v) +static __inline void +atomic_store_rel_64(volatile uint64_t *p, uint64_t v) { - __asm __volatile( - " " MPLOCKED " " - " xaddl %0, %1 ; " - "# atomic_fetchadd_int" - : "+r" (v), /* 0 (result) */ - "+m" (*p) /* 1 */ - : : "cc"); - return (v); + if ((cpu_feature & CPUID_CX8) == 0) + atomic_store_rel_64_i386(p, v); + else + atomic_store_rel_64_i586(p, v); } -static __inline int -atomic_testandset_int(volatile u_int *p, u_int v) +static __inline uint64_t +atomic_swap_64(volatile uint64_t *p, uint64_t v) { - u_char res; - __asm __volatile( - " " MPLOCKED " " - " btsl %2, %1 ; " - " setc %0 ; " - "# atomic_testandset_int" - : "=q" (res), /* 0 */ - "+m" (*p) /* 1 */ - : "Ir" (v & 0x1f) /* 2 */ - : "cc"); - return (res); + if ((cpu_feature & CPUID_CX8) == 0) + return (atomic_swap_64_i386(p, v)); + else + return (atomic_swap_64_i586(p, v)); } -/* - * We assume that a = b will do atomic loads and stores. Due to the - * IA32 memory model, a simple store guarantees release semantics. - * - * However, loads may pass stores, so for atomic_load_acq we have to - * ensure a Store/Load barrier to do the load in SMP kernels. We use - * "lock cmpxchg" as recommended by the AMD Software Optimization - * Guide, and not mfence. For UP kernels, however, the cache of the - * single processor is always consistent, so we only need to take care - * of the compiler. - */ -#define ATOMIC_STORE(TYPE) \ -static __inline void \ -atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\ -{ \ - __compiler_membar(); \ - *p = v; \ -} \ -struct __hack - -#if defined(_KERNEL) && !defined(SMP) - -#define ATOMIC_LOAD(TYPE, LOP) \ -static __inline u_##TYPE \ -atomic_load_acq_##TYPE(volatile u_##TYPE *p) \ -{ \ - u_##TYPE tmp; \ - \ - tmp = *p; \ - __compiler_membar(); \ - return (tmp); \ -} \ -struct __hack - -#else /* !(_KERNEL && !SMP) */ - -#define ATOMIC_LOAD(TYPE, LOP) \ -static __inline u_##TYPE \ -atomic_load_acq_##TYPE(volatile u_##TYPE *p) \ -{ \ - u_##TYPE res; \ - \ - __asm __volatile(MPLOCKED LOP \ - : "=a" (res), /* 0 */ \ - "+m" (*p) /* 1 */ \ - : : "memory", "cc"); \ - \ - return (res); \ -} \ -struct __hack - -#endif /* _KERNEL && !SMP */ +#endif /* _KERNEL */ #endif /* KLD_MODULE || !__GNUCLIKE_ASM */ @@ -468,13 +524,6 @@ ATOMIC_STORE(long); #ifndef WANT_FUNCTIONS -#ifdef _KERNEL -int atomic_cmpset_64(volatile uint64_t *, uint64_t, uint64_t); -uint64_t atomic_load_acq_64(volatile uint64_t *); -void atomic_store_rel_64(volatile uint64_t *, uint64_t); -uint64_t atomic_swap_64(volatile uint64_t *, uint64_t); -#endif - static __inline int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src) { From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 00:14:52 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CC7E852B; Fri, 16 Aug 2013 00:14:52 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B9633220A; Fri, 16 Aug 2013 00:14:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G0EqIG085587; Fri, 16 Aug 2013 00:14:52 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G0EqHb085586; Fri, 16 Aug 2013 00:14:52 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308160014.r7G0EqHb085586@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 16 Aug 2013 00:14:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254393 - projects/atomic64/sys/i386/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 00:14:52 -0000 Author: jkim Date: Fri Aug 16 00:14:52 2013 New Revision: 254393 URL: http://svnweb.freebsd.org/changeset/base/254393 Log: Restore atomic_cmpset_int() for CPU_DISABLE_CMPXCHG case as well. Modified: projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:04:58 2013 (r254392) +++ projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:14:52 2013 (r254393) @@ -147,16 +147,24 @@ struct __hack static __inline int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) { - int res; - register_t lock; + u_char res; + + __asm __volatile( + " pushfl ; " + " cli ; " + " cmpl %3, %1 ; " + " jne 1f ; " + " movl %2, %1 ; " + "1: " + " sete %0 ; " + " popfl ; " + "# atomic_cmpset_int" + : "=q" (res), /* 0 */ + "+m" (*dst) /* 1 */ + : "r" (src), /* 2 */ + "r" (expect) /* 3 */ + : "memory"); - res = 0; - ATOMIC_LOCK_I386(lock); - if (*dst == expect) { - *dst = src; - res = 1; - } - ATOMIC_UNLOCK_I386(lock); return (res); } From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 00:24:34 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DD82E677; Fri, 16 Aug 2013 00:24:34 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CAE8B2263; Fri, 16 Aug 2013 00:24:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G0OYF1089154; Fri, 16 Aug 2013 00:24:34 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G0OY74089153; Fri, 16 Aug 2013 00:24:34 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308160024.r7G0OY74089153@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 16 Aug 2013 00:24:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254394 - projects/atomic64/sys/i386/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 00:24:34 -0000 Author: jkim Date: Fri Aug 16 00:24:34 2013 New Revision: 254394 URL: http://svnweb.freebsd.org/changeset/base/254394 Log: Micro-optimize atomic_cmpset_64_i386(). Modified: projects/atomic64/sys/i386/include/atomic.h Modified: projects/atomic64/sys/i386/include/atomic.h ============================================================================== --- projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:14:52 2013 (r254393) +++ projects/atomic64/sys/i386/include/atomic.h Fri Aug 16 00:24:34 2013 (r254394) @@ -297,6 +297,7 @@ static __inline int atomic_cmpset_64_i386(volatile uint64_t *dst, uint64_t expect, uint64_t src) { volatile uint32_t *p; + u_char res; p = (volatile uint32_t *)dst; __asm __volatile( @@ -305,21 +306,21 @@ atomic_cmpset_64_i386(volatile uint64_t " xorl %1, %%eax ; " " xorl %2, %%edx ; " " orl %%edx, %%eax ; " - " sete %%al ; " - " movzbl %%al, %%eax ; " " jne 1f ; " - " movl %3, %1 ; " - " movl %4, %2 ; " + " movl %4, %1 ; " + " movl %5, %2 ; " "1: " + " sete %3 ; " " popfl" : "+A" (expect), /* 0 */ "+m" (*p), /* 1 */ - "+m" (*(p + 1)) /* 2 */ - : "r" ((uint32_t)src), /* 3 */ - "r" ((uint32_t)(src >> 32)) /* 4 */ + "+m" (*(p + 1)), /* 2 */ + "=q" (res) /* 3 */ + : "r" ((uint32_t)src), /* 4 */ + "r" ((uint32_t)(src >> 32)) /* 5 */ : "memory", "cc"); - return (expect); + return (res); } static __inline uint64_t From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 09:12:43 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 06E88A54; Fri, 16 Aug 2013 09:12:43 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E66F929FF; Fri, 16 Aug 2013 09:12:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G9Cgtn089697; Fri, 16 Aug 2013 09:12:42 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G9CgiX089696; Fri, 16 Aug 2013 09:12:42 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308160912.r7G9CgiX089696@svn.freebsd.org> From: Alexander Motin Date: Fri, 16 Aug 2013 09:12:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254405 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 09:12:43 -0000 Author: mav Date: Fri Aug 16 09:12:42 2013 New Revision: 254405 URL: http://svnweb.freebsd.org/changeset/base/254405 Log: Add creation of taskqueue thread missed at r254214. Modified: projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Fri Aug 16 07:42:06 2013 (r254404) +++ projects/camlock/sys/cam/cam_xpt.c Fri Aug 16 09:12:42 2013 (r254405) @@ -4841,6 +4841,8 @@ xpt_config(void *arg) /* * Now that interrupts are enabled, go find our devices */ + if (taskqueue_start_threads(&xsoftc.xpt_taskq, 1, PRIBIO, "CAM taskq")) + printf("xpt_config: failed to create taskqueue thread.\n"); /* Setup debugging path */ if (cam_dflags != CAM_DEBUG_NONE) { From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 09:28:10 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3287FC84; Fri, 16 Aug 2013 09:28:10 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1F2B52A83; Fri, 16 Aug 2013 09:28:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G9S955094172; Fri, 16 Aug 2013 09:28:09 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G9S9kr094170; Fri, 16 Aug 2013 09:28:09 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308160928.r7G9S9kr094170@svn.freebsd.org> From: Alexander Motin Date: Fri, 16 Aug 2013 09:28:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254406 - projects/camlock/sys/cam X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 09:28:10 -0000 Author: mav Date: Fri Aug 16 09:28:09 2013 New Revision: 254406 URL: http://svnweb.freebsd.org/changeset/base/254406 Log: Add safety belt in case of CCB memory allocation failed: queue the periph to taskqueue where it can safely sleep waiting for memory. That is better then just quit, leaving periph stuck forever. Modified: projects/camlock/sys/cam/cam_periph.h projects/camlock/sys/cam/cam_xpt.c Modified: projects/camlock/sys/cam/cam_periph.h ============================================================================== --- projects/camlock/sys/cam/cam_periph.h Fri Aug 16 09:12:42 2013 (r254405) +++ projects/camlock/sys/cam/cam_periph.h Fri Aug 16 09:28:09 2013 (r254406) @@ -35,6 +35,7 @@ #include #ifdef _KERNEL +#include #include @@ -119,6 +120,7 @@ struct cam_periph { #define CAM_PERIPH_INVALID 0x08 #define CAM_PERIPH_NEW_DEV_FOUND 0x10 #define CAM_PERIPH_RECOVERY_INPROG 0x20 +#define CAM_PERIPH_RUN_TASK 0x40 #define CAM_PERIPH_FREE 0x80 uint32_t scheduled_priority; uint32_t immediate_priority; @@ -130,6 +132,7 @@ struct cam_periph { TAILQ_ENTRY(cam_periph) unit_links; ac_callback_t *deferred_callback; ac_code deferred_ac; + struct task periph_run_task; }; #define CAM_PERIPH_MAXMAPS 2 Modified: projects/camlock/sys/cam/cam_xpt.c ============================================================================== --- projects/camlock/sys/cam/cam_xpt.c Fri Aug 16 09:12:42 2013 (r254405) +++ projects/camlock/sys/cam/cam_xpt.c Fri Aug 16 09:28:09 2013 (r254406) @@ -230,7 +230,9 @@ static void xpt_async_bcast(struct asyn static path_id_t xptnextfreepathid(void); static path_id_t xptpathid(const char *sim_name, int sim_unit, int sim_bus); static union ccb *xpt_get_ccb(struct cam_periph *periph); -static void xpt_run_allocq(struct cam_periph *periph); +static union ccb *xpt_get_ccb_nowait(struct cam_periph *periph); +static void xpt_run_allocq(struct cam_periph *periph, int sleep); +static void xpt_run_allocq_task(void *context, int pending); static void xpt_run_devq(struct cam_devq *devq); static timeout_t xpt_release_devq_timeout; static void xpt_release_simq_timeout(void *arg) __unused; @@ -984,6 +986,7 @@ xpt_add_periph(struct cam_periph *periph struct cam_ed *device; int32_t status; + TASK_INIT(&periph->periph_run_task, 0, xpt_run_allocq_task, periph); device = periph->path->device; status = CAM_REQ_CMP; if (device != NULL) { @@ -3046,7 +3049,7 @@ xpt_schedule(struct cam_periph *periph, devq = periph->sim->devq; if (new_priority < periph->scheduled_priority) { periph->scheduled_priority = new_priority; - xpt_run_allocq(periph); + xpt_run_allocq(periph, 0); } } @@ -3099,10 +3102,23 @@ xpt_schedule_dev(struct camq *queue, cam } static void -xpt_run_allocq(struct cam_periph *periph) +xpt_run_allocq_task(void *context, int pending) +{ + struct cam_periph *periph = context; + + cam_periph_lock(periph); + periph->flags &= ~CAM_PERIPH_RUN_TASK; + xpt_run_allocq(periph, 1); + cam_periph_unlock(periph); + cam_periph_release(periph); +} + +static void +xpt_run_allocq(struct cam_periph *periph, int sleep) { struct cam_ed *device; struct cam_devq *devq; + union ccb *ccb; uint32_t prio; devq = periph->sim->devq; @@ -3112,22 +3128,26 @@ xpt_run_allocq(struct cam_periph *periph periph->periph_allocating = 1; CAM_DEBUG_PRINT(CAM_DEBUG_XPT, ("xpt_run_allocq(%p)\n", periph)); device = periph->path->device; + ccb = NULL; +restart: while ((prio = min(periph->scheduled_priority, periph->immediate_priority)) != CAM_PRIORITY_NONE && - (periph->periph_allocated < device->ccbq.total_openings || - prio <= CAM_PRIORITY_OOB)) { - union ccb *ccb; + (periph->periph_allocated - (ccb != NULL ? 1 : 0) < + device->ccbq.total_openings || prio <= CAM_PRIORITY_OOB)) { - if ((ccb = xpt_get_ccb(periph)) == NULL) { - /* - * Malloc failure in alloc_ccb - */ - /* - * XXX add us to a list to be run from free_ccb - * if we don't have any ccbs active on this - * device queue otherwise we may never get run - * again. - */ + if (ccb == NULL && + (ccb = xpt_get_ccb_nowait(periph)) == NULL) { + if (sleep) { + ccb = xpt_get_ccb(periph); + goto restart; + } + if (periph->flags & CAM_PERIPH_RUN_TASK) { + break; + } + cam_periph_acquire(periph); + periph->flags |= CAM_PERIPH_RUN_TASK; + taskqueue_enqueue(xsoftc.xpt_taskq, + &periph->periph_run_task); break; } xpt_setup_ccb(&ccb->ccb_h, periph->path, prio); @@ -3144,7 +3164,10 @@ xpt_run_allocq(struct cam_periph *periph ("calling periph_start()\n")); periph->periph_start(periph, ccb); } + ccb = NULL; } + if (ccb != NULL) + xpt_release_ccb(ccb); periph->periph_allocating = 0; } @@ -3713,7 +3736,7 @@ xpt_release_ccb(union ccb *free_ccb) xpt_free_ccb(free_ccb); periph->periph_allocated--; cam_ccbq_release_opening(&device->ccbq); - xpt_run_allocq(periph); + xpt_run_allocq(periph, 0); } /* Functions accessed by SIM drivers */ @@ -4430,13 +4453,11 @@ xpt_free_ccb(union ccb *free_ccb) /* * Get a CAM control block for the caller. Charge the structure to the device - * referenced by the path. If the this device has no 'credits' then the - * device already has the maximum number of outstanding operations under way - * and we return NULL. If we don't have sufficient resources to allocate more - * ccbs, we also return NULL. + * referenced by the path. If we don't have sufficient resources to allocate + * more ccbs, we return NULL. */ static union ccb * -xpt_get_ccb(struct cam_periph *periph) +xpt_get_ccb_nowait(struct cam_periph *periph) { union ccb *new_ccb; @@ -4448,6 +4469,19 @@ xpt_get_ccb(struct cam_periph *periph) return (new_ccb); } +static union ccb * +xpt_get_ccb(struct cam_periph *periph) +{ + union ccb *new_ccb; + + cam_periph_unlock(periph); + new_ccb = malloc(sizeof(*new_ccb), M_CAMCCB, M_WAITOK); + cam_periph_lock(periph); + periph->periph_allocated++; + cam_ccbq_take_opening(&periph->path->device->ccbq); + return (new_ccb); +} + union ccb * cam_periph_getccb(struct cam_periph *periph, u_int32_t priority) { @@ -4459,7 +4493,7 @@ cam_periph_getccb(struct cam_periph *per ccb_h->pinfo.priority != priority) { if (priority < periph->immediate_priority) { periph->immediate_priority = priority; - xpt_run_allocq(periph); + xpt_run_allocq(periph, 0); } else cam_periph_sleep(periph, &periph->ccb_list, PRIBIO, "cgticb", 0); From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 12:25:05 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0492E3FB; Fri, 16 Aug 2013 12:25:05 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D6F2C23A2; Fri, 16 Aug 2013 12:25:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GCP4sW061775; Fri, 16 Aug 2013 12:25:04 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GCP3EW061762; Fri, 16 Aug 2013 12:25:03 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308161225.r7GCP3EW061762@svn.freebsd.org> From: Alexander Motin Date: Fri, 16 Aug 2013 12:25:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254408 - in projects/camlock/sys: cam/ata cam/scsi dev/md geom X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 12:25:05 -0000 Author: mav Date: Fri Aug 16 12:25:02 2013 New Revision: 254408 URL: http://svnweb.freebsd.org/changeset/base/254408 Log: Make first steps toward direct BIO dispatch in GEOM: - Define flags, declaring that specific consumer/provider is capable of sending requests/replies (respectively) directly, i,e. doesn't hold any locks and so reenterable, and/or able to directly receive replies/requests, i.e. doesn't depend on GEOM up/down threads semantics. As result, GEOM will make direct calls only if both caller and callee are cpable of it in each case. - Define disk(9) flag to declare that disk is capable of direct request completion, and use it for da(4) and ada(4) drivers. Make GEOM DISK to pass that flag to its provider and also assume that any disk is capable of receiveing requests directly. - Mark GEOM DEV as capable of both direct send and receive. - Make md(4) declare both direct send and receive after adding mutex to serialize its statistics update on request path. Modified: projects/camlock/sys/cam/ata/ata_da.c projects/camlock/sys/cam/scsi/scsi_da.c projects/camlock/sys/dev/md/md.c projects/camlock/sys/geom/geom.h projects/camlock/sys/geom/geom_dev.c projects/camlock/sys/geom/geom_disk.c projects/camlock/sys/geom/geom_disk.h projects/camlock/sys/geom/geom_io.c Modified: projects/camlock/sys/cam/ata/ata_da.c ============================================================================== --- projects/camlock/sys/cam/ata/ata_da.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/cam/ata/ata_da.c Fri Aug 16 12:25:02 2013 (r254408) @@ -1246,7 +1246,7 @@ adaregister(struct cam_periph *periph, v maxio = min(maxio, 256 * softc->params.secsize); softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = 0; + softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION; if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; if (softc->flags & ADA_FLAG_CAN_TRIM) { Modified: projects/camlock/sys/cam/scsi/scsi_da.c ============================================================================== --- projects/camlock/sys/cam/scsi/scsi_da.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/cam/scsi/scsi_da.c Fri Aug 16 12:25:02 2013 (r254408) @@ -2126,7 +2126,7 @@ daregister(struct cam_periph *periph, vo else softc->disk->d_maxsize = cpi.maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = 0; + softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION; if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; if ((cpi.hba_misc & PIM_UNMAPPED) != 0) Modified: projects/camlock/sys/dev/md/md.c ============================================================================== --- projects/camlock/sys/dev/md/md.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/dev/md/md.c Fri Aug 16 12:25:02 2013 (r254408) @@ -189,6 +189,7 @@ struct md_s { LIST_ENTRY(md_s) list; struct bio_queue_head bio_queue; struct mtx queue_mtx; + struct mtx stat_mtx; struct cdev *dev; enum md_types type; off_t mediasize; @@ -415,8 +416,11 @@ g_md_start(struct bio *bp) struct md_s *sc; sc = bp->bio_to->geom->softc; - if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE)) + if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE)) { + mtx_lock(&sc->stat_mtx); devstat_start_transaction_bio(sc->devstat, bp); + mtx_unlock(&sc->stat_mtx); + } mtx_lock(&sc->queue_mtx); bioq_disksort(&sc->bio_queue, bp); mtx_unlock(&sc->queue_mtx); @@ -988,6 +992,7 @@ mdnew(int unit, int *errp, enum md_types sc->type = type; bioq_init(&sc->bio_queue); mtx_init(&sc->queue_mtx, "md bio queue", NULL, MTX_DEF); + mtx_init(&sc->stat_mtx, "md stat", NULL, MTX_DEF); sc->unit = unit; sprintf(sc->name, "md%d", unit); LIST_INSERT_HEAD(&md_softc_list, sc, list); @@ -995,6 +1000,7 @@ mdnew(int unit, int *errp, enum md_types if (error == 0) return (sc); LIST_REMOVE(sc, list); + mtx_destroy(&sc->stat_mtx); mtx_destroy(&sc->queue_mtx); free_unr(md_uh, sc->unit); free(sc, M_MD); @@ -1012,6 +1018,7 @@ mdinit(struct md_s *sc) gp = g_new_geomf(&g_md_class, "md%d", sc->unit); gp->softc = sc; pp = g_new_providerf(gp, "md%d", sc->unit); + pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE; pp->mediasize = sc->mediasize; pp->sectorsize = sc->sectorsize; switch (sc->type) { @@ -1207,6 +1214,7 @@ mddestroy(struct md_s *sc, struct thread while (!(sc->flags & MD_EXITING)) msleep(sc->procp, &sc->queue_mtx, PRIBIO, "mddestroy", hz / 10); mtx_unlock(&sc->queue_mtx); + mtx_destroy(&sc->stat_mtx); mtx_destroy(&sc->queue_mtx); if (sc->vnode != NULL) { vn_lock(sc->vnode, LK_EXCLUSIVE | LK_RETRY); Modified: projects/camlock/sys/geom/geom.h ============================================================================== --- projects/camlock/sys/geom/geom.h Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/geom/geom.h Fri Aug 16 12:25:02 2013 (r254408) @@ -177,6 +177,8 @@ struct g_consumer { int flags; #define G_CF_SPOILED 0x1 #define G_CF_ORPHAN 0x4 +#define G_CF_DIRECT_SEND 0x10 +#define G_CF_DIRECT_RECEIVE 0x20 struct devstat *stat; u_int nstart, nend; @@ -206,6 +208,8 @@ struct g_provider { #define G_PF_WITHER 0x2 #define G_PF_ORPHAN 0x4 #define G_PF_ACCEPT_UNMAPPED 0x8 +#define G_PF_DIRECT_SEND 0x10 +#define G_PF_DIRECT_RECEIVE 0x20 /* Two fields for the implementing class to use */ void *private; Modified: projects/camlock/sys/geom/geom_dev.c ============================================================================== --- projects/camlock/sys/geom/geom_dev.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/geom/geom_dev.c Fri Aug 16 12:25:02 2013 (r254408) @@ -222,6 +222,7 @@ g_dev_taste(struct g_class *mp, struct g mtx_init(&sc->sc_mtx, "g_dev", NULL, MTX_DEF); cp = g_new_consumer(gp); cp->private = sc; + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; error = g_attach(cp, pp); KASSERT(error == 0, ("g_dev_taste(%s) failed to g_attach, err=%d", pp->name, error)); Modified: projects/camlock/sys/geom/geom_disk.c ============================================================================== --- projects/camlock/sys/geom/geom_disk.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/geom/geom_disk.c Fri Aug 16 12:25:02 2013 (r254408) @@ -66,6 +66,7 @@ struct g_disk_softc { struct sysctl_oid *sysctl_tree; char led[64]; uint32_t state; + struct mtx start_mtx; }; static g_access_t g_disk_access; @@ -346,7 +347,9 @@ g_disk_start(struct bio *bp) bp2->bio_pblkno = bp2->bio_offset / dp->d_sectorsize; bp2->bio_bcount = bp2->bio_length; bp2->bio_disk = dp; + mtx_lock(&sc->start_mtx); devstat_start_transaction_bio(dp->d_devstat, bp2); + mtx_unlock(&sc->start_mtx); g_disk_lock_giant(dp); dp->d_strategy(bp2); g_disk_unlock_giant(dp); @@ -509,6 +512,7 @@ g_disk_create(void *arg, int flag) g_topology_assert(); dp = arg; sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); + mtx_init(&sc->start_mtx, "g_disk_start", NULL, MTX_DEF); mtx_init(&sc->done_mtx, "g_disk_done", NULL, MTX_DEF); sc->dp = dp; gp = g_new_geomf(&g_disk_class, "%s%d", dp->d_name, dp->d_unit); @@ -520,6 +524,9 @@ g_disk_create(void *arg, int flag) pp->stripesize = dp->d_stripesize; if ((dp->d_flags & DISKFLAG_UNMAPPED_BIO) != 0) pp->flags |= G_PF_ACCEPT_UNMAPPED; + if ((dp->d_flags & DISKFLAG_DIRECT_COMPLETION) != 0) + pp->flags |= G_PF_DIRECT_SEND; + pp->flags |= G_PF_DIRECT_RECEIVE; if (bootverbose) printf("GEOM: new disk %s\n", gp->name); sysctl_ctx_init(&sc->sysctl_ctx); @@ -568,6 +575,7 @@ g_disk_providergone(struct g_provider *p pp->private = NULL; pp->geom->softc = NULL; mtx_destroy(&sc->done_mtx); + mtx_destroy(&sc->start_mtx); g_free(sc); } Modified: projects/camlock/sys/geom/geom_disk.h ============================================================================== --- projects/camlock/sys/geom/geom_disk.h Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/geom/geom_disk.h Fri Aug 16 12:25:02 2013 (r254408) @@ -107,6 +107,7 @@ struct disk { #define DISKFLAG_CANDELETE 0x4 #define DISKFLAG_CANFLUSHCACHE 0x8 #define DISKFLAG_UNMAPPED_BIO 0x10 +#define DISKFLAG_DIRECT_COMPLETION 0x20 struct disk *disk_alloc(void); void disk_create(struct disk *disk, int version); Modified: projects/camlock/sys/geom/geom_io.c ============================================================================== --- projects/camlock/sys/geom/geom_io.c Fri Aug 16 10:53:36 2013 (r254407) +++ projects/camlock/sys/geom/geom_io.c Fri Aug 16 12:25:02 2013 (r254408) @@ -422,7 +422,7 @@ void g_io_request(struct bio *bp, struct g_consumer *cp) { struct g_provider *pp; - int first; + int direct, first; KASSERT(cp != NULL, ("NULL cp in g_io_request")); KASSERT(bp != NULL, ("NULL bp in g_io_request")); @@ -472,13 +472,14 @@ g_io_request(struct bio *bp, struct g_co KASSERT(!(bp->bio_flags & BIO_ONQUEUE), ("Bio already on queue bp=%p", bp)); - bp->bio_flags |= BIO_ONQUEUE; - if (g_collectstats) binuptime(&bp->bio_t0); else getbinuptime(&bp->bio_t0); + direct = (cp->flags & G_CF_DIRECT_SEND) && + (pp->flags & G_PF_DIRECT_RECEIVE); + /* * The statistics collection is lockless, as such, but we * can not update one instance of the statistics from more @@ -498,14 +499,19 @@ g_io_request(struct bio *bp, struct g_co pp->nstart++; cp->nstart++; - first = TAILQ_EMPTY(&g_bio_run_down.bio_queue); - TAILQ_INSERT_TAIL(&g_bio_run_down.bio_queue, bp, bio_queue); - g_bio_run_down.bio_queue_length++; - g_bioq_unlock(&g_bio_run_down); - - /* Pass it on down. */ - if (first) - wakeup(&g_wait_down); + if (direct) { + g_bioq_unlock(&g_bio_run_down); + bp->bio_to->geom->start(bp); + } else { + first = TAILQ_EMPTY(&g_bio_run_down.bio_queue); + TAILQ_INSERT_TAIL(&g_bio_run_down.bio_queue, bp, bio_queue); + bp->bio_flags |= BIO_ONQUEUE; + g_bio_run_down.bio_queue_length++; + g_bioq_unlock(&g_bio_run_down); + /* Pass it on down. */ + if (first) + wakeup(&g_wait_down); + } } void @@ -513,7 +519,7 @@ g_io_deliver(struct bio *bp, int error) { struct g_consumer *cp; struct g_provider *pp; - int first; + int direct, first; KASSERT(bp != NULL, ("NULL bp in g_io_deliver")); pp = bp->bio_to; @@ -559,6 +565,9 @@ g_io_deliver(struct bio *bp, int error) bp->bio_bcount = bp->bio_length; bp->bio_resid = bp->bio_bcount - bp->bio_completed; + direct = (pp->flags & G_PF_DIRECT_SEND) && + (cp->flags & G_CF_DIRECT_RECEIVE); + /* * The statistics collection is lockless, as such, but we * can not update one instance of the statistics from more @@ -574,13 +583,18 @@ g_io_deliver(struct bio *bp, int error) pp->nend++; if (error != ENOMEM) { bp->bio_error = error; - first = TAILQ_EMPTY(&g_bio_run_up.bio_queue); - TAILQ_INSERT_TAIL(&g_bio_run_up.bio_queue, bp, bio_queue); - bp->bio_flags |= BIO_ONQUEUE; - g_bio_run_up.bio_queue_length++; - g_bioq_unlock(&g_bio_run_up); - if (first) - wakeup(&g_wait_up); + if (direct) { + g_bioq_unlock(&g_bio_run_up); + biodone(bp); + } else { + first = TAILQ_EMPTY(&g_bio_run_up.bio_queue); + TAILQ_INSERT_TAIL(&g_bio_run_up.bio_queue, bp, bio_queue); + bp->bio_flags |= BIO_ONQUEUE; + g_bio_run_up.bio_queue_length++; + g_bioq_unlock(&g_bio_run_up); + if (first) + wakeup(&g_wait_up); + } return; } g_bioq_unlock(&g_bio_run_up); From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 13:05:13 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7A331A82; Fri, 16 Aug 2013 13:05:13 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 167F525A1; Fri, 16 Aug 2013 13:05:12 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id r7GD53of033957; Fri, 16 Aug 2013 16:05:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua r7GD53of033957 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id r7GD53Qv033956; Fri, 16 Aug 2013 16:05:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 16 Aug 2013 16:05:03 +0300 From: Konstantin Belousov To: Alexander Motin Subject: Re: svn commit: r254408 - in projects/camlock/sys: cam/ata cam/scsi dev/md geom Message-ID: <20130816130503.GC4972@kib.kiev.ua> References: <201308161225.r7GCP3EW061762@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Dr39avWuu01nZVqZ" Content-Disposition: inline In-Reply-To: <201308161225.r7GCP3EW061762@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:05:13 -0000 --Dr39avWuu01nZVqZ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Aug 16, 2013 at 12:25:03PM +0000, Alexander Motin wrote: > Author: mav > Date: Fri Aug 16 12:25:02 2013 > New Revision: 254408 > URL: http://svnweb.freebsd.org/changeset/base/254408 >=20 > Log: > Make first steps toward direct BIO dispatch in GEOM: > - Define flags, declaring that specific consumer/provider is capable of > sending requests/replies (respectively) directly, i,e. doesn't hold any= locks > and so reenterable, and/or able to directly receive replies/requests, i= =2Ee. > doesn't depend on GEOM up/down threads semantics. As result, GEOM will= make > direct calls only if both caller and callee are cpable of it in each ca= se. > - Define disk(9) flag to declare that disk is capable of direct request > completion, and use it for da(4) and ada(4) drivers. Make GEOM DISK to= pass > that flag to its provider and also assume that any disk is capable of > receiveing requests directly. > - Mark GEOM DEV as capable of both direct send and receive. > - Make md(4) declare both direct send and receive after adding mutex to > serialize its statistics update on request path. I do not think it is safe to allow the mdstart_malloc() to execute in parallel with itself. It certainly causes data corruption for the new block allocations on write, and possibly random kernel memory corruption. It seems that vnode and swap backends are safe, though. --Dr39avWuu01nZVqZ Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQIcBAEBAgAGBQJSDiN+AAoJEJDCuSvBvK1BqrQP/3iE/JR2RXScBdZW+jqgbyGR zDagwywGGxB+w9Dc1aouVExhqZVNpzJP55duAnW7vajaKpv9QzZF5c+wW/d9s0BI tms2cPsGWIxVvzXQt3LBBabtth88yOfw9KUpgldPwwwM0WBvjq/fhMJr5/vNC2sR cwQaW3kRCbVJTTRbkaqu0BpoRb1HWyG6OBwdyLLMTVC0sgxM96V3W52IwEmgxSay WZMQGuM0y+Wpuhw2s0KjYiubFEOMnQfHva9NfcG/fIluEtSNtGBGlFqzzqfruEAO vNvRtjHFSPuv2XFR2leuLYUsvvyzuVa3enHa13E3uDergQVRluEaeLWJSbvNgT6h Svnl3X9b8yLPgxpaSLwtqeLVcQXZ2YcaKBKBd46KA9Gxs6RpG/pJWoaP/ov8G9pb bNkv/TmJ1egrFJatRqpFX6MA7fOeCH7e3Y3uNNRtWZVuezNWMaugcIrHwjMHQqhi thOFRu+WUQtsJYCGXOGsBaF7o0WPV4QJvK8NkicQcpSm0yXKZs19bHapiyDRzcSX ndU9PN5Hj0Eo8m6uezJZhbkP6XoyQD7nrTVMDSJ3XaSfysBzdAcSMQkmW66B2Cku UVbRHlcp5EBnoSukmASHxGVWuZlJxT3ZdZqUzSZqBLZNbxVooBLTjBENf0wlieJl QFzpEidryAIuu1YvMsPH =uK9c -----END PGP SIGNATURE----- --Dr39avWuu01nZVqZ-- From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 13:10:50 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6F756CD9; Fri, 16 Aug 2013 13:10:50 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-ea0-x229.google.com (mail-ea0-x229.google.com [IPv6:2a00:1450:4013:c01::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CDB1925CA; Fri, 16 Aug 2013 13:10:49 +0000 (UTC) Received: by mail-ea0-f169.google.com with SMTP id z7so1007893eaf.28 for ; Fri, 16 Aug 2013 06:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=vmX0TQkXkWxzpd3UAQeKgcFL2bwtgUOuohF8WYRyXII=; b=y4CHhDv8LEtsuV1ENceA/6sM0i51jiCOx8c0r/62AQxcpTkvUVOX9hQDh+SlDmlvss 0vAdwY3XZKuroAEtfm1vmsMr87gczvNk9US+YaXhMWFsps4llP6hzJ0bUyn1ikHOBoUa vzeMw/2bhXYtbQUzCnX+TlLE4lg+XwDO6v9VCYAAErLbdnVeOnlWor9q0ONKmF16O0nX cnGyxQiGJm8QJTwvOBID4Kx08cv5UtWHoKPT49JdQcp+JcBIkZ9q3dsx3p2Zo6TMVIz0 lRZvk6a5lioCqu9ya6xABHBacDgJZKw8i2sg/e4J6vk87+CkfRrEf94bETTZTsK86HpQ 1FeQ== X-Received: by 10.15.63.75 with SMTP id l51mr2043791eex.32.1376658648085; Fri, 16 Aug 2013 06:10:48 -0700 (PDT) Received: from mavbook.mavhome.dp.ua ([37.229.21.195]) by mx.google.com with ESMTPSA id r48sm2557003eev.14.1969.12.31.16.00.00 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 16 Aug 2013 06:10:46 -0700 (PDT) Sender: Alexander Motin Message-ID: <520E24D4.2040606@FreeBSD.org> Date: Fri, 16 Aug 2013 16:10:44 +0300 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130616 Thunderbird/17.0.6 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: svn commit: r254408 - in projects/camlock/sys: cam/ata cam/scsi dev/md geom References: <201308161225.r7GCP3EW061762@svn.freebsd.org> <20130816130503.GC4972@kib.kiev.ua> In-Reply-To: <20130816130503.GC4972@kib.kiev.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:10:50 -0000 On 16.08.2013 16:05, Konstantin Belousov wrote: > On Fri, Aug 16, 2013 at 12:25:03PM +0000, Alexander Motin wrote: >> Author: mav >> Date: Fri Aug 16 12:25:02 2013 >> New Revision: 254408 >> URL: http://svnweb.freebsd.org/changeset/base/254408 >> >> Log: >> Make first steps toward direct BIO dispatch in GEOM: >> - Define flags, declaring that specific consumer/provider is capable of >> sending requests/replies (respectively) directly, i,e. doesn't hold any locks >> and so reenterable, and/or able to directly receive replies/requests, i.e. >> doesn't depend on GEOM up/down threads semantics. As result, GEOM will make >> direct calls only if both caller and callee are cpable of it in each case. >> - Define disk(9) flag to declare that disk is capable of direct request >> completion, and use it for da(4) and ada(4) drivers. Make GEOM DISK to pass >> that flag to its provider and also assume that any disk is capable of >> receiveing requests directly. >> - Mark GEOM DEV as capable of both direct send and receive. >> - Make md(4) declare both direct send and receive after adding mutex to >> serialize its statistics update on request path. > > I do not think it is safe to allow the mdstart_malloc() to execute in > parallel with itself. It certainly causes data corruption for the new > block allocations on write, and possibly random kernel memory corruption. > > It seems that vnode and swap backends are safe, though. md(4) runs all of its main code in separate thread. So this change only affects how to pass requests from GEOM to that thread. I had no plans to work on md(4) specifically, so if somebody else wish to make it run without using single separate thread per instance -- that would boost its performance many times more. -- Alexander Motin From owner-svn-src-projects@FreeBSD.ORG Fri Aug 16 16:55:40 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 10FA23AB; Fri, 16 Aug 2013 16:55:40 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E3FD023D8; Fri, 16 Aug 2013 16:55:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GGtdVR063615; Fri, 16 Aug 2013 16:55:39 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GGtdr5063614; Fri, 16 Aug 2013 16:55:39 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308161655.r7GGtdr5063614@svn.freebsd.org> From: Alexander Motin Date: Fri, 16 Aug 2013 16:55:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254418 - projects/camlock/sys/geom X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 16:55:40 -0000 Author: mav Date: Fri Aug 16 16:55:39 2013 New Revision: 254418 URL: http://svnweb.freebsd.org/changeset/base/254418 Log: Move random things done by g_down thread before executing request inside g_io_check() and don't forget to call it also on direct dispatch. Modified: projects/camlock/sys/geom/geom_io.c Modified: projects/camlock/sys/geom/geom_io.c ============================================================================== --- projects/camlock/sys/geom/geom_io.c Fri Aug 16 16:26:23 2013 (r254417) +++ projects/camlock/sys/geom/geom_io.c Fri Aug 16 16:55:39 2013 (r254418) @@ -65,6 +65,8 @@ __FBSDID("$FreeBSD$"); #include #include +static int g_io_transient_map_bio(struct bio *bp); + static struct g_bioq g_bio_run_down; static struct g_bioq g_bio_run_up; static struct g_bioq g_bio_run_task; @@ -310,6 +312,8 @@ g_io_check(struct bio *bp) { struct g_consumer *cp; struct g_provider *pp; + off_t excess; + int error; cp = bp->bio_from; pp = bp->bio_to; @@ -354,11 +358,45 @@ g_io_check(struct bio *bp) return (EIO); if (bp->bio_offset > pp->mediasize) return (EIO); + + /* Truncate requests to the end of providers media. */ + excess = bp->bio_offset + bp->bio_length; + if (excess > bp->bio_to->mediasize) { + KASSERT((bp->bio_flags & BIO_UNMAPPED) == 0 || + round_page(bp->bio_ma_offset + + bp->bio_length) / PAGE_SIZE == bp->bio_ma_n, + ("excess bio %p too short", bp)); + excess -= bp->bio_to->mediasize; + bp->bio_length -= excess; + if ((bp->bio_flags & BIO_UNMAPPED) != 0) { + bp->bio_ma_n = round_page(bp->bio_ma_offset + + bp->bio_length) / PAGE_SIZE; + } + if (excess > 0) + CTR3(KTR_GEOM, "g_down truncated bio " + "%p provider %s by %d", bp, + bp->bio_to->name, excess); + } + + /* Deliver zero length transfers right here. */ + if (bp->bio_length == 0) { + g_io_deliver(bp, 0); + CTR2(KTR_GEOM, "g_down terminated 0-length " + "bp %p provider %s", bp, bp->bio_to->name); + return (0); + } + + if ((bp->bio_flags & BIO_UNMAPPED) != 0 && + (bp->bio_to->flags & G_PF_ACCEPT_UNMAPPED) == 0 && + (bp->bio_cmd == BIO_READ || bp->bio_cmd == BIO_WRITE)) { + if ((error = g_io_transient_map_bio(bp)) >= 0) + return (error); + } break; default: break; } - return (0); + return (EJUSTRETURN); } /* @@ -422,7 +460,7 @@ void g_io_request(struct bio *bp, struct g_consumer *cp) { struct g_provider *pp; - int direct, first; + int direct, error, first; KASSERT(cp != NULL, ("NULL cp in g_io_request")); KASSERT(bp != NULL, ("NULL bp in g_io_request")); @@ -501,6 +539,14 @@ g_io_request(struct bio *bp, struct g_co cp->nstart++; if (direct) { g_bioq_unlock(&g_bio_run_down); + error = g_io_check(bp); + if (error >= 0) { + CTR3(KTR_GEOM, "g_io_request g_io_check on bp %p " + "provider %s returned %d", bp, bp->bio_to->name, + error); + g_io_deliver(bp, error); + return; + } bp->bio_to->geom->start(bp); } else { first = TAILQ_EMPTY(&g_bio_run_down.bio_queue); @@ -653,11 +699,10 @@ retry: if (vmem_alloc(transient_arena, size, M_BESTFIT | M_NOWAIT, &addr)) { if (transient_map_retries != 0 && retried >= transient_map_retries) { - g_io_deliver(bp, EDEADLK/* XXXKIB */); CTR2(KTR_GEOM, "g_down cannot map bp %p provider %s", bp, bp->bio_to->name); atomic_add_int(&transient_map_hard_failures, 1); - return (1); + return (EDEADLK/* XXXKIB */); } else { /* * Naive attempt to quisce the I/O to get more @@ -677,14 +722,13 @@ retry: bp->bio_data = (caddr_t)addr + bp->bio_ma_offset; bp->bio_flags |= BIO_TRANSIENT_MAPPING; bp->bio_flags &= ~BIO_UNMAPPED; - return (0); + return (EJUSTRETURN); } void g_io_schedule_down(struct thread *tp __unused) { struct bio *bp; - off_t excess; int error; for(;;) { @@ -703,59 +747,15 @@ g_io_schedule_down(struct thread *tp __u pause("g_down", hz/10); pace--; } + CTR2(KTR_GEOM, "g_down processing bp %p provider %s", bp, + bp->bio_to->name); error = g_io_check(bp); - if (error) { + if (error >= 0) { CTR3(KTR_GEOM, "g_down g_io_check on bp %p provider " "%s returned %d", bp, bp->bio_to->name, error); g_io_deliver(bp, error); continue; } - CTR2(KTR_GEOM, "g_down processing bp %p provider %s", bp, - bp->bio_to->name); - switch (bp->bio_cmd) { - case BIO_READ: - case BIO_WRITE: - case BIO_DELETE: - /* Truncate requests to the end of providers media. */ - /* - * XXX: What if we truncate because of offset being - * bad, not length? - */ - excess = bp->bio_offset + bp->bio_length; - if (excess > bp->bio_to->mediasize) { - KASSERT((bp->bio_flags & BIO_UNMAPPED) == 0 || - round_page(bp->bio_ma_offset + - bp->bio_length) / PAGE_SIZE == bp->bio_ma_n, - ("excess bio %p too short", bp)); - excess -= bp->bio_to->mediasize; - bp->bio_length -= excess; - if ((bp->bio_flags & BIO_UNMAPPED) != 0) { - bp->bio_ma_n = round_page( - bp->bio_ma_offset + - bp->bio_length) / PAGE_SIZE; - } - if (excess > 0) - CTR3(KTR_GEOM, "g_down truncated bio " - "%p provider %s by %d", bp, - bp->bio_to->name, excess); - } - /* Deliver zero length transfers right here. */ - if (bp->bio_length == 0) { - g_io_deliver(bp, 0); - CTR2(KTR_GEOM, "g_down terminated 0-length " - "bp %p provider %s", bp, bp->bio_to->name); - continue; - } - break; - default: - break; - } - if ((bp->bio_flags & BIO_UNMAPPED) != 0 && - (bp->bio_to->flags & G_PF_ACCEPT_UNMAPPED) == 0 && - (bp->bio_cmd == BIO_READ || bp->bio_cmd == BIO_WRITE)) { - if (g_io_transient_map_bio(bp)) - continue; - } THREAD_NO_SLEEPING(); CTR4(KTR_GEOM, "g_down starting bp %p provider %s off %ld " "len %ld", bp, bp->bio_to->name, bp->bio_offset, From owner-svn-src-projects@FreeBSD.ORG Sat Aug 17 17:09:26 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CCD91DA7; Sat, 17 Aug 2013 17:09:26 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B943A214B; Sat, 17 Aug 2013 17:09:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HH9Qml027097; Sat, 17 Aug 2013 17:09:26 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HH9QTZ027096; Sat, 17 Aug 2013 17:09:26 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201308171709.r7HH9QTZ027096@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 17 Aug 2013 17:09:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254458 - projects/vmxnet/sys/dev/vmware/vmxnet3 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 17:09:26 -0000 Author: bryanv Date: Sat Aug 17 17:09:26 2013 New Revision: 254458 URL: http://svnweb.freebsd.org/changeset/base/254458 Log: Move the resetting of the completion queue size to the correct spot. Modified: projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c Modified: projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c ============================================================================== --- projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c Sat Aug 17 17:02:43 2013 (r254457) +++ projects/vmxnet/sys/dev/vmware/vmxnet3/if_vmx.c Sat Aug 17 17:09:26 2013 (r254458) @@ -1082,11 +1082,11 @@ vmxnet3_alloc_rxq_data(struct vmxnet3_so int i, j, q, error; dev = sc->vmx_dev; - compsz = 0; for (q = 0; q < sc->vmx_nrxqueues; q++) { rxq = &sc->vmx_rxq[q]; rxc = &rxq->vxrxq_comp_ring; + compsz = 0; for (i = 0; i < VMXNET3_RXRINGS_PERQ; i++) { rxr = &rxq->vxrxq_cmd_ring[i]; From owner-svn-src-projects@FreeBSD.ORG Sat Aug 17 18:38:01 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4669463C; Sat, 17 Aug 2013 18:38:01 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 34766257A; Sat, 17 Aug 2013 18:38:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HIc1jf063862; Sat, 17 Aug 2013 18:38:01 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HIc1SR063861; Sat, 17 Aug 2013 18:38:01 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308171838.r7HIc1SR063861@svn.freebsd.org> From: Alexander Motin Date: Sat, 17 Aug 2013 18:38:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r254460 - projects/camlock/sys/kern X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 18:38:01 -0000 Author: mav Date: Sat Aug 17 18:38:00 2013 New Revision: 254460 URL: http://svnweb.freebsd.org/changeset/base/254460 Log: Remove locking from taskqueue_member(). The list of threads is static during the taskqueue life cycle, so there is no need to protect it, taking quite congested lock several more times for each ZFS I/O. Modified: projects/camlock/sys/kern/subr_taskqueue.c Modified: projects/camlock/sys/kern/subr_taskqueue.c ============================================================================== --- projects/camlock/sys/kern/subr_taskqueue.c Sat Aug 17 17:23:42 2013 (r254459) +++ projects/camlock/sys/kern/subr_taskqueue.c Sat Aug 17 18:38:00 2013 (r254460) @@ -620,7 +620,6 @@ taskqueue_member(struct taskqueue *queue { int i, j, ret = 0; - TQ_LOCK(queue); for (i = 0, j = 0; ; i++) { if (queue->tq_threads[i] == NULL) continue; @@ -631,6 +630,5 @@ taskqueue_member(struct taskqueue *queue if (++j >= queue->tq_tcount) break; } - TQ_UNLOCK(queue); return (ret); }