Hi all, This is a 2nd repost with some fixes and cleanups. Original post is below.
https://lore.kernel.org/dri-devel/20250714052243.1149732-1-airl...@gmail.com/ is the 2nd post. https://lore.kernel.org/dri-devel/20250630045005.1337339-1-airl...@gmail.com/ is the 1st post. Differences since last posting: 1. Shakeel suggested I squash some export additions - done now 2. Shakeel suggested I use lruvec in the earlier vmstat accounting - done 3. Christian asked for the turn off patch to be more generic - added Kconfig/module option I would probably squash 16 into other places, but left it alone for now so we can see it. Christian has an outstanding statement on suspend/resume breakage that I'm waiting for a respone. I'd like to at least land 01->06 in drm-misc-next soon, to at least reduce the patch load. Patch order is now: 01->02: add support for global gpu stat counters 03->06: port ttm pools to list_lru for numa awareness 07->13,16: add memcg stats + gpu apis, then port ttm pools to memcg aware list_lru and shrinker 14: enable amdgpu to use new functionality. Differences since last posting: 1. Added patch 18: add a module option to allow pooled pages to not be stored in the lru per-memcg (Requested by Christian Konig) 2. Converged the naming and stats between vmstat and memcg (Suggested by Shakeel Butt) 3. Cleaned up the charge/uncharge code and some other bits. Dave. Original cover letter: tl;dr: start using list_lru/numa/memcg in GPU driver core and amdgpu driver for now. This is a complete series of patches, some of which have been sent before and reviewed, but I want to get the complete picture for others, and try to figure out how best to land this. There are 3 pieces to this: 01->02: add support for global gpu stat counters (previously posted, patch 2 is newer) 03->07: port ttm pools to list_lru for numa awareness 08->14: add memcg stats + gpu apis, then port ttm pools to memcg aware list_lru and shrinker 15->17: enable amdgpu to use new functionality. The biggest difference in the memcg code from previously is I discovered what obj cgroups were designed for and I'm reusing the page/objcg intergration that already exists, to avoid reinventing that wheel right now. There are some igt-gpu-tools tests I've written at: https://gitlab.freedesktop.org/airlied/igt-gpu-tools/-/tree/amdgpu-cgroups?ref_type=heads One problem is there are a lot of delayed action, that probably means the testing needs a bit more robustness, but the tests validate all the basic paths. Regards, Dave.