diff options
-rw-r--r-- | arch/ia64/include/asm/paravirt_privop.h | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/efi.c | 1 | ||||
-rw-r--r-- | arch/ia64/kvm/vtlb.c | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/arch/ia64/include/asm/paravirt_privop.h b/arch/ia64/include/asm/paravirt_privop.h index 76d6a6943e83..4e40e62c4ab8 100644 --- a/arch/ia64/include/asm/paravirt_privop.h +++ b/arch/ia64/include/asm/paravirt_privop.h | |||
@@ -118,6 +118,12 @@ void paravirt_cpu_asm_init(const struct pv_cpu_asm_switch *cpu_asm_switch); | |||
118 | 118 | ||
119 | #endif /* CONFIG_PARAVIRT */ | 119 | #endif /* CONFIG_PARAVIRT */ |
120 | 120 | ||
121 | #if defined(CONFIG_PARAVIRT) && defined(ASM_SUPPORTED) | ||
122 | #define paravirt_dv_serialize_data() ia64_dv_serialize_data() | ||
123 | #else | ||
124 | #define paravirt_dv_serialize_data() /* nothing */ | ||
125 | #endif | ||
126 | |||
121 | /* these routines utilize privilege-sensitive or performance-sensitive | 127 | /* these routines utilize privilege-sensitive or performance-sensitive |
122 | * privileged instructions so the code must be replaced with | 128 | * privileged instructions so the code must be replaced with |
123 | * paravirtualized versions */ | 129 | * paravirtualized versions */ |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index efaff15d8cf1..7ef80e8161ce 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -456,6 +456,7 @@ efi_map_pal_code (void) | |||
456 | GRANULEROUNDDOWN((unsigned long) pal_vaddr), | 456 | GRANULEROUNDDOWN((unsigned long) pal_vaddr), |
457 | pte_val(pfn_pte(__pa(pal_vaddr) >> PAGE_SHIFT, PAGE_KERNEL)), | 457 | pte_val(pfn_pte(__pa(pal_vaddr) >> PAGE_SHIFT, PAGE_KERNEL)), |
458 | IA64_GRANULE_SHIFT); | 458 | IA64_GRANULE_SHIFT); |
459 | paravirt_dv_serialize_data(); | ||
459 | ia64_set_psr(psr); /* restore psr */ | 460 | ia64_set_psr(psr); /* restore psr */ |
460 | } | 461 | } |
461 | 462 | ||
diff --git a/arch/ia64/kvm/vtlb.c b/arch/ia64/kvm/vtlb.c index 6b6307a3bd55..1de4dbda37e7 100644 --- a/arch/ia64/kvm/vtlb.c +++ b/arch/ia64/kvm/vtlb.c | |||
@@ -210,6 +210,7 @@ void thash_vhpt_insert(struct kvm_vcpu *v, u64 pte, u64 itir, u64 va, int type) | |||
210 | phy_pte &= ~PAGE_FLAGS_RV_MASK; | 210 | phy_pte &= ~PAGE_FLAGS_RV_MASK; |
211 | psr = ia64_clear_ic(); | 211 | psr = ia64_clear_ic(); |
212 | ia64_itc(type, va, phy_pte, itir_ps(itir)); | 212 | ia64_itc(type, va, phy_pte, itir_ps(itir)); |
213 | paravirt_dv_serialize_data(); | ||
213 | ia64_set_psr(psr); | 214 | ia64_set_psr(psr); |
214 | } | 215 | } |
215 | 216 | ||
@@ -464,6 +465,7 @@ int thash_purge_and_insert(struct kvm_vcpu *v, u64 pte, u64 itir, | |||
464 | phy_pte &= ~PAGE_FLAGS_RV_MASK; | 465 | phy_pte &= ~PAGE_FLAGS_RV_MASK; |
465 | psr = ia64_clear_ic(); | 466 | psr = ia64_clear_ic(); |
466 | ia64_itc(type, ifa, phy_pte, ps); | 467 | ia64_itc(type, ifa, phy_pte, ps); |
468 | paravirt_dv_serialize_data(); | ||
467 | ia64_set_psr(psr); | 469 | ia64_set_psr(psr); |
468 | } | 470 | } |
469 | if (!(pte&VTLB_PTE_IO)) | 471 | if (!(pte&VTLB_PTE_IO)) |