Răsfoiți Sursa

ia64/pv_ops/binary patch: define paravirt_dv_serialize_data() and suppress false positive warning.

define paravirt_dv_serialize_data() and insert it to suppress
false positive warnings.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Isaku Yamahata 16 ani în urmă
părinte
comite
dae17da60d
3 a modificat fișierele cu 9 adăugiri și 0 ștergeri
  1. 6 0
      arch/ia64/include/asm/paravirt_privop.h
  2. 1 0
      arch/ia64/kernel/efi.c
  3. 2 0
      arch/ia64/kvm/vtlb.c

+ 6 - 0
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);
 
 
 #endif /* CONFIG_PARAVIRT */
 #endif /* CONFIG_PARAVIRT */
 
 
+#if defined(CONFIG_PARAVIRT) && defined(ASM_SUPPORTED)
+#define paravirt_dv_serialize_data()	ia64_dv_serialize_data()
+#else
+#define paravirt_dv_serialize_data()	/* nothing */
+#endif
+
 /* these routines utilize privilege-sensitive or performance-sensitive
 /* these routines utilize privilege-sensitive or performance-sensitive
  * privileged instructions so the code must be replaced with
  * privileged instructions so the code must be replaced with
  * paravirtualized versions */
  * paravirtualized versions */

+ 1 - 0
arch/ia64/kernel/efi.c

@@ -456,6 +456,7 @@ efi_map_pal_code (void)
 		 GRANULEROUNDDOWN((unsigned long) pal_vaddr),
 		 GRANULEROUNDDOWN((unsigned long) pal_vaddr),
 		 pte_val(pfn_pte(__pa(pal_vaddr) >> PAGE_SHIFT, PAGE_KERNEL)),
 		 pte_val(pfn_pte(__pa(pal_vaddr) >> PAGE_SHIFT, PAGE_KERNEL)),
 		 IA64_GRANULE_SHIFT);
 		 IA64_GRANULE_SHIFT);
+	paravirt_dv_serialize_data();
 	ia64_set_psr(psr);		/* restore psr */
 	ia64_set_psr(psr);		/* restore psr */
 }
 }
 
 

+ 2 - 0
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)
 		phy_pte  &= ~PAGE_FLAGS_RV_MASK;
 		phy_pte  &= ~PAGE_FLAGS_RV_MASK;
 		psr = ia64_clear_ic();
 		psr = ia64_clear_ic();
 		ia64_itc(type, va, phy_pte, itir_ps(itir));
 		ia64_itc(type, va, phy_pte, itir_ps(itir));
+		paravirt_dv_serialize_data();
 		ia64_set_psr(psr);
 		ia64_set_psr(psr);
 	}
 	}
 
 
@@ -464,6 +465,7 @@ int thash_purge_and_insert(struct kvm_vcpu *v, u64 pte, u64 itir,
 		phy_pte  &= ~PAGE_FLAGS_RV_MASK;
 		phy_pte  &= ~PAGE_FLAGS_RV_MASK;
 		psr = ia64_clear_ic();
 		psr = ia64_clear_ic();
 		ia64_itc(type, ifa, phy_pte, ps);
 		ia64_itc(type, ifa, phy_pte, ps);
+		paravirt_dv_serialize_data();
 		ia64_set_psr(psr);
 		ia64_set_psr(psr);
 	}
 	}
 	if (!(pte&VTLB_PTE_IO))
 	if (!(pte&VTLB_PTE_IO))