Re: [PATCH v1 0/5] Add memory shrinker to VirtIO-GPU DRM driver

From: Thomas Zimmermann
Date: Thu Mar 10 2022 - 14:02:34 EST


Hi

Am 09.03.22 um 23:25 schrieb Dmitry Osipenko:

The reason for this work is to keep GEM shmem pages mapped and allocated
even while the BO is neither mapped nor pinned.  As it is now, GEM SHMEM
creates and releases pages on each pin and unpin, and maps and unmaps
memory ranges on each vmap and vunmap.  It's all wasteful. Only the
first pin and vmap calls should establish pages and mappings and only
the purge and free functions should release them.

Hm, aren't maps and pins already refcounted?

They are. But even when the refcounter reaches 0 on deref, there's no need to remove the mapping or free the memory pages. We can keep them around for the next ref operation. Only the shrinker's purge or freeing the object has to do such clean-up operations. Such behavior is supported by TTM and we already use it in VRAM helpers as well.

Best regards
Thomas


The patchset adds new helpers for BO purging to struct
drm_gem_object_funcs. With this, I think it might be possible to have
one global DRM shrinker and let it handle all BOs; independent of each
BO's memory manager.

Thank you, I'll give it a try.

--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

Attachment: OpenPGP_signature
Description: OpenPGP digital signature