diff options
author | venkatesh.pallipadi@intel.com <venkatesh.pallipadi@intel.com> | 2009-05-22 16:23:37 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-22 16:33:27 -0400 |
commit | 0b827537e339c084ac9384df588969d400be9e0d (patch) | |
tree | 26ae170ba3fd7077c28613f8cc7aba7d1b133430 | |
parent | 0c752a93353d9b17dbe148312d732fbe06d235e1 (diff) |
x86: bugfix wbinvd() model check instead of family check
wbinvd is supported on all CPUs 486 or later. But,
pageattr.c is checking x86_model >= 4 before wbinvd(), which looks like
an oversight bug. It was first introduced at one place by changeset
d7c8f21a8cad0228c7c5ce2bb6dbd95d1ee49d13 and got copied over to second
place in the same file later.
[ Impact: fix missing cache flush on early-model CPUs, potential data corruption ]
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | arch/x86/mm/pageattr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 797f9f107cb6..2cc019a3f71b 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -153,7 +153,7 @@ static void __cpa_flush_all(void *arg) | |||
153 | */ | 153 | */ |
154 | __flush_tlb_all(); | 154 | __flush_tlb_all(); |
155 | 155 | ||
156 | if (cache && boot_cpu_data.x86_model >= 4) | 156 | if (cache && boot_cpu_data.x86 >= 4) |
157 | wbinvd(); | 157 | wbinvd(); |
158 | } | 158 | } |
159 | 159 | ||
@@ -218,7 +218,7 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache, | |||
218 | 218 | ||
219 | /* 4M threshold */ | 219 | /* 4M threshold */ |
220 | if (numpages >= 1024) { | 220 | if (numpages >= 1024) { |
221 | if (boot_cpu_data.x86_model >= 4) | 221 | if (boot_cpu_data.x86 >= 4) |
222 | wbinvd(); | 222 | wbinvd(); |
223 | return; | 223 | return; |
224 | } | 224 | } |