|
@@ -168,7 +168,9 @@ static void __init xen_banner(void)
|
|
|
{
|
|
|
printk(KERN_INFO "Booting paravirtualized kernel on %s\n",
|
|
|
pv_info.name);
|
|
|
- printk(KERN_INFO "Hypervisor signature: %s\n", xen_start_info->magic);
|
|
|
+ printk(KERN_INFO "Hypervisor signature: %s%s\n",
|
|
|
+ xen_start_info->magic,
|
|
|
+ xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
|
|
|
}
|
|
|
|
|
|
static void xen_cpuid(unsigned int *ax, unsigned int *bx,
|
|
@@ -1243,6 +1245,8 @@ asmlinkage void __init xen_start_kernel(void)
|
|
|
|
|
|
BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
|
|
|
|
|
|
+ xen_setup_features();
|
|
|
+
|
|
|
/* Install Xen paravirt ops */
|
|
|
pv_info = xen_info;
|
|
|
pv_init_ops = xen_init_ops;
|
|
@@ -1252,14 +1256,17 @@ asmlinkage void __init xen_start_kernel(void)
|
|
|
pv_apic_ops = xen_apic_ops;
|
|
|
pv_mmu_ops = xen_mmu_ops;
|
|
|
|
|
|
+ if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) {
|
|
|
+ pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start;
|
|
|
+ pv_mmu_ops.ptep_modify_prot_commit = xen_ptep_modify_prot_commit;
|
|
|
+ }
|
|
|
+
|
|
|
machine_ops = xen_machine_ops;
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
smp_ops = xen_smp_ops;
|
|
|
#endif
|
|
|
|
|
|
- xen_setup_features();
|
|
|
-
|
|
|
/* Get mfn list */
|
|
|
if (!xen_feature(XENFEAT_auto_translated_physmap))
|
|
|
xen_build_dynamic_phys_to_machine();
|