Author: kib
Date: Fri Jul 10 08:54:12 2015
New Revision: 285353
URL: https://svnweb.freebsd.org/changeset/base/285353

Log:
  Change the mb() use in the sched_ult tdq_notify() and sched_idletd()
  to more C11-ish atomic_thread_fence_seq_cst().
  
  Note that on PowerPC, which currently uses lwsync for mb(), the change
  actually fixes the missed store/load barrier, intended by r271604 [*].
  
  Reviewed by:  alc
  Noted by:     alc [*]
  Sponsored by: The FreeBSD Foundation
  MFC after:    3 weeks

Modified:
  head/sys/kern/sched_ule.c

Modified: head/sys/kern/sched_ule.c
==============================================================================
--- head/sys/kern/sched_ule.c   Fri Jul 10 08:36:22 2015        (r285352)
+++ head/sys/kern/sched_ule.c   Fri Jul 10 08:54:12 2015        (r285353)
@@ -1057,7 +1057,7 @@ tdq_notify(struct tdq *tdq, struct threa
         * globally visible before we read tdq_cpu_idle.  Idle thread
         * accesses both of them without locks, and the order is important.
         */
-       mb();
+       atomic_thread_fence_seq_cst();
 
        if (TD_IS_IDLETHREAD(ctd)) {
                /*
@@ -2667,7 +2667,7 @@ sched_idletd(void *dummy)
                 * before cpu_idle() read tdq_load.  The order is important
                 * to avoid race with tdq_notify.
                 */
-               mb();
+               atomic_thread_fence_seq_cst();
                cpu_idle(switchcnt * 4 > sched_idlespinthresh);
                tdq->tdq_cpu_idle = 0;
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to