Re: [PATCH v7 5/5] drm/panfrost: Implement generic DRM object RSS reporting function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Il 27/09/23 23:29, Adrián Larumbe ha scritto:
BO's RSS is updated every time new pages are allocated on demand and mapped
for the object at GPU page fault's IRQ handler, but only for heap buffers.
The reason this is unnecessary for non-heap buffers is that they are mapped
onto the GPU's VA space and backed by physical memory in their entirety at
BO creation time.

This calculation is unnecessary for imported PRIME objects, since heap
buffers cannot be exported by our driver, and the actual BO RSS size is the
one reported in its attached dmabuf structure.

Signed-off-by: Adrián Larumbe <adrian.larumbe@xxxxxxxxxxxxx>
Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
Reviewed-by: Steven Price <steven.price@xxxxxxx>
  drivers/gpu/drm/panfrost/panfrost_gem.c | 15 +++++++++++++++
  drivers/gpu/drm/panfrost/panfrost_gem.h |  5 +++++
  drivers/gpu/drm/panfrost/panfrost_mmu.c |  1 +
  3 files changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
index 7d8f83d20539..4365434b48db 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
@@ -208,6 +208,20 @@ static enum drm_gem_object_status panfrost_gem_status(struct drm_gem_object *obj
  	return res;
+static size_t panfrost_gem_rss(struct drm_gem_object *obj)
+	struct panfrost_gem_object *bo = to_panfrost_bo(obj);
+	if (bo->is_heap) {
+		return bo->heap_rss_size;
+	} else if (bo->base.pages) {
+		WARN_ON(bo->heap_rss_size);
+		return bo->base.base.size;
+	} else {
+		return 0;
+	}

I would do, instead...

	if (bo->is_heap) {
		return bo->heap_rss_size;
	} else if (bo->base.pages) {
		return bo->base.base.size;

	return 0;

Apart from that,
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux