OSDN Git Service

KVM: x86: Use MTRR macros to define possible MTRR MSR ranges
authorSean Christopherson <seanjc@google.com>
Thu, 11 May 2023 23:33:48 +0000 (16:33 -0700)
committerSean Christopherson <seanjc@google.com>
Thu, 1 Jun 2023 20:41:06 +0000 (13:41 -0700)
commit34a83deac31cd9fdecef331578422095af2db4b0
treeacfa78e377dd215af9a28e0f4be527e6a6afeb6f
parent9ae38b4fb13597ce1821376d23958bbe4976c759
KVM: x86: Use MTRR macros to define possible MTRR MSR ranges

Use the MTRR macros to identify the ranges of possible MTRR MSRs instead
of bounding the ranges with a mismash of open coded values and unrelated
MSR indices.  Carving out the gap for the machine check MSRs in particular
is confusing, as it's easy to incorrectly think the case statement handles
MCE MSRs instead of skipping them.

Drop the range-based funneling of MSRs between the end of the MCE MSRs
and MTRR_DEF_TYPE, i.e. 0x2A0-0x2FF, and instead handle MTTR_DEF_TYPE as
the one-off case that it is.

Extract PAT (0x277) as well in anticipation of dropping PAT "handling"
from the MTRR code.

Keep the range-based handling for the variable+fixed MTRRs even though
capturing unknown MSRs 0x214-0x24F is arguably "wrong".  There is a gap in
the fixed MTRRs, 0x260-0x267, i.e. the MTRR code needs to filter out
unknown MSRs anyways, and using a single range generates marginally better
code for the big switch statement.

Reviewed-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20230511233351.635053-6-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/mtrr.c
arch/x86/kvm/x86.c