From: "Hou Wenlong" <houwenlong.hwl@antgroup.com>
To: kvm@vger.kernel.org
Cc: David Matlack <dmatlack@google.com>,
Sean Christopherson <seanjc@google.com>
Subject: [PATCH v4 0/6] KVM: x86/mmu: Fix wrong usages of range-based tlb flushing
Date: Mon, 10 Oct 2022 20:19:11 +0800 [thread overview]
Message-ID: <cover.1665214747.git.houwenlong.hwl@antgroup.com> (raw)
Commit c3134ce240eed ("KVM: Replace old tlb flush function with new one
to flush a specified range.") replaces old tlb flush function with
kvm_flush_remote_tlbs_with_address() to do tlb flushing. However, the
gfn range of tlb flushing is wrong in some cases. E.g., when a spte is
dropped, the start gfn of tlb flushing should be the gfn of spte not the
base gfn of SP which contains the spte. Although, as Paolo said, Hyper-V
may treat a 1-page flush the same if the address points to a huge page,
and no fixes are reported so far. So it seems that it works well for
Hyper-V. But it would be better to use the correct size for huge page.
So this patchset would fix them and introduce some helper functions as
David suggested to make the code clear.
Changed from v3:
- Move patch 1 after kvm_flush_remote_tlbs_sptep() is introduced,
Drop kvm_flush_remote_tlbs_direct_sp() helper and use
kvm_flush_remote_tlbs_sptep() instead.
- Wrap changelogs at ~75 chars.
Changed from v2:
- Introduce kvm_flush_remote_tlbs_gfn() in Patch 1 early.
- Move round_gfn_for_level() in tdp_iter.c into mmu_internal.h for
common usage and cleanup the call sites of rounding down the GFN.
- Drop Patch 6.
Changed from v1:
- Align down gfn in kvm_set_pte_rmapp() instead of change iterator->gfn
in rmap_walk_init_level() in Patch 2.
- Introduce some helper functions for common operations as David
suggested.
v3: https://lore.kernel.org/kvm/cover.1663929851.git.houwenlong.hwl@antgroup.com
Hou Wenlong (6):
KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h
KVM: x86/mmu: Fix wrong gfn range of tlb flushing in
kvm_set_pte_rmapp()
KVM: x86/mmu: Reduce gfn range of tlb flushing in
tdp_mmu_map_handle_target_level()
KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range
KVM: x86/mmu: Fix wrong gfn range of tlb flushing in
validate_direct_spte()
KVM: x86/mmu: Cleanup range-based flushing for given page
arch/x86/kvm/mmu/mmu.c | 36 +++++++++++++++++++++------------
arch/x86/kvm/mmu/mmu_internal.h | 15 ++++++++++++++
arch/x86/kvm/mmu/paging_tmpl.h | 5 ++---
arch/x86/kvm/mmu/tdp_iter.c | 11 +++-------
arch/x86/kvm/mmu/tdp_mmu.c | 6 ++----
5 files changed, 45 insertions(+), 28 deletions(-)
--
2.31.1
next reply other threads:[~2022-10-10 12:20 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-10 12:19 Hou Wenlong [this message]
2022-10-10 12:19 ` [PATCH v4 1/6] KVM: x86/mmu: Move round_gfn_for_level() helper into mmu_internal.h Hou Wenlong
2022-10-10 12:19 ` [PATCH v4 2/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in kvm_set_pte_rmapp() Hou Wenlong
2022-10-12 16:46 ` Sean Christopherson
2022-12-14 15:07 ` Lai Jiangshan
2022-12-14 19:11 ` Sean Christopherson
2022-10-10 12:19 ` [PATCH v4 3/6] KVM: x86/mmu: Reduce gfn range of tlb flushing in tdp_mmu_map_handle_target_level() Hou Wenlong
2022-10-10 12:19 ` [PATCH v4 4/6] KVM: x86/mmu: Fix wrong start gfn of tlb flushing with range Hou Wenlong
2022-10-10 12:19 ` [PATCH v4 5/6] KVM: x86/mmu: Fix wrong gfn range of tlb flushing in validate_direct_spte() Hou Wenlong
2022-10-10 12:19 ` [PATCH v4 6/6] KVM: x86/mmu: Cleanup range-based flushing for given page Hou Wenlong
2023-01-19 20:54 ` [PATCH v4 0/6] KVM: x86/mmu: Fix wrong usages of range-based tlb flushing Sean Christopherson
2023-01-19 23:09 ` 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=cover.1665214747.git.houwenlong.hwl@antgroup.com \
--to=houwenlong.hwl@antgroup.com \
--cc=dmatlack@google.com \
--cc=kvm@vger.kernel.org \
--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.