]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/x86/mm/pageattr.c
Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-opp'
[linux.git] / arch / x86 / mm / pageattr.c
index 5a287e523eab0b42d6e9b1e73574dc7ead77502b..28d42130243c0fdd463e7c2221af83115cce6bec 100644 (file)
@@ -214,7 +214,20 @@ static void cpa_flush_array(unsigned long *start, int numpages, int cache,
                            int in_flags, struct page **pages)
 {
        unsigned int i, level;
+#ifdef CONFIG_PREEMPT
+       /*
+        * Avoid wbinvd() because it causes latencies on all CPUs,
+        * regardless of any CPU isolation that may be in effect.
+        *
+        * This should be extended for CAT enabled systems independent of
+        * PREEMPT because wbinvd() does not respect the CAT partitions and
+        * this is exposed to unpriviledged users through the graphics
+        * subsystem.
+        */
+       unsigned long do_wbinvd = 0;
+#else
        unsigned long do_wbinvd = cache && numpages >= 1024; /* 4M threshold */
+#endif
 
        BUG_ON(irqs_disabled());