From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: intel-xe@lists.freedesktop.org
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Somalapuram Amaranath" <Amaranath.Somalapuram@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Paulo Zanoni" <paulo.r.zanoni@intel.com>,
dri-devel@lists.freedesktop.org
Subject: [PATCH v9 0/6] TTM shrinker helpers and xe buffer object shrinker
Date: Mon, 19 Aug 2024 10:34:43 +0200 [thread overview]
Message-ID: <20240819083449.56701-1-thomas.hellstrom@linux.intel.com> (raw)
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@amd.com/T/
Where the comment about layering
https://lore.kernel.org/linux-mm/b7491378-defd-4f1c-31e2-29e4c77e2d67@amd.com/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 could in theory be skipped but introduces a possibility to easily
add or test multiple backup backends, like the direct swap-cache
insertion or even files into fast dedicated nvme storage for for example.
Patch 2 introduces helpers 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, since that tends
to be a bit delayed when left to kswapd.
Patch 3 Adds a simple error injection to the above code to help increase
test coverage.
Patch 4 Implements a shrinker helper in TTM, and exports the LRU walker.
Patch 5 Implements the xe bo shrinker.
Patch 6 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 seires.
v8:
- Address review comments from Matthew Brost as detailed in the
respective patches.
v9:
- Rebase and fix compilation errors
Cc: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Thomas Hellström (6):
drm/ttm: Add a virtual base class for graphics memory backup
drm/ttm/pool: Provide a helper to shrink pages
drm/ttm: Use fault-injection to test error paths
drm/ttm: Add a shrinker helper and export the LRU walker for driver
use
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_shmem.c | 139 ++++++++
drivers/gpu/drm/ttm/ttm_bo_util.c | 65 ++++
drivers/gpu/drm/ttm/ttm_pool.c | 419 ++++++++++++++++++++++++-
drivers/gpu/drm/ttm/ttm_tt.c | 37 +++
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/tests/xe_bo.c | 224 +++++++++++++
drivers/gpu/drm/xe/xe_bo.c | 166 +++++++++-
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 | 289 +++++++++++++++++
drivers/gpu/drm/xe/xe_shrinker.h | 18 ++
drivers/gpu/drm/xe/xe_ttm_sys_mgr.c | 3 +-
include/drm/ttm/ttm_backup.h | 137 ++++++++
include/drm/ttm/ttm_bo.h | 17 +
include/drm/ttm/ttm_pool.h | 6 +
include/drm/ttm/ttm_tt.h | 30 ++
18 files changed, 1567 insertions(+), 32 deletions(-)
create mode 100644 drivers/gpu/drm/ttm/ttm_backup_shmem.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
--
2.44.0
next reply other threads:[~2024-08-19 8:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-19 8:34 Thomas Hellström [this message]
2024-08-19 8:34 ` [PATCH v9 1/6] drm/ttm: Add a virtual base class for graphics memory backup Thomas Hellström
2024-08-19 8:34 ` [PATCH v9 2/6] drm/ttm/pool: Provide a helper to shrink pages Thomas Hellström
2024-08-19 8:34 ` [PATCH v9 3/6] drm/ttm: Use fault-injection to test error paths Thomas Hellström
2024-08-19 8:34 ` [PATCH v9 4/6] drm/ttm: Add a shrinker helper and export the LRU walker for driver use Thomas Hellström
2024-08-19 8:34 ` [PATCH v9 5/6] drm/xe: Add a shrinker for xe bos Thomas Hellström
2024-08-19 8:34 ` [PATCH v9 6/6] drm/xe: Increase the XE_PL_TT watermark Thomas Hellström
2024-08-19 8:40 ` ✓ CI.Patch_applied: success for TTM shrinker helpers and xe buffer object shrinker (rev8) Patchwork
2024-08-19 8:41 ` ✗ CI.checkpatch: warning " Patchwork
2024-08-19 8:42 ` ✓ CI.KUnit: success " Patchwork
2024-08-19 8:54 ` ✓ CI.Build: " Patchwork
2024-08-19 8:56 ` ✓ CI.Hooks: " Patchwork
2024-08-19 8:57 ` ✗ CI.checksparse: warning " Patchwork
2024-08-19 9:19 ` ✓ CI.BAT: success " Patchwork
2024-08-19 11:51 ` ✗ CI.FULL: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240819083449.56701-1-thomas.hellstrom@linux.intel.com \
--to=thomas.hellstrom@linux.intel.com \
--cc=Amaranath.Somalapuram@amd.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.brost@intel.com \
--cc=paulo.r.zanoni@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.