diff options
author | Josef 'Jeff' Sipek <josef.sipek@nexenta.com> | 2014-11-10 20:29:50 -0500 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2014-11-11 00:19:12 -0500 |
commit | 0ed5c46e82c989cfa9726d9dae452e3d24ef83be (patch) | |
tree | d738d6bf0365af95a6d685207ed49a546037bc0b /usr/src | |
parent | 37c79205ad46187f54b2edbf6a468160935f14d9 (diff) | |
download | illumos-gate-0ed5c46e82c989cfa9726d9dae452e3d24ef83be.tar.gz |
5285 pass in cpu_pause_func via pause_cpus
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Approved by: Gordon Ross <gwr@nexenta.com>
Diffstat (limited to 'usr/src')
27 files changed, 53 insertions, 70 deletions
diff --git a/usr/src/uts/common/cpr/cpr_main.c b/usr/src/uts/common/cpr/cpr_main.c index 15e8c6c8d8..7db797c848 100644 --- a/usr/src/uts/common/cpr/cpr_main.c +++ b/usr/src/uts/common/cpr/cpr_main.c @@ -90,7 +90,6 @@ 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); @@ -416,8 +415,7 @@ cpr_suspend_cpus(void) /* * 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); @@ -792,12 +790,6 @@ cpr_resume_cpus(void) 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(); @@ -820,13 +812,6 @@ cpr_unpause_cpus(void) 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 */ @@ -1094,7 +1079,7 @@ rb_suspend_devices: */ if (cpr_resume_uniproc) { mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); mutex_exit(&cpu_lock); } #endif diff --git a/usr/src/uts/common/disp/cmt.c b/usr/src/uts/common/disp/cmt.c index da3296f6cf..1c5e1f79a9 100644 --- a/usr/src/uts/common/disp/cmt.c +++ b/usr/src/uts/common/disp/cmt.c @@ -355,7 +355,7 @@ cmt_hier_promote(pg_cmt_t *pg, cpu_pg_t *pgdata) * We're changing around the hierarchy, which is actively traversed * by the dispatcher. Pause CPUS to ensure exclusivity. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); /* * If necessary, update the parent's sibling set, replacing parent @@ -1555,7 +1555,7 @@ pg_cmt_prune(pg_cmt_t *pg_bad, pg_cmt_t **lineage, int *sz, cpu_pg_t *pgdata) * We're operating on the PG hierarchy. Pause CPUs to ensure * exclusivity with respect to the dispatcher. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); /* * Prune all PG instances of the hardware sharing relationship @@ -1675,7 +1675,7 @@ pg_cmt_disable(void) ASSERT(MUTEX_HELD(&cpu_lock)); - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpu = cpu_list; do { diff --git a/usr/src/uts/common/disp/cpupart.c b/usr/src/uts/common/disp/cpupart.c index c33a93373a..c260329c61 100644 --- a/usr/src/uts/common/disp/cpupart.c +++ b/usr/src/uts/common/disp/cpupart.c @@ -441,7 +441,7 @@ again: return (EBUSY); } - pause_cpus(cp); + pause_cpus(cp, NULL); if (move_threads) { /* @@ -865,7 +865,7 @@ cpupart_create(psetid_t *psid) * the clock thread (which traverses the list without holding * cpu_lock) isn't running. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); pp->cp_next = cp_list_head; pp->cp_prev = cp_list_head->cp_prev; cp_list_head->cp_prev->cp_next = pp; @@ -1011,7 +1011,7 @@ cpupart_destroy(psetid_t psid) * the clock thread (which traverses the list without holding * cpu_lock) isn't running. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); pp->cp_prev->cp_next = pp->cp_next; pp->cp_next->cp_prev = pp->cp_prev; if (cp_list_head == pp) diff --git a/usr/src/uts/common/disp/disp.c b/usr/src/uts/common/disp/disp.c index be92ba108b..0c2c0b4993 100644 --- a/usr/src/uts/common/disp/disp.c +++ b/usr/src/uts/common/disp/disp.c @@ -340,7 +340,7 @@ cpu_dispqalloc(int numpris) } while (cpup != cpu_list); num = i; - pause_cpus(NULL); + pause_cpus(NULL, NULL); for (i = 0; i < num; i++) disp_dq_assign(&disp_mem[i], numpris); start_cpus(); diff --git a/usr/src/uts/common/os/cpu.c b/usr/src/uts/common/os/cpu.c index a2047160d5..48439a90a5 100644 --- a/usr/src/uts/common/os/cpu.c +++ b/usr/src/uts/common/os/cpu.c @@ -167,13 +167,12 @@ static struct _cpu_pause_info { int cp_count; /* # of CPUs to pause */ ksema_t cp_sem; /* synch pause_cpus & cpu_pause */ kthread_id_t cp_paused; + void *(*cp_func)(void *); } cpu_pause_info; static kmutex_t pause_free_mutex; static kcondvar_t pause_free_cv; -void *(*cpu_pause_func)(void *) = NULL; - static struct cpu_sys_stats_ks_data { kstat_named_t cpu_ticks_idle; @@ -792,15 +791,15 @@ cpu_pause(int index) */ s = splhigh(); /* - * if cpu_pause_func() has been set then call it using - * index as the argument, currently only used by - * cpr_suspend_cpus(). This function is used as the - * code to execute on the "paused" cpu's when a machine - * comes out of a sleep state and CPU's were powered off. - * (could also be used for hotplugging CPU's). + * if cp_func has been set then call it using index as the + * argument, currently only used by cpr_suspend_cpus(). + * This function is used as the code to execute on the + * "paused" cpu's when a machine comes out of a sleep state + * and CPU's were powered off. (could also be used for + * hotplugging CPU's). */ - if (cpu_pause_func != NULL) - (*cpu_pause_func)((void *)lindex); + if (cpi->cp_func != NULL) + (*cpi->cp_func)((void *)lindex); mach_cpu_pause(safe); @@ -988,7 +987,7 @@ cpu_pause_start(processorid_t cpu_id) * context. */ void -pause_cpus(cpu_t *off_cp) +pause_cpus(cpu_t *off_cp, void *(*func)(void *)) { processorid_t cpu_id; int i; @@ -1002,6 +1001,8 @@ pause_cpus(cpu_t *off_cp) safe_list[i] = PAUSE_IDLE; kpreempt_disable(); + cpi->cp_func = func; + /* * If running on the cpu that is going offline, get off it. * This is so that it won't be necessary to rechoose a CPU @@ -1206,7 +1207,7 @@ cpu_online(cpu_t *cp) error = mp_cpu_start(cp); /* arch-dep hook */ if (error == 0) { pg_cpupart_in(cp, cp->cpu_part); - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpu_add_active_internal(cp); if (cp->cpu_flags & CPU_FAULTED) { cp->cpu_flags &= ~CPU_FAULTED; @@ -1405,7 +1406,7 @@ again: for (loop_count = 0; (*bound_func)(cp, 0); loop_count++) { * Put all the cpus into a known safe place. * No mutexes can be entered while CPUs are paused. */ - pause_cpus(cp); + pause_cpus(cp, NULL); /* * Repeat the operation, if necessary, to make sure that * all outstanding low-level interrupts run to completion @@ -1758,7 +1759,7 @@ cpu_add_unit(cpu_t *cp) * adding the cpu to the list. */ cp->cpu_part = &cp_default; - (void) pause_cpus(NULL); + pause_cpus(NULL, NULL); cp->cpu_next = cpu_list; cp->cpu_prev = cpu_list->cpu_prev; cpu_list->cpu_prev->cpu_next = cp; @@ -1853,7 +1854,7 @@ cpu_del_unit(int cpuid) * has been updated so that we don't waste time * trying to pause the cpu we're trying to delete. */ - (void) pause_cpus(NULL); + pause_cpus(NULL, NULL); cpnext = cp->cpu_next; cp->cpu_prev->cpu_next = cp->cpu_next; @@ -1925,7 +1926,7 @@ cpu_add_active(cpu_t *cp) { pg_cpupart_in(cp, cp->cpu_part); - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpu_add_active_internal(cp); start_cpus(); diff --git a/usr/src/uts/common/os/cpu_event.c b/usr/src/uts/common/os/cpu_event.c index b3ed323f92..0bd8c795ac 100644 --- a/usr/src/uts/common/os/cpu_event.c +++ b/usr/src/uts/common/os/cpu_event.c @@ -396,7 +396,7 @@ cpu_idle_insert_callback(cpu_idle_cb_impl_t *cip) * after pause_cpus(). */ if (!cpus_paused()) { - pause_cpus(NULL); + pause_cpus(NULL, NULL); unpause = 1; } @@ -462,7 +462,7 @@ cpu_idle_remove_callback(cpu_idle_cb_impl_t *cip) * after pause_cpus(). */ if (!cpus_paused()) { - pause_cpus(NULL); + pause_cpus(NULL, NULL); unpause = 1; } diff --git a/usr/src/uts/common/os/cpu_pm.c b/usr/src/uts/common/os/cpu_pm.c index b885e421b8..4554ed502a 100644 --- a/usr/src/uts/common/os/cpu_pm.c +++ b/usr/src/uts/common/os/cpu_pm.c @@ -188,7 +188,7 @@ cpupm_set_policy(cpupm_policy_t new_policy) */ switch (new_policy) { case CPUPM_POLICY_DISABLED: - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpupm_policy = CPUPM_POLICY_DISABLED; start_cpus(); @@ -228,7 +228,7 @@ cpupm_set_policy(cpupm_policy_t new_policy) gov_init = 1; } - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpupm_policy = CPUPM_POLICY_ELASTIC; start_cpus(); diff --git a/usr/src/uts/common/os/lgrp.c b/usr/src/uts/common/os/lgrp.c index b75f438f59..4fa73ddf3e 100644 --- a/usr/src/uts/common/os/lgrp.c +++ b/usr/src/uts/common/os/lgrp.c @@ -1297,7 +1297,7 @@ lgrp_mem_init(int mnode, lgrp_handle_t hand, boolean_t is_copy_rename) klgrpset_add(my_lgrp->lgrp_set[LGRP_RSRC_MEM], lgrpid); if (need_synch) - pause_cpus(NULL); + pause_cpus(NULL, NULL); count = lgrp_leaf_add(my_lgrp, lgrp_table, lgrp_alloc_max + 1, &changed); if (need_synch) @@ -1316,7 +1316,7 @@ lgrp_mem_init(int mnode, lgrp_handle_t hand, boolean_t is_copy_rename) lgrpid)) klgrpset_add(my_lgrp->lgrp_set[LGRP_RSRC_MEM], lgrpid); if (need_synch) - pause_cpus(NULL); + pause_cpus(NULL, NULL); count = lgrp_leaf_add(my_lgrp, lgrp_table, lgrp_alloc_max + 1, &changed); if (need_synch) @@ -1477,7 +1477,7 @@ lgrp_mem_fini(int mnode, lgrp_handle_t hand, boolean_t is_copy_rename) * Delete lgroup when no more resources */ if (need_synch) - pause_cpus(NULL); + pause_cpus(NULL, NULL); count = lgrp_leaf_delete(my_lgrp, lgrp_table, lgrp_alloc_max + 1, &changed); ASSERT(count > 0); diff --git a/usr/src/uts/common/os/lgrp_topo.c b/usr/src/uts/common/os/lgrp_topo.c index fa55a584e3..49c5298bb7 100644 --- a/usr/src/uts/common/os/lgrp_topo.c +++ b/usr/src/uts/common/os/lgrp_topo.c @@ -1480,7 +1480,7 @@ lgrp_topo_update(lgrp_t **lgrps, int lgrp_count, klgrpset_t *changed) } mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); /* * Look for any leaf lgroup without its latency set, finish adding it diff --git a/usr/src/uts/common/os/mem_config.c b/usr/src/uts/common/os/mem_config.c index 20a89b0611..3571747e9c 100644 --- a/usr/src/uts/common/os/mem_config.c +++ b/usr/src/uts/common/os/mem_config.c @@ -3302,7 +3302,7 @@ memseg_cpu_vm_flush() vm_cpu_data_t *vc; mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); cp = cpu_list; do { diff --git a/usr/src/uts/common/sys/cpuvar.h b/usr/src/uts/common/sys/cpuvar.h index 166c7180a5..7b333680c6 100644 --- a/usr/src/uts/common/sys/cpuvar.h +++ b/usr/src/uts/common/sys/cpuvar.h @@ -652,7 +652,7 @@ void poke_cpu(int cpun); /* interrupt another CPU (to preempt) */ void mach_cpu_pause(volatile char *); -void pause_cpus(cpu_t *off_cp); +void pause_cpus(cpu_t *off_cp, void *(*func)(void *)); void start_cpus(void); int cpus_paused(void); diff --git a/usr/src/uts/i86pc/i86hvm/io/xpv/xpv_support.c b/usr/src/uts/i86pc/i86hvm/io/xpv/xpv_support.c index 2c6293bbc5..e6c1b6f6a8 100644 --- a/usr/src/uts/i86pc/i86hvm/io/xpv/xpv_support.c +++ b/usr/src/uts/i86pc/i86hvm/io/xpv/xpv_support.c @@ -472,7 +472,7 @@ xen_suspend_domain(void) kpreempt_disable(); if (ncpus > 1) - pause_cpus(NULL); + pause_cpus(NULL, NULL); /* * We can grab the ec_lock as it's a spinlock with a high SPL. Hence * any holder would have dropped it to get through pause_cpus(). diff --git a/usr/src/uts/i86pc/io/dr/dr_quiesce.c b/usr/src/uts/i86pc/io/dr/dr_quiesce.c index 663977da25..3439eed5a0 100644 --- a/usr/src/uts/i86pc/io/dr/dr_quiesce.c +++ b/usr/src/uts/i86pc/io/dr/dr_quiesce.c @@ -872,7 +872,7 @@ dr_suspend(dr_sr_handle_t *srh) srh->sr_suspend_state = DR_SRSTATE_FULL; mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); dr_stop_intr(); return (rc); diff --git a/usr/src/uts/i86pc/io/ppm/acpisleep.c b/usr/src/uts/i86pc/io/ppm/acpisleep.c index b86f3ad963..78328170e6 100644 --- a/usr/src/uts/i86pc/io/ppm/acpisleep.c +++ b/usr/src/uts/i86pc/io/ppm/acpisleep.c @@ -70,8 +70,6 @@ extern int flushes_require_xcalls; extern int tsc_gethrtime_enable; extern cpuset_t cpu_ready_set; -extern void *(*cpu_pause_func)(void *); - /* diff --git a/usr/src/uts/i86pc/os/cpr_impl.c b/usr/src/uts/i86pc/os/cpr_impl.c index acc78eaa14..0583ac6ed6 100644 --- a/usr/src/uts/i86pc/os/cpr_impl.c +++ b/usr/src/uts/i86pc/os/cpr_impl.c @@ -737,7 +737,7 @@ i_cpr_stop_other_cpus(void) mutex_exit(&cpu_lock); return; } - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpu_are_paused = 1; mutex_exit(&cpu_lock); diff --git a/usr/src/uts/i86pc/os/machdep.c b/usr/src/uts/i86pc/os/machdep.c index dcc82d6d9b..f3656fb528 100644 --- a/usr/src/uts/i86pc/os/machdep.c +++ b/usr/src/uts/i86pc/os/machdep.c @@ -283,7 +283,7 @@ mdboot(int cmd, int fcn, char *mdep, boolean_t invoke_cb) (void) spl6(); if (!panicstr) { mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); mutex_exit(&cpu_lock); } diff --git a/usr/src/uts/i86pc/os/mp_pc.c b/usr/src/uts/i86pc/os/mp_pc.c index e2dbce2091..105b1e93dc 100644 --- a/usr/src/uts/i86pc/os/mp_pc.c +++ b/usr/src/uts/i86pc/os/mp_pc.c @@ -63,7 +63,6 @@ extern void real_mode_stop_cpu_stage1(void); extern void real_mode_stop_cpu_stage1_end(void); extern void real_mode_stop_cpu_stage2(void); extern void real_mode_stop_cpu_stage2_end(void); -extern void *(*cpu_pause_func)(void *); void rmp_gdt_init(rm_platter_t *); diff --git a/usr/src/uts/i86pc/os/x_call.c b/usr/src/uts/i86pc/os/x_call.c index 8c2821fc73..814e7a0026 100644 --- a/usr/src/uts/i86pc/os/x_call.c +++ b/usr/src/uts/i86pc/os/x_call.c @@ -281,7 +281,7 @@ xc_flush_cpu(struct cpu *cpup) * This is used to work around a race condition window in xc_common() * between checking CPU_READY flag and increasing working item count. */ - pause_cpus(cpup); + pause_cpus(cpup, NULL); start_cpus(); for (i = 0; i < XC_FLUSH_MAX_WAITS; i++) { diff --git a/usr/src/uts/i86xpv/os/mp_xen.c b/usr/src/uts/i86xpv/os/mp_xen.c index 0150ec58ec..02eda1c755 100644 --- a/usr/src/uts/i86xpv/os/mp_xen.c +++ b/usr/src/uts/i86xpv/os/mp_xen.c @@ -586,7 +586,7 @@ mp_enter_barrier(void) ASSERT(MUTEX_HELD(&cpu_lock)); - pause_cpus(NULL); + pause_cpus(NULL, NULL); while (!done) { done = 1; diff --git a/usr/src/uts/sun4/os/mp_states.c b/usr/src/uts/sun4/os/mp_states.c index 800a0a40b1..d5f55006b4 100644 --- a/usr/src/uts/sun4/os/mp_states.c +++ b/usr/src/uts/sun4/os/mp_states.c @@ -200,7 +200,7 @@ stop_other_cpus(void) if (ncpus > 1) intr_redist_all_cpus_shutdown(); - pause_cpus(NULL); + pause_cpus(NULL, NULL); cpu_are_paused = 1; mutex_exit(&cpu_lock); diff --git a/usr/src/uts/sun4/os/prom_subr.c b/usr/src/uts/sun4/os/prom_subr.c index 37fd0f3ee7..d4afdc8d19 100644 --- a/usr/src/uts/sun4/os/prom_subr.c +++ b/usr/src/uts/sun4/os/prom_subr.c @@ -408,7 +408,7 @@ console_exit(int busy, int spl) void promsafe_pause_cpus(void) { - pause_cpus(NULL); + pause_cpus(NULL, NULL); /* If some other cpu is entering or is in the prom, spin */ while (prom_cpu || mutex_owner(&prom_mutex)) { @@ -421,7 +421,7 @@ promsafe_pause_cpus(void) cv_wait(&prom_cv, &prom_mutex); mutex_exit(&prom_mutex); - pause_cpus(NULL); + pause_cpus(NULL, NULL); } /* At this point all cpus are paused and none are in the prom */ diff --git a/usr/src/uts/sun4u/io/mem_cache.c b/usr/src/uts/sun4u/io/mem_cache.c index 8d0e84b3e2..38180f001d 100644 --- a/usr/src/uts/sun4u/io/mem_cache.c +++ b/usr/src/uts/sun4u/io/mem_cache.c @@ -815,7 +815,7 @@ retry_l2_retire: << PN_CACHE_LINE_SHIFT); mutex_enter(&cpu_lock); affinity_set(cache_info->cpu_id); - (void) pause_cpus(NULL); + pause_cpus(NULL, NULL); mutex_exit(&cpu_lock); /* * We bind ourself to a CPU and send cross trap to diff --git a/usr/src/uts/sun4u/ngdr/io/dr_quiesce.c b/usr/src/uts/sun4u/ngdr/io/dr_quiesce.c index 166897f877..aaac057e56 100644 --- a/usr/src/uts/sun4u/ngdr/io/dr_quiesce.c +++ b/usr/src/uts/sun4u/ngdr/io/dr_quiesce.c @@ -935,7 +935,7 @@ dr_suspend(dr_sr_handle_t *srh) CPU_SIGNATURE(OS_SIG, SIGST_QUIESCED, SIGSUBST_NULL, CPU->cpu_id); mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); dr_stop_intr(); return (rc); diff --git a/usr/src/uts/sun4u/os/cpr_impl.c b/usr/src/uts/sun4u/os/cpr_impl.c index 672d761c9a..5825fe1ba1 100644 --- a/usr/src/uts/sun4u/os/cpr_impl.c +++ b/usr/src/uts/sun4u/os/cpr_impl.c @@ -269,7 +269,7 @@ i_cpr_mp_setup(void) for (cp = CPU->cpu_next; cp != CPU; cp = cp->cpu_next) restart_other_cpu(cp->cpu_id); - pause_cpus(NULL); + pause_cpus(NULL, NULL); mutex_exit(&cpu_lock); i_cpr_xcall(i_cpr_clear_entries); diff --git a/usr/src/uts/sun4u/serengeti/io/sbdp_quiesce.c b/usr/src/uts/sun4u/serengeti/io/sbdp_quiesce.c index 2d6c28e1ee..c5d86e2fc8 100644 --- a/usr/src/uts/sun4u/serengeti/io/sbdp_quiesce.c +++ b/usr/src/uts/sun4u/serengeti/io/sbdp_quiesce.c @@ -844,7 +844,7 @@ sbdp_suspend(sbdp_sr_handle_t *srh) } mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); sbdp_stop_intr(); /* diff --git a/usr/src/uts/sun4v/os/mpo.c b/usr/src/uts/sun4v/os/mpo.c index 4bf7dea82d..ad0cf0e78a 100644 --- a/usr/src/uts/sun4v/os/mpo.c +++ b/usr/src/uts/sun4v/os/mpo.c @@ -220,7 +220,7 @@ static void mpo_wr_lock() { mutex_enter(&cpu_lock); - pause_cpus(NULL); + pause_cpus(NULL, NULL); mutex_exit(&cpu_lock); } diff --git a/usr/src/uts/sun4v/os/suspend.c b/usr/src/uts/sun4v/os/suspend.c index c0a30218e5..e81eb001a9 100644 --- a/usr/src/uts/sun4v/os/suspend.c +++ b/usr/src/uts/sun4v/os/suspend.c @@ -389,7 +389,7 @@ update_cpu_mappings(void) * inactive in their PGs and shouldn't be reactivated, so we must * not call pg_cpu_inactive or pg_cpu_active for those CPUs. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); for (id = 0; id < NCPU; id++) { if ((cp = cpu_get(id)) == NULL) continue; @@ -430,7 +430,7 @@ update_cpu_mappings(void) * system, replace the bootstrapped PG structure with the * initialized PG structure and call pg_cpu_active for each CPU. */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); for (id = 0; id < NCPU; id++) { if ((cp = cpu_get(id)) == NULL) continue; @@ -615,7 +615,7 @@ suspend_start(char *error_reason, size_t max_reason_len) mutex_exit(&tod_lock); /* Pause all other CPUs */ - pause_cpus(NULL); + pause_cpus(NULL, NULL); DBG_PROM("suspend: CPUs paused\n"); /* Suspend cyclics */ |