2022-07-26 02:03:05

by Hao Peng

[permalink] [raw]
Subject: [PATCH] kvm: mmu: Simplify judgment conditions

From: Peng Hao <[email protected]>

kvm_shadow_root_allocated() has been checked before in
mmu_first_shadow_root_alloc,
and subsequent kvm_memslots_have_rmaps() does not need to check
kvm_shadow_root_allocated() again.

Signed-off-by: Peng Hao <[email protected]>
---
arch/x86/kvm/mmu/mmu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 52664c3caaab..ecd64c06f839 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -3584,7 +3584,7 @@ static int mmu_first_shadow_root_alloc(struct kvm *kvm)
* Check if anything actually needs to be allocated, e.g. all metadata
* will be allocated upfront if TDP is disabled.
*/
- if (kvm_memslots_have_rmaps(kvm) &&
+ if (!is_tdp_mmu_enabled(kvm) &&
kvm_page_track_write_tracking_enabled(kvm))
goto out_success;

--
2.27.0


2022-07-26 14:55:14

by Sean Christopherson

[permalink] [raw]
Subject: Re: [PATCH] kvm: mmu: Simplify judgment conditions

On Tue, Jul 26, 2022, Hao Peng wrote:
> From: Peng Hao <[email protected]>
>
> kvm_shadow_root_allocated() has been checked before in
> mmu_first_shadow_root_alloc,
> and subsequent kvm_memslots_have_rmaps() does not need to check
> kvm_shadow_root_allocated() again.

Heh, this has come up before[*]. I agree with Paolo that checking for rmaps is
more intuitive than checking for !TDP MMU. I'm not sure I agree about dropping
the check entirely though, it just seems like we'll end up back here again, i.e.
someone will inevitably propose optimizing the case where KVM has already allocated
rmaps and gfn_track.

[*] https://lore.kernel.org/all/[email protected]

> Signed-off-by: Peng Hao <[email protected]>
> ---
> arch/x86/kvm/mmu/mmu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 52664c3caaab..ecd64c06f839 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -3584,7 +3584,7 @@ static int mmu_first_shadow_root_alloc(struct kvm *kvm)
> * Check if anything actually needs to be allocated, e.g. all metadata
> * will be allocated upfront if TDP is disabled.
> */
> - if (kvm_memslots_have_rmaps(kvm) &&
> + if (!is_tdp_mmu_enabled(kvm) &&
> kvm_page_track_write_tracking_enabled(kvm))
> goto out_success;
>
> --
> 2.27.0