aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/xen
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2009-02-04 19:58:26 -0500
committerH. Peter Anvin <hpa@linux.intel.com>2009-02-04 19:58:26 -0500
commit327641da8e3e227f42690479182b896fd19486be (patch)
tree05fa7f317e854f2da5d46d4c8977486d71bb2b21 /arch/x86/xen
parent1f4f931501e9270c156d05ee76b7b872de486304 (diff)
parentef3892bd63420380d115f755d351d2071f1f805f (diff)
Merge branch 'core/percpu' into x86/paravirt
Diffstat (limited to 'arch/x86/xen')
-rw-r--r--arch/x86/xen/enlighten.c3
-rw-r--r--arch/x86/xen/smp.c5
2 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ff6d530ccc77..cd022c43dfbc 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -917,6 +917,9 @@ asmlinkage void __init xen_start_kernel(void)
917 have_vcpu_info_placement = 0; 917 have_vcpu_info_placement = 0;
918#endif 918#endif
919 919
920 /* setup percpu state */
921 load_percpu_segment(0);
922
920 xen_smp_init(); 923 xen_smp_init();
921 924
922 /* Get mfn list */ 925 /* Get mfn list */
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 7735e3dd359c..88d5d5ec6beb 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -170,7 +170,8 @@ static void __init xen_smp_prepare_boot_cpu(void)
170 170
171 /* We've switched to the "real" per-cpu gdt, so make sure the 171 /* We've switched to the "real" per-cpu gdt, so make sure the
172 old memory can be recycled */ 172 old memory can be recycled */
173 make_lowmem_page_readwrite(&per_cpu_var(gdt_page)); 173 make_lowmem_page_readwrite(__per_cpu_load +
174 (unsigned long)&per_cpu_var(gdt_page));
174 175
175 xen_setup_vcpu_info_placement(); 176 xen_setup_vcpu_info_placement();
176} 177}
@@ -235,6 +236,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
235 ctxt->user_regs.ss = __KERNEL_DS; 236 ctxt->user_regs.ss = __KERNEL_DS;
236#ifdef CONFIG_X86_32 237#ifdef CONFIG_X86_32
237 ctxt->user_regs.fs = __KERNEL_PERCPU; 238 ctxt->user_regs.fs = __KERNEL_PERCPU;
239#else
240 ctxt->gs_base_kernel = per_cpu_offset(cpu);
238#endif 241#endif
239 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle; 242 ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
240 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */ 243 ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */