x86: mtrr_cleanup: treat WRPROT as UNCACHEABLE
authorYinghai Lu <yhlu.kernel@gmail.com>
Sat, 4 Oct 2008 21:50:33 +0000 (14:50 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Sun, 5 Oct 2008 03:10:22 +0000 (20:10 -0700)
For the purpose of MTRR canonicalization, treat WRPROT as UNCACHEABLE.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/cpu/mtrr/main.c

index 663e530e08e0f878006f8a6e6ebcacd6a4522c64..5994a9f78f3d30dfe9ef80ebb4b8a41bfa6965dc 100644 (file)
@@ -759,7 +759,8 @@ x86_get_mtrr_mem_range(struct res_range *range, int nr_range,
        /* take out UC ranges */
        for (i = 0; i < num_var_ranges; i++) {
                type = range_state[i].type;
-               if (type != MTRR_TYPE_UNCACHABLE)
+               if (type != MTRR_TYPE_UNCACHABLE &&
+                   type != MTRR_TYPE_WRPROT)
                        continue;
                size = range_state[i].size_pfn;
                if (!size)
@@ -1248,6 +1249,8 @@ static int __init mtrr_cleanup(unsigned address_bits)
                        continue;
                if (!size)
                        type = MTRR_NUM_TYPES;
+               if (type == MTRR_TYPE_WRPROT)
+                       type = MTRR_TYPE_UNCACHABLE;
                num[type]++;
        }