]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/gt: Pipelined page migration
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 17 Jun 2021 06:30:13 +0000 (08:30 +0200)
committerMatthew Auld <matthew.auld@intel.com>
Thu, 17 Jun 2021 13:23:05 +0000 (14:23 +0100)
commitb1a802e0b72a0e3b3830c09a226438e28dc31bd6
treebd57448d1d6b5664b04debaf7dfa70c200a97909
parentc495774ca6257361c47cc4752cdb8b0be5bfa8fd
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
drivers/gpu/drm/i915/Makefile
drivers/gpu/drm/i915/gt/intel_engine.h
drivers/gpu/drm/i915/gt/intel_gpu_commands.h
drivers/gpu/drm/i915/gt/intel_migrate.c [new file with mode: 0644]
drivers/gpu/drm/i915/gt/intel_migrate.h [new file with mode: 0644]
drivers/gpu/drm/i915/gt/intel_migrate_types.h [new file with mode: 0644]
drivers/gpu/drm/i915/gt/intel_ring.h
drivers/gpu/drm/i915/gt/selftest_migrate.c [new file with mode: 0644]
drivers/gpu/drm/i915/selftests/i915_live_selftests.h