[PATCH 1/2] Guc: fallback to memcpy
Sagar Arun Kamble
sagar.a.kamble at intel.com
Tue Jan 23 07:04:41 UTC 2018
From: Changbin Du <changbin.du at intel.com>
Not sure whether the clflush is mandatory.
Signed-off-by: Changbin Du <changbin.du at intel.com>
---
drivers/gpu/drm/i915/intel_guc_log.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
index 2ffc966..2ec3616 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/intel_guc_log.c
@@ -250,6 +250,16 @@ static unsigned int guc_get_log_buffer_size(enum guc_log_buffer_type type)
return 0;
}
+static void guc_copy_log_buffer(void *dst, void *src, unsigned long len)
+{
+ if (likely(i915_can_memcpy_from_wc(dst, src, len)))
+ i915_memcpy_from_wc(dst, src, len);
+ else {
+ drm_clflush_virt_range(src, len);
+ memcpy(dst, src, len);
+ }
+}
+
static void guc_read_update_log_buffer(struct intel_guc *guc)
{
unsigned int buffer_size, read_offset, write_offset, bytes_to_copy, full_cnt;
@@ -323,12 +333,12 @@ static void guc_read_update_log_buffer(struct intel_guc *guc)
/* Just copy the newly written data */
if (read_offset > write_offset) {
- i915_memcpy_from_wc(dst_data, src_data, write_offset);
+ guc_copy_log_buffer(dst_data, src_data, write_offset);
bytes_to_copy = buffer_size - read_offset;
} else {
bytes_to_copy = write_offset - read_offset;
}
- i915_memcpy_from_wc(dst_data + read_offset,
+ guc_copy_log_buffer(dst_data + read_offset,
src_data + read_offset, bytes_to_copy);
src_data += buffer_size;
@@ -520,15 +530,6 @@ int intel_guc_log_create(struct intel_guc *guc)
GUC_LOG_ISR_PAGES + 1 +
GUC_LOG_CRASH_PAGES + 1) << PAGE_SHIFT;
- /* We require SSE 4.1 for fast reads from the GuC log buffer and
- * it should be present on the chipsets supporting GuC based
- * submisssions.
- */
- if (WARN_ON(!i915_has_memcpy_from_wc())) {
- ret = -EINVAL;
- goto err;
- }
-
vma = intel_guc_allocate_vma(guc, size);
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);
--
1.9.1
More information about the Intel-gfx-trybot
mailing list