These changes are a raw update to a vanilla kernel 4.1.10, with the
[kvmfornfv.git] / kernel / arch / x86 / kvm / mmu.c
index b733376..554e877 100644 (file)
@@ -357,12 +357,6 @@ static u64 __get_spte_lockless(u64 *sptep)
 {
        return ACCESS_ONCE(*sptep);
 }
-
-static bool __check_direct_spte_mmio_pf(u64 spte)
-{
-       /* It is valid if the spte is zapped. */
-       return spte == 0ull;
-}
 #else
 union split_spte {
        struct {
@@ -478,23 +472,6 @@ retry:
 
        return spte.spte;
 }
-
-static bool __check_direct_spte_mmio_pf(u64 spte)
-{
-       union split_spte sspte = (union split_spte)spte;
-       u32 high_mmio_mask = shadow_mmio_mask >> 32;
-
-       /* It is valid if the spte is zapped. */
-       if (spte == 0ull)
-               return true;
-
-       /* It is valid if the spte is being zapped. */
-       if (sspte.spte_low == 0ull &&
-           (sspte.spte_high & high_mmio_mask) == high_mmio_mask)
-               return true;
-
-       return false;
-}
 #endif
 
 static bool spte_is_locklessly_modifiable(u64 spte)
@@ -3343,21 +3320,6 @@ static bool quickly_check_mmio_pf(struct kvm_vcpu *vcpu, u64 addr, bool direct)
        return vcpu_match_mmio_gva(vcpu, addr);
 }
 
-
-/*
- * On direct hosts, the last spte is only allows two states
- * for mmio page fault:
- *   - It is the mmio spte
- *   - It is zapped or it is being zapped.
- *
- * This function completely checks the spte when the last spte
- * is not the mmio spte.
- */
-static bool check_direct_spte_mmio_pf(u64 spte)
-{
-       return __check_direct_spte_mmio_pf(spte);
-}
-
 static u64 walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr)
 {
        struct kvm_shadow_walk_iterator iterator;
@@ -3399,13 +3361,6 @@ int handle_mmio_page_fault_common(struct kvm_vcpu *vcpu, u64 addr, bool direct)
                return RET_MMIO_PF_EMULATE;
        }
 
-       /*
-        * It's ok if the gva is remapped by other cpus on shadow guest,
-        * it's a BUG if the gfn is not a mmio page.
-        */
-       if (direct && !check_direct_spte_mmio_pf(spte))
-               return RET_MMIO_PF_BUG;
-
        /*
         * If the page table is zapped by other cpus, let CPU fault again on
         * the address.