Lines Matching refs:cp
123 init_cpu_info(struct cpu *cp) in init_cpu_info() argument
125 processor_info_t *pi = &cp->cpu_type_info; in init_cpu_info()
135 cp->cpu_curr_clock = cpu_freq_hz; in init_cpu_info()
140 if (cp->cpu_supp_freqs == NULL) { in init_cpu_info()
141 cpu_set_supp_freqs(cp, NULL); in init_cpu_info()
148 cp->cpu_idstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP); in init_cpu_info()
149 cp->cpu_brandstr = kmem_zalloc(CPU_IDSTRLEN, KM_SLEEP); in init_cpu_info()
158 (void) cpuid_getidstr(CPU, cp->cpu_idstr, CPU_IDSTRLEN); in init_cpu_info()
159 (void) cpuid_getbrandstr(CPU, cp->cpu_brandstr, CPU_IDSTRLEN); in init_cpu_info()
167 init_cpu_syscall(struct cpu *cp) in init_cpu_syscall() argument
251 init_cpu_id_gdt(struct cpu *cp) in init_cpu_id_gdt() argument
255 set_usegd(&cp->cpu_gdt[GDT_CPUID], SDP_SHORT, NULL, cp->cpu_id, in init_cpu_id_gdt()
258 set_usegd(&cp->cpu_gdt[GDT_CPUID], NULL, cp->cpu_id, SDT_MEMRODA, in init_cpu_id_gdt()
275 struct cpu *cp; in mp_cpu_configure_common() local
294 cp = kmem_zalloc(sizeof (*cp), KM_SLEEP); in mp_cpu_configure_common()
296 cp = cpu_free_list; in mp_cpu_configure_common()
297 cpu_free_list = cp->cpu_next_free; in mp_cpu_configure_common()
300 cp->cpu_m.mcpu_istamp = cpun << 16; in mp_cpu_configure_common()
308 disp_cpu_init(cp); in mp_cpu_configure_common()
310 cpu_vm_data_init(cp); in mp_cpu_configure_common()
327 THREAD_ONPROC(tp, cp); in mp_cpu_configure_common()
329 tp->t_bound_cpu = cp; in mp_cpu_configure_common()
331 tp->t_cpu = cp; in mp_cpu_configure_common()
332 tp->t_disp_queue = cp->cpu_disp; in mp_cpu_configure_common()
351 cp->cpu_id = cpun; in mp_cpu_configure_common()
352 cp->cpu_self = cp; in mp_cpu_configure_common()
353 cp->cpu_thread = tp; in mp_cpu_configure_common()
354 cp->cpu_lwp = NULL; in mp_cpu_configure_common()
355 cp->cpu_dispthread = tp; in mp_cpu_configure_common()
356 cp->cpu_dispatch_pri = DISP_PRIO(tp); in mp_cpu_configure_common()
368 cp->cpu_base_spl = ipltospl(LOCK_LEVEL); in mp_cpu_configure_common()
375 cp->cpu_idle_thread = tp; in mp_cpu_configure_common()
378 tp->t_bound_cpu = cp; in mp_cpu_configure_common()
380 tp->t_cpu = cp; in mp_cpu_configure_common()
381 tp->t_disp_queue = cp->cpu_disp; in mp_cpu_configure_common()
386 pg_cpu_bootstrap(cp); in mp_cpu_configure_common()
391 kcpc_hw_init(cp); in mp_cpu_configure_common()
397 setup_vaddr_for_ppcopy(cp); in mp_cpu_configure_common()
403 ASSERT((sizeof (*cp->cpu_gdt) * NGDT) <= PAGESIZE); in mp_cpu_configure_common()
405 cp->cpu_gdt = kmem_zalloc(PAGESIZE, KM_SLEEP); in mp_cpu_configure_common()
406 bcopy(CPU->cpu_gdt, cp->cpu_gdt, (sizeof (*cp->cpu_gdt) * NGDT)); in mp_cpu_configure_common()
412 set_usegd(&cp->cpu_gdt[GDT_GS], cp, sizeof (struct cpu) -1, SDT_MEMRWA, in mp_cpu_configure_common()
426 cp->cpu_idt = kmem_zalloc(PAGESIZE, KM_SLEEP); in mp_cpu_configure_common()
427 bcopy(CPU->cpu_idt, cp->cpu_idt, PAGESIZE); in mp_cpu_configure_common()
429 cp->cpu_idt = CPU->cpu_idt; in mp_cpu_configure_common()
435 cpuid_alloc_space(cp); in mp_cpu_configure_common()
439 cp->cpu_m.mcpu_mwait = cpuid_mwait_alloc(cp); in mp_cpu_configure_common()
440 cp->cpu_m.mcpu_idle_cpu = cpu_idle_mwait; in mp_cpu_configure_common()
443 cp->cpu_m.mcpu_idle_cpu = cpu_idle; in mp_cpu_configure_common()
445 init_cpu_info(cp); in mp_cpu_configure_common()
448 init_cpu_id_gdt(cp); in mp_cpu_configure_common()
454 ucode_alloc_space(cp); in mp_cpu_configure_common()
455 xc_init_cpu(cp); in mp_cpu_configure_common()
456 hat_cpu_online(cp); in mp_cpu_configure_common()
473 cpu_intr_alloc(cp, NINTR_THREADS); in mp_cpu_configure_common()
475 cp->cpu_flags = CPU_OFFLINE | CPU_QUIESCED | CPU_POWEROFF; in mp_cpu_configure_common()
476 cpu_set_state(cp); in mp_cpu_configure_common()
482 cpu_add_unit(cp); in mp_cpu_configure_common()
484 return (cp); in mp_cpu_configure_common()
491 mp_cpu_unconfigure_common(struct cpu *cp, int error) in mp_cpu_unconfigure_common() argument
498 cpu_del_unit(cp->cpu_id); in mp_cpu_unconfigure_common()
511 cp->cpu_flags = 0; in mp_cpu_unconfigure_common()
520 cpu_destroy_bound_threads(cp); in mp_cpu_unconfigure_common()
521 cp->cpu_idle_thread = NULL; in mp_cpu_unconfigure_common()
527 cp->cpu_intr_stack - (INTR_STACK_SIZE - SA(MINFRAME))); in mp_cpu_unconfigure_common()
528 cp->cpu_intr_stack = NULL; in mp_cpu_unconfigure_common()
535 trap_trace_ctl_t *ttc = &trap_trace_ctl[cp->cpu_id]; in mp_cpu_unconfigure_common()
542 hat_cpu_offline(cp); in mp_cpu_unconfigure_common()
544 ucode_free_space(cp); in mp_cpu_unconfigure_common()
547 if (cp->cpu_idstr) { in mp_cpu_unconfigure_common()
548 kmem_free(cp->cpu_idstr, CPU_IDSTRLEN); in mp_cpu_unconfigure_common()
549 cp->cpu_idstr = NULL; in mp_cpu_unconfigure_common()
551 if (cp->cpu_brandstr) { in mp_cpu_unconfigure_common()
552 kmem_free(cp->cpu_brandstr, CPU_IDSTRLEN); in mp_cpu_unconfigure_common()
553 cp->cpu_brandstr = NULL; in mp_cpu_unconfigure_common()
557 if (cp->cpu_m.mcpu_mwait != NULL) { in mp_cpu_unconfigure_common()
558 cpuid_mwait_free(cp); in mp_cpu_unconfigure_common()
559 cp->cpu_m.mcpu_mwait = NULL; in mp_cpu_unconfigure_common()
562 cpuid_free_space(cp); in mp_cpu_unconfigure_common()
564 if (cp->cpu_idt != CPU->cpu_idt) in mp_cpu_unconfigure_common()
565 kmem_free(cp->cpu_idt, PAGESIZE); in mp_cpu_unconfigure_common()
566 cp->cpu_idt = NULL; in mp_cpu_unconfigure_common()
568 kmem_free(cp->cpu_gdt, PAGESIZE); in mp_cpu_unconfigure_common()
569 cp->cpu_gdt = NULL; in mp_cpu_unconfigure_common()
571 if (cp->cpu_supp_freqs != NULL) { in mp_cpu_unconfigure_common()
572 size_t len = strlen(cp->cpu_supp_freqs) + 1; in mp_cpu_unconfigure_common()
573 kmem_free(cp->cpu_supp_freqs, len); in mp_cpu_unconfigure_common()
574 cp->cpu_supp_freqs = NULL; in mp_cpu_unconfigure_common()
577 teardown_vaddr_for_ppcopy(cp); in mp_cpu_unconfigure_common()
579 kcpc_hw_fini(cp); in mp_cpu_unconfigure_common()
581 cp->cpu_dispthread = NULL; in mp_cpu_unconfigure_common()
582 cp->cpu_thread = NULL; /* discarded by cpu_destroy_bound_threads() */ in mp_cpu_unconfigure_common()
584 cpu_vm_data_destroy(cp); in mp_cpu_unconfigure_common()
586 xc_fini_cpu(cp); in mp_cpu_unconfigure_common()
587 disp_cpu_fini(cp); in mp_cpu_unconfigure_common()
589 ASSERT(cp != CPU0); in mp_cpu_unconfigure_common()
590 bzero(cp, sizeof (*cp)); in mp_cpu_unconfigure_common()
591 cp->cpu_next_free = cpu_free_list; in mp_cpu_unconfigure_common()
592 cpu_free_list = cp; in mp_cpu_unconfigure_common()
679 workaround_warning(cpu_t *cp, uint_t erratum) in workaround_warning() argument
682 cp->cpu_id, erratum); in workaround_warning()
697 msr_warning(cpu_t *cp, const char *rw, uint_t msr, int error) in msr_warning() argument
700 cp->cpu_id, rw, msr, error); in msr_warning()
1349 mp_start_cpu_common(cpu_t *cp, boolean_t boot) in mp_start_cpu_common() argument
1362 ASSERT(cp != NULL); in mp_start_cpu_common()
1363 cpuid = cp->cpu_id; in mp_start_cpu_common()
1364 ctx = mach_cpucontext_alloc(cp); in mp_start_cpu_common()
1367 "cpu%d: failed to allocate context", cp->cpu_id); in mp_start_cpu_common()
1370 error = mach_cpu_start(cp, ctx); in mp_start_cpu_common()
1373 "cpu%d: failed to start, error %d", cp->cpu_id, error); in mp_start_cpu_common()
1374 mach_cpucontext_free(cp, ctx, error); in mp_start_cpu_common()
1393 mach_cpucontext_free(cp, ctx, error); in mp_start_cpu_common()
1405 mach_cpucontext_free(cp, ctx, 0); in mp_start_cpu_common()
1430 cpupm_init(cp); in mp_start_cpu_common()
1432 (void) pg_cpu_init(cp, B_FALSE); in mp_start_cpu_common()
1433 cpu_set_state(cp); in mp_start_cpu_common()
1449 cpu_t *cp; in start_cpu() local
1471 cp = mp_cpu_configure_common(who, B_TRUE); in start_cpu()
1472 ASSERT(cp != NULL); in start_cpu()
1477 error = mp_start_cpu_common(cp, B_TRUE); in start_cpu()
1479 mp_cpu_unconfigure_common(cp, error); in start_cpu()
1596 cpu_t *cp; in mp_cpu_configure() local
1602 cp = cpu_get(cpuid); in mp_cpu_configure()
1603 if (cp != NULL) { in mp_cpu_configure()
1620 cp = mp_cpu_configure_common(cpuid, B_FALSE); in mp_cpu_configure()
1621 ASSERT(cp != NULL && cpu_get(cpuid) == cp); in mp_cpu_configure()
1623 return (cp != NULL ? 0 : EAGAIN); in mp_cpu_configure()
1629 cpu_t *cp; in mp_cpu_unconfigure() local
1637 cp = cpu_get(cpuid); in mp_cpu_unconfigure()
1638 if (cp == NULL) { in mp_cpu_unconfigure()
1641 mp_cpu_unconfigure_common(cp, 0); in mp_cpu_unconfigure()
1657 cpu_t *cp = CPU; in mp_startup_common() local
1670 cpuid_pass1(cp, new_x86_featureset); in mp_startup_common()
1681 mp_startup_signal(&procset_slave, cp->cpu_id); in mp_startup_common()
1708 (void) wrmsr(MSR_AMD_TSCAUX, cp->cpu_id); in mp_startup_common()
1713 init_cpu_syscall(cp); in mp_startup_common()
1737 cmn_err(CE_CONT, "cpu%d: featureset\n", cp->cpu_id); in mp_startup_common()
1739 cmn_err(CE_WARN, "cpu%d feature mismatch", cp->cpu_id); in mp_startup_common()
1756 if (workaround_errata(cp) != 0) in mp_startup_common()
1757 panic("critical workaround(s) missing for cpu%d", cp->cpu_id); in mp_startup_common()
1769 cp->cpu_flags &= ~(CPU_POWEROFF | CPU_QUIESCED); in mp_startup_common()
1775 xsave_setup_msr(cp); in mp_startup_common()
1778 cpuid_pass2(cp); in mp_startup_common()
1779 cpuid_pass3(cp); in mp_startup_common()
1780 cpuid_pass4(cp, NULL); in mp_startup_common()
1786 (void) cpuid_getidstr(cp, cp->cpu_idstr, CPU_IDSTRLEN); in mp_startup_common()
1787 (void) cpuid_getbrandstr(cp, cp->cpu_brandstr, CPU_IDSTRLEN); in mp_startup_common()
1789 cp->cpu_flags |= CPU_RUNNING | CPU_READY | CPU_EXISTS; in mp_startup_common()
1793 cpu_event_init_cpu(cp); in mp_startup_common()
1806 ASSERT(cp->cpu_base_spl == ipltospl(LOCK_LEVEL)); in mp_startup_common()
1809 pghw_physid_create(cp); in mp_startup_common()
1815 mp_startup_signal(&procset_slave, cp->cpu_id); in mp_startup_common()
1816 mp_startup_wait(&procset_master, cp->cpu_id); in mp_startup_common()
1817 pg_cmt_cpu_startup(cp); in mp_startup_common()
1821 cp->cpu_flags &= ~CPU_OFFLINE; in mp_startup_common()
1822 cpu_enable_intr(cp); in mp_startup_common()
1823 cpu_add_active(cp); in mp_startup_common()
1833 ucode_check(cp); in mp_startup_common()
1850 cp->cpu_m.mcpu_cmi_hdl = hdl; in mp_startup_common()
1858 (void) mach_cpu_create_device_node(cp, NULL); in mp_startup_common()
1865 CPUSET_ATOMIC_ADD(cpu_ready_set, cp->cpu_id); in mp_startup_common()
1867 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_idstr); in mp_startup_common()
1868 cmn_err(CE_CONT, "?cpu%d: %s\n", cp->cpu_id, cp->cpu_brandstr); in mp_startup_common()
1870 cp->cpu_id); in mp_startup_common()
1903 mp_cpu_start(struct cpu *cp) in mp_cpu_start() argument
1913 mp_cpu_stop(struct cpu *cp) in mp_cpu_stop() argument
1922 if (cp->cpu_id == 0) in mp_cpu_stop()
1931 if ((cbe_psm_timer_mode == TIMER_PERIODIC) && (cp->cpu_id == 0)) in mp_cpu_stop()
1941 cpu_disable_intr(struct cpu *cp) in cpu_disable_intr() argument
1943 if (psm_disable_intr(cp->cpu_id) != DDI_SUCCESS) in cpu_disable_intr()
1946 cp->cpu_flags &= ~CPU_ENABLE; in cpu_disable_intr()
1954 cpu_enable_intr(struct cpu *cp) in cpu_enable_intr() argument
1957 cp->cpu_flags |= CPU_ENABLE; in cpu_enable_intr()
1958 psm_enable_intr(cp->cpu_id); in cpu_enable_intr()
1962 mp_cpu_faulted_enter(struct cpu *cp) in mp_cpu_faulted_enter() argument
1965 _NOTE(ARGUNUSED(cp)); in mp_cpu_faulted_enter()
1967 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl; in mp_cpu_faulted_enter()
1972 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp), in mp_cpu_faulted_enter()
1973 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp)); in mp_cpu_faulted_enter()
1983 mp_cpu_faulted_exit(struct cpu *cp) in mp_cpu_faulted_exit() argument
1986 _NOTE(ARGUNUSED(cp)); in mp_cpu_faulted_exit()
1988 cmi_hdl_t hdl = cp->cpu_m.mcpu_cmi_hdl; in mp_cpu_faulted_exit()
1993 hdl = cmi_hdl_lookup(CMI_HDL_NATIVE, cmi_ntv_hwchipid(cp), in mp_cpu_faulted_exit()
1994 cmi_ntv_hwcoreid(cp), cmi_ntv_hwstrandid(cp)); in mp_cpu_faulted_exit()