Commit 1364a9ea authored by Thomas Hellström's avatar Thomas Hellström
Browse files

drm/xe/pm: Hold the validation lock around evicting user-space bos for suspend



During pm notifier eviction we may still race with validations.
Ensure those are blocked out during eviction to ensure we have
access to as much system memory as possible.

During the suspend operation itself, we run single-threaded so that
shouldn't be a problem.

Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://lore.kernel.org/r/20250918142848.21807-2-thomas.hellstrom@linux.intel.com
parent df636bf2
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -329,9 +329,15 @@ static int xe_pm_notifier_callback(struct notifier_block *nb,
	switch (action) {
	case PM_HIBERNATION_PREPARE:
	case PM_SUSPEND_PREPARE:
	{
		struct xe_validation_ctx ctx;

		reinit_completion(&xe->pm_block);
		xe_pm_runtime_get(xe);
		(void)xe_validation_ctx_init(&ctx, &xe->val, NULL,
					     (struct xe_val_flags) {.exclusive = true});
		err = xe_bo_evict_all_user(xe);
		xe_validation_ctx_fini(&ctx);
		if (err)
			drm_dbg(&xe->drm, "Notifier evict user failed (%d)\n", err);

@@ -344,6 +350,7 @@ static int xe_pm_notifier_callback(struct notifier_block *nb,
		 * allocations.
		 */
		break;
	}
	case PM_POST_HIBERNATION:
	case PM_POST_SUSPEND:
		complete_all(&xe->pm_block);