Re: [PATCH v2 20/25] KVM: x86/mmu: pull CPU mode computation to kvm_init_mmu

From: Sean Christopherson
Date: Tue Mar 08 2022 - 14:45:24 EST


On Mon, Feb 21, 2022, Paolo Bonzini wrote:
> Do not lead init_kvm_*mmu into the temptation of poking
> into struct kvm_mmu_role_regs, by passing to it directly
> the CPU mode.
>
> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> ---
> arch/x86/kvm/mmu/mmu.c | 21 +++++++++------------
> 1 file changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index 47288643ab70..a7028c2ae5c7 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -4734,11 +4734,9 @@ kvm_calc_tdp_mmu_root_page_role(struct kvm_vcpu *vcpu,
> return role;
> }
>
> -static void init_kvm_tdp_mmu(struct kvm_vcpu *vcpu,
> - const struct kvm_mmu_role_regs *regs)
> +static void init_kvm_tdp_mmu(struct kvm_vcpu *vcpu, union kvm_mmu_paging_mode cpu_mode)

Please keep the newline. I like running over the 80 char soft limit when it
improves readability, but IMO stacking params is easier to read than a long line
unless it's over by like 3 chars or less.

> {
> struct kvm_mmu *context = &vcpu->arch.root_mmu;
> - union kvm_mmu_paging_mode cpu_mode = kvm_calc_cpu_mode(vcpu, regs);
> union kvm_mmu_page_role root_role = kvm_calc_tdp_mmu_root_page_role(vcpu, cpu_mode);
>
> if (cpu_mode.as_u64 == context->cpu_mode.as_u64 &&

...

> -static void init_kvm_nested_mmu(struct kvm_vcpu *vcpu, const struct kvm_mmu_role_regs *regs)
> +static void init_kvm_nested_mmu(struct kvm_vcpu *vcpu, union kvm_mmu_paging_mode new_mode)

And add one here (or retroactively add it back when @regs was constified).