/* * Setup vcpu_info for boot CPU. Secondary CPUs get their vcpu_info * in xen_cpu_up_prepare_hvm().
*/
xen_vcpu_setup(0);
/* * Called again in case the kernel boots on vcpu >= MAX_VIRT_CPUS. * Refer to comments in xen_hvm_init_time_ops().
*/
xen_hvm_init_time_ops();
/* * The alternative logic (which patches the unlock/lock) runs before * the smp bootup up code is activated. Hence we need to set this up * the core kernel is being patched. Otherwise we will have only * modules patched but not core code.
*/
xen_init_spinlocks();
}
staticvoid __init xen_hvm_smp_prepare_cpus(unsignedint max_cpus)
{ int cpu;
native_smp_prepare_cpus(max_cpus);
if (xen_have_vector_callback) {
WARN_ON(xen_smp_intr_init(0));
xen_init_lock_cpu(0);
}
for_each_possible_cpu(cpu) { if (cpu == 0) continue;
/* Set default vcpu_id to make sure that we don't use cpu-0's */
per_cpu(xen_vcpu_id, cpu) = XEN_VCPU_ID_INVALID;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.