diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-10-04 23:50:33 +0200 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-10-05 05:10:22 +0200 |
commit | dd5523552c2897e3fde16fc2fc8f6332addf66ab (patch) | |
tree | 28b2b671d46a01344d24b7f73bfdd016f30eac60 /arch | |
parent | x86: mtrr_cleanup: first 1M may be covered in var mtrrs (diff) | |
download | linux-dd5523552c2897e3fde16fc2fc8f6332addf66ab.tar.xz linux-dd5523552c2897e3fde16fc2fc8f6332addf66ab.zip |
x86: mtrr_cleanup: treat WRPROT as UNCACHEABLE
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/mtrr/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index 663e530e08e0..5994a9f78f3d 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c @@ -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]++; } |