From: Sean Christopherson <seanjc@google.com>
To: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: linux-kernel@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
Lai Jiangshan <jiangshan.ljs@antgroup.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
kvm@vger.kernel.org
Subject: Re: [PATCH 1/7] kvm: x86/mmu: Use KVM_MMU_ROOT_XXX for kvm_mmu_invalidate_gva()
Date: Fri, 3 Feb 2023 20:54:36 +0000 [thread overview]
Message-ID: <Y910jLLQ+3jVQsta@google.com> (raw)
In-Reply-To: <CAJhGHyCgSzH5x9=OutgOcxCEg784woz9VouAwJ=K0xqXTF9Avw@mail.gmail.com>
On Fri, Feb 03, 2023, Lai Jiangshan wrote:
> On Thu, Feb 2, 2023 at 9:21 AM Sean Christopherson <seanjc@google.com> wrote:
>
> >
> > This is logically correct, but there's potential (weird) functional change here.
> > If this is called with an invalid root, then KVM will invalidate the GVA in all
> > roots prior to this patch, but in no roots after this patch.
> >
> > I _think_ it should be impossible get here with an invalid root. Can you try
> > adding a prep patch to assert that the root is valid so that this patch can
> > reasonably assert that there's no functional change?
> >
> >
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > index 508074e47bc0..fffd9b610196 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -792,6 +792,8 @@ void kvm_inject_emulated_page_fault(struct kvm_vcpu *vcpu,
> > fault_mmu = fault->nested_page_fault ? vcpu->arch.mmu :
> > vcpu->arch.walk_mmu;
> >
> > + WARN_ON_ONCE(!VALID_PAGE(fault_mmu->root.hpa));
> > +
>
> I've been updating the patches as per your suggestions.
>
> And I suddenly realized that when fault->nested_page_fault=false
> with nested EPT, fault_mmu->root.hpa is always unset.
>
> fault_mmu->root.hpa is just meaningless when fault_mmu is not
> vcpu->arch.mmu.
Right, because there's no KVM-managed MMU.
> I will add it as one of the reasons for replacing the argument
> with KVM_MMU_ROOT_XXX.
And maybe call out that when using walk_mmu, the ->invlpg() implementation is
NULL, i.e. using CURRENT root is a nop.
Thanks!
next prev parent reply other threads:[~2023-02-03 20:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-05 9:58 [PATCH 0/7] kvm: x86/mmu: Share the same code to invalidate each vTLB entry Lai Jiangshan
2023-01-05 9:58 ` [PATCH 1/7] kvm: x86/mmu: Use KVM_MMU_ROOT_XXX for kvm_mmu_invalidate_gva() Lai Jiangshan
2023-02-02 1:21 ` Sean Christopherson
2023-02-03 14:51 ` Lai Jiangshan
2023-02-03 20:54 ` Sean Christopherson [this message]
2023-01-05 9:58 ` [PATCH 2/7] kvm: x86/mmu: Use kvm_mmu_invalidate_gva() in kvm_mmu_invpcid_gva() Lai Jiangshan
2023-02-02 1:21 ` Sean Christopherson
2023-01-05 9:58 ` [PATCH 3/7] kvm: x86/mmu: Use kvm_mmu_invalidate_gva() in nested_ept_invalidate_addr() Lai Jiangshan
2023-02-02 1:22 ` Sean Christopherson
2023-01-05 9:58 ` [PATCH 4/7] kvm: x86/mmu: Reduce the update to the spte in FNAME(sync_page) Lai Jiangshan
2023-01-05 9:58 ` [PATCH 5/7] kvm: x86/mmu: Move the code out of FNAME(sync_page)'s loop body into mmu.c Lai Jiangshan
2023-02-02 1:29 ` Sean Christopherson
2023-01-05 9:58 ` [PATCH 6/7] kvm: x86/mmu: Remove FNAME(invlpg) Lai Jiangshan
2023-02-02 1:30 ` Sean Christopherson
2023-01-05 9:58 ` [PATCH 7/7] kvm: x86/mmu: Remove @no_dirty_log from FNAME(prefetch_gpte) Lai Jiangshan
2023-01-19 0:53 ` [PATCH 0/7] kvm: x86/mmu: Share the same code to invalidate each vTLB entry Lai Jiangshan
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=Y910jLLQ+3jVQsta@google.com \
--to=seanjc@google.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jiangshan.ljs@antgroup.com \
--cc=jiangshanlai@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/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.