All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Matlack <dmatlack@google.com>
To: Junaid Shahid <junaids@google.com>
Cc: kvm@vger.kernel.org, pbonzini@redhat.com, seanjc@google.com
Subject: Re: [PATCH] kvm: x86: mmu: Drop the need_remote_flush() function
Date: Mon, 25 Jul 2022 10:39:02 -0700	[thread overview]
Message-ID: <Yt7VNt2bsdNtyqZl@google.com> (raw)
In-Reply-To: <20220723024316.2725328-1-junaids@google.com>

On Fri, Jul 22, 2022 at 07:43:16PM -0700, Junaid Shahid wrote:
> This is only used by kvm_mmu_pte_write(), which no longer actually
> creates the new SPTE and instead just clears the old SPTE. So we
> just need to check if the old SPTE was shadow-present instead of
> calling need_remote_flush(). Hence we can drop this function. It was
> incomplete anyway as it didn't take access-tracking into account.
> 
> This patch should not result in any functional change.

Even if we don't assume anything about the new SPTE, this commit flushes
TLBs in a superset of the current cases. So this change should
definitely be safe.

And then if we assume new SPTE is 0 (which it should be), I agree this
should not result in any functional change.

Reviewed-by: David Matlack <dmatlack@google.com>

> 
> Signed-off-by: Junaid Shahid <junaids@google.com>
> ---
>  arch/x86/kvm/mmu/mmu.c | 15 +--------------
>  1 file changed, 1 insertion(+), 14 deletions(-)
> 
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index f0d7193db455..39959841beee 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -5333,19 +5333,6 @@ void kvm_mmu_free_obsolete_roots(struct kvm_vcpu *vcpu)
>  	__kvm_mmu_free_obsolete_roots(vcpu->kvm, &vcpu->arch.guest_mmu);
>  }
>  
> -static bool need_remote_flush(u64 old, u64 new)
> -{
> -	if (!is_shadow_present_pte(old))
> -		return false;
> -	if (!is_shadow_present_pte(new))
> -		return true;
> -	if ((old ^ new) & SPTE_BASE_ADDR_MASK)
> -		return true;
> -	old ^= shadow_nx_mask;
> -	new ^= shadow_nx_mask;
> -	return (old & ~new & SPTE_PERM_MASK) != 0;
> -}
> -
>  static u64 mmu_pte_write_fetch_gpte(struct kvm_vcpu *vcpu, gpa_t *gpa,
>  				    int *bytes)
>  {
> @@ -5491,7 +5478,7 @@ static void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
>  			mmu_page_zap_pte(vcpu->kvm, sp, spte, NULL);
>  			if (gentry && sp->role.level != PG_LEVEL_4K)
>  				++vcpu->kvm->stat.mmu_pde_zapped;
> -			if (need_remote_flush(entry, *spte))
> +			if (is_shadow_present_pte(entry))
>  				flush = true;
>  			++spte;
>  		}
> 
> base-commit: a4850b5590d01bf3fb19fda3fc5d433f7382a974
> -- 
> 2.37.1.359.gd136c6c3e2-goog
> 

  reply	other threads:[~2022-07-25 17:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-23  2:43 [PATCH] kvm: x86: mmu: Drop the need_remote_flush() function Junaid Shahid
2022-07-25 17:39 ` David Matlack [this message]
2022-07-25 21:43   ` Sean Christopherson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yt7VNt2bsdNtyqZl@google.com \
    --to=dmatlack@google.com \
    --cc=junaids@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.