Lines Matching refs:cp

61 dr_cpu_unit_is_sane(dr_board_t *bp, dr_cpu_unit_t *cp)
64 ASSERT(cp->sbc_cm.sbdev_bp == bp);
65 ASSERT(cp->sbc_cm.sbdev_type == SBD_COMP_CPU);
68 _NOTE(ARGUNUSED(cp))
107 dr_cpu_set_prop(dr_cpu_unit_t *cp)
115 err = drmach_get_dip(cp->sbc_cm.sbdev_id, &dip);
117 DRERR_SET_C(&cp->sbc_cm.sbdev_error, &err);
122 DR_DEV_INTERNAL_ERROR(&cp->sbc_cm);
134 switch (cp->sbc_cpu_impl) {
140 cp->sbc_cpu_impl);
157 cp->sbc_speed = (clock_freq + 500000) / 1000000;
158 cp->sbc_ecache = ecache_size / (1024 * 1024);
162 dr_init_cpu_unit(dr_cpu_unit_t *cp)
169 if (DR_DEV_IS_ATTACHED(&cp->sbc_cm)) {
171 cp->sbc_cm.sbdev_cond = SBD_COND_OK;
172 } else if (DR_DEV_IS_PRESENT(&cp->sbc_cm)) {
174 cp->sbc_cm.sbdev_cond = SBD_COND_OK;
177 cp->sbc_cm.sbdev_cond = SBD_COND_UNKNOWN;
180 if (DR_DEV_IS_PRESENT(&cp->sbc_cm)) {
181 err = drmach_cpu_get_id(cp->sbc_cm.sbdev_id, &cpuid);
183 DRERR_SET_C(&cp->sbc_cm.sbdev_error, &err);
188 err = drmach_cpu_get_impl(cp->sbc_cm.sbdev_id, &impl);
190 DRERR_SET_C(&cp->sbc_cm.sbdev_error, &err);
195 cp->sbc_cpu_id = -1;
196 cp->sbc_cpu_impl = -1;
200 cp->sbc_cpu_id = cpuid;
201 cp->sbc_cpu_impl = impl;
204 ASSERT(dr_cpu_unit_is_sane(cp->sbc_cm.sbdev_bp, cp));
208 cp->sbc_cpu_flags = cpu[cpuid]->cpu_flags;
210 cp->sbc_cpu_flags = P_OFFLINE | P_POWEROFF;
213 dr_cpu_set_prop(cp);
217 dr_device_transition(&cp->sbc_cm, new_state);
258 dr_attach_cpu(dr_handle_t *hp, dr_common_unit_t *cp)
266 err = drmach_configure(cp->sbdev_id, 0);
268 DRERR_SET_C(&cp->sbdev_error, &err);
272 err = drmach_cpu_get_id(cp->sbdev_id, &cpuid);
274 DRERR_SET_C(&cp->sbdev_error, &err);
276 err = drmach_unconfigure(cp->sbdev_id, DEVI_BRANCH_DESTROY);
280 dr_dev_err(CE_WARN, cp, dr_errno2ecode(rv));
281 err = drmach_unconfigure(cp->sbdev_id, DEVI_BRANCH_DESTROY);
285 dr_cpu_unit_t *up = (dr_cpu_unit_t *)cp;
307 struct cpu *cp;
311 cp = cpu_get(up->sbc_cpu_id);
312 if (cp == NULL) {
318 if (cpu_is_poweredoff(cp)) {
319 if (cpu_poweron(cp) != 0) {
326 if (cpu_is_offline(cp)) {
329 if (cpu_online(cp) != 0) {
357 struct cpu *cp;
402 if ((cp = cpu_get(cpuid)) == NULL) {
409 up->sbc_cpu_flags = cp->cpu_flags;
411 if (CPU_ACTIVE(cp)) {
416 if (cpu_offline(cp, cpu_flags)) {
420 if (disp_bound_threads(cp, 0)) {
422 "to cpu %d", f, cp->cpu_id);
486 struct cpu *cp;
494 cp = cpu_get(up->sbc_cpu_id);
495 if (cp == NULL)
512 if (cpu_is_poweredoff(cp)) {
518 if (!cpu_is_offline(cp)) {
523 if (cpu_offline(cp, cpu_flags)) {
527 if (disp_bound_threads(cp, 0)) {
529 "to cpu %d", f, cp->cpu_id);
534 if (cpu_poweroff(cp) != 0) {
552 dr_detach_cpu(dr_handle_t *hp, dr_common_unit_t *cp)
557 dr_cpu_unit_t *up = (dr_cpu_unit_t *)cp;
565 err = drmach_cpu_get_id(cp->sbdev_id, &cpuid);
567 DRERR_SET_C(&cp->sbdev_error, &err);
569 dr_dev_err(CE_IGNORE, cp, dr_errno2ecode(rv));
571 err = drmach_unconfigure(cp->sbdev_id, DEVI_BRANCH_DESTROY);
573 DRERR_SET_C(&cp->sbdev_error, &err);
596 dr_fill_cpu_stat(dr_cpu_unit_t *cp, drmach_status_t *pstat, sbd_cpu_stat_t *csp)
598 ASSERT(cp && pstat && csp);
602 csp->cs_type = cp->sbc_cm.sbdev_type;
603 csp->cs_unit = cp->sbc_cm.sbdev_unum;
605 csp->cs_cond = cp->sbc_cm.sbdev_cond;
606 csp->cs_busy = cp->sbc_cm.sbdev_busy | pstat->busy;
607 csp->cs_time = cp->sbc_cm.sbdev_time;
608 csp->cs_ostate = cp->sbc_cm.sbdev_ostate;
612 csp->cs_cpuid = cp->sbc_cpu_id;
618 if ((cp->sbc_speed == 0) || (cp->sbc_ecache == 0))
619 dr_cpu_set_prop(cp);
622 csp->cs_speed = cp->sbc_speed;
623 csp->cs_ecache = cp->sbc_ecache;
724 dr_cpu_unit_t *cp;
737 cp = dr_get_cpu_unit(bp, DR_CMP_CORE_UNUM(cmp, core));
739 if (cp->sbc_cm.sbdev_state == DR_STATE_EMPTY) {
744 ASSERT(dr_cpu_unit_is_sane(hp->h_bd, cp));
747 if (cp->sbc_cm.sbdev_id == (drmachid_t)0) {
752 err = drmach_status(cp->sbc_cm.sbdev_id, &pstat);
754 DRERR_SET_C(&cp->sbc_cm.sbdev_error, &err);
758 dr_fill_cpu_stat(cp, &pstat, &cstat[ncores++]);
763 impl = cp->sbc_cpu_impl;
812 struct cpu *cp;
821 cp = cpu[up->sbc_cpu_id];
823 if (cpu_is_poweredoff(cp)) {
824 if (cpu_poweron(cp)) {
831 if (rv == 0 && cpu_is_offline(cp)) {
832 if (cpu_online(cp)) {
839 if (rv == 0 && cpu_is_online(cp)) {
841 if (cpu_intr_disable(cp) != 0) {