[PATCH v17 13/18] drm/shmem-helper: Add memory shrinker
Dmitry Osipenko
dmitry.osipenko at collabora.com
Sun Oct 8 21:32:11 UTC 2023
On 10/3/23 12:00, Boris Brezillon wrote:
>> I'd prefer to keep refcounting as is, don't see how to implement your
>> suggestion.
> Can you be more specific? I don't really see what the problem is with
> decrementing pages_use_count when you free the sgt (eviction), and
> re-incrementing it when the sgt is restored (swapin).
For the reference, we further discussed this question about refcounting
with Boris offline and found how to implement the refcnt drop done by
shrinker's evict/purge.
For evict/purge we can do:
if (!refcount_dec_not_one(&shmem->pages_use_count))
refcount_set(&shmem->pages_use_count, 0);
and then for swapin:
if (!refcount_inc_not_zero(&shmem->pages_use_count))
refcount_set(&shmem->pages_use_count, 1);
This resolves the issue with dropping refcnt to zero I was talking
about, allowing to delegate sgt's refcnt ownership to shrinker.
--
Best regards,
Dmitry
More information about the dri-devel
mailing list