[RFC 00/13] drm/i915/svm: Add SVM support
Niranjana Vishwanathapura
niranjana.vishwanathapura at intel.com
Fri Nov 22 20:57:21 UTC 2019
Shared Virtual Memory (SVM) allows the programmer to use a single virtual
address space which will be shared between threads executing on CPUs and GPUs.
It abstracts away from the user the location of the backing memory, and hence
simplifies the user programming model.
SVM supports two types of virtual memory allocation methods.
Runtime allocator requires the driver to provide memory allocation and
management interface, like buffer object (BO) interface.
Whereas system allocator makes use of default OS memory allocation and
management support like malloc().
This patch series adds both SVM system and runtime allocator support
to i915 driver.
The patch series includes
- SVM support for both system and runtime allocation.
- Plugin in device memory with the Linux kernel.
- User API advertising SVM capability and configuration by user on per
vm basis.
- User API to bind an address range or a BO with a device page table.
- User API to migrate an address range to device memory.
- Implicit migration by moving pages or BOs back from device to host
memory upon CPU access.
- CPU copy and blitter copy support for migrating the pages/BOs.
- Large page mapping support
- Page table dump support.
References:
https://www.kernel.org/doc/Documentation/vm/hmm.rst
The HMM use cases in the Linux kernel.
Niranjana Vishwanathapura (12):
drm/i915/svm: Add SVM documentation
drm/i915/svm: Define SVM UAPI
drm/i915/svm: Runtime (RT) allocator support
drm/i915/svm: Page table update support for SVM
drm/i915/svm: Page table mirroring support
drm/i915/svm: Device memory support
drm/i915/svm: Implicitly migrate pages upon CPU fault
drm/i915/svm: Page copy support during migration
drm/i915/svm: Add functions to blitter copy SVM buffers
drm/i915/svm: Use blitter copy for migration
drm/i915/svm: Add support to en/disable SVM
drm/i915/svm: Add page table dump support
Venkata Sandeep Dhanalakota (1):
drm/i915/svm: Implicitly migrate BOs upon CPU access
Documentation/gpu/i915.rst | 29 +
drivers/gpu/drm/i915/Kconfig | 23 +
drivers/gpu/drm/i915/Kconfig.debug | 14 +
drivers/gpu/drm/i915/Makefile | 6 +
drivers/gpu/drm/i915/gem/i915_gem_context.c | 95 ++-
drivers/gpu/drm/i915/gem/i915_gem_context.h | 2 +
.../gpu/drm/i915/gem/i915_gem_context_types.h | 1 +
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 65 +-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 10 +
drivers/gpu/drm/i915/gem/i915_gem_object.c | 43 +-
drivers/gpu/drm/i915/gem/i915_gem_object.h | 6 +
drivers/gpu/drm/i915/gem/i915_gem_svm.c | 51 ++
drivers/gpu/drm/i915/gem/i915_gem_svm.h | 22 +
drivers/gpu/drm/i915/gem/i915_gem_wait.c | 2 +-
drivers/gpu/drm/i915/i915_buddy.h | 12 +
drivers/gpu/drm/i915/i915_drv.c | 30 +-
drivers/gpu/drm/i915/i915_drv.h | 32 +
drivers/gpu/drm/i915/i915_gem_gtt.c | 158 +++-
drivers/gpu/drm/i915/i915_gem_gtt.h | 41 +
drivers/gpu/drm/i915/i915_getparam.c | 3 +
drivers/gpu/drm/i915/i915_svm.c | 298 +++++++
drivers/gpu/drm/i915/i915_svm.h | 71 ++
drivers/gpu/drm/i915/i915_svm_copy.c | 172 ++++
drivers/gpu/drm/i915/i915_svm_devmem.c | 772 ++++++++++++++++++
drivers/gpu/drm/i915/intel_memory_region.c | 4 -
drivers/gpu/drm/i915/intel_memory_region.h | 18 +
drivers/gpu/drm/i915/intel_region_lmem.c | 10 +
include/uapi/drm/i915_drm.h | 70 ++
28 files changed, 2024 insertions(+), 36 deletions(-)
create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_svm.c
create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_svm.h
create mode 100644 drivers/gpu/drm/i915/i915_svm.c
create mode 100644 drivers/gpu/drm/i915/i915_svm.h
create mode 100644 drivers/gpu/drm/i915/i915_svm_copy.c
create mode 100644 drivers/gpu/drm/i915/i915_svm_devmem.c
--
2.21.0.rc0.32.g243a4c7e27
More information about the dri-devel
mailing list