mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-08-22 00:42:01 +02:00

xe_bo_move() might be called in the TTM swapout path from validation by another TTM device. If so, we are not likely to have a RPM reference. So iff xe_pm_runtime_get() is safe to call from reclaim, use it instead of xe_pm_runtime_get_noresume(). Strictly this is currently needed only if handle_system_ccs is true, but use xe_pm_runtime_get() if possible anyway to increase test coverage. At the same time warn if handle_system_ccs is true and we can't call xe_pm_runtime_get() from reclaim context. This will likely trip if someone tries to enable SRIOV on LNL, without fixing Xe SRIOV runtime resume / suspend. Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240903094232.166342-1-thomas.hellstrom@linux.intel.com
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_PM_H_
|
|
#define _XE_PM_H_
|
|
|
|
#include <linux/pm_runtime.h>
|
|
|
|
#define DEFAULT_VRAM_THRESHOLD 300 /* in MB */
|
|
|
|
struct xe_device;
|
|
|
|
int xe_pm_suspend(struct xe_device *xe);
|
|
int xe_pm_resume(struct xe_device *xe);
|
|
|
|
int xe_pm_init_early(struct xe_device *xe);
|
|
int xe_pm_init(struct xe_device *xe);
|
|
void xe_pm_runtime_fini(struct xe_device *xe);
|
|
bool xe_pm_runtime_suspended(struct xe_device *xe);
|
|
int xe_pm_runtime_suspend(struct xe_device *xe);
|
|
int xe_pm_runtime_resume(struct xe_device *xe);
|
|
void xe_pm_runtime_get(struct xe_device *xe);
|
|
int xe_pm_runtime_get_ioctl(struct xe_device *xe);
|
|
void xe_pm_runtime_put(struct xe_device *xe);
|
|
bool xe_pm_runtime_get_if_active(struct xe_device *xe);
|
|
bool xe_pm_runtime_get_if_in_use(struct xe_device *xe);
|
|
void xe_pm_runtime_get_noresume(struct xe_device *xe);
|
|
bool xe_pm_runtime_resume_and_get(struct xe_device *xe);
|
|
void xe_pm_assert_unbounded_bridge(struct xe_device *xe);
|
|
int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold);
|
|
void xe_pm_d3cold_allowed_toggle(struct xe_device *xe);
|
|
bool xe_rpm_reclaim_safe(const struct xe_device *xe);
|
|
struct task_struct *xe_pm_read_callback_task(struct xe_device *xe);
|
|
int xe_pm_module_init(void);
|
|
|
|
#endif
|