diff options
Diffstat (limited to 'usr/src/uts/i86pc/os/mp_machdep.c')
-rw-r--r-- | usr/src/uts/i86pc/os/mp_machdep.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/usr/src/uts/i86pc/os/mp_machdep.c b/usr/src/uts/i86pc/os/mp_machdep.c index 1d4fef5395..93332f1382 100644 --- a/usr/src/uts/i86pc/os/mp_machdep.c +++ b/usr/src/uts/i86pc/os/mp_machdep.c @@ -25,7 +25,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#define PSMI_1_5 +#define PSMI_1_6 #include <sys/smp_impldefs.h> #include <sys/psm.h> #include <sys/psm_modctl.h> @@ -136,6 +136,8 @@ void (*psm_timer_disable)(void) = NULL; void (*psm_post_cyclic_setup)(void *arg) = NULL; int (*psm_intr_ops)(dev_info_t *, ddi_intr_handle_impl_t *, psm_intr_op_t, int *) = mach_intr_ops; +int (*psm_state)(psm_state_request_t *) = (int (*)(psm_state_request_t *)) + return_instr; void (*notify_error)(int, char *) = (void (*)(int, char *))return_instr; void (*hrtime_tick)(void) = return_instr; @@ -923,6 +925,9 @@ mach_smpinit(void) if (pops->psm_post_cyclic_setup) psm_post_cyclic_setup = pops->psm_post_cyclic_setup; + if (pops->psm_state) + psm_state = pops->psm_state; + /* check for multiple cpu's */ if (cnt < 2) return; @@ -1314,6 +1319,18 @@ mach_cpu_start(struct cpu *cp, void *ctx) return ((*pops->psm_cpu_start)(id, ctx)); } +int +mach_cpuid_start(processorid_t id, void *ctx) +{ + struct psm_ops *pops = mach_set[0]; + +#ifdef DEBUG + if (CPU_IN_SET(cpufailset, id)) + return (0); +#endif + return ((*pops->psm_cpu_start)(id, ctx)); +} + /*ARGSUSED*/ static int mach_translate_irq(dev_info_t *dip, int irqno) |