[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 10/14] x86: Remove remaining uses of MTRR_* constants
No functional change intended. Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Signed-off-by: Demi Marie Obenour <demi@xxxxxxxxxxxxxxxxxxxxxx> --- xen/arch/x86/cpu/mtrr/generic.c | 2 +- xen/arch/x86/cpu/mtrr/main.c | 7 +++++-- xen/arch/x86/hvm/mtrr.c | 22 +++++++++++----------- xen/arch/x86/include/asm/mtrr.h | 4 ---- xen/arch/x86/mm/p2m-ept.c | 18 +++++++++--------- xen/arch/x86/mm/shadow/multi.c | 2 +- 6 files changed, 27 insertions(+), 28 deletions(-) diff --git a/xen/arch/x86/cpu/mtrr/generic.c b/xen/arch/x86/cpu/mtrr/generic.c index 660ae26c2350b3436a471155fc0426699ba8ac1d..85744fd881f888c9a1b92d2d99f24d8cad1395bd 100644 --- a/xen/arch/x86/cpu/mtrr/generic.c +++ b/xen/arch/x86/cpu/mtrr/generic.c @@ -125,7 +125,7 @@ boolean_param("mtrr.show", mtrr_show); static const char *__init mtrr_attrib_to_str(mtrr_type x) { - static const char __initconst strings[MTRR_NUM_TYPES][16] = + static const char __initconst strings[X86_NUM_MT - 1][16] = { [X86_MT_UC] = "uncachable", [X86_MT_WC] = "write-combining", diff --git a/xen/arch/x86/cpu/mtrr/main.c b/xen/arch/x86/cpu/mtrr/main.c index 2946003b84938f3b83c98b62dfaa3ace90822983..61e514e557106b09b317766e104feaa0fd838106 100644 --- a/xen/arch/x86/cpu/mtrr/main.c +++ b/xen/arch/x86/cpu/mtrr/main.c @@ -62,7 +62,7 @@ const struct mtrr_ops *__read_mostly mtrr_if = NULL; static void set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type type); -static const char *const mtrr_strings[MTRR_NUM_TYPES] = +static const char *const mtrr_strings[X86_NUM_MT] = { "uncachable", /* 0 */ "write-combining", /* 1 */ @@ -71,6 +71,7 @@ static const char *const mtrr_strings[MTRR_NUM_TYPES] = "write-through", /* 4 */ "write-protect", /* 5 */ "write-back", /* 6 */ + "?", /* 7 */ }; static const char *mtrr_attrib_to_str(int x) @@ -322,7 +323,9 @@ int mtrr_add_page(unsigned long base, unsigned long size, if ((error = mtrr_if->validate_add_page(base,size,type))) return error; - if (type >= MTRR_NUM_TYPES) { + if (type == X86_MT_RESERVED_1 || + type == X86_MT_RESERVED_2 || + type >= X86_MT_UCM) { printk(KERN_WARNING "mtrr: type: %u invalid\n", type); return -EINVAL; } diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index 31756e4e8b0a5c73400f5f12f2c88197eb68c474..81f33947bc7513d6b403eef6c485160ec8a6ba92 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -37,8 +37,8 @@ static const uint8_t pat_entry_2_pte_flags[8] = { _PAGE_PAT | _PAGE_PCD, _PAGE_PAT | _PAGE_PCD | _PAGE_PWT }; /* Effective mm type lookup table, according to MTRR and PAT. */ -static const uint8_t mm_type_tbl[MTRR_NUM_TYPES][X86_NUM_MT] = { -#define RS MEMORY_NUM_TYPES +static const uint8_t mm_type_tbl[X86_NUM_MT - 1][X86_NUM_MT] = { +#define RS X86_MT_UCM #define UC X86_MT_UC #define WB X86_MT_WB #define WC X86_MT_WC @@ -66,9 +66,9 @@ static const uint8_t mm_type_tbl[MTRR_NUM_TYPES][X86_NUM_MT] = { * Reverse lookup table, to find a pat type according to MTRR and effective * memory type. This table is dynamically generated. */ -static uint8_t __read_mostly mtrr_epat_tbl[MTRR_NUM_TYPES][MEMORY_NUM_TYPES] = - { [0 ... MTRR_NUM_TYPES-1] = - { [0 ... MEMORY_NUM_TYPES-1] = INVALID_MEM_TYPE } +static uint8_t __read_mostly mtrr_epat_tbl[X86_NUM_MT - 1][X86_NUM_MT] = + { [0 ... X86_NUM_MT - 2] = + { [0 ... X86_NUM_MT - 2] = INVALID_MEM_TYPE } }; /* Lookup table for PAT entry of a given PAT value in host PAT. */ @@ -79,13 +79,13 @@ static int __init cf_check hvm_mtrr_pat_init(void) { unsigned int i, j; - for ( i = 0; i < MTRR_NUM_TYPES; i++ ) + for ( i = 0; i < X86_NUM_MT - 1; i++ ) { for ( j = 0; j < X86_NUM_MT; j++ ) { unsigned int tmp = mm_type_tbl[i][j]; - if ( tmp < MEMORY_NUM_TYPES ) + if ( tmp < X86_NUM_MT - 1 ) mtrr_epat_tbl[i][tmp] = j; } } @@ -317,11 +317,11 @@ static uint8_t effective_mm_type(struct mtrr_state *m, uint8_t gmtrr_mtype) { uint8_t mtrr_mtype, pat_value; - + /* if get_pat_flags() gives a dedicated MTRR type, * just use it - */ - if ( gmtrr_mtype == NO_HARDCODE_MEM_TYPE ) + */ + if ( gmtrr_mtype == X86_MT_UCM ) mtrr_mtype = mtrr_get_type(m, gpa, 0); else mtrr_mtype = gmtrr_mtype; @@ -346,7 +346,7 @@ uint32_t get_pat_flags(struct vcpu *v, /* 1. Get the effective memory type of guest physical address, * with the pair of guest MTRR and PAT */ - guest_eff_mm_type = effective_mm_type(g, pat, gpaddr, + guest_eff_mm_type = effective_mm_type(g, pat, gpaddr, gl1e_flags, gmtrr_mtype); /* 2. Get the memory type of host physical address, with MTRR */ shadow_mtrr_type = mtrr_get_type(&mtrr_state, spaddr, 0); diff --git a/xen/arch/x86/include/asm/mtrr.h b/xen/arch/x86/include/asm/mtrr.h index 23f908063fb987ee8a5b2dd3d772106d3a55e644..b82d4587a3c4a1aac12f961b63c9e5b56a1be72a 100644 --- a/xen/arch/x86/include/asm/mtrr.h +++ b/xen/arch/x86/include/asm/mtrr.h @@ -3,10 +3,6 @@ #include <xen/mm.h> -#define MTRR_NUM_TYPES 7 -#define MEMORY_NUM_TYPES MTRR_NUM_TYPES -#define NO_HARDCODE_MEM_TYPE MTRR_NUM_TYPES - #define NORMAL_CACHE_MODE 0 #define NO_FILL_CACHE_MODE 2 diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index aa7a3287c46ace715106385151e1834b3cd64508..9f048a5680eb87518c1ac6b6bf25178d82ebc018 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -394,10 +394,10 @@ static bool ept_invalidate_emt_subtree(struct p2m_domain *p2m, mfn_t mfn, ept_entry_t e = atomic_read_ept_entry(&epte[i]); if ( !is_epte_valid(&e) || !is_epte_present(&e) || - (e.emt == MTRR_NUM_TYPES && (e.recalc || !recalc)) ) + (e.emt == X86_MT_UCM && (e.recalc || !recalc)) ) continue; - e.emt = MTRR_NUM_TYPES; + e.emt = X86_MT_UCM; if ( recalc ) e.recalc = 1; rc = atomic_write_ept_entry(p2m, &epte[i], e, level - 1); @@ -470,9 +470,9 @@ static int ept_invalidate_emt_range(struct p2m_domain *p2m, ept_entry_t e = atomic_read_ept_entry(&table[index]); if ( is_epte_valid(&e) && is_epte_present(&e) && - (e.emt != MTRR_NUM_TYPES || !e.recalc) ) + (e.emt != X86_MT_UCM || !e.recalc) ) { - e.emt = MTRR_NUM_TYPES; + e.emt = X86_MT_UCM; e.recalc = 1; wrc = atomic_write_ept_entry(p2m, &table[index], e, target); ASSERT(wrc == 0); @@ -655,7 +655,7 @@ static int cf_check resolve_misconfig(struct p2m_domain *p2m, unsigned long gfn) { bool ipat; - if ( e.emt != MTRR_NUM_TYPES ) + if ( e.emt != X86_MT_UCM ) break; if ( level == 0 ) @@ -665,7 +665,7 @@ static int cf_check resolve_misconfig(struct p2m_domain *p2m, unsigned long gfn) p2m_type_t nt; e = atomic_read_ept_entry(&epte[i]); - if ( e.emt == MTRR_NUM_TYPES ) + if ( e.emt == X86_MT_UCM ) e.emt = 0; if ( !is_epte_valid(&e) || !is_epte_present(&e) ) continue; @@ -741,7 +741,7 @@ static int cf_check resolve_misconfig(struct p2m_domain *p2m, unsigned long gfn) break; } - if ( e.emt == MTRR_NUM_TYPES ) + if ( e.emt == X86_MT_UCM ) { ASSERT(is_epte_present(&e)); ept_invalidate_emt_subtree(p2m, _mfn(e.mfn), e.recalc, level); @@ -931,7 +931,7 @@ ept_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mfn_t mfn, if ( emt >= 0 ) new_entry.emt = emt; else /* ept_handle_misconfig() will need to take care of this. */ - new_entry.emt = MTRR_NUM_TYPES; + new_entry.emt = X86_NUM_MT - 1; new_entry.ipat = ipat; new_entry.sp = !!i; @@ -1471,7 +1471,7 @@ static void cf_check ept_dump_p2m_table(unsigned char key) for ( i = ept->wl; i > 0; i-- ) { ept_entry = table + (gfn_remainder >> (i * EPT_TABLE_ORDER)); - if ( ept_entry->emt == MTRR_NUM_TYPES ) + if ( ept_entry->emt == X86_MT_UCM ) c = '?'; ret = ept_next_level(p2m, 1, &table, &gfn_remainder, i); if ( ret != GUEST_TABLE_NORMAL_PAGE ) diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index f5f7ff021bd9e057c5b6f6329de7acb5ef05d58f..964f21829841777156aa9bfc24490ea4e052c344 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -578,7 +578,7 @@ _sh_propagate(struct vcpu *v, gflags, gfn_to_paddr(target_gfn), mfn_to_maddr(target_mfn), - NO_HARDCODE_MEM_TYPE); + X86_MT_UCM); } } -- Sincerely, Demi Marie Obenour (she/her/hers) Invisible Things Lab
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |