|
@@ -2222,6 +2222,15 @@ static const struct pv_mmu_ops xen_mmu_ops __initconst = {
|
|
void __init xen_init_mmu_ops(void)
|
|
void __init xen_init_mmu_ops(void)
|
|
{
|
|
{
|
|
x86_init.paging.pagetable_init = xen_pagetable_init;
|
|
x86_init.paging.pagetable_init = xen_pagetable_init;
|
|
|
|
+
|
|
|
|
+ /* Optimization - we can use the HVM one but it has no idea which
|
|
|
|
+ * VCPUs are descheduled - which means that it will needlessly IPI
|
|
|
|
+ * them. Xen knows so let it do the job.
|
|
|
|
+ */
|
|
|
|
+ if (xen_feature(XENFEAT_auto_translated_physmap)) {
|
|
|
|
+ pv_mmu_ops.flush_tlb_others = xen_flush_tlb_others;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
pv_mmu_ops = xen_mmu_ops;
|
|
pv_mmu_ops = xen_mmu_ops;
|
|
|
|
|
|
memset(dummy_mapping, 0xff, PAGE_SIZE);
|
|
memset(dummy_mapping, 0xff, PAGE_SIZE);
|