diff options
| -rw-r--r-- | arch/x86/mm/pageattr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 2cc019a3f71b..0f9052bcec4b 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
| @@ -204,6 +204,11 @@ static void cpa_flush_range(unsigned long start, int numpages, int cache) | |||
| 204 | } | 204 | } |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | static void wbinvd_local(void *unused) | ||
| 208 | { | ||
| 209 | wbinvd(); | ||
| 210 | } | ||
| 211 | |||
| 207 | static void cpa_flush_array(unsigned long *start, int numpages, int cache, | 212 | static void cpa_flush_array(unsigned long *start, int numpages, int cache, |
| 208 | int in_flags, struct page **pages) | 213 | int in_flags, struct page **pages) |
| 209 | { | 214 | { |
| @@ -219,7 +224,8 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache, | |||
| 219 | /* 4M threshold */ | 224 | /* 4M threshold */ |
| 220 | if (numpages >= 1024) { | 225 | if (numpages >= 1024) { |
| 221 | if (boot_cpu_data.x86 >= 4) | 226 | if (boot_cpu_data.x86 >= 4) |
| 222 | wbinvd(); | 227 | on_each_cpu(wbinvd_local, NULL, 1); |
| 228 | |||
| 223 | return; | 229 | return; |
| 224 | } | 230 | } |
| 225 | /* | 231 | /* |
