x86/mtrr: introduce mask to get VCNT from MTRRcap MSR

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2018-07-05 15:28:56 +02:00
1 parent c5387c4d75
commit f7c587fa13
3 files changed
+7 -5

No files matched your search

+1 -1
View File
@@ -95,7 +95,7 @@ static void __init set_num_var_ranges(void)
config = 2;
else if (is_cpu(CENTAUR))
config = 8;
num_var_ranges = config & 0xff;
num_var_ranges = MASK_EXTR(config, MTRRcap_VCNT);
}
static void __init init_table(void)
+4 -4
View File
@@ -78,7 +78,7 @@ static uint8_t __read_mostly pat_entry_tbl[PAT_TYPE_NUMS] =
bool_t is_var_mtrr_overlapped(const struct mtrr_state *m)
{
unsigned int seg, i;
unsigned int num_var_ranges = (uint8_t)m->mtrr_cap;
unsigned int num_var_ranges = MASK_EXTR(m->mtrr_cap, MTRRcap_VCNT);
for ( i = 0; i < num_var_ranges; i++ )
{
@@ -193,7 +193,7 @@ static int get_mtrr_type(const struct mtrr_state *m,
uint8_t overlap_mtrr = 0;
uint8_t overlap_mtrr_pos = 0;
uint64_t mask = -(uint64_t)PAGE_SIZE << order;
unsigned int seg, num_var_ranges = m->mtrr_cap & 0xff;
unsigned int seg, num_var_ranges = MASK_EXTR(m->mtrr_cap, MTRRcap_VCNT);
if ( unlikely(!(m->enabled & 0x2)) )
return MTRR_TYPE_UNCACHABLE;
@@ -483,7 +483,7 @@ bool mtrr_pat_not_equal(const struct vcpu *vd, const struct vcpu *vs)
if ( md->enabled & 2 )
{
unsigned int num_var_ranges = (uint8_t)md->mtrr_cap;
unsigned int num_var_ranges = MASK_EXTR(md->mtrr_cap, MTRRcap_VCNT);
/* Test default type MSR. */
if ( md->def_type != ms->def_type )
@@ -499,7 +499,7 @@ bool mtrr_pat_not_equal(const struct vcpu *vd, const struct vcpu *vs)
return true;
/* Test variable ranges. */
if ( num_var_ranges != (uint8_t)ms->mtrr_cap ||
if ( num_var_ranges != MASK_EXTR(ms->mtrr_cap, MTRRcap_VCNT) ||
memcmp(md->var_ranges, ms->var_ranges,
num_var_ranges * sizeof(*md->var_ranges)) )
return true;
+2
View File
@@ -60,6 +60,8 @@
#define ATM_LNC_C6_AUTO_DEMOTE (1UL << 25)
#define MSR_MTRRcap 0x000000fe
#define MTRRcap_VCNT 0x000000ff
#define MSR_IA32_BBL_CR_CTL 0x00000119
#define MSR_IA32_SYSENTER_CS 0x00000174
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.