Index: head-2006-03-02/arch/x86_64/kernel/setup-xen.c =================================================================== --- head-2006-03-02.orig/arch/x86_64/kernel/setup-xen.c 2006-03-02 11:28:07.000000000 +0100 +++ head-2006-03-02/arch/x86_64/kernel/setup-xen.c 2006-03-02 13:38:39.000000000 +0100 @@ -82,6 +82,8 @@ extern unsigned long start_pfn; extern struct edid_info edid_info; +extern void machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c); + shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page; EXPORT_SYMBOL(HYPERVISOR_shared_info); @@ -1405,6 +1407,8 @@ void __cpuinit identify_cpu(struct cpuin select_idle_routine(c); detect_ht(c); + machine_specific_modify_cpu_capabilities(c); + /* * On SMP, boot_cpu_data holds the common feature set between * all CPUs; so make sure that we indicate which features are Index: head-2006-03-02/include/asm-i386/mach-xen/setup_arch_post.h =================================================================== --- head-2006-03-02.orig/include/asm-i386/mach-xen/setup_arch_post.h 2006-02-24 12:47:12.000000000 +0100 +++ head-2006-03-02/include/asm-i386/mach-xen/setup_arch_post.h 2006-03-02 13:41:18.000000000 +0100 @@ -16,7 +16,7 @@ static char * __init machine_specific_me return "Xen"; } -void __init machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c) +void __devinit machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c) { clear_bit(X86_FEATURE_VME, c->x86_capability); clear_bit(X86_FEATURE_DE, c->x86_capability); Index: head-2006-03-02/include/asm-x86_64/mach-xen/setup_arch_post.h =================================================================== --- head-2006-03-02.orig/include/asm-x86_64/mach-xen/setup_arch_post.h 2006-03-02 10:27:07.000000000 +0100 +++ head-2006-03-02/include/asm-x86_64/mach-xen/setup_arch_post.h 2006-03-02 13:39:38.000000000 +0100 @@ -1,28 +1,12 @@ /** - * machine_specific_memory_setup - Hook for machine specific memory setup. + * machine_specific_* - Hooks for machine specific setup. * * Description: * This is included late in kernel/setup.c so that it can make * use of all of the static functions. **/ -static char * __init machine_specific_memory_setup(void) -{ - char *who; - unsigned long start_pfn, max_pfn; - - who = "Xen"; - - start_pfn = 0; - max_pfn = xen_start_info->nr_pages; - - e820.nr_map = 0; - add_memory_region(PFN_PHYS(start_pfn), PFN_PHYS(max_pfn) - PFN_PHYS(start_pfn), E820_RAM); - - return who; -} - -void __init machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c) +void __cpuinit machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c) { clear_bit(X86_FEATURE_VME, c->x86_capability); clear_bit(X86_FEATURE_DE, c->x86_capability);