mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 15:03:04 +00:00
drm/xe/guc: Request max GT freq during resume
We already request max freq in the load path, moving it to __xe_guc_upload will ensure this speeds up GuC load in the resume path as well. v2: Rename xe_guc_pc_init_early since we now call it per GuC load (Michal W) v3: Keep pc_init_early() and init RPx values there (Rodrigo) Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240620224928.3986377-3-vinay.belgaumkar@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
3b1592fb78
commit
9d2ab8623e
|
@ -702,6 +702,9 @@ static int __xe_guc_upload(struct xe_guc *guc)
|
|||
{
|
||||
int ret;
|
||||
|
||||
/* Raise GT freq to speed up HuC/GuC load */
|
||||
xe_guc_pc_raise_unslice(&guc->pc);
|
||||
|
||||
guc_write_params(guc);
|
||||
guc_prepare_xfer(guc);
|
||||
|
||||
|
@ -787,7 +790,6 @@ int xe_guc_min_load_for_hwconfig(struct xe_guc *guc)
|
|||
|
||||
xe_guc_ads_populate_minimal(&guc->ads);
|
||||
|
||||
/* Raise GT freq to speed up HuC/GuC load */
|
||||
xe_guc_pc_init_early(&guc->pc);
|
||||
|
||||
ret = __xe_guc_upload(guc);
|
||||
|
|
|
@ -710,17 +710,28 @@ static u32 pc_max_freq_cap(struct xe_guc_pc *pc)
|
|||
}
|
||||
|
||||
/**
|
||||
* xe_guc_pc_init_early - Initialize RPx values and request a higher GT
|
||||
* xe_guc_pc_raise_unslice - Initialize RPx values and request a higher GT
|
||||
* frequency to allow faster GuC load times
|
||||
* @pc: Xe_GuC_PC instance
|
||||
*/
|
||||
void xe_guc_pc_raise_unslice(struct xe_guc_pc *pc)
|
||||
{
|
||||
struct xe_gt *gt = pc_to_gt(pc);
|
||||
|
||||
xe_force_wake_assert_held(gt_to_fw(gt), XE_FW_GT);
|
||||
pc_set_cur_freq(pc, pc_max_freq_cap(pc));
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_guc_pc_init_early - Initialize RPx values
|
||||
* @pc: Xe_GuC_PC instance
|
||||
*/
|
||||
void xe_guc_pc_init_early(struct xe_guc_pc *pc)
|
||||
{
|
||||
struct xe_gt *gt = pc_to_gt(pc);
|
||||
|
||||
xe_force_wake_assert_held(gt_to_fw(gt), XE_FW_GT);
|
||||
pc_init_fused_rp_values(pc);
|
||||
pc_set_cur_freq(pc, pc_max_freq_cap(pc));
|
||||
}
|
||||
|
||||
static int pc_adjust_freq_bounds(struct xe_guc_pc *pc)
|
||||
|
|
|
@ -33,5 +33,6 @@ u64 xe_guc_pc_rc6_residency(struct xe_guc_pc *pc);
|
|||
u64 xe_guc_pc_mc6_residency(struct xe_guc_pc *pc);
|
||||
void xe_guc_pc_init_early(struct xe_guc_pc *pc);
|
||||
int xe_guc_pc_restore_stashed_freq(struct xe_guc_pc *pc);
|
||||
void xe_guc_pc_raise_unslice(struct xe_guc_pc *pc);
|
||||
|
||||
#endif /* _XE_GUC_PC_H_ */
|
||||
|
|
Loading…
Reference in New Issue
Block a user