linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org
Cc: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org
Subject: [PATCH 18/22] staging: vc04_services: Get of even more suspend/resume states
Date: Fri, 24 Jan 2020 15:46:12 +0100	[thread overview]
Message-ID: <20200124144617.2213-19-nsaenzjulienne@suse.de> (raw)
In-Reply-To: <20200124144617.2213-1-nsaenzjulienne@suse.de>

After the first states cleanup pass some set_suspend/resume_state()
calls disappeared which opened up even more opportunities for deletions.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
 .../interface/vchiq_arm/vchiq_arm.c           | 92 +------------------
 .../interface/vchiq_arm/vchiq_arm.h           | 11 ---
 2 files changed, 3 insertions(+), 100 deletions(-)

diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index 8ec5a61c5d89..577ecfefce3c 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -48,15 +48,8 @@
 int vchiq_arm_log_level = VCHIQ_LOG_DEFAULT;
 int vchiq_susp_log_level = VCHIQ_LOG_ERROR;
 
-#define VC_SUSPEND_NUM_OFFSET 3 /* number of values before idle which are -ve */
-static const char *const suspend_state_names[] = {
-	"VC_SUSPEND_IDLE",
-	"VC_SUSPEND_IN_PROGRESS",
-};
 #define VC_RESUME_NUM_OFFSET 1 /* number of values before idle which are -ve */
 static const char *const resume_state_names[] = {
-	"VC_RESUME_IDLE",
-	"VC_RESUME_REQUESTED",
 	"VC_RESUME_RESUMED"
 };
 /* The number of times we allow force suspend to timeout before actually
@@ -2361,63 +2354,6 @@ vchiq_arm_init_state(struct vchiq_state *state,
 	return VCHIQ_SUCCESS;
 }
 
-/*
-** Functions to modify the state variables;
-**	set_suspend_state
-**	set_resume_state
-**
-** There are more state variables than we might like, so ensure they remain in
-** step.  Suspend and resume state are maintained separately, since most of
-** these state machines can operate independently.  However, there are a few
-** states where state transitions in one state machine cause a reset to the
-** other state machine.  In addition, there are some completion events which
-** need to occur on state machine reset and end-state(s), so these are also
-** dealt with in these functions.
-**
-** In all states we set the state variable according to the input, but in some
-** cases we perform additional steps outlined below;
-**
-** VC_SUSPEND_IDLE - Initialise the suspend completion at the same time.
-**			The suspend completion is completed after any suspend
-**			attempt.  When we reset the state machine we also reset
-**			the completion.  This reset occurs when videocore is
-**			resumed, and also if we initiate suspend after a suspend
-**			failure.
-**
-** VC_SUSPEND_IN_PROGRESS - This state is considered the point of no return for
-**			suspend - ie from this point on we must try to suspend
-**			before resuming can occur.  We therefore also reset the
-**			resume state machine to VC_RESUME_IDLE in this state.
-**
-** VC_RESUME_IDLE - Initialise the resume completion at the same time.  The
-**			resume completion is in it's 'done' state whenever
-**			videcore is running.  Therefore, the VC_RESUME_IDLE
-**			state implies that videocore is suspended.
-**			Hence, any thread which needs to wait until videocore is
-**			running can wait on this completion - it will only block
-**			if videocore is suspended.
-*/
-
-void
-set_suspend_state(struct vchiq_arm_state *arm_state,
-		  enum vc_suspend_status new_state)
-{
-	/* set the state in all cases */
-	arm_state->vc_suspend_state = new_state;
-
-	/* state specific additional actions */
-	switch (new_state) {
-	case VC_SUSPEND_IDLE:
-		break;
-	case VC_SUSPEND_IN_PROGRESS:
-		set_resume_state(arm_state, VC_RESUME_IDLE);
-		break;
-	default:
-		BUG();
-		break;
-	}
-}
-
 void
 set_resume_state(struct vchiq_arm_state *arm_state,
 		 enum vc_resume_status new_state)
