From owner-svn-src-stable-10@FreeBSD.ORG Fri Feb 13 18:45:47 2015 Return-Path: Delivered-To: svn-src-stable-10@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 62FF1FE7; Fri, 13 Feb 2015 18:45:47 +0000 (UTC) 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)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4BF50A03; Fri, 13 Feb 2015 18:45:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t1DIjlT0025517; Fri, 13 Feb 2015 18:45:47 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t1DIjjHv025508; Fri, 13 Feb 2015 18:45:45 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201502131845.t1DIjjHv025508@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Fri, 13 Feb 2015 18:45:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r278693 - in stable/10: sys/kern tools/sched usr.bin/man X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Feb 2015 18:45:47 -0000 Author: sbruno Date: Fri Feb 13 18:45:44 2015 New Revision: 278693 URL: https://svnweb.freebsd.org/changeset/base/278693 Log: Revert r278650. Definite layer 8 bug. Submitted by: dhw and Thomas Mueller Modified: stable/10/sys/kern/kern_lock.c stable/10/sys/kern/kern_mutex.c stable/10/sys/kern/kern_rwlock.c stable/10/sys/kern/kern_sx.c stable/10/sys/kern/kern_timeout.c stable/10/tools/sched/schedgraph.py stable/10/usr.bin/man/man.sh Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_lock.c ============================================================================== --- stable/10/sys/kern/kern_lock.c Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/sys/kern/kern_lock.c Fri Feb 13 18:45:44 2015 (r278693) @@ -583,9 +583,6 @@ __lockmgr_args(struct lock *lk, u_int fl CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, lk, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(td), "spinning", - "lockname:\"%s\"", lk->lock_object.lo_name); /* * If we are holding also an interlock drop it @@ -601,16 +598,11 @@ __lockmgr_args(struct lock *lk, u_int fl while (LK_HOLDER(lk->lk_lock) == (uintptr_t)owner && TD_IS_RUNNING(owner)) cpu_spinwait(); - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(td), "running"); GIANT_RESTORE(); continue; } else if (LK_CAN_ADAPT(lk, flags) && (x & LK_SHARE) != 0 && LK_SHARERS(x) && spintries < alk_retries) { - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(td), "spinning", - "lockname:\"%s\"", lk->lock_object.lo_name); if (flags & LK_INTERLOCK) { class->lc_unlock(ilk); flags &= ~LK_INTERLOCK; @@ -628,8 +620,6 @@ __lockmgr_args(struct lock *lk, u_int fl break; cpu_spinwait(); } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(td), "running"); GIANT_RESTORE(); if (i != alk_loops) continue; @@ -825,9 +815,6 @@ __lockmgr_args(struct lock *lk, u_int fl CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, lk, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(td), "spinning", - "lockname:\"%s\"", lk->lock_object.lo_name); /* * If we are holding also an interlock drop it @@ -843,8 +830,6 @@ __lockmgr_args(struct lock *lk, u_int fl while (LK_HOLDER(lk->lk_lock) == (uintptr_t)owner && TD_IS_RUNNING(owner)) cpu_spinwait(); - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(td), "running"); GIANT_RESTORE(); continue; } else if (LK_CAN_ADAPT(lk, flags) && @@ -854,9 +839,6 @@ __lockmgr_args(struct lock *lk, u_int fl !atomic_cmpset_ptr(&lk->lk_lock, x, x | LK_EXCLUSIVE_SPINNERS)) continue; - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(td), "spinning", - "lockname:\"%s\"", lk->lock_object.lo_name); if (flags & LK_INTERLOCK) { class->lc_unlock(ilk); flags &= ~LK_INTERLOCK; @@ -873,8 +855,6 @@ __lockmgr_args(struct lock *lk, u_int fl break; cpu_spinwait(); } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(td), "running"); GIANT_RESTORE(); if (i != alk_loops) continue; Modified: stable/10/sys/kern/kern_mutex.c ============================================================================== --- stable/10/sys/kern/kern_mutex.c Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/sys/kern/kern_mutex.c Fri Feb 13 18:45:44 2015 (r278693) @@ -436,10 +436,6 @@ __mtx_lock_sleep(volatile uintptr_t *c, CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, m, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname((struct thread *)tid), - "spinning", "lockname:\"%s\"", - m->lock_object.lo_name); while (mtx_owner(m) == owner && TD_IS_RUNNING(owner)) { cpu_spinwait(); @@ -447,9 +443,6 @@ __mtx_lock_sleep(volatile uintptr_t *c, spin_cnt++; #endif } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname((struct thread *)tid), - "running"); continue; } } @@ -586,8 +579,6 @@ _mtx_lock_spin_cookie(volatile uintptr_t if (LOCK_LOG_TEST(&m->lock_object, opts)) CTR1(KTR_LOCK, "_mtx_lock_spin: %p spinning", m); - KTR_STATE1(KTR_SCHED, "thread", sched_tdname((struct thread *)tid), - "spinning", "lockname:\"%s\"", m->lock_object.lo_name); #ifdef HWPMC_HOOKS PMC_SOFT_CALL( , , lock, failed); @@ -613,8 +604,6 @@ _mtx_lock_spin_cookie(volatile uintptr_t if (LOCK_LOG_TEST(&m->lock_object, opts)) CTR1(KTR_LOCK, "_mtx_lock_spin: %p spin done", m); - KTR_STATE0(KTR_SCHED, "thread", sched_tdname((struct thread *)tid), - "running"); LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE, m, contested, waittime, (file), (line)); Modified: stable/10/sys/kern/kern_rwlock.c ============================================================================== --- stable/10/sys/kern/kern_rwlock.c Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/sys/kern/kern_rwlock.c Fri Feb 13 18:45:44 2015 (r278693) @@ -44,7 +44,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -424,9 +423,6 @@ __rw_rlock(volatile uintptr_t *c, const CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, rw, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(curthread), "spinning", - "lockname:\"%s\"", rw->lock_object.lo_name); while ((struct thread*)RW_OWNER(rw->rw_lock) == owner && TD_IS_RUNNING(owner)) { cpu_spinwait(); @@ -434,23 +430,16 @@ __rw_rlock(volatile uintptr_t *c, const spin_cnt++; #endif } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(curthread), "running"); continue; } } else if (spintries < rowner_retries) { spintries++; - KTR_STATE1(KTR_SCHED, "thread", sched_tdname(curthread), - "spinning", "lockname:\"%s\"", - rw->lock_object.lo_name); for (i = 0; i < rowner_loops; i++) { v = rw->rw_lock; if ((v & RW_LOCK_READ) == 0 || RW_CAN_READ(v)) break; cpu_spinwait(); } - KTR_STATE0(KTR_SCHED, "thread", sched_tdname(curthread), - "running"); if (i != rowner_loops) continue; } @@ -770,9 +759,6 @@ __rw_wlock_hard(volatile uintptr_t *c, u if (LOCK_LOG_TEST(&rw->lock_object, 0)) CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, rw, owner); - KTR_STATE1(KTR_SCHED, "thread", sched_tdname(curthread), - "spinning", "lockname:\"%s\"", - rw->lock_object.lo_name); while ((struct thread*)RW_OWNER(rw->rw_lock) == owner && TD_IS_RUNNING(owner)) { cpu_spinwait(); @@ -780,8 +766,6 @@ __rw_wlock_hard(volatile uintptr_t *c, u spin_cnt++; #endif } - KTR_STATE0(KTR_SCHED, "thread", sched_tdname(curthread), - "running"); continue; } if ((v & RW_LOCK_READ) && RW_READERS(v) && @@ -793,16 +777,11 @@ __rw_wlock_hard(volatile uintptr_t *c, u } } spintries++; - KTR_STATE1(KTR_SCHED, "thread", sched_tdname(curthread), - "spinning", "lockname:\"%s\"", - rw->lock_object.lo_name); for (i = 0; i < rowner_loops; i++) { if ((rw->rw_lock & RW_LOCK_WRITE_SPINNER) == 0) break; cpu_spinwait(); } - KTR_STATE0(KTR_SCHED, "thread", sched_tdname(curthread), - "running"); #ifdef KDTRACE_HOOKS spin_cnt += rowner_loops - i; #endif Modified: stable/10/sys/kern/kern_sx.c ============================================================================== --- stable/10/sys/kern/kern_sx.c Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/sys/kern/kern_sx.c Fri Feb 13 18:45:44 2015 (r278693) @@ -51,7 +51,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -561,10 +560,6 @@ _sx_xlock_hard(struct sx *sx, uintptr_t CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, sx, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(curthread), "spinning", - "lockname:\"%s\"", - sx->lock_object.lo_name); GIANT_SAVE(); while (SX_OWNER(sx->sx_lock) == x && TD_IS_RUNNING(owner)) { @@ -573,14 +568,9 @@ _sx_xlock_hard(struct sx *sx, uintptr_t spin_cnt++; #endif } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(curthread), "running"); continue; } } else if (SX_SHARERS(x) && spintries < asx_retries) { - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(curthread), "spinning", - "lockname:\"%s\"", sx->lock_object.lo_name); GIANT_SAVE(); spintries++; for (i = 0; i < asx_loops; i++) { @@ -597,8 +587,6 @@ _sx_xlock_hard(struct sx *sx, uintptr_t spin_cnt++; #endif } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(curthread), "running"); if (i != asx_loops) continue; } @@ -861,9 +849,6 @@ _sx_slock_hard(struct sx *sx, int opts, CTR3(KTR_LOCK, "%s: spinning on %p held by %p", __func__, sx, owner); - KTR_STATE1(KTR_SCHED, "thread", - sched_tdname(curthread), "spinning", - "lockname:\"%s\"", sx->lock_object.lo_name); GIANT_SAVE(); while (SX_OWNER(sx->sx_lock) == x && TD_IS_RUNNING(owner)) { @@ -872,8 +857,6 @@ _sx_slock_hard(struct sx *sx, int opts, #endif cpu_spinwait(); } - KTR_STATE0(KTR_SCHED, "thread", - sched_tdname(curthread), "running"); continue; } } Modified: stable/10/sys/kern/kern_timeout.c ============================================================================== --- stable/10/sys/kern/kern_timeout.c Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/sys/kern/kern_timeout.c Fri Feb 13 18:45:44 2015 (r278693) @@ -150,7 +150,6 @@ struct callout_cpu { sbintime_t cc_lastscan; void *cc_cookie; u_int cc_bucket; - char cc_ktr_event_name[20]; }; #define cc_exec_curr cc_exec_entity[0].cc_curr @@ -189,7 +188,7 @@ struct callout_cpu cc_cpu; static int timeout_cpu; -static void callout_cpu_init(struct callout_cpu *cc, int cpu); +static void callout_cpu_init(struct callout_cpu *cc); static void softclock_call_cc(struct callout *c, struct callout_cpu *cc, #ifdef CALLOUT_PROFILING int *mpcalls, int *lockcalls, int *gcalls, @@ -284,7 +283,7 @@ callout_callwheel_init(void *dummy) cc = CC_CPU(timeout_cpu); cc->cc_callout = malloc(ncallout * sizeof(struct callout), M_CALLOUT, M_WAITOK); - callout_cpu_init(cc, timeout_cpu); + callout_cpu_init(cc); } SYSINIT(callwheel_init, SI_SUB_CPU, SI_ORDER_ANY, callout_callwheel_init, NULL); @@ -292,7 +291,7 @@ SYSINIT(callwheel_init, SI_SUB_CPU, SI_O * Initialize the per-cpu callout structures. */ static void -callout_cpu_init(struct callout_cpu *cc, int cpu) +callout_cpu_init(struct callout_cpu *cc) { struct callout *c; int i; @@ -307,8 +306,6 @@ callout_cpu_init(struct callout_cpu *cc, cc->cc_firstevent = INT64_MAX; for (i = 0; i < 2; i++) cc_cce_cleanup(cc, i); - snprintf(cc->cc_ktr_event_name, sizeof(cc->cc_ktr_event_name), - "callwheel cpu %d", cpu); if (cc->cc_callout == NULL) /* Only cpu0 handles timeout(9) */ return; for (i = 0; i < ncallout; i++) { @@ -370,7 +367,7 @@ start_softclock(void *dummy) continue; cc = CC_CPU(cpu); cc->cc_callout = NULL; /* Only cpu0 handles timeout(9). */ - callout_cpu_init(cc, cpu); + callout_cpu_init(cc); if (swi_add(NULL, "clock", softclock, cc, SWI_CLOCK, INTR_MPSAFE, &cc->cc_cookie)) panic("died while creating standard software ithreads"); @@ -677,8 +674,6 @@ softclock_call_cc(struct callout *c, str CTR3(KTR_CALLOUT, "callout %p func %p arg %p", c, c_func, c_arg); } - KTR_STATE3(KTR_SCHED, "callout", cc->cc_ktr_event_name, "running", - "func:%p", c_func, "arg:%p", c_arg, "direct:%d", direct); #if defined(DIAGNOSTIC) || defined(CALLOUT_PROFILING) sbt1 = sbinuptime(); #endif @@ -701,7 +696,6 @@ softclock_call_cc(struct callout *c, str lastfunc = c_func; } #endif - KTR_STATE0(KTR_SCHED, "callout", cc->cc_ktr_event_name, "idle"); CTR1(KTR_CALLOUT, "callout %p finished", c); if ((c_flags & CALLOUT_RETURNUNLOCKED) == 0) class->lc_unlock(c_lock); Modified: stable/10/tools/sched/schedgraph.py ============================================================================== --- stable/10/tools/sched/schedgraph.py Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/tools/sched/schedgraph.py Fri Feb 13 18:45:44 2015 (r278693) @@ -70,7 +70,6 @@ eventcolors = [ ("count", "red"), ("running", "green"), ("idle", "grey"), - ("spinning", "red"), ("yielding", "yellow"), ("swapped", "violet"), ("suspended", "purple"), @@ -81,6 +80,8 @@ eventcolors = [ ("runq rem", "yellow"), ("thread exit", "grey"), ("proc exit", "grey"), + ("callwheel idle", "grey"), + ("callout running", "green"), ("lock acquire", "blue"), ("lock contest", "purple"), ("failed lock try", "red"), @@ -855,7 +856,7 @@ class EventSource: return (Y_EVENTSOURCE) def eventat(self, i): - if (i >= len(self.events) or i < 0): + if (i >= len(self.events)): return (None) event = self.events[i] return (event) @@ -902,6 +903,7 @@ class KTRFile: self.timestamp_f = None self.timestamp_l = None self.locks = {} + self.callwheels = {} self.ticks = {} self.load = {} self.crit = {} Modified: stable/10/usr.bin/man/man.sh ============================================================================== --- stable/10/usr.bin/man/man.sh Fri Feb 13 18:37:22 2015 (r278692) +++ stable/10/usr.bin/man/man.sh Fri Feb 13 18:45:44 2015 (r278693) @@ -276,8 +276,11 @@ man_check_for_so() { return 0 } +# Usage: man_display_page +# Display either the manpage or catpage depending on the use_cat variable man_display_page() { - local IFS pipeline preconv_enc testline + local EQN NROFF PIC TBL TROFF REFER VGRIND + local IFS l nroff_dev pipeline preproc_arg tool # We are called with IFS set to colon. This causes really weird # things to happen for the variables that have spaces in them. @@ -309,49 +312,6 @@ man_display_page() { return fi - case "${manpage}" in - *.${man_charset}/*) - case "$man_charset" in - ISO8859-1) preconv_enc="latin-1" ;; - ISO8859-15) preconv_enc="latin-1" ;; - UTF-8) preconv_enc="utf-8" ;; - esac - ;; - esac - - if [ -n "$preconv_enc" ]; then - pipeline="preconv -e $preconv_enc |" - fi - testline="$pipeline mandoc -Tlint -Werror 2>/dev/null" - pipeline="$pipeline mandoc -Tlocale | $MANPAGER" - - if ! eval "$cattool $manpage | $testline" ;then - if which -s groff2; then - man_display_page_groff - else - echo "This manpage needs groff(1) to be rendered" >&2 - echo "First install groff(1): " >&2 - echo "pkg install groff " >&2 - ret=1 - fi - return - fi - - if [ $debug -gt 0 ]; then - decho "Command: $cattool $manpage | $pipeline" - ret=0 - else - eval "$cattool $manpage | $pipeline" - ret=$? - fi -} - -# Usage: man_display_page -# Display either the manpage or catpage depending on the use_cat variable -man_display_page_groff() { - local EQN NROFF PIC TBL TROFF REFER VGRIND - local IFS l nroff_dev pipeline preproc_arg tool - # So, we really do need to parse the manpage. First, figure out the # device flag (-T) we have to pass to eqn(1) and groff(1). Then, # setup the pipeline of commands based on the user's request.