Print this page
XXXX pat_sync is clever enough to check for X86FSET_PAT


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