1654 /* Let the control CPU continue into tsc_sync_master() */
1655 mp_startup_signal(&procset_slave, cp->cpu_id);
1656
1657 #ifndef __xpv
1658 if (tsc_gethrtime_enable)
1659 tsc_sync_slave();
1660 #endif
1661
1662 /*
1663 * Once this was done from assembly, but it's safer here; if
1664 * it blocks, we need to be able to swtch() to and from, and
1665 * since we get here by calling t_pc, we need to do that call
1666 * before swtch() overwrites it.
1667 */
1668 (void) (*ap_mlsetup)();
1669
1670 #ifndef __xpv
1671 /*
1672 * Program this cpu's PAT
1673 */
1674 if (is_x86_feature(x86_featureset, X86FSET_PAT))
1675 pat_sync();
1676 #endif
1677
1678 /*
1679 * Set up TSC_AUX to contain the cpuid for this processor
1680 * for the rdtscp instruction.
1681 */
1682 if (is_x86_feature(x86_featureset, X86FSET_TSCP))
1683 (void) wrmsr(MSR_AMD_TSCAUX, cp->cpu_id);
1684
1685 /*
1686 * Initialize this CPU's syscall handlers
1687 */
1688 init_cpu_syscall(cp);
1689
1690 /*
1691 * Enable interrupts with spl set to LOCK_LEVEL. LOCK_LEVEL is the
1692 * highest level at which a routine is permitted to block on
1693 * an adaptive mutex (allows for cpu poke interrupt in case
1694 * the cpu is blocked on a mutex and halts). Setting LOCK_LEVEL blocks
|
1654 /* Let the control CPU continue into tsc_sync_master() */
1655 mp_startup_signal(&procset_slave, cp->cpu_id);
1656
1657 #ifndef __xpv
1658 if (tsc_gethrtime_enable)
1659 tsc_sync_slave();
1660 #endif
1661
1662 /*
1663 * Once this was done from assembly, but it's safer here; if
1664 * it blocks, we need to be able to swtch() to and from, and
1665 * since we get here by calling t_pc, we need to do that call
1666 * before swtch() overwrites it.
1667 */
1668 (void) (*ap_mlsetup)();
1669
1670 #ifndef __xpv
1671 /*
1672 * Program this cpu's PAT
1673 */
1674 pat_sync();
1675 #endif
1676
1677 /*
1678 * Set up TSC_AUX to contain the cpuid for this processor
1679 * for the rdtscp instruction.
1680 */
1681 if (is_x86_feature(x86_featureset, X86FSET_TSCP))
1682 (void) wrmsr(MSR_AMD_TSCAUX, cp->cpu_id);
1683
1684 /*
1685 * Initialize this CPU's syscall handlers
1686 */
1687 init_cpu_syscall(cp);
1688
1689 /*
1690 * Enable interrupts with spl set to LOCK_LEVEL. LOCK_LEVEL is the
1691 * highest level at which a routine is permitted to block on
1692 * an adaptive mutex (allows for cpu poke interrupt in case
1693 * the cpu is blocked on a mutex and halts). Setting LOCK_LEVEL blocks
|