Re: [PATCH] KVM: x86: small optimization for is_mtrr_mask calculation

From: Paolo Bonzini
Date: Thu Mar 05 2020 - 09:35:53 EST


On 05/03/20 03:48, linmiaohe wrote:
> From: Miaohe Lin <linmiaohe@xxxxxxxxxx>
>
> We can get is_mtrr_mask by calculating (msr - 0x200) % 2 directly.
>
> Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx>
> ---
> arch/x86/kvm/mtrr.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
> index 7f0059aa30e1..a98701d9f2bf 100644
> --- a/arch/x86/kvm/mtrr.c
> +++ b/arch/x86/kvm/mtrr.c
> @@ -348,7 +348,7 @@ static void set_var_mtrr_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data)
> int index, is_mtrr_mask;
>
> index = (msr - 0x200) / 2;
> - is_mtrr_mask = msr - 0x200 - 2 * index;
> + is_mtrr_mask = (msr - 0x200) % 2;
> cur = &mtrr_state->var_ranges[index];
>
> /* remove the entry if it's in the list. */
> @@ -424,7 +424,7 @@ int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
> int is_mtrr_mask;
>
> index = (msr - 0x200) / 2;
> - is_mtrr_mask = msr - 0x200 - 2 * index;
> + is_mtrr_mask = (msr - 0x200) % 2;
> if (!is_mtrr_mask)
> *pdata = vcpu->arch.mtrr_state.var_ranges[index].base;
> else
>

If you're going to do that, might as well use ">> 1" for index instead
of "/ 2", and "msr & 1" for is_mtrr_mask.

Paolo