Re: [PATCH 3/4] KVM: SVM: Adjust MMIO masks (for caching) before doing SEV(-ES) setup

From: Kai Huang
Date: Thu Jul 28 2022 - 22:06:13 EST


On Thu, 2022-07-28 at 22:17 +0000, Sean Christopherson wrote:
> Adjust KVM's MMIO masks to account for the C-bit location prior to doing
> SEV(-ES) setup. A future patch will consume enable_mmio caching during
> SEV setup as SEV-ES _requires_ MMIO caching, i.e. KVM needs to disallow
> SEV-ES if MMIO caching is disabled.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
> ---
> arch/x86/kvm/svm/svm.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> index aef63aae922d..62e89db83bc1 100644
> --- a/arch/x86/kvm/svm/svm.c
> +++ b/arch/x86/kvm/svm/svm.c
> @@ -5034,13 +5034,16 @@ static __init int svm_hardware_setup(void)
> /* Setup shadow_me_value and shadow_me_mask */
> kvm_mmu_set_me_spte_mask(sme_me_mask, sme_me_mask);
>
> - /* Note, SEV setup consumes npt_enabled. */
> + svm_adjust_mmio_mask();
> +
> + /*
> + * Note, SEV setup consumes npt_enabled and enable_mmio_caching (which
> + * may be modified by svm_adjust_mmio_mask()).
> + */
> sev_hardware_setup();

If I am not seeing mistakenly, the code in latest queue branch doesn't consume
enable_mmio_caching. It is only added in your later patch.

So perhaps adjust the comment or merge patches together?

>
> svm_hv_hardware_setup();
>
> - svm_adjust_mmio_mask();
> -
> for_each_possible_cpu(cpu) {
> r = svm_cpu_init(cpu);
> if (r)