From: Dave Airlie <airl...@redhat.com> This just adds the memcg init and memcg placement flag support.
Signed-off-by: Dave Airlie <airl...@redhat.com> --- drivers/gpu/drm/nouveau/nouveau_bo.c | 5 +++-- drivers/gpu/drm/nouveau/nouveau_gem.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index 2016c1e7242f..6bd8d9ed9f35 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -450,13 +450,13 @@ nouveau_bo_placement_set(struct nouveau_bo *nvbo, uint32_t domain, if (domain & NOUVEAU_GEM_DOMAIN_GART) { pl[*n].mem_type = TTM_PL_TT; pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_GART ? - TTM_PL_FLAG_FALLBACK : 0; + TTM_PL_FLAG_FALLBACK : TTM_PL_FLAG_MEMCG; (*n)++; } if (domain & NOUVEAU_GEM_DOMAIN_CPU) { pl[*n].mem_type = TTM_PL_SYSTEM; pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_CPU ? - TTM_PL_FLAG_FALLBACK : 0; + TTM_PL_FLAG_FALLBACK : TTM_PL_FLAG_MEMCG; (*n)++; } @@ -814,6 +814,7 @@ nouveau_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl) case TTM_PL_VRAM: nouveau_bo_placement_set(nvbo, NOUVEAU_GEM_DOMAIN_GART, NOUVEAU_GEM_DOMAIN_CPU); + nvbo->placements[0].flags &= ~TTM_PL_FLAG_MEMCG; break; default: nouveau_bo_placement_set(nvbo, NOUVEAU_GEM_DOMAIN_CPU, 0); diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 67e3c99de73a..56899c89bdd8 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -87,6 +87,7 @@ nouveau_gem_object_del(struct drm_gem_object *gem) return; } + mem_cgroup_put(nvbo->bo.memcg); ttm_bo_put(&nvbo->bo); pm_runtime_mark_last_busy(dev); @@ -254,6 +255,7 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain, if (IS_ERR(nvbo)) return PTR_ERR(nvbo); + nvbo->bo.memcg = get_mem_cgroup_from_mm(current->mm); nvbo->bo.base.funcs = &nouveau_gem_object_funcs; nvbo->no_share = domain & NOUVEAU_GEM_DOMAIN_NO_SHARE; -- 2.49.0