Add usage of unaligned wc mempy in read_update_log_buffer
as newer formats of GuC debug-log-events are no longer
guaranteed to be exactly 4-dwords long per event.

Signed-off-by: Alan Previn <alan.previn.teres.ale...@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.di...@intel.com>
---
 drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c 
b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
index c5a7aecd08ac..2fa952916120 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
@@ -459,13 +459,16 @@ static void _guc_log_copy_debuglogs_for_relay(struct 
intel_guc_log *log)
 
                /* Just copy the newly written data */
                if (read_offset > write_offset) {
-                       i915_memcpy_from_wc(dst_data, src_data, write_offset);
+                       if (!i915_memcpy_from_wc(dst_data, src_data, 
write_offset))
+                               i915_unaligned_memcpy_from_wc(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,
-                                   src_data + read_offset, bytes_to_copy);
+               if (!i915_memcpy_from_wc(dst_data + read_offset,
+                                        src_data + read_offset, bytes_to_copy))
+                       i915_unaligned_memcpy_from_wc(dst_data + read_offset,
+                                                     src_data + read_offset, 
bytes_to_copy);
 
                src_data += buffer_size;
                dst_data += buffer_size;
-- 
2.34.1

Reply via email to