mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-23 16:53:58 -05:00
drm/panfrost: Add fdinfo support for memory stats
A new DRM GEM object function is added so that drm_show_memory_stats can provide more accurate memory usage numbers. Ideally, in panfrost_gem_status, the BO's purgeable flag would be checked after locking the driver's shrinker mutex, but drm_show_memory_stats takes over the drm file's object handle database spinlock, so there's potential for a race condition here. Signed-off-by: Adrián Larumbe <adrian.larumbe@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230929181616.2769345-4-adrian.larumbe@collabora.com
This commit is contained in:
parent
f11b0417ee
commit
9ccdac7aa8
2 changed files with 17 additions and 0 deletions
|
@ -568,6 +568,8 @@ static void panfrost_show_fdinfo(struct drm_printer *p, struct drm_file *file)
|
|||
struct panfrost_device *pfdev = dev->dev_private;
|
||||
|
||||
panfrost_gpu_show_fdinfo(pfdev, file->driver_priv, p);
|
||||
|
||||
drm_show_memory_stats(p, file);
|
||||
}
|
||||
|
||||
static const struct file_operations panfrost_drm_driver_fops = {
|
||||
|
|
|
@ -195,6 +195,20 @@ static int panfrost_gem_pin(struct drm_gem_object *obj)
|
|||
return drm_gem_shmem_pin(&bo->base);
|
||||
}
|
||||
|
||||
static enum drm_gem_object_status panfrost_gem_status(struct drm_gem_object *obj)
|
||||
{
|
||||
struct panfrost_gem_object *bo = to_panfrost_bo(obj);
|
||||
enum drm_gem_object_status res = 0;
|
||||
|
||||
if (bo->base.pages)
|
||||
res |= DRM_GEM_OBJECT_RESIDENT;
|
||||
|
||||
if (bo->base.madv == PANFROST_MADV_DONTNEED)
|
||||
res |= DRM_GEM_OBJECT_PURGEABLE;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static const struct drm_gem_object_funcs panfrost_gem_funcs = {
|
||||
.free = panfrost_gem_free_object,
|
||||
.open = panfrost_gem_open,
|
||||
|
@ -206,6 +220,7 @@ static const struct drm_gem_object_funcs panfrost_gem_funcs = {
|
|||
.vmap = drm_gem_shmem_object_vmap,
|
||||
.vunmap = drm_gem_shmem_object_vunmap,
|
||||
.mmap = drm_gem_shmem_object_mmap,
|
||||
.status = panfrost_gem_status,
|
||||
.vm_ops = &drm_gem_shmem_vm_ops,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue