From: sashiko-bot@kernel.org
To: "Natalie Vock" <natalie.vock@gmx.de>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/10] drm/ttm: switch to ttm_bo_lru_for_each_reserved_guarded for swapout
Date: Fri, 03 Jul 2026 16:55:27 +0000 [thread overview]
Message-ID: <20260703165528.0DF681F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260703-ttm_2_drm_exec-v1-5-43685ac1286b@gmx.de>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] An unconditional `continue;` inside the `ttm_device_swapout` loop bypasses return value checking and early return logic.
- [Medium] The modified `ttm_bo_swapout` signature and removed export breaks KUnit tests, causing a compilation failure.
--
commit d0589786d39c3dde940e7f100cb47e8cc913ab55
Author: Christian König <christian.koenig@amd.com>
drm/ttm: switch to ttm_bo_lru_for_each_reserved_guarded for swapout
This commit refactors the TTM buffer object swapout logic to use
ttm_bo_lru_for_each_reserved_guarded instead of the wrapper walk.
It simplifies ttm_bo_swapout by removing the target page count
and resource manager arguments.
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 1fb8c53da0362..24c52df169ac8 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
[ ... ]
> @@ -1183,37 +1176,6 @@ ttm_bo_swapout_cb(struct ttm_lru_walk *walk, struct ttm_buffer_object *bo)
> return ret;
> }
>
> -/**
> - * ttm_bo_swapout() - Swap out buffer objects on the LRU list to shmem.
> - * @bdev: The ttm device.
> - * @ctx: The ttm_operation_ctx governing the swapout operation.
> - * @man: The resource manager whose resources / buffer objects are
> - * goint to be swapped out.
> - * @gfp_flags: The gfp flags used for shmem page allocations.
> - * @target: The desired number of pages to swap out.
> - *
> - * Return: The number of pages actually swapped out, or negative error code
> - * on error.
> - */
> -s64 ttm_bo_swapout(struct ttm_device *bdev, struct ttm_operation_ctx *ctx,
> - struct ttm_resource_manager *man, gfp_t gfp_flags,
> - s64 target)
> -{
[ ... ]
> -}
> -EXPORT_SYMBOL_FOR_TESTS_ONLY(ttm_bo_swapout);
[Severity: Medium]
Does removing this export and changing the function signature break KUnit
tests?
It looks like ttm_bo_validate_test_cases() in
drivers/gpu/drm/ttm/tests/ttm_bo_validate_test.c still calls this function
using the previous 5-argument signature, which could break the build when
CONFIG_DRM_TTM_KUNIT_TEST is enabled.
> -
> void ttm_bo_tt_destroy(struct ttm_buffer_object *bo)
> {
> if (bo->ttm == NULL)
> diff --git a/drivers/gpu/drm/ttm/ttm_device.c b/drivers/gpu/drm/ttm/ttm_device.c
> index d3bfb9a696a74..e4188e2ee7ab1 100644
> --- a/drivers/gpu/drm/ttm/ttm_device.c
> +++ b/drivers/gpu/drm/ttm/ttm_device.c
[ ... ]
> @@ -179,10 +185,15 @@ int ttm_device_swapout(struct ttm_device *bdev, struct ttm_operation_ctx *ctx,
> if (!man || !man->use_tt)
> continue;
>
> - lret = ttm_bo_swapout(bdev, ctx, man, gfp_flags, 1);
> - /* Can be both positive (num_pages) and negative (error) */
> - if (lret)
> - return lret;
> + ttm_bo_lru_for_each_reserved_guarded(&cursor, man, &arg, bo) {
> + lret = ttm_bo_swapout(bo, ctx, gfp_flags);
> + continue;
[Severity: High]
Does this unconditional continue make the error checking and return logic
below unreachable?
Because the loop skips to the next iteration immediately, it will
indiscriminately swap out every buffer object on the LRU list regardless of
the target pages and ignore any return values. Callers like
ttm_global_swapout() would interpret a 0 return value as failure to swap,
which could cause loops in ttm_tt_populate() to terminate prematurely even
if memory limits are exceeded.
> + /* Can be both positive (num_pages) and negative (error) */
> + if (lret && lret != -EBUSY && lret != -EALREADY)
> + return lret;
> + }
> + if (IS_ERR(bo))
> + return PTR_ERR(bo);
> }
> return 0;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260703-ttm_2_drm_exec-v1-0-43685ac1286b@gmx.de?part=5
next prev parent reply other threads:[~2026-07-03 16:55 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-03 16:31 [PATCH 00/10] Use drm_exec to lock TTM buffers, respin Natalie Vock
2026-07-03 16:31 ` [PATCH 01/10] drm/exec: Add helper to bypass IGNORE_DUPLICATES flag Natalie Vock
2026-07-03 16:38 ` sashiko-bot
2026-07-06 8:43 ` Christian König
2026-07-07 12:09 ` Thomas Hellström
2026-07-07 12:28 ` Christian König
2026-07-07 12:41 ` Thomas Hellström
2026-07-07 12:54 ` Christian König
2026-07-07 13:12 ` Natalie Vock
2026-07-03 16:31 ` [PATCH 02/10] drm/ttm: replace TTMs refcount with the DRM refcount v4 Natalie Vock
2026-07-06 13:14 ` Thomas Hellström
2026-07-06 14:49 ` Christian König
2026-07-06 17:01 ` Thomas Hellström
2026-07-06 17:51 ` Matthew Brost
2026-07-06 17:53 ` Thomas Hellström
2026-07-06 18:03 ` Matthew Brost
2026-07-06 18:05 ` Matthew Brost
2026-07-07 6:30 ` Thomas Hellström
2026-07-06 18:03 ` Thomas Hellström
2026-07-06 18:23 ` Christian König
2026-07-06 22:26 ` Dave Airlie
2026-07-07 6:56 ` Thomas Hellström
2026-07-07 7:35 ` Natalie Vock
2026-07-07 8:48 ` Christian König
2026-07-07 9:53 ` Thomas Hellström
2026-07-07 12:52 ` Christian König
2026-07-07 14:07 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 03/10] drm/ttm: remove ttm_lru_walk_ops Natalie Vock
2026-07-06 12:34 ` Thomas Hellström
2026-07-06 13:05 ` Christian König
2026-07-06 16:31 ` Matthew Brost
2026-07-06 13:08 ` Natalie Vock
2026-07-03 16:31 ` [PATCH 04/10] drm/ttm: grab BO reference before locking it Natalie Vock
2026-07-07 12:12 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 05/10] drm/ttm: switch to ttm_bo_lru_for_each_reserved_guarded for swapout Natalie Vock
2026-07-03 16:55 ` sashiko-bot [this message]
2026-07-07 12:17 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 06/10] drm/ttm: move zombie handling into ttm_bo_evict Natalie Vock
2026-07-07 12:24 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 07/10] drm/ttm: use ttm_bo_lru_for_each_reserved_guarded in evict_all Natalie Vock
2026-07-03 17:10 ` sashiko-bot
2026-07-07 12:35 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 08/10] drm/xe: remove workaround for TTM internals Natalie Vock
2026-07-03 17:10 ` sashiko-bot
2026-07-07 11:52 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 09/10] drm/ttm: support using drm_exec during eviction v4 Natalie Vock
2026-07-03 17:23 ` sashiko-bot
2026-07-07 12:48 ` Thomas Hellström
2026-07-03 16:31 ` [PATCH 10/10] drm/amdgpu: use drm_exec during BO validation Natalie Vock
2026-07-03 17:24 ` sashiko-bot
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=20260703165528.0DF681F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=natalie.vock@gmx.de \
--cc=sashiko-reviews@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox