|
@@ -170,7 +170,8 @@ static void __init xen_smp_prepare_boot_cpu(void)
|
|
|
|
|
|
/* We've switched to the "real" per-cpu gdt, so make sure the
|
|
|
old memory can be recycled */
|
|
|
- make_lowmem_page_readwrite(&per_cpu_var(gdt_page));
|
|
|
+ make_lowmem_page_readwrite(__per_cpu_load +
|
|
|
+ (unsigned long)&per_cpu_var(gdt_page));
|
|
|
|
|
|
xen_setup_vcpu_info_placement();
|
|
|
}
|
|
@@ -235,6 +236,8 @@ cpu_initialize_context(unsigned int cpu, struct task_struct *idle)
|
|
|
ctxt->user_regs.ss = __KERNEL_DS;
|
|
|
#ifdef CONFIG_X86_32
|
|
|
ctxt->user_regs.fs = __KERNEL_PERCPU;
|
|
|
+#else
|
|
|
+ ctxt->gs_base_kernel = per_cpu_offset(cpu);
|
|
|
#endif
|
|
|
ctxt->user_regs.eip = (unsigned long)cpu_bringup_and_idle;
|
|
|
ctxt->user_regs.eflags = 0x1000; /* IOPL_RING1 */
|