Print this page
XXXX pass in cpu_pause_func via pause_cpus

@@ -88,11 +88,10 @@
 int cpr_suspend_succeeded;
 pfn_t curthreadpfn;
 int curthreadremapped;
 
 extern cpuset_t cpu_ready_set;
-extern void *(*cpu_pause_func)(void *);
 
 extern processorid_t i_cpr_bootcpuid(void);
 extern cpu_t *i_cpr_bootcpu(void);
 extern void tsc_adjust_delta(hrtime_t tdelta);
 extern void tsc_resume(void);

@@ -414,12 +413,11 @@
         PMD(PMD_SX, ("curthread running on bootcpu\n"))
 
         /*
          * pause all other running CPUs and save the CPU state at the sametime
          */
-        cpu_pause_func = i_cpr_save_context;
-        pause_cpus(NULL);
+        pause_cpus(NULL, i_cpr_save_context);
 
         mutex_exit(&cpu_lock);
 
         return (0);
 }

@@ -790,16 +788,10 @@
 
         i_cpr_post_resume_cpus();
 
         mutex_enter(&cpu_lock);
         /*
-         * Restore this cpu to use the regular cpu_pause(), so that
-         * online and offline will work correctly
-         */
-        cpu_pause_func = NULL;
-
-        /*
          * clear the affinity set in cpr_suspend_cpus()
          */
         affinity_clear();
 
         /*

@@ -818,17 +810,10 @@
          */
 
         PMD(PMD_SX, ("cpr_unpause_cpus: restoring system\n"))
 
         mutex_enter(&cpu_lock);
-
-        /*
-         * Restore this cpu to use the regular cpu_pause(), so that
-         * online and offline will work correctly
-         */
-        cpu_pause_func = NULL;
-
         /*
          * Restart the paused cpus
          */
         start_cpus();
 

@@ -1092,11 +1077,11 @@
          * apart from the current cpu, so that broken drivers that think
          * that they are on a uniprocessor machine will resume
          */
         if (cpr_resume_uniproc) {
                 mutex_enter(&cpu_lock);
-                pause_cpus(NULL);
+                pause_cpus(NULL, NULL);
                 mutex_exit(&cpu_lock);
         }
 #endif
 
         /*