On 18/03/2022 14:41, Dmitry Osipenko wrote: > > On 3/17/22 02:04, Dmitry Osipenko wrote: >> >> On 3/16/22 18:04, Steven Price wrote: >>> On 14/03/2022 22:42, Dmitry Osipenko wrote: >>>> Replace Panfrost's memory shrinker with a generic DRM memory shrinker. >>>> >>>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> >>>> --- >>> I gave this a spin on my Firefly-RK3288 board and everything seems to >>> work. So feel free to add a: >>> >>> Tested-by: Steven Price <steven.price@xxxxxxx> >>> >>> As Alyssa has already pointed out you need to remove the >>> panfrost_gem_shrinker.c file. But otherwise everything looks fine, and >>> I'm very happy to see the shrinker code gone ;) >> >> Awesome, thank you. > > Steven, could you please tell me how exactly you tested the shrinker? > > I realized that today's IGT doesn't have any tests for the Panfrost's > madvise ioctl. > > You may invoke "echo 2 > /proc/sys/vm/drop_caches" manually in order to > trigger shrinker while 3d app is running actively (like a game or > benchmark). Nothing crashing will be a good enough indicator that it > works okay. > > I may get an RK board next week and then will be able to test it by > myself, so please don't hurry. I have to admit it wasn't a very thorough test. I run glmark on the board with the following hack: diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c index b014dadcf51f..194dec00695a 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -279,6 +279,14 @@ static int panfrost_ioctl_submit(struct drm_device *dev, void *data, if (ret) goto out_cleanup_job; + { + struct shrink_control sc = { + .nr_to_scan = 1000 + }; + dev->shmem_shrinker->base.scan_objects(&dev->shmem_shrinker->base, + &sc); + } + ret = panfrost_job_push(job); if (ret) goto out_cleanup_job; That hack was specifically because I had some doubts about the removal of the 'gpu_usecount' counter and wanted to ensure that purging as the job is submitted wouldn't cause problems. The drop_caches file should also work AFAIK. Steve