diff options
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r-- | arch/x86/xen/enlighten.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 0b7553cbc529..bd74229081c3 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -168,7 +168,9 @@ static void __init xen_banner(void) | |||
168 | { | 168 | { |
169 | printk(KERN_INFO "Booting paravirtualized kernel on %s\n", | 169 | printk(KERN_INFO "Booting paravirtualized kernel on %s\n", |
170 | pv_info.name); | 170 | pv_info.name); |
171 | printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic); | 171 | printk(KERN_INFO "Hypervisor signature: %s%s\n", |
172 | xen_start_info->magic, | ||
173 | xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : ""); | ||
172 | } | 174 | } |
173 | 175 | ||
174 | static void xen_cpuid(unsigned int *ax, unsigned int *bx, | 176 | static void xen_cpuid(unsigned int *ax, unsigned int *bx, |
@@ -1243,6 +1245,8 @@ asmlinkage void __init xen_start_kernel(void) | |||
1243 | 1245 | ||
1244 | BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0); | 1246 | BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0); |
1245 | 1247 | ||
1248 | xen_setup_features(); | ||
1249 | |||
1246 | /* Install Xen paravirt ops */ | 1250 | /* Install Xen paravirt ops */ |
1247 | pv_info = xen_info; | 1251 | pv_info = xen_info; |
1248 | pv_init_ops = xen_init_ops; | 1252 | pv_init_ops = xen_init_ops; |
@@ -1252,14 +1256,17 @@ asmlinkage void __init xen_start_kernel(void) | |||
1252 | pv_apic_ops = xen_apic_ops; | 1256 | pv_apic_ops = xen_apic_ops; |
1253 | pv_mmu_ops = xen_mmu_ops; | 1257 | pv_mmu_ops = xen_mmu_ops; |
1254 | 1258 | ||
1259 | if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) { | ||
1260 | pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start; | ||
1261 | pv_mmu_ops.ptep_modify_prot_commit = xen_ptep_modify_prot_commit; | ||
1262 | } | ||
1263 | |||
1255 | machine_ops = xen_machine_ops; | 1264 | machine_ops = xen_machine_ops; |
1256 | 1265 | ||
1257 | #ifdef CONFIG_SMP | 1266 | #ifdef CONFIG_SMP |
1258 | smp_ops = xen_smp_ops; | 1267 | smp_ops = xen_smp_ops; |
1259 | #endif | 1268 | #endif |
1260 | 1269 | ||
1261 | xen_setup_features(); | ||
1262 | |||
1263 | /* Get mfn list */ | 1270 | /* Get mfn list */ |
1264 | if (!xen_feature(XENFEAT_auto_translated_physmap)) | 1271 | if (!xen_feature(XENFEAT_auto_translated_physmap)) |
1265 | xen_build_dynamic_phys_to_machine(); | 1272 | xen_build_dynamic_phys_to_machine(); |