summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Cheng <michael.cheng@intel.com>2022-03-21 15:38:15 -0700
committerMatt Roper <matthew.d.roper@intel.com>2022-03-22 10:10:51 -0700
commit055f15e7be2e03634b54bae53feb134ff1240d13 (patch)
tree615278fa49fa1a8b926752f1717b8f842c4d9847
parent6f30158f4014d346552cf3b999fd060e856e66d3 (diff)
downloadlinux-055f15e7be2e03634b54bae53feb134ff1240d13.tar.gz
linux-055f15e7be2e03634b54bae53feb134ff1240d13.tar.bz2
linux-055f15e7be2e03634b54bae53feb134ff1240d13.zip
drm/i915/gt: Re-work intel_write_status_page
Re-work intel_write_status_page to use drm_clflush_virt_range. This will prevent compiler errors when building for non-x86 architectures. Signed-off-by: Michael Cheng <michael.cheng@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220321223819.72833-2-michael.cheng@intel.com
-rw-r--r--drivers/gpu/drm/i915/gt/intel_engine.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h b/drivers/gpu/drm/i915/gt/intel_engine.h
index 1c0ab05c3c40..1431f1e9dbee 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -4,6 +4,7 @@
#include <asm/cacheflush.h>
#include <drm/drm_util.h>
+#include <drm/drm_cache.h>
#include <linux/hashtable.h>
#include <linux/irq_work.h>
@@ -143,15 +144,9 @@ intel_write_status_page(struct intel_engine_cs *engine, int reg, u32 value)
* of extra paranoia to try and ensure that the HWS takes the value
* we give and that it doesn't end up trapped inside the CPU!
*/
- if (static_cpu_has(X86_FEATURE_CLFLUSH)) {
- mb();
- clflush(&engine->status_page.addr[reg]);
- engine->status_page.addr[reg] = value;
- clflush(&engine->status_page.addr[reg]);
- mb();
- } else {
- WRITE_ONCE(engine->status_page.addr[reg], value);
- }
+ drm_clflush_virt_range(&engine->status_page.addr[reg], sizeof(value));
+ WRITE_ONCE(engine->status_page.addr[reg], value);
+ drm_clflush_virt_range(&engine->status_page.addr[reg], sizeof(value));
}
/*