bianbu-linux-6.6/drivers/gpu/drm/i915/gem
Chris Wilson 036867e93e drm/i915/gem: Pin the L-shape quirked object as unshrinkable
When instantiating a tiled object on an L-shaped memory machine, we mark
the object as unshrinkable to prevent the shrinker from trying to swap
out the pages. We have to do this as we do not know the swizzling on the
individual pages, and so the data will be scrambled across swap out/in.

Not only do we need to move the object off the shrinker list, we need to
mark the object with shrink_pin so that the counter is consistent across
calls to madvise.

v2: in the madvise ioctl we need to check if the object is currently
shrinkable/purgeable, not if the object type supports shrinking

Fixes: 0175969e48 ("drm/i915/gem: Use shrinkable status for unknown swizzle quirks")
References: https://gitlab.freedesktop.org/drm/intel/-/issues/3293
References: https://gitlab.freedesktop.org/drm/intel/-/issues/3450
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: <stable@vger.kernel.org> # v5.12+
Link: https://patchwork.freedesktop.org/patch/msgid/20210517084640.18862-1-matthew.auld@intel.com
(cherry picked from commit 8777d17b68)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2021-05-19 09:50:08 +03:00
..
selftests Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_busy.c drm/i915: Align engine->uabi_class/instance with i915_drm.h 2020-01-20 09:13:01 +00:00
i915_gem_clflush.c drm/i915: Rework clflush to work correctly without obj->mm.lock. 2021-03-24 17:27:20 +01:00
i915_gem_clflush.h drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_client_blt.c drm/i915/gem: Perform all asynchronous waits prior to marking payload start 2020-11-03 15:00:06 +00:00
i915_gem_client_blt.h drm/i915: add in-kernel blitter client 2019-05-30 12:01:44 +01:00
i915_gem_context.c Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_context.h drm/i915/gem: Drop free_work for GEM contexts 2020-12-16 15:14:09 +00:00
i915_gem_context_types.h drm/i915: Fail too long user submissions by default 2021-03-26 01:01:27 +01:00
i915_gem_create.c drm/i915/gem: sanity check object size in gem_create 2021-01-15 08:00:03 +00:00
i915_gem_dmabuf.c Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_domain.c drm/i915: Take obj lock around set_domain ioctl 2021-03-24 17:27:20 +01:00
i915_gem_execbuffer.c drm/i915: Defer pin calls in buffer pool until first use by caller. 2021-03-24 17:27:20 +01:00
i915_gem_internal.c Merge branch 'stable/for-linus-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb 2021-05-04 10:58:49 -07:00
i915_gem_ioctls.h drm/i915/gem: Drop legacy execbuffer support (v2) 2021-03-18 14:25:42 +01:00
i915_gem_lmem.c drm/i915: Move HAS_STRUCT_PAGE to obj->flags 2021-03-24 11:47:37 +01:00
i915_gem_lmem.h drm/i915/region: convert object_create into object_init 2021-01-15 08:00:03 +00:00
i915_gem_mman.c drm/i915: Avoid div-by-zero on gen2 2021-05-12 20:52:24 +03:00
i915_gem_mman.h drm/i915/gem: Only revoke mmap handlers if active 2020-07-02 20:46:08 +01:00
i915_gem_object.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_object.h Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_object_blt.c drm/i915: Defer pin calls in buffer pool until first use by caller. 2021-03-24 17:27:20 +01:00
i915_gem_object_blt.h drm/i915: Convert i915_gem_object/client_blt.c to use ww locking as well, v2. 2020-09-07 14:31:22 +03:00
i915_gem_object_types.h drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_pages.c drm/i915/gem: Pin the L-shape quirked object as unshrinkable 2021-05-19 09:50:08 +03:00
i915_gem_phys.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_pm.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_pm.h drm/i915/gem: Move freeze/freeze_late next to suspend/suspend_late 2021-02-08 16:56:49 -05:00
i915_gem_region.c Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_region.h drm/i915: Move HAS_STRUCT_PAGE to obj->flags 2021-03-24 11:47:37 +01:00
i915_gem_shmem.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_shrinker.c drm/i915: Fix docbook descriptions for i915_gem_shrinker 2021-04-26 11:54:33 +03:00
i915_gem_shrinker.h drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_stolen.c Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_stolen.h drm/i915/gem: Move stolen node into GEM object union 2021-01-20 20:46:36 +00:00
i915_gem_throttle.c drm/i915/gem: Remove disordered per-file request list for throttling 2020-09-07 13:13:50 +03:00
i915_gem_tiling.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_userptr.c Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
i915_gem_wait.c drm/i915/display: Apply interactive priority to explicit flip fences 2021-01-19 23:22:33 +00:00
i915_gemfs.c drm/i915: Stop reconfiguring our shmemfs mountpoint 2019-08-09 20:18:30 +01:00
i915_gemfs.h drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00