|
@@ -971,6 +971,7 @@ void xen_setup_vcpu_info_placement(void)
|
|
|
|
|
|
/* xen_vcpu_setup managed to place the vcpu_info within the
|
|
/* xen_vcpu_setup managed to place the vcpu_info within the
|
|
percpu area for all cpus, so make use of it */
|
|
percpu area for all cpus, so make use of it */
|
|
|
|
+#ifdef CONFIG_X86_32
|
|
if (have_vcpu_info_placement) {
|
|
if (have_vcpu_info_placement) {
|
|
printk(KERN_INFO "Xen: using vcpu_info placement\n");
|
|
printk(KERN_INFO "Xen: using vcpu_info placement\n");
|
|
|
|
|
|
@@ -980,6 +981,7 @@ void xen_setup_vcpu_info_placement(void)
|
|
pv_irq_ops.irq_enable = xen_irq_enable_direct;
|
|
pv_irq_ops.irq_enable = xen_irq_enable_direct;
|
|
pv_mmu_ops.read_cr2 = xen_read_cr2_direct;
|
|
pv_mmu_ops.read_cr2 = xen_read_cr2_direct;
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
|
|
static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
|
|
@@ -1000,10 +1002,12 @@ static unsigned xen_patch(u8 type, u16 clobbers, void *insnbuf,
|
|
goto patch_site
|
|
goto patch_site
|
|
|
|
|
|
switch (type) {
|
|
switch (type) {
|
|
|
|
+#ifdef CONFIG_X86_32
|
|
SITE(pv_irq_ops, irq_enable);
|
|
SITE(pv_irq_ops, irq_enable);
|
|
SITE(pv_irq_ops, irq_disable);
|
|
SITE(pv_irq_ops, irq_disable);
|
|
SITE(pv_irq_ops, save_fl);
|
|
SITE(pv_irq_ops, save_fl);
|
|
SITE(pv_irq_ops, restore_fl);
|
|
SITE(pv_irq_ops, restore_fl);
|
|
|
|
+#endif /* CONFIG_X86_32 */
|
|
#undef SITE
|
|
#undef SITE
|
|
|
|
|
|
patch_site:
|
|
patch_site:
|
|
@@ -1323,6 +1327,7 @@ asmlinkage void __init xen_start_kernel(void)
|
|
#ifdef CONFIG_X86_64
|
|
#ifdef CONFIG_X86_64
|
|
/* Disable until direct per-cpu data access. */
|
|
/* Disable until direct per-cpu data access. */
|
|
have_vcpu_info_placement = 0;
|
|
have_vcpu_info_placement = 0;
|
|
|
|
+ x86_64_init_pda();
|
|
#endif
|
|
#endif
|
|
|
|
|
|
xen_smp_init();
|
|
xen_smp_init();
|