From: sashiko-bot@kernel.org
To: "Yosry Ahmed" <yosry@kernel.org>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v3 15/27] KVM: x86: hyper-v: Allow purging all TLB flush FIFOs
Date: Mon, 12 Oct 2026 23:56:57 +0000 [thread overview]
Message-ID: <sashiko-outbox-168758@kernel.org> (raw)
In-Reply-To: <20261012233638.2546339-16-yosry@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] x86/kvm: redundant guest TLB flush due to uncleared KVM_REQ_HV_TLB_FLUSH
--
commit fd7f6324f98d1c559f015e78c148b1f3ca58d78f
Author: Yosry Ahmed <yosry@kernel.org>
KVM: x86: hyper-v: Allow purging all TLB flush FIFOs
This commit refactors kvm_hv_purge_tlb_flush_fifo() by introducing an
inner helper __kvm_hv_purge_tlb_flush_fifo() to allow purging a specific
FIFO or all FIFOs. The refactoring delegates the KVM_REQ_HV_TLB_FLUSH
request check to the inner helper, which is now skipped if no FIFO is found.
> diff --git a/arch/x86/kvm/hyperv.h b/arch/x86/kvm/hyperv.h
> index 03cc65f8cc52d..a23ef05c1075c 100644
> --- a/arch/x86/kvm/hyperv.h
> +++ b/arch/x86/kvm/hyperv.h
[ ... ]
> @@ -312,18 +312,29 @@ static inline struct kvm_vcpu_hv_tlb_flush_fifo *kvm_hv_get_tlb_flush_fifo(struc
> return &hv_vcpu->tlb_flush_fifo[i];
> }
>
> -static inline void kvm_hv_purge_tlb_flush_fifo(struct kvm_vcpu *vcpu)
> +/* Purge pending TLB flushes in @fifo, or in all FIFOs if @fifo is NULL */
> +static inline void __kvm_hv_purge_tlb_flush_fifo(struct kvm_vcpu *vcpu,
> + struct kvm_vcpu_hv_tlb_flush_fifo *fifo)
> {
[ ... ]
> +static inline void kvm_hv_purge_tlb_flush_fifo(struct kvm_vcpu *vcpu)
> +{
> + struct kvm_vcpu_hv_tlb_flush_fifo *fifo;
>
> - kfifo_reset_out(&tlb_flush_fifo->entries);
> + fifo = kvm_hv_get_tlb_flush_fifo(vcpu, is_guest_mode(vcpu));
> + if (fifo)
> + __kvm_hv_purge_tlb_flush_fifo(vcpu, fifo);
> }
[Severity: Low]
Does this change inadvertently leave the KVM_REQ_HV_TLB_FLUSH bit uncleared
when fifo is NULL?
Prior to this patch, kvm_hv_purge_tlb_flush_fifo() unconditionally evaluated
and cleared kvm_check_request(KVM_REQ_HV_TLB_FLUSH, vcpu) before returning
early if the vCPU lacked an initialized Hyper-V state.
With this update, if a Hyper-V VM-wide TLB flush sets the request bit on a
vCPU without initialized Hyper-V state, kvm_hv_get_tlb_flush_fifo() returns
NULL. The helper __kvm_hv_purge_tlb_flush_fifo() is skipped entirely,
meaning the request bit remains uncleared.
If a standard guest TLB flush request arrives and triggers the purge path
in kvm_service_local_tlb_flush_requests(), the uncleared Hyper-V request bit
will still be pending when execution reaches vcpu_enter_guest():
arch/x86/kvm/x86.c:vcpu_enter_guest() {
...
if (kvm_check_request(KVM_REQ_HV_TLB_FLUSH, vcpu) &&
kvm_hv_vcpu_flush_tlb(vcpu))
kvm_vcpu_flush_tlb_guest(vcpu);
...
}
Since kvm_hv_vcpu_flush_tlb() fails (returns -EINVAL) for a vCPU without
Hyper-V state, would this fallback path execute a second, redundant
kvm_vcpu_flush_tlb_guest() operation?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261012233638.2546339-1-yosry@kernel.org?part=15
next prev parent reply other threads:[~2026-10-12 23:56 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 23:36 [PATCH v3 00/27] KVM: nSVM: Optimize nSVM TLB flushes Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 01/27] KVM: nSVM: Flush the TLB after forcefully leaving nested Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 02/27] KVM: SVM: Document number of ASIDs CPUID setting Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 03/27] KVM: VMX: Generalize VPID allocation to be vendor-neutral Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 04/27] KVM: x86/mmu: Support specifying reserved TLB tags Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 05/27] KVM: SVM: Add helpers to set/clear ASID flush in VMCB Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 06/27] KVM: SVM: Fallback to flush everything if FLUSHBYASID is not available Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 07/27] KVM: SEV: Do ASID initialization at VMCB initialization Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 08/27] KVM: SEV: Expose sev_get_asid() outside of sev.c Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 09/27] KVM: SEV: Explicitly initialize the per vCPU ASID on SEV VM migration Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 10/27] KVM: SVM: Use a static ASID per vCPU Yosry Ahmed
2026-10-12 23:54 ` sashiko-bot
2026-10-12 23:55 ` Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 11/27] KVM: SVM: Only flush the fallback ASID when used by a different vCPU Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 12/27] KVM: nSVM: Drop svm->nested.initialized Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 13/27] KVM: nSVM: Add a placeholder ASID for L2 Yosry Ahmed
2026-10-13 0:01 ` sashiko-bot
2026-10-12 23:36 ` [PATCH v3 14/27] KVM: x86: hyper-v: Rename kvm_hv_vcpu_purge_flush_tlb() Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 15/27] KVM: x86: hyper-v: Allow purging all TLB flush FIFOs Yosry Ahmed
2026-10-12 23:56 ` sashiko-bot [this message]
2026-10-12 23:36 ` [PATCH v3 16/27] KVM: nSVM: Flush both L1 and L2 ASIDs on KVM_REQ_TLB_FLUSH Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 17/27] KVM: nSVM: Always switch VMCB before leaving guest mode Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 18/27] KVM: nSVM: Split nested_svm_transition_tlb_flush() into entry/exit fns Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 19/27] KVM: nSVM: Service local TLB flushes before nested transitions Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 20/27] KVM: x86: Add KVM_REQ_MMU_SYNC_ALL_ROOTS Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 21/27] KVM: nSVM: Handle nested TLB flush requests through TLB_CONTROL Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 22/27] KVM: nSVM: Flush the TLB if L1 changes L2's ASID in vmcb12 Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 23/27] KVM: nSVM: Do not reset TLB_CONTROL in vmcb02 on nested VM-Enter Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 24/27] KVM: nSVM: Flush L2's ASID when emulating INVLPGA Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 25/27] KVM: nSVM: Flush the ASID on nested transitions if shared by L1 and L2 Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 26/27] KVM: nSVM: Use different ASIDs for " Yosry Ahmed
2026-10-12 23:36 ` [PATCH v3 27/27] KVM: selftests: Add a test for nested TLB flushes Yosry Ahmed
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=sashiko-outbox-168758@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=yosry@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox