diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2009-02-04 19:58:26 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2009-02-04 19:58:26 -0500 |
commit | 327641da8e3e227f42690479182b896fd19486be (patch) | |
tree | 05fa7f317e854f2da5d46d4c8977486d71bb2b21 /arch/x86/xen | |
parent | 1f4f931501e9270c156d05ee76b7b872de486304 (diff) | |
parent | ef3892bd63420380d115f755d351d2071f1f805f (diff) |
Merge branch 'core/percpu' into x86/paravirt
Diffstat (limited to 'arch/x86/xen')
-rw-r--r-- | arch/x86/xen/enlighten.c | 3 | ||||
-rw-r--r-- | arch/x86/xen/smp.c | 5 |
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 */ |