Quoting Niranjana Vishwanathapura (2019-11-22 22:57:21)
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.
Link to the IGTs, any selftests? Link to userspace changes?
Regards, Joonas