mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/xe/pf: Don't save GuC VF migration data on pause
In upcoming changes, the GuC VF migration data will be handled as part of separate SAVE/RESTORE states in VF control state machine. Remove it from PAUSE state. Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Link: https://patch.msgid.link/20251112132220.516975-15-michal.winiarski@intel.com Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
This commit is contained in:
@@ -184,7 +184,6 @@ static const char *control_bit_to_string(enum xe_gt_sriov_control_bits bit)
|
||||
CASE2STR(PAUSE_SEND_PAUSE);
|
||||
CASE2STR(PAUSE_WAIT_GUC);
|
||||
CASE2STR(PAUSE_GUC_DONE);
|
||||
CASE2STR(PAUSE_SAVE_GUC);
|
||||
CASE2STR(PAUSE_FAILED);
|
||||
CASE2STR(PAUSED);
|
||||
CASE2STR(SAVE_WIP);
|
||||
@@ -454,8 +453,7 @@ static void pf_enter_vf_ready(struct xe_gt *gt, unsigned int vfid)
|
||||
* : PAUSE_GUC_DONE o-----restart
|
||||
* : | :
|
||||
* : | o---<--busy :
|
||||
* : v / / :
|
||||
* : PAUSE_SAVE_GUC :
|
||||
* : / :
|
||||
* : / :
|
||||
* : / :
|
||||
* :....o..............o...............o...........:
|
||||
@@ -475,7 +473,6 @@ static void pf_exit_vf_pause_wip(struct xe_gt *gt, unsigned int vfid)
|
||||
pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE);
|
||||
pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC);
|
||||
pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_GUC_DONE);
|
||||
pf_escape_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,41 +503,12 @@ static void pf_enter_vf_pause_rejected(struct xe_gt *gt, unsigned int vfid)
|
||||
pf_enter_vf_pause_failed(gt, vfid);
|
||||
}
|
||||
|
||||
static void pf_enter_vf_pause_save_guc(struct xe_gt *gt, unsigned int vfid)
|
||||
{
|
||||
if (!pf_enter_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC))
|
||||
pf_enter_vf_state_machine_bug(gt, vfid);
|
||||
}
|
||||
|
||||
static bool pf_exit_vf_pause_save_guc(struct xe_gt *gt, unsigned int vfid)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC))
|
||||
return false;
|
||||
|
||||
err = xe_gt_sriov_pf_migration_save_guc_state(gt, vfid);
|
||||
if (err) {
|
||||
/* retry if busy */
|
||||
if (err == -EBUSY) {
|
||||
pf_enter_vf_pause_save_guc(gt, vfid);
|
||||
return true;
|
||||
}
|
||||
/* give up on error */
|
||||
if (err == -EIO)
|
||||
pf_enter_vf_mismatch(gt, vfid);
|
||||
}
|
||||
|
||||
pf_enter_vf_pause_completed(gt, vfid);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool pf_exit_vf_pause_guc_done(struct xe_gt *gt, unsigned int vfid)
|
||||
{
|
||||
if (!pf_exit_vf_state(gt, vfid, XE_GT_SRIOV_STATE_PAUSE_GUC_DONE))
|
||||
return false;
|
||||
|
||||
pf_enter_vf_pause_save_guc(gt, vfid);
|
||||
pf_enter_vf_pause_completed(gt, vfid);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1984,9 +1952,6 @@ static bool pf_process_vf_state_machine(struct xe_gt *gt, unsigned int vfid)
|
||||
if (pf_exit_vf_pause_guc_done(gt, vfid))
|
||||
return true;
|
||||
|
||||
if (pf_exit_vf_pause_save_guc(gt, vfid))
|
||||
return true;
|
||||
|
||||
if (pf_check_vf_state(gt, vfid, XE_GT_SRIOV_STATE_SAVE_WAIT_DATA)) {
|
||||
xe_gt_sriov_dbg_verbose(gt, "VF%u in %s\n", vfid,
|
||||
control_bit_to_string(XE_GT_SRIOV_STATE_SAVE_WAIT_DATA));
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
* @XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE: indicates that the PF is about to send a PAUSE command.
|
||||
* @XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC: indicates that the PF awaits for a response from the GuC.
|
||||
* @XE_GT_SRIOV_STATE_PAUSE_GUC_DONE: indicates that the PF has received a response from the GuC.
|
||||
* @XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC: indicates that the PF needs to save the VF GuC state.
|
||||
* @XE_GT_SRIOV_STATE_PAUSE_FAILED: indicates that a VF pause operation has failed.
|
||||
* @XE_GT_SRIOV_STATE_PAUSED: indicates that the VF is paused.
|
||||
* @XE_GT_SRIOV_STATE_SAVE_WIP: indicates that VF save operation is in progress.
|
||||
@@ -71,7 +70,6 @@ enum xe_gt_sriov_control_bits {
|
||||
XE_GT_SRIOV_STATE_PAUSE_SEND_PAUSE,
|
||||
XE_GT_SRIOV_STATE_PAUSE_WAIT_GUC,
|
||||
XE_GT_SRIOV_STATE_PAUSE_GUC_DONE,
|
||||
XE_GT_SRIOV_STATE_PAUSE_SAVE_GUC,
|
||||
XE_GT_SRIOV_STATE_PAUSE_FAILED,
|
||||
XE_GT_SRIOV_STATE_PAUSED,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user