Hey,

For merging the pagemap patches through drm-xe:

Acked-by: Maarten Lankhorst <[email protected]>

Den 2025-12-19 kl. 12:32, skrev Thomas Hellström:
> This series aims at providing an initial implementation of multi-device
> SVM, where communitcation with peers (migration and direct execution out
> of peer memory) uses some form of fast interconnect. In this series
> we're using pcie p2p.
> 
> In a multi-device environment, the struct pages for device-private memory
> (the dev_pagemap) may take up a significant amount of system memory. We
> therefore want to provide a means of revoking / removing the dev_pagemaps
> not in use. In particular when a device is offlined, we want to block
> migrating *to* the device memory and migrate data already existing in the
> devices memory to system. The dev_pagemap then becomes unused and can be
> removed.
> 
> Removing and setting up a large dev_pagemap is also quite time-consuming,
> so removal of unused dev_pagemaps only happens on system memory pressure
> using a shrinker.
> 
> Patch 1 is a small debug printout fix.
> Patch 2 removes some dead code.
> Patch 3 fixes a condition where memory was used while being cleared.
> Patches 4-9 deals with dynamic drm_pagemaps as described above.
> Patches 10-14 adds infrastructure to handle remote drm_pagemaps with
> fast interconnects.
> Patch 15 extends the xe madvise() UAPI to handle remote drm_pagemaps.
> Patch 16 adds a pcie-p2p dma SVM interconnect to the xe driver.
> Patch 17 adds some SVM-related debug printouts for xe.
> Patch 18 adds documentation on how the drm_pagemaps are reference counted.
> Patch 19 Cleans up the usage of the dev_private owner.
> Patch 20 Introduces a gpusvm function to scan the current CPU address space.
> Patch 21 Uses the above function in Xe to avoid unnecessary migrations.
> Patch 22 Adds drm_pagemap support for p2p destination migration.
> Patch 23 Adds drm_pagemap support for p2p source migration.
> Patch 24 Adds an rwsem to optionally serialize migration.
> 
> What's still missing is implementation of migration policies.
> That will be implemented in follow-up series. 
> 
> v2:
> - Address review comments from Matt Brost.
> - Fix compilation issues reported by automated testing
> - Add patch 1, 17.
> - What's now patch 16 was extended to support p2p migration.
> v3:
> - Add patches 2, 18, 19, 10, 22. Main functionality is the address space
>   scan to avoid unnecessary migration, and p2p source migration which
>   is needed on Xe to decompress and to flush out the L2 cache.
> - Rework what's now Patch 21 slightly.
> - Minor fixes all over the place.
> v4:
> - Fix a build error (CI)
> - Fix possibly incorrect waiting for the pre_migrate_fence.
> v5:
> - New patch: broken out from patch 22: drm/pagemap: Remove some dead code
>   (Matt Brost)
> - New patch:  drm/xe/svm: Serialize migration to device if racing
>   (Matt Brost)
> - Fix a UAF in what's now patch 3. (CI)
> - Release the migrate fence early in patch 3.
> - Address review comments to patch 3. See the patch for details.
> - Address review comments to patch 22. See the patch for details.
> - Rebase, update R-Bs.
> v6:
> - Fix in patch 3. (Matt Brost)
> - Rebase patch 23 on fix in patch 3.
> - Update R-Bs.
> 
> Test-with: [email protected]
> 
> Thomas Hellström (24):
>   drm/xe/svm: Fix a debug printout
>   drm/pagemap: Remove some dead code
>   drm/pagemap, drm/xe: Ensure that the devmem allocation is idle before
>     use
>   drm/pagemap, drm/xe: Add refcounting to struct drm_pagemap
>   drm/pagemap: Add a refcounted drm_pagemap backpointer to struct
>     drm_pagemap_zdd
>   drm/pagemap, drm/xe: Manage drm_pagemap provider lifetimes
>   drm/pagemap: Add a drm_pagemap cache and shrinker
>   drm/xe: Use the drm_pagemap cache and shrinker
>   drm/pagemap: Remove the drm_pagemap_create() interface
>   drm/pagemap_util: Add a utility to assign an owner to a set of
>     interconnected gpus
>   drm/xe: Use the drm_pagemap_util helper to get a svm pagemap owner
>   drm/xe: Pass a drm_pagemap pointer around with the memory advise
>     attributes
>   drm/xe: Use the vma attibute drm_pagemap to select where to migrate
>   drm/xe: Simplify madvise_preferred_mem_loc()
>   drm/xe/uapi: Extend the madvise functionality to support foreign
>     pagemap placement for svm
>   drm/xe: Support pcie p2p dma as a fast interconnect
>   drm/xe/vm: Add a couple of VM debug printouts
>   drm/xe/svm: Document how xe keeps drm_pagemap references
>   drm/pagemap, drm/xe: Clean up the use of the device-private page owner
>   drm/gpusvm: Introduce a function to scan the current migration state
>   drm/xe: Use drm_gpusvm_scan_mm()
>   drm/pagemap, drm/xe: Support destination migration over interconnect
>   drm/pagemap: Support source migration over interconnect
>   drm/xe/svm: Serialize migration to device if racing
> 
>  drivers/gpu/drm/Makefile             |   3 +-
>  drivers/gpu/drm/drm_gpusvm.c         | 124 +++++
>  drivers/gpu/drm/drm_pagemap.c        | 565 +++++++++++++++++----
>  drivers/gpu/drm/drm_pagemap_util.c   | 568 +++++++++++++++++++++
>  drivers/gpu/drm/xe/xe_device.c       |  20 +
>  drivers/gpu/drm/xe/xe_device.h       |   2 +
>  drivers/gpu/drm/xe/xe_device_types.h |   5 +
>  drivers/gpu/drm/xe/xe_migrate.c      |  29 +-
>  drivers/gpu/drm/xe/xe_migrate.h      |   6 +-
>  drivers/gpu/drm/xe/xe_svm.c          | 721 ++++++++++++++++++++++-----
>  drivers/gpu/drm/xe/xe_svm.h          |  85 +++-
>  drivers/gpu/drm/xe/xe_tile.c         |  34 +-
>  drivers/gpu/drm/xe/xe_tile.h         |  21 +
>  drivers/gpu/drm/xe/xe_userptr.c      |   2 +-
>  drivers/gpu/drm/xe/xe_vm.c           |  65 ++-
>  drivers/gpu/drm/xe/xe_vm.h           |   1 +
>  drivers/gpu/drm/xe/xe_vm_madvise.c   | 106 +++-
>  drivers/gpu/drm/xe/xe_vm_types.h     |  21 +-
>  drivers/gpu/drm/xe/xe_vram_types.h   |  15 +-
>  include/drm/drm_gpusvm.h             |  29 ++
>  include/drm/drm_pagemap.h            | 128 ++++-
>  include/drm/drm_pagemap_util.h       |  92 ++++
>  include/uapi/drm/xe_drm.h            |  18 +-
>  23 files changed, 2359 insertions(+), 301 deletions(-)
>  create mode 100644 drivers/gpu/drm/drm_pagemap_util.c
>  create mode 100644 include/drm/drm_pagemap_util.h
> 

Reply via email to