]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
accel/ivpu: Count only resident buffers in memory utilization
authorKarol Wachowski <karol.wachowski@linux.intel.com>
Thu, 6 Nov 2025 10:10:52 +0000 (11:10 +0100)
committerKarol Wachowski <karol.wachowski@linux.intel.com>
Wed, 12 Nov 2025 06:58:44 +0000 (07:58 +0100)
Do not count buffer objects that have no backing pages, including imported
buffers where pages are set by VM faults triggered by userspace or pinned
by other drivers. Instead, return information about actual memory used by
the NPU.

Counting imported buffers results in incorrect calculations when
the same pages are counted multiple times, giving overly high
results.

Fixes: 7bfc9fa99580 ("accel/ivpu: Expose NPU memory utilization info in sysfs")
Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Link: https://patch.msgid.link/20251106101052.1050348-3-karol.wachowski@linux.intel.com
drivers/accel/ivpu/ivpu_sysfs.c

index 268ab7744a8bbb04dd5f4d8e20608fc7786ac4cd..d250a10caca9b4e6202f5e7e109bbfa9536a9d95 100644 (file)
@@ -63,7 +63,8 @@ npu_memory_utilization_show(struct device *dev, struct device_attribute *attr, c
 
        mutex_lock(&vdev->bo_list_lock);
        list_for_each_entry(bo, &vdev->bo_list, bo_list_node)
-               total_npu_memory += bo->base.base.size;
+               if (ivpu_bo_is_resident(bo))
+                       total_npu_memory += ivpu_bo_size(bo);
        mutex_unlock(&vdev->bo_list_lock);
 
        return sysfs_emit(buf, "%lld\n", total_npu_memory);