* a timeout if long-running interrupt were to occur here.
*/
intrs_enabled = ml_set_interrupts_enabled(FALSE);
- simple_lock(&x86_topo_lock);
+ mp_safe_spin_lock(&x86_topo_lock);
/* Set a generous timeout of several seconds (in TSC ticks) */
tsc_timeout = rdtsc64() + (10ULL * 1000 * 1000 * 1000);
while ((cdp->lcpu.state != LCPU_HALT)
if (rdtsc64() > tsc_timeout)
panic("cpu_exit_wait(%d) timeout", cpu);
ml_set_interrupts_enabled(FALSE);
- simple_lock(&x86_topo_lock);
+ mp_safe_spin_lock(&x86_topo_lock);
}
simple_unlock(&x86_topo_lock);
ml_set_interrupts_enabled(intrs_enabled);
ml_init_interrupt();
#if CONFIG_VMX
- /* for every CPU, get the VT specs */
- vmx_get_specs();
+ /* initialize VMX for every CPU */
+ vmx_cpu_init();
#endif
}
if (is_boot_cpu)
return &processor_master;
- ret = kmem_alloc(kernel_map, (vm_offset_t *) &proc, sizeof(*proc));
+ ret = kmem_alloc(kernel_map, (vm_offset_t *) &proc, sizeof(*proc), VM_KERN_MEMORY_OSFMK);
if (ret != KERN_SUCCESS)
return NULL;