Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/xe/guc: Remove explicit shutdown of SLPC
@ 2024-03-21 18:49 Vinay Belgaumkar
  2024-03-21 19:51 ` Rodrigo Vivi
                   ` (14 more replies)
  0 siblings, 15 replies; 17+ messages in thread
From: Vinay Belgaumkar @ 2024-03-21 18:49 UTC (permalink / raw)
  To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi

SLPC shutdown is called in reset and suspend paths. In the reset
path, it is possible that the H2G call gets lost as GuC is in the
process of being reset. There is no value in stopping SLPC when
it will happen anyways.

In the suspend path, we disable communication with GuC, so there
is no need to explicitly shutdown SLPC.

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c | 29 -----------------------------
 1 file changed, 29 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 786acaf71931..6dfae1c23946 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -145,25 +145,6 @@ static int pc_action_reset(struct xe_guc_pc *pc)
 	return ret;
 }
 
-static int pc_action_shutdown(struct xe_guc_pc *pc)
-{
-	struct  xe_guc_ct *ct = &pc_to_guc(pc)->ct;
-	int ret;
-	u32 action[] = {
-		GUC_ACTION_HOST2GUC_PC_SLPC_REQUEST,
-		SLPC_EVENT(SLPC_EVENT_SHUTDOWN, 2),
-		xe_bo_ggtt_addr(pc->bo),
-		0,
-	};
-
-	ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0);
-	if (ret)
-		drm_err(&pc_to_xe(pc)->drm, "GuC PC shutdown %pe",
-			ERR_PTR(ret));
-
-	return ret;
-}
-
 static int pc_action_query_task_state(struct xe_guc_pc *pc)
 {
 	struct xe_guc_ct *ct = &pc_to_guc(pc)->ct;
@@ -889,7 +870,6 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 int xe_guc_pc_stop(struct xe_guc_pc *pc)
 {
 	struct xe_device *xe = pc_to_xe(pc);
-	int ret;
 
 	if (xe->info.skip_guc_pc) {
 		xe_gt_idle_disable_c6(pc_to_gt(pc));
@@ -900,15 +880,6 @@ int xe_guc_pc_stop(struct xe_guc_pc *pc)
 	pc->freq_ready = false;
 	mutex_unlock(&pc->freq_lock);
 
-	ret = pc_action_shutdown(pc);
-	if (ret)
-		return ret;
-
-	if (wait_for_pc_state(pc, SLPC_GLOBAL_STATE_NOT_RUNNING)) {
-		drm_err(&pc_to_xe(pc)->drm, "GuC PC Shutdown failed\n");
-		return -EIO;
-	}
-
 	return 0;
 }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread
* [PATCH] drm/xe/guc: Remove explicit shutdown of SLPC
@ 2024-03-25 23:56 Vinay Belgaumkar
  0 siblings, 0 replies; 17+ messages in thread
From: Vinay Belgaumkar @ 2024-03-25 23:56 UTC (permalink / raw)
  To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi

SLPC shutdown is called in reset and suspend paths. In the reset
path, it is possible that the H2G call gets lost as GuC is in the
process of being reset. There is no value in stopping SLPC when
it will happen anyways.

In the suspend path, we disable communication with GuC, so there
is no need to explicitly shutdown SLPC.

v2: Rebase

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c | 29 -----------------------------
 1 file changed, 29 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index b242af8ed59f..9c110537d135 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -145,25 +145,6 @@ static int pc_action_reset(struct xe_guc_pc *pc)
 	return ret;
 }
 
-static int pc_action_shutdown(struct xe_guc_pc *pc)
-{
-	struct  xe_guc_ct *ct = &pc_to_guc(pc)->ct;
-	int ret;
-	u32 action[] = {
-		GUC_ACTION_HOST2GUC_PC_SLPC_REQUEST,
-		SLPC_EVENT(SLPC_EVENT_SHUTDOWN, 2),
-		xe_bo_ggtt_addr(pc->bo),
-		0,
-	};
-
-	ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0);
-	if (ret)
-		drm_err(&pc_to_xe(pc)->drm, "GuC PC shutdown %pe",
-			ERR_PTR(ret));
-
-	return ret;
-}
-
 static int pc_action_query_task_state(struct xe_guc_pc *pc)
 {
 	struct xe_guc_ct *ct = &pc_to_guc(pc)->ct;
@@ -893,7 +874,6 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 int xe_guc_pc_stop(struct xe_guc_pc *pc)
 {
 	struct xe_device *xe = pc_to_xe(pc);
-	int ret;
 
 	if (xe->info.skip_guc_pc) {
 		xe_gt_idle_disable_c6(pc_to_gt(pc));
@@ -904,15 +884,6 @@ int xe_guc_pc_stop(struct xe_guc_pc *pc)
 	pc->freq_ready = false;
 	mutex_unlock(&pc->freq_lock);
 
-	ret = pc_action_shutdown(pc);
-	if (ret)
-		return ret;
-
-	if (wait_for_pc_state(pc, SLPC_GLOBAL_STATE_NOT_RUNNING)) {
-		drm_err(&pc_to_xe(pc)->drm, "GuC PC Shutdown failed\n");
-		return -EIO;
-	}
-
 	return 0;
 }
 
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-03-25 23:56 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-21 18:49 [PATCH] drm/xe/guc: Remove explicit shutdown of SLPC Vinay Belgaumkar
2024-03-21 19:51 ` Rodrigo Vivi
2024-03-21 21:00 ` ✓ CI.Patch_applied: success for " Patchwork
2024-03-21 21:00 ` ✓ CI.checkpatch: " Patchwork
2024-03-21 21:01 ` ✓ CI.KUnit: " Patchwork
2024-03-21 21:12 ` ✓ CI.Build: " Patchwork
2024-03-21 21:14 ` ✓ CI.Hooks: " Patchwork
2024-03-21 21:16 ` ✓ CI.checksparse: " Patchwork
2024-03-21 21:39 ` ✓ CI.BAT: " Patchwork
2024-03-25 23:12 ` ✓ CI.Patch_applied: success for drm/xe/guc: Remove explicit shutdown of SLPC (rev2) Patchwork
2024-03-25 23:12 ` ✓ CI.checkpatch: " Patchwork
2024-03-25 23:13 ` ✓ CI.KUnit: " Patchwork
2024-03-25 23:24 ` ✓ CI.Build: " Patchwork
2024-03-25 23:27 ` ✓ CI.Hooks: " Patchwork
2024-03-25 23:28 ` ✓ CI.checksparse: " Patchwork
2024-03-25 23:44 ` ✗ CI.BAT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-03-25 23:56 [PATCH] drm/xe/guc: Remove explicit shutdown of SLPC Vinay Belgaumkar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox