On Fri, 2025-01-10 at 10:47 +0100, Christian König wrote: > Any objections that I push patch #1 and #3 to drm-misc-next? > > They are general cleanups anyway and this way we have them out of the > way. > > Regards, > Christian. Please do. I have to rewrite the cover letter but that's not a big deal. Also perhaps consider adding a patch to remove the "allow_pools" functionality. Also re-raising the question if there is a way we can make TTM development scale a bit better, with a team of trusted reviewers? I am currently working under the assumption that you want to at least ack everything that goes into TTM? Thanks, Thomas > > Am 17.12.24 um 15:58 schrieb Thomas Hellström: > > This series implements TTM shrinker / eviction helpers and an xe bo > > shrinker. It builds on a previous series, *and obsoletes that one*. > > > > https://lore.kernel.org/linux-mm/b7491378-defd-4f1c-31e2-29e4c77e2d67@xxxxxxx/T/ > > > > Where the comment about layering > > https://lore.kernel.org/linux-mm/b7491378-defd-4f1c-31e2-29e4c77e2d67@xxxxxxx/T/#ma918844aa8a6efe8768fdcda0c6590d5c93850c9 > > > > now addressed, and this version also implements shmem objects for > > backup > > rather than direct swap-cache insertions, which was used in the > > previuos > > series. It turns out that with per-page backup / shrinking, shmem > > objects > > appears to work just as well as direct swap-cache insertions with > > the > > added benefit that was introduced in the previous TTM shrinker > > series to > > avoid running out of swap entries isn't really needed. > > > > The series earlier consisted of a LRU traversal part and the > > current part. > > The LRU traversal part is merged, but is still mentioned in the > > history > > below. > > > > Patch 1 balances ttm_resource_cursor_fini() with an init function. > > It > > makes patch 5 more straightforward. > > > > Patch 2 introduces a backup implemententaion. > > > > Patch 3 reworks the structure of ttm_pool_alloc in preparation for > > patch 4. > > > > Patch 4 introduces functionality in the ttm_pool code for page-by- > > page shrinking > > and recovery. It avoids having to temporarily allocate a huge > > amount of > > memory to be able to shrink a buffer object. It also introduces the > > possibility to immediately write-back pages if needed. > > > > Patch 5 Adds a simple error injection to the above code to help > > increase > > test coverage. > > > > Patch 6 Implements a macro for LRU iteration. > > > > Patch 7 Introduces driver-facing helpers for shrinking. > > > > Patch 8 Implements the xe bo shrinker. > > > > Patch 9 Increases (removes) the XE_PL_TT watermark. > > > > v2: > > - Squash obsolete revision history in the patch commit messages. > > - Fix a couple of review comments by Christian > > - Don't store the mem_type in the TTM managers but in the > > resource cursor. > > - Rename introduced TTM *back_up* function names to *backup* > > - Add ttm pool recovery fault injection. > > - Shrinker xe kunit test > > - Various bugfixes > > > > v3: > > - Address some review comments from Matthew Brost and Christian > > König. > > - Use the restartable LRU walk for TTM swapping and eviction. > > - Provide a POC drm_exec locking implementation for exhaustive > > eviction. (Christian König). > > > > v4: > > - Remove the RFC exhaustive eviction part. While the path to > > exhaustive > > eviction is pretty clear and demonstrated in v3, there is still > > some > > drm_exec work that needs to be agreed and implemented. > > - Add shrinker power management. On some hw we need to wake when > > shrinking. > > - Fix the lru walker helper for -EALREADY errors. > > - Add drm/xe: Increase the XE_PL_TT watermark. > > > > v5: > > - Update also TTM kunit tests > > - Handle ghost- and zombie objects in the shrinker. > > - A couple of compile- and UAF fixes reported by Kernel Build Robot > > and > > Dan Carpenter. > > > > v6: > > - Address review comments from Matthew Brost on the > > restartable LRU traversal path. > > > > v7: > > - Split out TTM restartable LRU traversal path and merge that. > > - Adapt the review comments on that series. > > > > v8: > > - Address review comments from Matthew Brost as detailed in the > > respective patches. > > > > v9: > > - Rebase and fix compilation errors > > > > v10: > > - Use a LRU iteration macro rather than a function with a callback. > > - Rebasing and cleanups > > - Address some additional review comments from Matt Brost. > > - Drop the shrinker selftest. It was already merged as a swapout > > self-test. > > > > v11: > > - Move more core interaction to additional TTM helpers. > > - Don't back up without __GFP_FS, and don't start writeback without > > __GFP_IO. > > - Rebase. > > > > v12: > > - Fix an indentation flaw. > > - Rebase > > > > v13: > > - Remove the backup base-class, and use direct calls for ttm_backup > > (Christian König). > > - Rebase on the ttm_backup changes. > > - Move shrunken bos from the LRU list to the unevictable list. > > - Provide an accessor function with sanity checks to set the > > - ttm_tt::backup field. > > - Update documentation. > > > > v14: > > - Update documentation of ttm_backup_bytes_avail(). > > - Work around converting between struct file * and struct ttm- > > backup *. > > - Don't set up backup for imported buffers. > > > > v15: > > - ttm_backup return value change. (Christian König) > > - ttm_pool restore/alloc implementation rework (Christian König) > > - Documentation update. > > - Remove cond_resched (Christian König) > > > > Cc: Somalapuram Amaranath <Amaranath.Somalapuram@xxxxxxx> > > Cc: Christian König <christian.koenig@xxxxxxx> > > Cc: Matthew Brost <matthew.brost@xxxxxxxxx> > > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > > Cc: <dri-devel@xxxxxxxxxxxxxxxxxxxxx> > > > > Thomas Hellström (9): > > drm/ttm: Balance ttm_resource_cursor_init() and > > ttm_resource_cursor_fini() > > drm/ttm: Provide a shmem backup implementation > > drm/ttm/pool: Restructure the pool allocation code > > drm/ttm/pool, drm/ttm/tt: Provide a helper to shrink pages > > drm/ttm: Use fault-injection to test error paths > > drm/ttm: Add a macro to perform LRU iteration > > drm/ttm: Add helpers for shrinking > > drm/xe: Add a shrinker for xe bos > > drm/xe: Increase the XE_PL_TT watermark > > > > drivers/gpu/drm/ttm/Makefile | 2 +- > > drivers/gpu/drm/ttm/ttm_backup.c | 207 ++++++++ > > drivers/gpu/drm/ttm/ttm_bo.c | 3 +- > > drivers/gpu/drm/ttm/ttm_bo_util.c | 250 +++++++++- > > drivers/gpu/drm/ttm/ttm_pool.c | 718 > > +++++++++++++++++++++++---- > > drivers/gpu/drm/ttm/ttm_resource.c | 35 +- > > drivers/gpu/drm/ttm/ttm_tt.c | 83 ++++ > > drivers/gpu/drm/xe/Makefile | 1 + > > drivers/gpu/drm/xe/tests/xe_bo.c | 6 +- > > drivers/gpu/drm/xe/xe_bo.c | 202 +++++++- > > drivers/gpu/drm/xe/xe_bo.h | 36 ++ > > drivers/gpu/drm/xe/xe_device.c | 8 + > > drivers/gpu/drm/xe/xe_device_types.h | 2 + > > drivers/gpu/drm/xe/xe_shrinker.c | 258 ++++++++++ > > drivers/gpu/drm/xe/xe_shrinker.h | 18 + > > drivers/gpu/drm/xe/xe_ttm_sys_mgr.c | 3 +- > > include/drm/ttm/ttm_backup.h | 74 +++ > > include/drm/ttm/ttm_bo.h | 93 ++++ > > include/drm/ttm/ttm_pool.h | 8 + > > include/drm/ttm/ttm_resource.h | 11 +- > > include/drm/ttm/ttm_tt.h | 69 ++- > > 21 files changed, 1935 insertions(+), 152 deletions(-) > > create mode 100644 drivers/gpu/drm/ttm/ttm_backup.c > > create mode 100644 drivers/gpu/drm/xe/xe_shrinker.c > > create mode 100644 drivers/gpu/drm/xe/xe_shrinker.h > > create mode 100644 include/drm/ttm/ttm_backup.h > > >