@@ -2427,14 +2363,8 @@ set_resume_state(struct vchiq_arm_state *arm_state,
 
 	/* state specific additional actions */
 	switch (new_state) {
-	case VC_RESUME_IDLE:
-		reinit_completion(&arm_state->vc_resume_complete);
-		break;
-	case VC_RESUME_REQUESTED:
-		break;
 	case VC_RESUME_RESUMED:
 		complete_all(&arm_state->vc_resume_complete);
-		set_suspend_state(arm_state, VC_SUSPEND_IDLE);
 		break;
 	default:
 		BUG();
@@ -2442,15 +2372,6 @@ set_resume_state(struct vchiq_arm_state *arm_state,
 	}
 }
 
-static inline int
-need_resume(struct vchiq_state *state)
-{
-	struct vchiq_arm_state *arm_state = vchiq_platform_get_arm_state(state);
-
-	return (arm_state->vc_suspend_state > VC_SUSPEND_IDLE) &&
-			(arm_state->vc_resume_state < VC_RESUME_REQUESTED);
-}
-
 enum vchiq_status
 vchiq_use_internal(struct vchiq_state *state, struct vchiq_service *service,
 		   enum USE_TYPE_E use_type)
@@ -2485,16 +2406,9 @@ vchiq_use_internal(struct vchiq_state *state, struct vchiq_service *service,
 	local_uc = ++arm_state->videocore_use_count;
 	local_entity_uc = ++(*entity_uc);
 
-	if (need_resume(state)) {
-		set_resume_state(arm_state, VC_RESUME_REQUESTED);
-		vchiq_log_info(vchiq_susp_log_level,
-			"%s %s count %d, state count %d",
-			__func__, entity, local_entity_uc, local_uc);
-		request_poll(state, NULL, 0);
-	} else
-		vchiq_log_trace(vchiq_susp_log_level,
-			"%s %s count %d, state count %d",
-			__func__, entity, *entity_uc, local_uc);
+	vchiq_log_trace(vchiq_susp_log_level,
+		"%s %s count %d, state count %d",
+		__func__, entity, *entity_uc, local_uc);
 
 	write_unlock_bh(&arm_state->susp_res_lock);
 
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
index d01d91e24a89..e2f7fa865694 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
@@ -14,14 +14,7 @@
 #include "vchiq_core.h"
 #include "vchiq_debugfs.h"
 
-enum vc_suspend_status {
-	VC_SUSPEND_IDLE = 0,       /* VC active, no suspend actions */
-	VC_SUSPEND_IN_PROGRESS,    /* Slot handler has recvd suspend request */
-};
-
 enum vc_resume_status {
-	VC_RESUME_IDLE = 0,    /* VC suspended, no resume actions */
-	VC_RESUME_REQUESTED,   /* User has requested resume */
 	VC_RESUME_RESUMED      /* Videocore resumed successfully (active) */
 };
 
@@ -128,10 +121,6 @@ vchiq_instance_get_trace(struct vchiq_instance *instance);
 extern void
 vchiq_instance_set_trace(struct vchiq_instance *instance, int trace);
 
-extern void
-set_suspend_state(struct vchiq_arm_state *arm_state,
-		  enum vc_suspend_status new_state);
-
 extern void
 set_resume_state(struct vchiq_arm_state *arm_state,
 		 enum vc_resume_status new_state);
-- 
2.25.0


  parent reply	other threads:[~2020-01-24 14:47 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-24 14:45 [PATCH 00/22] staging: vc04_services: suspend/resume cleanup Nicolas Saenz Julienne
2020-01-24 14:45 ` [PATCH 01/22] staging: vc04_services: Remove unused variables in struct vchiq_arm_state Nicolas Saenz Julienne
2020-01-24 14:45 ` [PATCH 02/22] staging: vc04_services: Get rid of resume_blocked " Nicolas Saenz Julienne
2020-01-24 14:45 ` [PATCH 03/22] staging: vc04_services: Get rid of resume_blocker completion " Nicolas Saenz Julienne
2020-01-24 14:45 ` [PATCH 04/22] staging: vc04_services: get rid of blocked_blocker " Nicolas Saenz Julienne
2020-01-24 14:45 ` [PATCH 05/22] staging: vc04_services: Delete blocked_count " Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 06/22] staging: vc04_services: get rid of vchiq_platform_use_suspend_timer() Nicolas Saenz Julienne
2020-01-26 20:11   ` kbuild test robot
2020-01-26 20:11   ` [RFC PATCH] staging: vc04_services: vchiq_dump_service_use_state can be static kbuild test robot
2020-01-27 11:06   ` [PATCH 06/22] staging: vc04_services: get rid of vchiq_platform_use_suspend_timer() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 07/22] staging: vc04_services: Get rid of vchiq_platform_paused/resumed() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 08/22] staging: vc04_services: Get rid of vchiq_platform_suspend/resume() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 09/22] staging: vc04_services: Get rid of vchiq_platform_videocore_wanted() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 10/22] staging: vc04_services: Get rid of vchiq_platform_handle_timeout() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 11/22] staging: vc04_services: Get rid of vchiq_on_remote_use_active() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 12/22] staging: vc04_services: Get rid of vchiq_arm_vcsuspend() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 13/22] staging: vc04_services: Get rid of vchiq_check_resume() Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 14/22] staging: vc04_services: Delete vc_suspend_complete completion Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 15/22] staging: vc04_services: Get rid of unused suspend/resume states Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 16/22] staging: vc04_services: Get rid of USE_TYPE_SERVICE_NO_RESUME Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 17/22] staging: vc04_services: Delete vchiq_platform_check_suspend() Nicolas Saenz Julienne
2020-01-24 14:46 ` Nicolas Saenz Julienne [this message]
2020-01-24 14:46 ` [PATCH 19/22] staging: vc04_services: Get rid of vc_suspend_state in struct vchiq_arm_state Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 20/22] staging: vc04_services: Get rid of vchiq_arm_vcresume()'s signature Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 21/22] staging: vc04_services: Get rid of the rest of suspend/resume state handling Nicolas Saenz Julienne
2020-01-24 14:46 ` [PATCH 22/22] staging: vc04_services: vchiq_arm: Get rid of unused defines Nicolas Saenz Julienne

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200124144617.2213-19-nsaenzjulienne@suse.de \
    --to=nsaenzjulienne@suse.de \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).