Commit cc54eabd authored by Matthew Brost's avatar Matthew Brost
Browse files

drm/xe: Adjust page count tracepoints in shrinker



Page accounting can change via the shrinker without calling
xe_ttm_tt_unpopulate(), which normally updates page count tracepoints
through update_global_total_pages. Add a call to
update_global_total_pages when the shrinker successfully shrinks a BO.

v2:
 - Don't adjust global accounting when pinning (Stuart)

Cc: stable@vger.kernel.org
Fixes: ce3d39fa ("drm/xe/bo: add GPU memory trace points")
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarStuart Summers <stuart.summers@intel.com>
Link: https://patch.msgid.link/20260107205732.2267541-1-matthew.brost@intel.com
parent 3f0e3af4
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1054,6 +1054,7 @@ static long xe_bo_shrink_purge(struct ttm_operation_ctx *ctx,
			       unsigned long *scanned)
{
	struct xe_device *xe = ttm_to_xe_device(bo->bdev);
	struct ttm_tt *tt = bo->ttm;
	long lret;

	/* Fake move to system, without copying data. */
@@ -1078,8 +1079,10 @@ static long xe_bo_shrink_purge(struct ttm_operation_ctx *ctx,
			      .writeback = false,
			      .allow_move = false});

	if (lret > 0)
	if (lret > 0) {
		xe_ttm_tt_account_subtract(xe, bo->ttm);
		update_global_total_pages(bo->bdev, -(long)tt->num_pages);
	}

	return lret;
}
@@ -1165,8 +1168,10 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
	if (needs_rpm)
		xe_pm_runtime_put(xe);

	if (lret > 0)
	if (lret > 0) {
		xe_ttm_tt_account_subtract(xe, tt);
		update_global_total_pages(bo->bdev, -(long)tt->num_pages);
	}

out_unref:
	xe_bo_put(xe_bo);