Index: head-2005-12-07/arch/x86_64/kernel/mpparse-xen.c =================================================================== --- head-2005-12-07.orig/arch/x86_64/kernel/mpparse-xen.c 2005-12-07 10:58:34.000000000 +0100 +++ head-2005-12-07/arch/x86_64/kernel/mpparse-xen.c 2005-12-14 14:30:45.000000000 +0100 @@ -174,8 +174,14 @@ static void __init MP_processor_info (st cpu_set(cpu, cpu_present_map); } #else -void __init MP_processor_info (struct mpc_config_processor *m) +static void __init MP_processor_info (struct mpc_config_processor *m) { + if (num_processors >= NR_CPUS) { + printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached." + " Processor ignored.\n", NR_CPUS); + return; + } + cpu_set(num_processors, cpu_possible_map); num_processors++; } #endif /* CONFIG_XEN */ Index: head-2005-12-07/drivers/xen/core/smpboot.c =================================================================== --- head-2005-12-07.orig/drivers/xen/core/smpboot.c 2005-12-07 10:58:40.000000000 +0100 +++ head-2005-12-07/drivers/xen/core/smpboot.c 2005-12-14 13:52:11.000000000 +0100 @@ -272,9 +272,9 @@ void __init smp_prepare_cpus(unsigned in void __devinit smp_prepare_boot_cpu(void) { - cpu_possible_map = cpumask_of_cpu(0); - cpu_present_map = cpumask_of_cpu(0); - cpu_online_map = cpumask_of_cpu(0); + cpu_set(0, cpu_possible_map); + cpu_set(0, cpu_present_map); + cpu_set(0, cpu_online_map); } #ifdef CONFIG_HOTPLUG_CPU