Lines Matching refs:cp

123 init_cpu_info(struct cpu *cp)
125 processor_info_t *pi = &cp->cpu_type_info;
135 cp->cpu_curr_clock = cpu_freq_hz;
140 if (cp->cpu_supp_freqs == NULL) {
141 cpu_set_supp_freqs(cp, NULL);
148 cp->cpu_idstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP);
149 cp->cpu_brandstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP);
152 * If called for the BSP, cp is equal to current CPU.
153 * For non-BSPs, cpuid info of cp is not ready yet, so use cpuid info
158 (void) cpuid_getidstr(CPU, cp->cpu_idstr, CPU_IDSTRLEN);
159 (void) cpuid_getbrandstr(CPU, cp->cpu_brandstr, CPU_IDSTRLEN);
167 init_cpu_syscall(struct cpu *cp)
261 struct cpu *cp;
280 cp = kmem_zalloc(sizeof (*cp), KM_SLEEP);
282 cp = cpu_free_list;
283 cpu_free_list = cp->cpu_next_free;
286 cp->cpu_m.mcpu_istamp = cpun << 16;
294 disp_cpu_init(cp);
296 cpu_vm_data_init(cp);
313 THREAD_ONPROC(tp, cp);
315 tp->t_bound_cpu = cp;
317 tp->t_cpu = cp;
318 tp->t_disp_queue = cp->cpu_disp;
337 cp->cpu_id = cpun;
338 cp->cpu_self = cp;
339 cp->cpu_thread = tp;
340 cp->cpu_lwp = NULL;
341 cp->cpu_dispthread = tp;
342 cp->cpu_dispatch_pri = DISP_PRIO(tp);
354 cp->cpu_base_spl = ipltospl(LOCK_LEVEL);
361 cp->cpu_idle_thread = tp;
364 tp->t_bound_cpu = cp;
366 tp->t_cpu = cp;
367 tp->t_disp_queue = cp->cpu_disp;
372 pg_cpu_bootstrap(cp);
377 kcpc_hw_init(cp);
383 setup_vaddr_for_ppcopy(cp);
389 ASSERT((sizeof (*cp->cpu_gdt) * NGDT) <= PAGESIZE);
391 cp->cpu_gdt = kmem_zalloc(PAGESIZE, KM_SLEEP);
392 bcopy(CPU->cpu_gdt, cp->cpu_gdt, (sizeof (*cp->cpu_gdt) * NGDT));
398 set_usegd(&cp->cpu_gdt[GDT_GS], cp, sizeof (struct cpu) -1, SDT_MEMRWA,
412 cp->cpu_idt = kmem_zalloc(PAGESIZE, KM_SLEEP);
413 bcopy(CPU->cpu_idt, cp->cpu_idt, PAGESIZE);
415 cp->cpu_idt = CPU->cpu_idt;
421 cpuid_alloc_space(cp);
425 cp->cpu_m.mcpu_mwait = cpuid_mwait_alloc(cp);
426 cp->cpu_m.mcpu_idle_cpu = cpu_idle_mwait;
429 cp->cpu_m.mcpu_idle_cpu = cpu_idle;
431 init_cpu_info(cp);
436 ucode_alloc_space(cp);
437 xc_init_cpu(cp);
438 hat_cpu_online(cp);
455 cpu_intr_alloc(cp, NINTR_THREADS);
457 cp->cpu_flags = CPU_OFFLINE | CPU_QUIESCED | CPU_POWEROFF;
458 cpu_set_state(cp);
464 cpu_add_unit(cp);
466 return (cp);
473 mp_cpu_unconfigure_common(struct cpu *cp, int error)
480 cpu_del_unit(cp->cpu_id);
493 cp->cpu_flags = 0;
502 cpu_destroy_bound_threads(cp);
503 cp->cpu_idle_thread = NULL;
509 cp->cpu_intr_stack - (INTR_STACK_SIZE - SA(MINFRAME)));
510 cp->cpu_intr_stack = NULL;
517 trap_trace_ctl_t *ttc = &trap_trace_ctl[cp->cpu_id];
524 hat_cpu_offline(cp);
526 ucode_free_space(cp);
529 if (cp->cpu_idstr) {
530 kmem_free(cp->cpu_idstr, CPU_IDSTRLEN);
531 cp->cpu_idstr = NULL;
533 if (cp->cpu_brandstr) {
534 kmem_free(cp->cpu_brandstr, CPU_IDSTRLEN);
535 cp->cpu_brandstr = NULL;
539 if (cp->cpu_m.mcpu_mwait != NULL) {
540 cpuid_mwait_free(cp);
541 cp->cpu_m.mcpu_mwait = NULL;
544 cpuid_free_space(cp);
546 if (cp->cpu_idt != CPU->cpu_idt)
547 kmem_free(cp->cpu_idt, PAGESIZE);
548 cp->cpu_idt = NULL;
550 kmem_free(cp->cpu_gdt, PAGESIZE);
551 cp->cpu_gdt = NULL;
553 if (cp->cpu_supp_freqs != NULL) {
554 size_t len = strlen(cp->cpu_supp_freqs) + 1;
555 kmem_free(cp->cpu_supp_freqs, len);
556 cp->cpu_supp_freqs = NULL;
559 teardown_vaddr_for_ppcopy(cp);
561 kcpc_hw_fini(cp);
563 cp->cpu_dispthread = NULL;
564 cp->cpu_thread = NULL; /* discarded by cpu_destroy_bound_threads() */
566 cpu_vm_data_destroy(cp);
568 xc_fini_cpu(cp);
569 disp_cpu_fini(cp);
571 ASSERT(cp != CPU0);
572 bzero(cp, sizeof (*cp));
573 cp->cpu_next_free = cpu_free_list;
574 cpu_free_list = cp;
661 workaround_warning(cpu_t *cp, uint_t erratum)
664 cp->cpu_id, erratum);
679 msr_warning(cpu_t *cp, const char *rw, uint_t msr, int error)
682 cp->cpu_id, rw, msr, error);
1331 mp_start_cpu_common(cpu_t *cp, boolean_t boot)
1344 ASSERT(cp != NULL);
1345 cpuid = cp->cpu_id;
1346 ctx = mach_cpucontext_alloc(cp);
1349 "cpu%d: failed to allocate context", cp->cpu_id);
1352 error = mach_cpu_start(cp, ctx);
1355 "cpu%d: failed to start, error %d", cp->cpu_id, error);
1356 mach_cpucontext_free(cp, ctx, error);
1375 mach_cpucontext_free(cp, ctx, error);
1387 mach_cpucontext_free(cp, ctx, 0);
1412 cpupm_init(cp);
1414 (void) pg_cpu_init(cp, B_FALSE);
1415 cpu_set_state(cp);
1431 cpu_t *cp;
1453 cp = mp_cpu_configure_common(who, B_TRUE);
1454 ASSERT(cp != NULL);
1459 error = mp_start_cpu_common(cp, B_TRUE);
1461 mp_cpu_unconfigure_common(cp, error);
1574 cpu_t *cp;
1580 cp = cpu_get(cpuid);
1581 if (cp != NULL) {
1598 cp = mp_cpu_configure_common(cpuid, B_FALSE);
1599 ASSERT(cp != NULL && cpu_get(cpuid) == cp);
1601 return (cp != NULL ? 0 : EAGAIN);
1607 cpu_t *cp;
1615 cp = cpu_get(cpuid);
1616 if (cp == NULL) {
1619 mp_cpu_unconfigure_common(cp, 0);
1635 cpu_t *cp = CPU;
1648 cpuid_pass1(cp, new_x86_featureset);
1659 mp_startup_signal(&procset_slave, cp->cpu_id);
1686 (void) wrmsr(MSR_AMD_TSCAUX, cp->cpu_id);
1691 init_cpu_syscall(cp);
1715 cmn_err(CE_CONT, "cpu%d: featureset\n", cp->cpu_id);
1717 cmn_err(CE_WARN, "cpu%d feature mismatch", cp->cpu_id);
1745 if (workaround_errata(cp) != 0)
1746 panic("critical workaround(s) missing for cpu%d", cp->cpu_id);
1758 cp->cpu_flags &= ~(CPU_POWEROFF | CPU_QUIESCED);
1764 xsave_setup_msr(cp);
1767 cpuid_pass2(cp);
1768 cpuid_pass3(cp);
1769 cpuid_pass4(cp, NULL);
1775 (void) cpuid_getidstr(cp, cp->cpu_idstr, CPU_IDSTRLEN);
1776 (void) cpuid_getbrandstr(cp, cp->cpu_brandstr, CPU_IDSTRLEN);
1778 cp->cpu_flags |= CPU_RUNNING | CPU_READY | CPU_EXISTS;
1782 cpu_event_init_cpu(cp);
1795 ASSERT(cp->cpu_base_spl == ipltospl(LOCK_LEVEL));
1798 pghw_physid_create(cp);
1804 mp_startup_signal(&procset_slave, cp->cpu_id);
1805 mp_startup_wait(&procset_master, cp->cpu_id);
1806 pg_cmt_cpu_startup(cp);
1810 cp->cpu_flags &= ~CPU_OFFLINE;
1811 cpu_enable_intr(cp);
1812 cpu_add_active(cp);
1822 ucode_check(cp);
1839 cp->cpu_m.mcpu_cmi_hdl = hdl;
1852 CPUSET_ATOMIC_ADD(cpu_ready_set, cp->cpu_id);
1854 (void) mach_cpu_create_device_node(cp, NULL);
1856 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_idstr);
1857 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_brandstr);
1859 cp->cpu_id);
1892 mp_cpu_start(struct cpu *cp)
1902 mp_cpu_stop(struct cpu *cp)
1911 if (cp->cpu_id == 0)
1920 if ((cbe_psm_timer_mode == TIMER_PERIODIC) && (cp->cpu_id == 0))
1930 cpu_disable_intr(struct cpu *cp)
1932 if (psm_disable_intr(cp->cpu_id) != DDI_SUCCESS)
1935 cp->cpu_flags &= ~CPU_ENABLE;
1943 cpu_enable_intr(struct cpu *cp)
1946 cp->cpu_flags |= CPU_ENABLE;
1947 psm_enable_intr(cp->cpu_id);
1951 mp_cpu_faulted_enter(struct cpu *cp)
1954 _NOTE(ARGUNUSED(cp));
1956 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl;
1961 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp),
1962 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp));
1972 mp_cpu_faulted_exit(struct cpu *cp)
1975 _NOTE(ARGUNUSED(cp));
1977 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl;
1982 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp),
1983 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp));