Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/29] Introduce GPU SVM and Xe SVM implementation
@ 2024-10-16  3:24 Matthew Brost
  2024-10-16  3:24 ` [PATCH v2 01/29] drm/xe: Retry BO allocation Matthew Brost
                   ` (31 more replies)
  0 siblings, 32 replies; 129+ messages in thread
From: Matthew Brost @ 2024-10-16  3:24 UTC (permalink / raw)
  To: intel-xe, dri-devel
  Cc: apopple, airlied, christian.koenig, thomas.hellstrom,
	simona.vetter, felix.kuehling, dakr

Version 2 of GPU SVM has been promoted to the proper series from an RFC.
Thanks to everyone (especially Sima and Thomas) for their numerous
reviews on revision 1 and for helping to address many design issues.

This version has been tested with IGT [1] on PVC, BMG, and LNL.

Major changes in v2:
- Dropped mmap write abuse
- core MM locking and retry loops instead of driver locking to avoid races
- Removed physical to virtual references
- Embedded structure/ops for drm_gpusvm_devmem
- Fixed mremap and fork issues
- Added DRM pagemap
- Included RFC documentation in the kernel doc

Known issues in v2:
- gpusvm/pagemap is still located in the Xe directory; it can be moved
  to the drm directory in the next revision, but will remain in Xe for
  streamlined testing for now
- drm_gpusvm_range_evict looks up VMA; it may be possible to use
  hmm_range_fault here instead, with some minor tweaks to HMM

Matt

[1] https://patchwork.freedesktop.org/series/137545/#rev3

Matthew Brost (26):
  drm/xe: Retry BO allocation
  mm/migrate: Add migrate_device_prepopulated_range
  mm/migrate: Trylock device page in do_swap_page
  drm/gpusvm: Add support for GPU Shared Virtual Memory
  drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATON flag
  drm/xe: Add SVM init / close / fini to faulting VMs
  drm/xe: Add SVM range invalidation
  drm/gpuvm: Add DRM_GPUVA_OP_USER
  drm/xe: Add (re)bind to SVM page fault handler
  drm/xe: Add SVM garbage collector
  drm/xe: Add unbind to SVM garbage collector
  drm/xe: Do not allow system allocator VMA unbind if the GPU has
    bindings
  drm/xe: Enable system allocator uAPI
  drm/xe: Add migrate layer functions for SVM support
  drm/xe: Add SVM device memory mirroring
  drm/xe: Add drm_gpusvm_devmem to xe_bo
  drm/xe: Add GPUSVM devic memory copy vfunc functions
  drm/xe: Add Xe SVM populate_devmem_pfn vfunc
  drm/xe: Add Xe SVM devmem_release vfunc
  drm/xe: Add BO flags required for SVM
  drm/xe: Add SVM VRAM migration
  drm/xe: Basic SVM BO eviction
  drm/xe: Add SVM debug
  drm/xe: Add modparam for SVM notifier size
  drm/xe: Add always_migrate_to_vram modparam
  drm/doc: gpusvm: Add GPU SVM documentation

Thomas Hellström (3):
  drm/pagemap: Add DRM pagemap
  drm/xe: Add dma_addr res cursor
  drm/xe: Add drm_pagemap ops to SVM

 Documentation/gpu/rfc/gpusvm.rst     |   70 +
 Documentation/gpu/rfc/index.rst      |    4 +
 drivers/gpu/drm/xe/Makefile          |    4 +-
 drivers/gpu/drm/xe/drm_gpusvm.c      | 2074 ++++++++++++++++++++++++++
 drivers/gpu/drm/xe/drm_gpusvm.h      |  447 ++++++
 drivers/gpu/drm/xe/drm_pagemap.h     |  103 ++
 drivers/gpu/drm/xe/xe_bo.c           |   43 +-
 drivers/gpu/drm/xe/xe_bo.h           |    2 +
 drivers/gpu/drm/xe/xe_bo_types.h     |    5 +
 drivers/gpu/drm/xe/xe_device_types.h |   15 +
 drivers/gpu/drm/xe/xe_gt_pagefault.c |   17 +-
 drivers/gpu/drm/xe/xe_migrate.c      |  149 ++
 drivers/gpu/drm/xe/xe_migrate.h      |   10 +
 drivers/gpu/drm/xe/xe_module.c       |    7 +
 drivers/gpu/drm/xe/xe_module.h       |    2 +
 drivers/gpu/drm/xe/xe_pt.c           |  362 ++++-
 drivers/gpu/drm/xe/xe_pt.h           |    3 +
 drivers/gpu/drm/xe/xe_pt_types.h     |    2 +
 drivers/gpu/drm/xe/xe_res_cursor.h   |  116 +-
 drivers/gpu/drm/xe/xe_svm.c          |  840 +++++++++++
 drivers/gpu/drm/xe/xe_svm.h          |   60 +
 drivers/gpu/drm/xe/xe_tile.c         |    5 +
 drivers/gpu/drm/xe/xe_vm.c           |  286 +++-
 drivers/gpu/drm/xe/xe_vm.h           |   15 +-
 drivers/gpu/drm/xe/xe_vm_types.h     |   44 +
 include/drm/drm_gpuvm.h              |    5 +
 include/linux/migrate.h              |    1 +
 include/uapi/drm/xe_drm.h            |   19 +-
 mm/memory.c                          |   13 +-
 mm/migrate_device.c                  |  104 +-
 30 files changed, 4695 insertions(+), 132 deletions(-)
 create mode 100644 Documentation/gpu/rfc/gpusvm.rst
 create mode 100644 drivers/gpu/drm/xe/drm_gpusvm.c
 create mode 100644 drivers/gpu/drm/xe/drm_gpusvm.h
 create mode 100644 drivers/gpu/drm/xe/drm_pagemap.h
 create mode 100644 drivers/gpu/drm/xe/xe_svm.c
 create mode 100644 drivers/gpu/drm/xe/xe_svm.h

-- 
2.34.1


^ permalink raw reply	[flat|nested] 129+ messages in thread

end of thread, other threads:[~2024-12-17 23:14 UTC | newest]

Thread overview: 129+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-16  3:24 [PATCH v2 00/29] Introduce GPU SVM and Xe SVM implementation Matthew Brost
2024-10-16  3:24 ` [PATCH v2 01/29] drm/xe: Retry BO allocation Matthew Brost
2024-10-16  3:24 ` [PATCH v2 02/29] mm/migrate: Add migrate_device_prepopulated_range Matthew Brost
2024-10-16  4:04   ` Alistair Popple
2024-10-16  4:46     ` Matthew Brost
2024-10-17  0:56       ` Matthew Brost
2024-10-17  1:49         ` Alistair Popple
2024-10-17  2:45           ` Matthew Brost
2024-10-17  3:21             ` Alistair Popple
2024-10-17  4:07               ` Matthew Brost
2024-10-17  5:49                 ` Alistair Popple
2024-10-17 15:40                   ` Matthew Brost
2024-10-17 21:58                     ` Alistair Popple
2024-10-18  0:54                       ` Matthew Brost
2024-10-18  5:59                         ` Alistair Popple
2024-10-18  6:39                           ` Mika Penttilä
2024-10-18  7:16                           ` Matthew Brost
2024-10-18  7:33                             ` Matthew Brost
2024-10-18  7:34                             ` Alistair Popple
2024-10-18  7:57                               ` Matthew Brost
2024-10-18  4:02                       ` Mika Penttilä
2024-10-18  5:55                         ` Alistair Popple
2024-10-16  3:24 ` [PATCH v2 03/29] mm/migrate: Trylock device page in do_swap_page Matthew Brost
2024-10-16  4:00   ` Alistair Popple
2024-10-16  4:41     ` Matthew Brost
2024-10-17  1:51       ` Alistair Popple
2024-10-25  0:31         ` Matthew Brost
2024-10-29  6:37           ` Alistair Popple
2024-11-01 17:19             ` Matthew Brost
2024-11-28 23:31   ` Alistair Popple
2024-12-13 22:16     ` Matthew Brost
2024-12-14  5:59       ` Matthew Brost
2024-10-16  3:24 ` [PATCH v2 04/29] drm/pagemap: Add DRM pagemap Matthew Brost
2024-10-16  3:24 ` [PATCH v2 05/29] drm/gpusvm: Add support for GPU Shared Virtual Memory Matthew Brost
2024-10-31 18:58   ` Thomas Hellström
2024-11-04 22:53     ` Matthew Brost
2024-11-04 15:25   ` Thomas Hellström
2024-11-04 17:21     ` Matthew Brost
2024-11-04 18:59       ` Thomas Hellström
2024-11-04 23:07         ` Matthew Brost
2024-11-05 10:22           ` Thomas Hellström
2024-11-05 16:12             ` Matthew Brost
2024-11-05 16:28               ` Thomas Hellström
2024-11-05 14:48   ` Thomas Hellström
2024-11-05 16:32     ` Matthew Brost
2024-11-20  3:00   ` Gwan-gyeong Mun
2024-11-29  0:00   ` Alistair Popple
2024-12-14  1:16     ` Matthew Brost
2024-10-16  3:24 ` [PATCH v2 06/29] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATON flag Matthew Brost
2024-11-18 13:44   ` Thomas Hellström
2024-11-19 16:01     ` Matthew Brost
2024-10-16  3:24 ` [PATCH v2 07/29] drm/xe: Add SVM init / close / fini to faulting VMs Matthew Brost
2024-11-19 12:13   ` Thomas Hellström
2024-11-19 16:22     ` Matthew Brost
2024-10-16  3:24 ` [PATCH v2 08/29] drm/xe: Add dma_addr res cursor Matthew Brost
2024-11-19 12:15   ` Thomas Hellström
2024-11-19 16:24     ` Matthew Brost
2024-10-16  3:24 ` [PATCH v2 09/29] drm/xe: Add SVM range invalidation Matthew Brost
2024-11-19 13:56   ` Thomas Hellström
2024-12-11 19:01     ` Matthew Brost
2024-12-14 23:11       ` Matthew Brost
2024-12-16 10:01       ` Thomas Hellström
2024-12-16 16:09         ` Matthew Brost
2024-12-16 17:35           ` Thomas Hellström
2024-10-16  3:24 ` [PATCH v2 10/29] drm/gpuvm: Add DRM_GPUVA_OP_USER Matthew Brost
2024-11-19 13:57   ` Thomas Hellström
2024-11-19 16:26     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 11/29] drm/xe: Add (re)bind to SVM page fault handler Matthew Brost
2024-11-19 14:26   ` Thomas Hellström
2024-12-11 19:07     ` Matthew Brost
2024-12-16 10:03       ` Thomas Hellström
2024-10-16  3:25 ` [PATCH v2 12/29] drm/xe: Add SVM garbage collector Matthew Brost
2024-11-19 14:45   ` Thomas Hellström
2024-12-11 19:17     ` Matthew Brost
2024-12-16 10:36       ` Thomas Hellström
2024-12-16 23:46         ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 13/29] drm/xe: Add unbind to " Matthew Brost
2024-11-19 15:31   ` Thomas Hellström
2024-11-19 23:44     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 14/29] drm/xe: Do not allow system allocator VMA unbind if the GPU has bindings Matthew Brost
2024-11-19 16:33   ` Thomas Hellström
2024-11-19 23:37     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 15/29] drm/xe: Enable system allocator uAPI Matthew Brost
2024-11-19 16:34   ` Thomas Hellström
2024-10-16  3:25 ` [PATCH v2 16/29] drm/xe: Add migrate layer functions for SVM support Matthew Brost
2024-11-19 16:45   ` Thomas Hellström
2024-11-19 23:08     ` Matthew Brost
2024-11-20  8:04       ` Thomas Hellström
2024-12-11 19:11         ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 17/29] drm/xe: Add SVM device memory mirroring Matthew Brost
2024-11-19 16:50   ` Thomas Hellström
2024-11-20  3:05   ` Gwan-gyeong Mun
2024-12-11 19:44     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 18/29] drm/xe: Add drm_gpusvm_devmem to xe_bo Matthew Brost
2024-11-19 16:51   ` Thomas Hellström
2024-12-15  4:38     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 19/29] drm/xe: Add GPUSVM devic memory copy vfunc functions Matthew Brost
2024-12-02 10:13   ` Thomas Hellström
2024-12-12  3:59     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 20/29] drm/xe: Add drm_pagemap ops to SVM Matthew Brost
2024-10-16  3:25 ` [PATCH v2 21/29] drm/xe: Add Xe SVM populate_devmem_pfn vfunc Matthew Brost
2024-12-02 10:19   ` Thomas Hellström
2024-10-16  3:25 ` [PATCH v2 22/29] drm/xe: Add Xe SVM devmem_release vfunc Matthew Brost
2024-12-02 10:21   ` Thomas Hellström
2024-10-16  3:25 ` [PATCH v2 23/29] drm/xe: Add BO flags required for SVM Matthew Brost
2024-12-02 10:44   ` Thomas Hellström
2024-12-11 21:42     ` Matthew Brost
2024-12-16 10:44       ` Thomas Hellström
2024-10-16  3:25 ` [PATCH v2 24/29] drm/xe: Add SVM VRAM migration Matthew Brost
2024-12-02 12:06   ` Thomas Hellström
2024-12-11 20:17     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 25/29] drm/xe: Basic SVM BO eviction Matthew Brost
2024-12-02 12:27   ` Thomas Hellström
2024-12-11 19:47     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 26/29] drm/xe: Add SVM debug Matthew Brost
2024-12-02 12:33   ` Thomas Hellström
2024-12-17  1:05     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 27/29] drm/xe: Add modparam for SVM notifier size Matthew Brost
2024-12-02 12:37   ` Thomas Hellström
2024-12-11 19:50     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 28/29] drm/xe: Add always_migrate_to_vram modparam Matthew Brost
2024-12-02 12:40   ` Thomas Hellström
2024-12-11 19:51     ` Matthew Brost
2024-10-16  3:25 ` [PATCH v2 29/29] drm/doc: gpusvm: Add GPU SVM documentation Matthew Brost
2024-12-02 13:00   ` Thomas Hellström
2024-12-17 23:14     ` Matthew Brost
2024-10-16  3:30 ` ✓ CI.Patch_applied: success for Introduce GPU SVM and Xe SVM implementation (rev2) Patchwork
2024-10-16  3:31 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-16  3:31 ` ✗ CI.KUnit: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox