mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-27 13:59:12 +00:00

Userspace is still alive and kicking at this point so actually moving pinned stuff here is tricky. However, we can instead pre-allocate the backup storage upfront from the notifier, such that we scoop up as much as we can, and then leave the final .suspend() to do the actual copy (or allocate anything that we missed). That way the bulk of our allocations will hopefully be done outside the more restrictive .suspend(). We do need to be extra careful though, since the pinned handling can now race with PM notifier, like something becoming unpinned after we prepare it from the notifier. v2 (Thomas): - Fix kernel doc and drop the pin as soon as we are done with the restore, instead of deferring to later. Suggested-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Signed-off-by: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Link: https://lore.kernel.org/r/20250416150913.434369-8-matthew.auld@intel.com
22 lines
566 B
C
22 lines
566 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_BO_EVICT_H_
|
|
#define _XE_BO_EVICT_H_
|
|
|
|
struct xe_device;
|
|
|
|
int xe_bo_evict_all(struct xe_device *xe);
|
|
int xe_bo_evict_all_user(struct xe_device *xe);
|
|
int xe_bo_notifier_prepare_all_pinned(struct xe_device *xe);
|
|
void xe_bo_notifier_unprepare_all_pinned(struct xe_device *xe);
|
|
int xe_bo_restore_early(struct xe_device *xe);
|
|
int xe_bo_restore_late(struct xe_device *xe);
|
|
|
|
void xe_bo_pci_dev_remove_all(struct xe_device *xe);
|
|
|
|
int xe_bo_pinned_init(struct xe_device *xe);
|
|
#endif
|