From: Rob Clark <robdclark@xxxxxxxxxxxx> One would normally hope not to be under enough memory pressure to need to swap GEM objects to disk backed swap. But memory backed zram swap (as enabled on chromebooks, for example) can actually be quite fast and useful on devices with less RAM. On a 4GB device, opening up ~4 memory intensive web pages (in separate windows rather than tabs, to try and prevent tab discard), I see ~500MB worth of GEM objects, of which maybe only 10% are active at any time, and with unpin/evict enabled, only about half resident (which is a number that gets much lower if you simulate extreme memory pressure). Assuming a 2:1 compression ratio (I see a bit higher in practice, but cannot isolate swapped out GEM pages vs other), that is like having an extra 100+MB of RAM, or more under higher memory pressure. Rob Clark (8): drm/msm: ratelimit GEM related WARN_ON()s drm/msm: Reorganize msm_gem_shrinker_scan() drm/msm: Clear msm_obj->sgt in put_pages() drm/msm: Split iova purge and close drm/msm: Add $debugfs/gem stats on resident objects drm/msm: Track potentially evictable objects drm/msm: Small msm_gem_purge() fix drm/msm: Support evicting GEM objects to swap drivers/gpu/drm/msm/msm_drv.c | 2 +- drivers/gpu/drm/msm/msm_drv.h | 13 ++- drivers/gpu/drm/msm/msm_gem.c | 155 +++++++++++++++++-------- drivers/gpu/drm/msm/msm_gem.h | 68 +++++++++-- drivers/gpu/drm/msm/msm_gem_shrinker.c | 129 ++++++++++++-------- drivers/gpu/drm/msm/msm_gpu_trace.h | 13 +++ 6 files changed, 272 insertions(+), 108 deletions(-) -- 2.30.2