static void __init xen_pv_smp_prepare_boot_cpu(void) { BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); if (!xen_feature(XENFEAT_writable_page_tables)) /* We've switched to the "real" per-cpu gdt, so make * sure the old memory can be recycled. */ make_lowmem_page_readwrite(xen_initial_gdt); #ifdef CONFIG_X86_32 /* * Xen starts us with XEN_FLAT_RING1_DS, but linux code * expects __USER_DS */ loadsegment(ds, __USER_DS); loadsegment(es, __USER_DS); #endif xen_filter_cpu_maps(); xen_setup_vcpu_info_placement(); /* * 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(); }
static void __init xen_smp_prepare_boot_cpu(void) { BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); xen_filter_cpu_maps(); xen_setup_vcpu_info_placement(); }
static void __init xen_smp_prepare_boot_cpu(void) { BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); make_lowmem_page_readwrite(xen_initial_gdt); xen_filter_cpu_maps(); xen_setup_vcpu_info_placement(); }
static void __init xen_smp_prepare_boot_cpu(void) { BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); /* We've switched to the "real" per-cpu gdt, so make sure the old memory can be recycled */ make_lowmem_page_readwrite(xen_initial_gdt); xen_setup_vcpu_info_placement(); }
static void __init xen_smp_prepare_boot_cpu(void) { BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); if (!xen_feature(XENFEAT_writable_page_tables)) { /* We've switched to the "real" per-cpu gdt, so make sure the * old memory can be recycled */ make_lowmem_page_readwrite(xen_initial_gdt); } xen_filter_cpu_maps(); xen_setup_vcpu_info_placement(); }
void xen_setup_shared_info(void) { if (!xen_feature(XENFEAT_auto_translated_physmap)) { set_fixmap(FIX_PARAVIRT_BOOTMAP, xen_start_info->shared_info); HYPERVISOR_shared_info = (struct shared_info *)fix_to_virt(FIX_PARAVIRT_BOOTMAP); } else HYPERVISOR_shared_info = (struct shared_info *)__va(xen_start_info->shared_info); #ifndef CONFIG_SMP /* In UP this is as good a place as any to set up shared info */ xen_setup_vcpu_info_placement(); #endif xen_setup_mfn_list_list(); }
void __init xen_smp_prepare_boot_cpu(void) { int cpu; BUG_ON(smp_processor_id() != 0); native_smp_prepare_boot_cpu(); /* We've switched to the "real" per-cpu gdt, so make sure the old memory can be recycled */ make_lowmem_page_readwrite(&per_cpu__gdt_page); for_each_possible_cpu(cpu) { cpus_clear(per_cpu(cpu_sibling_map, cpu)); /* * cpu_core_map lives in a per cpu area that is cleared * when the per cpu array is allocated. * * cpus_clear(per_cpu(cpu_core_map, cpu)); */ } xen_setup_vcpu_info_placement(); }