drm/i915/ttm: fix sg_table construction
If we encounter some monster sized local-memory page that exceeds the maximum sg length (UINT32_MAX), ensure that don't end up with some misaligned address in the entry that follows, leading to fireworks later. Also ensure we have some coverage of this in the selftests. v2(Chris): - Use round_down consistently to avoid udiv errors v3(Nirmoy): - Also update the max_segment in the selftest Fixes: f701b16d ("drm/i915/ttm: add i915_sg_from_buddy_resource") Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6379 Signed-off-by:Matthew Auld <matthew.auld@intel.com> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Cc: Nirmoy Das <nirmoy.das@linux.intel.com> Reviewed-by:
Nirmoy Das <nirmoy.das@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220711085859.24198-1-matthew.auld@intel.com
Showing
- drivers/gpu/drm/i915/gem/i915_gem_ttm.c 9 additions, 2 deletionsdrivers/gpu/drm/i915/gem/i915_gem_ttm.c
- drivers/gpu/drm/i915/i915_scatterlist.c 15 additions, 4 deletionsdrivers/gpu/drm/i915/i915_scatterlist.c
- drivers/gpu/drm/i915/i915_scatterlist.h 4 additions, 2 deletionsdrivers/gpu/drm/i915/i915_scatterlist.h
- drivers/gpu/drm/i915/intel_region_ttm.c 7 additions, 3 deletionsdrivers/gpu/drm/i915/intel_region_ttm.c
- drivers/gpu/drm/i915/intel_region_ttm.h 2 additions, 1 deletiondrivers/gpu/drm/i915/intel_region_ttm.h
- drivers/gpu/drm/i915/selftests/intel_memory_region.c 19 additions, 2 deletionsdrivers/gpu/drm/i915/selftests/intel_memory_region.c
- drivers/gpu/drm/i915/selftests/mock_region.c 2 additions, 1 deletiondrivers/gpu/drm/i915/selftests/mock_region.c
Loading