Author: attilio
Date: Thu Aug 12 13:46:43 2010
New Revision: 211220
URL: http://svn.freebsd.org/changeset/base/211220

Log:
  Revert r211176:
  As long as interrupts are disabled and there is not explicit call to
  sched_add() there can't be any preemption there, thus the calls may be
  consistent.
  
  Reported by:  kib, jhb

Modified:
  head/sys/amd64/amd64/mp_machdep.c
  head/sys/i386/i386/mp_machdep.c

Modified: head/sys/amd64/amd64/mp_machdep.c
==============================================================================
--- head/sys/amd64/amd64/mp_machdep.c   Thu Aug 12 11:01:38 2010        
(r211219)
+++ head/sys/amd64/amd64/mp_machdep.c   Thu Aug 12 13:46:43 2010        
(r211220)
@@ -1324,10 +1324,8 @@ cpustop_handler(void)
        cpumask_t cpumask;
        u_int cpu;
 
-       sched_pin();
        cpu = PCPU_GET(cpuid);
        cpumask = PCPU_GET(cpumask);
-       sched_unpin();
 
        savectx(&stoppcbs[cpu]);
 
@@ -1358,10 +1356,8 @@ cpususpend_handler(void)
        register_t cr3, rf;
        u_int cpu;
 
-       sched_pin();
        cpu = PCPU_GET(cpuid);
        cpumask = PCPU_GET(cpumask);
-       sched_unpin();
 
        rf = intr_disable();
        cr3 = rcr3();
@@ -1542,14 +1538,10 @@ mp_grab_cpu_hlt(void)
 #endif
        int retval;
 
-#ifdef MP_WATCHDOG
-       sched_pin();
        mask = PCPU_GET(cpumask);
+#ifdef MP_WATCHDOG
        cpuid = PCPU_GET(cpuid);
-       sched_unpin();
        ap_watchdog(cpuid);
-#else
-       mask = PCPU_GET(cpumask);
 #endif
 
        retval = 0;

Modified: head/sys/i386/i386/mp_machdep.c
==============================================================================
--- head/sys/i386/i386/mp_machdep.c     Thu Aug 12 11:01:38 2010        
(r211219)
+++ head/sys/i386/i386/mp_machdep.c     Thu Aug 12 13:46:43 2010        
(r211220)
@@ -1411,10 +1411,8 @@ cpustop_handler(void)
        cpumask_t cpumask;
        u_int cpu;
 
-       sched_pin();
        cpu = PCPU_GET(cpuid);
        cpumask = PCPU_GET(cpumask);
-       sched_unpin();
 
        savectx(&stoppcbs[cpu]);
 
@@ -1588,14 +1586,10 @@ mp_grab_cpu_hlt(void)
 #endif
        int retval;
 
-#ifdef MP_WATCHDOG
-       sched_pin();
        mask = PCPU_GET(cpumask);
+#ifdef MP_WATCHDOG
        cpuid = PCPU_GET(cpuid);
-       sched_unpin();
        ap_watchdog(cpuid);
-#else
-       mask = PCPU_GET(cpumask);
 #endif
 
        retval = 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