From: sashiko-bot@kernel.org
To: "Dave Airlie" <airlied@gmail.com>
Cc: mkoutny@suse.com, tj@kernel.org, dri-devel@lists.freedesktop.org,
hannes@cmpxchg.org
Subject: Re: [PATCH 08/10] amdgpu: add support for memory cgroups
Date: Mon, 06 Jul 2026 03:14:06 +0000 [thread overview]
Message-ID: <20260706031406.BB2C41F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260706024122.853329-9-airlied@gmail.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Evicted GPU buffers bypass memory cgroup limits because the memcg accounting flag is cleared during VRAM eviction and pages are never recharged upon re-validation.
- [Low] Missing dummy implementations for GPU page memory control functions when CONFIG_MEMCG is disabled causes a linker error.
--
commit 14a7ef9775310750fa8f3933b124ce94b537e5c7
Author: Dave Airlie <airlied@redhat.com>
amdgpu: add support for memory cgroups
This adds support for adding a obj cgroup to a buffer object,
and passing in the placement flags to make sure it's accounted
properly.
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 8062b3d611574..1c8123c564ac1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -155,11 +155,14 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
> amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT |
> AMDGPU_GEM_DOMAIN_CPU);
> }
> + for (int i = 0; i < abo->placement.num_placement; i++)
> + abo->placements[i].flags &= ~TTM_PL_FLAG_MEMCG;
[Severity: High]
Does clearing TTM_PL_FLAG_MEMCG during eviction allow memory cgroup limits to
be bypassed?
When a user forces eviction (for example, by allocating more VRAM), the flag
is cleared in amdgpu_evict_flags() and TTM moves the buffer to system memory.
The pages are then allocated via ttm_pool_alloc() with memcg_account set to
false, leaving them uncharged.
If the user later re-validates the buffer into GTT, ttm_bo_validate() calls
ttm_resource_compatible(). This function only checks the memory type and
contiguous flags, ignoring TTM_PL_FLAG_MEMCG.
This seems to allow the buffer to remain backed by uncharged system pages,
potentially letting a containerized workload exhaust host system memory.
> break;
> case TTM_PL_TT:
> case AMDGPU_PL_PREEMPT:
> default:
> amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
> + abo->placements[0].flags &= ~TTM_PL_FLAG_MEMCG;
[Severity: High]
Does this also allow bypassing memory cgroup limits for TTM_PL_TT evictions
to the CPU domain for the same reason?
[ ... ]
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 4c682b91cbbee..625de4a287eb3 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -3032,6 +3032,7 @@ __always_inline struct obj_cgroup *current_obj_cgroup(void)
>
> return rcu_dereference_check(root_mem_cgroup->nodeinfo[nid]->objcg, 1);
> }
> +EXPORT_SYMBOL_GPL(current_obj_cgroup);
>
> struct obj_cgroup *get_obj_cgroup_from_folio(struct folio *folio)
> {
[Severity: Low]
Will this series cause a linker error when CONFIG_DRM_TTM=y and CONFIG_MEMCG=n?
It looks like mem_cgroup_charge_gpu_page(), mem_cgroup_uncharge_gpu_page(),
and mem_cgroup_move_gpu_page_reclaim() are declared unconditionally in
include/linux/memcontrol.h.
However, their definitions in mm/memcontrol.c are skipped when CONFIG_MEMCG is
disabled.
Since ttm_pool_alloc_page() in drivers/gpu/drm/ttm/ttm_pool.c calls these
without ifdef guards, this seems to lead to undefined references during
linking.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260706024122.853329-1-airlied@gmail.com?part=8
next prev parent reply other threads:[~2026-07-06 3:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-06 2:36 drm/ttm/memcg/lru: enable memcg tracking for ttm, xe and amdgpu driver (part 2) Dave Airlie
2026-07-06 2:36 ` [PATCH 01/10] memcg: add support for GPU page counters. (v4) Dave Airlie
2026-07-06 3:01 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 02/10] ttm: add a memcg accounting flag to the alloc/populate APIs Dave Airlie
2026-07-06 2:58 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 03/10] ttm/pool: initialise the shrinker earlier Dave Airlie
2026-07-06 2:56 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 04/10] ttm: add objcg pointer to bo and tt (v2) Dave Airlie
2026-07-06 2:53 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 05/10] ttm/pool: enable memcg tracking and shrinker. (v3) Dave Airlie
2026-07-06 2:59 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 06/10] ttm: hook up memcg placement flags Dave Airlie
2026-07-06 3:01 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 07/10] memcontrol: allow objcg api when memcg is config off Dave Airlie
2026-07-06 2:55 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 08/10] amdgpu: add support for memory cgroups Dave Airlie
2026-07-06 3:14 ` sashiko-bot [this message]
2026-07-06 2:36 ` [PATCH 09/10] ttm: add support for a module option to disable memcg integration Dave Airlie
2026-07-06 3:10 ` sashiko-bot
2026-07-06 2:36 ` [PATCH 10/10] xe: create a flag to enable memcg accounting for XE as well Dave Airlie
2026-07-06 3:18 ` sashiko-bot
2026-07-06 7:59 ` drm/ttm/memcg/lru: enable memcg tracking for ttm, xe and amdgpu driver (part 2) Christian König
-- strict thread matches above, loose matches on Subject: below --
2026-07-06 5:22 drm/ttm/memcg/lru: enable memcg tracking for ttm, xe and amdgpu driver (part 2) (v2) Dave Airlie
2026-07-06 5:22 ` [PATCH 08/10] amdgpu: add support for memory cgroups Dave Airlie
2026-07-06 5:41 ` 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=20260706031406.BB2C41F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hannes@cmpxchg.org \
--cc=mkoutny@suse.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=tj@kernel.org \
/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.