Lines Matching refs:cp

127 init_cpu_info(struct cpu *cp)  in init_cpu_info()  argument
129 processor_info_t *pi = &cp->cpu_type_info; in init_cpu_info()
139 cp->cpu_curr_clock = cpu_freq_hz; in init_cpu_info()
144 if (cp->cpu_supp_freqs == NULL) { in init_cpu_info()
145 cpu_set_supp_freqs(cp, NULL); in init_cpu_info()
152 cp->cpu_idstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP); in init_cpu_info()
153 cp->cpu_brandstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP); in init_cpu_info()
162 (void) cpuid_getidstr(CPU, cp->cpu_idstr, CPU_IDSTRLEN); in init_cpu_info()
163 (void) cpuid_getbrandstr(CPU, cp->cpu_brandstr, CPU_IDSTRLEN); in init_cpu_info()
171 init_cpu_syscall(struct cpu *cp) in init_cpu_syscall() argument
268 init_cpu_id_gdt(struct cpu *cp) in init_cpu_id_gdt() argument
271 set_usegd(&cp->cpu_gdt[GDT_CPUID], SDP_SHORT, NULL, cp->cpu_id, in init_cpu_id_gdt()
287 struct cpu *cp; in mp_cpu_configure_common() local
306 cp = kmem_zalloc(sizeof (*cp), KM_SLEEP); in mp_cpu_configure_common()
308 cp = cpu_free_list; in mp_cpu_configure_common()
309 cpu_free_list = cp->cpu_next_free; in mp_cpu_configure_common()
312 cp->cpu_m.mcpu_istamp = cpun << 16; in mp_cpu_configure_common()
320 disp_cpu_init(cp); in mp_cpu_configure_common()
322 cpu_vm_data_init(cp); in mp_cpu_configure_common()
339 THREAD_ONPROC(tp, cp); in mp_cpu_configure_common()
341 tp->t_bound_cpu = cp; in mp_cpu_configure_common()
343 tp->t_cpu = cp; in mp_cpu_configure_common()
344 tp->t_disp_queue = cp->cpu_disp; in mp_cpu_configure_common()
361 cp->cpu_id = cpun; in mp_cpu_configure_common()
362 cp->cpu_self = cp; in mp_cpu_configure_common()
363 cp->cpu_thread = tp; in mp_cpu_configure_common()
364 cp->cpu_lwp = NULL; in mp_cpu_configure_common()
365 cp->cpu_dispthread = tp; in mp_cpu_configure_common()
366 cp->cpu_dispatch_pri = DISP_PRIO(tp); in mp_cpu_configure_common()
378 cp->cpu_base_spl = ipltospl(LOCK_LEVEL); in mp_cpu_configure_common()
385 cp->cpu_idle_thread = tp; in mp_cpu_configure_common()
388 tp->t_bound_cpu = cp; in mp_cpu_configure_common()
390 tp->t_cpu = cp; in mp_cpu_configure_common()
391 tp->t_disp_queue = cp->cpu_disp; in mp_cpu_configure_common()
396 pg_cpu_bootstrap(cp); in mp_cpu_configure_common()
401 kcpc_hw_init(cp); in mp_cpu_configure_common()
407 setup_vaddr_for_ppcopy(cp); in mp_cpu_configure_common()
413 ASSERT((sizeof (*cp->cpu_gdt) * NGDT) <= PAGESIZE); in mp_cpu_configure_common()
415 cp->cpu_gdt = kmem_zalloc(PAGESIZE, KM_SLEEP); in mp_cpu_configure_common()
416 bcopy(CPU->cpu_gdt, cp->cpu_gdt, (sizeof (*cp->cpu_gdt) * NGDT)); in mp_cpu_configure_common()
422 cp->cpu_m.mcpu_ldt = kmem_zalloc(LDT_CPU_SIZE, KM_SLEEP); in mp_cpu_configure_common()
423 cp->cpu_m.mcpu_ldt_len = 0; in mp_cpu_configure_common()
432 cp->cpu_idt = kmem_alloc(PAGESIZE, KM_SLEEP); in mp_cpu_configure_common()
433 bcopy(CPU->cpu_idt, cp->cpu_idt, PAGESIZE); in mp_cpu_configure_common()
438 cpuid_alloc_space(cp); in mp_cpu_configure_common()
442 cp->cpu_m.mcpu_mwait = cpuid_mwait_alloc(cp); in mp_cpu_configure_common()
443 cp->cpu_m.mcpu_idle_cpu = cpu_idle_mwait; in mp_cpu_configure_common()
446 cp->cpu_m.mcpu_idle_cpu = cpu_idle; in mp_cpu_configure_common()
448 init_cpu_info(cp); in mp_cpu_configure_common()
451 init_cpu_id_gdt(cp); in mp_cpu_configure_common()
457 ucode_alloc_space(cp); in mp_cpu_configure_common()
458 xc_init_cpu(cp); in mp_cpu_configure_common()
459 hat_cpu_online(cp); in mp_cpu_configure_common()
476 cpu_intr_alloc(cp, NINTR_THREADS); in mp_cpu_configure_common()
478 cp->cpu_flags = CPU_OFFLINE | CPU_QUIESCED | CPU_POWEROFF; in mp_cpu_configure_common()
479 cpu_set_state(cp); in mp_cpu_configure_common()
485 cpu_add_unit(cp); in mp_cpu_configure_common()
487 return (cp); in mp_cpu_configure_common()
494 mp_cpu_unconfigure_common(struct cpu *cp, int error) in mp_cpu_unconfigure_common() argument
501 cpu_del_unit(cp->cpu_id); in mp_cpu_unconfigure_common()
514 cp->cpu_flags = 0; in mp_cpu_unconfigure_common()
523 cpu_destroy_bound_threads(cp); in mp_cpu_unconfigure_common()
524 cp->cpu_idle_thread = NULL; in mp_cpu_unconfigure_common()
530 cp->cpu_intr_stack - (INTR_STACK_SIZE - SA(MINFRAME))); in mp_cpu_unconfigure_common()
531 cp->cpu_intr_stack = NULL; in mp_cpu_unconfigure_common()
538 trap_trace_ctl_t *ttc = &trap_trace_ctl[cp->cpu_id]; in mp_cpu_unconfigure_common()
545 hat_cpu_offline(cp); in mp_cpu_unconfigure_common()
547 ucode_free_space(cp); in mp_cpu_unconfigure_common()
550 if (cp->cpu_idstr) { in mp_cpu_unconfigure_common()
551 kmem_free(cp->cpu_idstr, CPU_IDSTRLEN); in mp_cpu_unconfigure_common()
552 cp->cpu_idstr = NULL; in mp_cpu_unconfigure_common()
554 if (cp->cpu_brandstr) { in mp_cpu_unconfigure_common()
555 kmem_free(cp->cpu_brandstr, CPU_IDSTRLEN); in mp_cpu_unconfigure_common()
556 cp->cpu_brandstr = NULL; in mp_cpu_unconfigure_common()
560 if (cp->cpu_m.mcpu_mwait != NULL) { in mp_cpu_unconfigure_common()
561 cpuid_mwait_free(cp); in mp_cpu_unconfigure_common()
562 cp->cpu_m.mcpu_mwait = NULL; in mp_cpu_unconfigure_common()
565 cpuid_free_space(cp); in mp_cpu_unconfigure_common()
567 if (cp->cpu_idt != CPU->cpu_idt) in mp_cpu_unconfigure_common()
568 kmem_free(cp->cpu_idt, PAGESIZE); in mp_cpu_unconfigure_common()
569 cp->cpu_idt = NULL; in mp_cpu_unconfigure_common()
571 kmem_free(cp->cpu_m.mcpu_ldt, LDT_CPU_SIZE); in mp_cpu_unconfigure_common()
572 cp->cpu_m.mcpu_ldt = NULL; in mp_cpu_unconfigure_common()
573 cp->cpu_m.mcpu_ldt_len = 0; in mp_cpu_unconfigure_common()
575 kmem_free(cp->cpu_gdt, PAGESIZE); in mp_cpu_unconfigure_common()
576 cp->cpu_gdt = NULL; in mp_cpu_unconfigure_common()
578 if (cp->cpu_supp_freqs != NULL) { in mp_cpu_unconfigure_common()
579 size_t len = strlen(cp->cpu_supp_freqs) + 1; in mp_cpu_unconfigure_common()
580 kmem_free(cp->cpu_supp_freqs, len); in mp_cpu_unconfigure_common()
581 cp->cpu_supp_freqs = NULL; in mp_cpu_unconfigure_common()
584 teardown_vaddr_for_ppcopy(cp); in mp_cpu_unconfigure_common()
586 kcpc_hw_fini(cp); in mp_cpu_unconfigure_common()
588 cp->cpu_dispthread = NULL; in mp_cpu_unconfigure_common()
589 cp->cpu_thread = NULL; /* discarded by cpu_destroy_bound_threads() */ in mp_cpu_unconfigure_common()
591 cpu_vm_data_destroy(cp); in mp_cpu_unconfigure_common()
593 xc_fini_cpu(cp); in mp_cpu_unconfigure_common()
594 disp_cpu_fini(cp); in mp_cpu_unconfigure_common()
596 ASSERT(cp != CPU0); in mp_cpu_unconfigure_common()
597 bzero(cp, sizeof (*cp)); in mp_cpu_unconfigure_common()
598 cp->cpu_next_free = cpu_free_list; in mp_cpu_unconfigure_common()
599 cpu_free_list = cp; in mp_cpu_unconfigure_common()
686 workaround_warning(cpu_t *cp, uint_t erratum) in workaround_warning() argument
689 cp->cpu_id, erratum); in workaround_warning()
704 msr_warning(cpu_t *cp, const char *rw, uint_t msr, int error) in msr_warning() argument
707 cp->cpu_id, rw, msr, error); in msr_warning()
1361 mp_start_cpu_common(cpu_t *cp, boolean_t boot) in mp_start_cpu_common() argument
1374 ASSERT(cp != NULL); in mp_start_cpu_common()
1375 cpuid = cp->cpu_id; in mp_start_cpu_common()
1376 ctx = mach_cpucontext_alloc(cp); in mp_start_cpu_common()
1379 "cpu%d: failed to allocate context", cp->cpu_id); in mp_start_cpu_common()
1382 error = mach_cpu_start(cp, ctx); in mp_start_cpu_common()
1385 "cpu%d: failed to start, error %d", cp->cpu_id, error); in mp_start_cpu_common()
1386 mach_cpucontext_free(cp, ctx, error); in mp_start_cpu_common()
1405 mach_cpucontext_free(cp, ctx, error); in mp_start_cpu_common()
1417 mach_cpucontext_free(cp, ctx, 0); in mp_start_cpu_common()
1442 cpupm_init(cp); in mp_start_cpu_common()
1444 (void) pg_cpu_init(cp, B_FALSE); in mp_start_cpu_common()
1445 cpu_set_state(cp); in mp_start_cpu_common()
1461 cpu_t *cp; in start_cpu() local
1483 cp = mp_cpu_configure_common(who, B_TRUE); in start_cpu()
1484 ASSERT(cp != NULL); in start_cpu()
1489 error = mp_start_cpu_common(cp, B_TRUE); in start_cpu()
1491 mp_cpu_unconfigure_common(cp, error); in start_cpu()
1629 cpu_t *cp; in mp_cpu_configure() local
1635 cp = cpu_get(cpuid); in mp_cpu_configure()
1636 if (cp != NULL) { in mp_cpu_configure()
1653 cp = mp_cpu_configure_common(cpuid, B_FALSE); in mp_cpu_configure()
1654 ASSERT(cp != NULL && cpu_get(cpuid) == cp); in mp_cpu_configure()
1656 return (cp != NULL ? 0 : EAGAIN); in mp_cpu_configure()
1662 cpu_t *cp; in mp_cpu_unconfigure() local
1670 cp = cpu_get(cpuid); in mp_cpu_unconfigure()
1671 if (cp == NULL) { in mp_cpu_unconfigure()
1674 mp_cpu_unconfigure_common(cp, 0); in mp_cpu_unconfigure()
1690 cpu_t *cp = CPU; in mp_startup_common() local
1707 cpuid_execpass(cp, CPUID_PASS_PRELUDE, new_x86_featureset); in mp_startup_common()
1708 cpuid_execpass(cp, CPUID_PASS_IDENT, NULL); in mp_startup_common()
1709 cpuid_execpass(cp, CPUID_PASS_BASIC, new_x86_featureset); in mp_startup_common()
1720 mp_startup_signal(&procset_slave, cp->cpu_id); in mp_startup_common()
1747 (void) wrmsr(MSR_AMD_TSCAUX, cp->cpu_id); in mp_startup_common()
1752 init_cpu_syscall(cp); in mp_startup_common()
1790 if (workaround_errata(cp) != 0) in mp_startup_common()
1791 panic("critical workaround(s) missing for cpu%d", cp->cpu_id); in mp_startup_common()
1803 cp->cpu_flags &= ~(CPU_POWEROFF | CPU_QUIESCED); in mp_startup_common()
1811 xsave_setup_msr(cp); in mp_startup_common()
1814 cpuid_execpass(cp, CPUID_PASS_EXTENDED, NULL); in mp_startup_common()
1815 cpuid_execpass(cp, CPUID_PASS_DYNAMIC, NULL); in mp_startup_common()
1816 cpuid_execpass(cp, CPUID_PASS_RESOLVE, NULL); in mp_startup_common()
1822 (void) cpuid_getidstr(cp, cp->cpu_idstr, CPU_IDSTRLEN); in mp_startup_common()
1823 (void) cpuid_getbrandstr(cp, cp->cpu_brandstr, CPU_IDSTRLEN); in mp_startup_common()
1825 cp->cpu_flags |= CPU_RUNNING | CPU_READY | CPU_EXISTS; in mp_startup_common()
1829 cpu_event_init_cpu(cp); in mp_startup_common()
1842 ASSERT(cp->cpu_base_spl == ipltospl(LOCK_LEVEL)); in mp_startup_common()
1845 pghw_physid_create(cp); in mp_startup_common()
1851 mp_startup_signal(&procset_slave, cp->cpu_id); in mp_startup_common()
1852 mp_startup_wait(&procset_master, cp->cpu_id); in mp_startup_common()
1853 pg_cmt_cpu_startup(cp); in mp_startup_common()
1857 cp->cpu_flags &= ~CPU_OFFLINE; in mp_startup_common()
1858 cpu_enable_intr(cp); in mp_startup_common()
1859 cpu_add_active(cp); in mp_startup_common()
1871 ucode_check(cp); in mp_startup_common()
1872 cpuid_pass_ucode(cp, new_x86_featureset); in mp_startup_common()
1885 cmn_err(CE_CONT, "cpu%d: featureset\n", cp->cpu_id); in mp_startup_common()
1887 cmn_err(CE_WARN, "cpu%d feature mismatch", cp->cpu_id); in mp_startup_common()
1905 cp->cpu_m.mcpu_cmi_hdl = hdl; in mp_startup_common()
1913 (void) mach_cpu_create_device_node(cp, NULL); in mp_startup_common()
1920 CPUSET_ATOMIC_ADD(cpu_ready_set, cp->cpu_id); in mp_startup_common()
1922 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_idstr); in mp_startup_common()
1923 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_brandstr); in mp_startup_common()
1925 cp->cpu_id); in mp_startup_common()
1957 mp_cpu_start(struct cpu *cp) in mp_cpu_start() argument
1967 mp_cpu_stop(struct cpu *cp) in mp_cpu_stop() argument
1976 if (cp->cpu_id == 0) in mp_cpu_stop()
1985 if ((cbe_psm_timer_mode == TIMER_PERIODIC) && (cp->cpu_id == 0)) in mp_cpu_stop()
1999 cpu_disable_intr(struct cpu *cp) in cpu_disable_intr() argument
2001 if (psm_disable_intr(cp->cpu_id) != DDI_SUCCESS) in cpu_disable_intr()
2004 cp->cpu_flags &= ~CPU_ENABLE; in cpu_disable_intr()
2013 cpu_enable_intr(struct cpu *cp) in cpu_enable_intr() argument
2016 cp->cpu_flags |= CPU_ENABLE; in cpu_enable_intr()
2018 psm_enable_intr(cp->cpu_id); in cpu_enable_intr()
2022 mp_cpu_faulted_enter(struct cpu *cp) in mp_cpu_faulted_enter() argument
2025 _NOTE(ARGUNUSED(cp)); in mp_cpu_faulted_enter()
2027 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl; in mp_cpu_faulted_enter()
2032 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp), in mp_cpu_faulted_enter()
2033 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp)); in mp_cpu_faulted_enter()
2043 mp_cpu_faulted_exit(struct cpu *cp) in mp_cpu_faulted_exit() argument
2046 _NOTE(ARGUNUSED(cp)); in mp_cpu_faulted_exit()
2048 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl; in mp_cpu_faulted_exit()
2053 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp), in mp_cpu_faulted_exit()
2054 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp)); in mp_cpu_faulted_exit()