[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



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.