summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2021-06-17 08:30:13 +0200
committerMatthew Auld <matthew.auld@intel.com>2021-06-17 15:23:05 +0200
commitcf586021642d8017cde111b7dd1ba86224e9da51 (patch)
treebd57448d1d6b5664b04debaf7dfa70c200a97909 /drivers/gpu/drm/i915/selftests/i915_live_selftests.h
parentdrm/i915/gt: Export the pinned context constructor and destructor (diff)
downloadlinux-cf586021642d8017cde111b7dd1ba86224e9da51.tar.xz
linux-cf586021642d8017cde111b7dd1ba86224e9da51.zip
drm/i915/gt: Pipelined page migration
If we pipeline the PTE updates and then do the copy of those pages within a single unpreemptible command packet, we can submit the copies and leave them to be scheduled without having to synchronously wait under a global lock. In order to manage migration, we need to preallocate the page tables (and keep them pinned and available for use at any time), causing a bottleneck for migrations as all clients must contend on the limited resources. By inlining the ppGTT updates and performing the blit atomically, each client only owns the PTE while in use, and so we can reschedule individual operations however we see fit. And most importantly, we do not need to take a global lock on the shared vm, and wait until the operation is complete before releasing the lock for others to claim the PTE for themselves. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Co-developed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Signed-off-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210617063018.92802-8-thomas.hellstrom@linux.intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/selftests/i915_live_selftests.h')
-rw-r--r--drivers/gpu/drm/i915/selftests/i915_live_selftests.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/selftests/i915_live_selftests.h b/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
index a92c0e9b7e6b..be5e0191eaea 100644
--- a/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
+++ b/drivers/gpu/drm/i915/selftests/i915_live_selftests.h
@@ -26,6 +26,7 @@ selftest(gt_mocs, intel_mocs_live_selftests)
selftest(gt_pm, intel_gt_pm_live_selftests)
selftest(gt_heartbeat, intel_heartbeat_live_selftests)
selftest(requests, i915_request_live_selftests)
+selftest(migrate, intel_migrate_live_selftests)
selftest(active, i915_active_live_selftests)
selftest(objects, i915_gem_object_live_selftests)
selftest(mman, i915_gem_mman_live_selftests)