linux-arm-kernel.lists.infradead.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: linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Subject: [PATCH 02/22] staging: vc04_services: Get rid of resume_blocked in struct vchiq_arm_state
Date: Fri, 24 Jan 2020 15:45:56 +0100	[thread overview]
Message-ID: <20200124144617.2213-3-nsaenzjulienne@suse.de> (raw)
In-Reply-To: <20200124144617.2213-1-nsaenzjulienne@suse.de>

The boolean value is never set to true, hence remove it and all the code that
depends on it.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---
 .../interface/vchiq_arm/vchiq_arm.c           | 51 +------------------
 .../interface/vchiq_arm/vchiq_arm.h           |  1 -
 2 files changed, 2 insertions(+), 50 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 4458c1e60fa3..af4dc23f5510 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -2270,10 +2270,7 @@ vchiq_videocore_wanted(struct vchiq_state *state)
 		return 1;
 	else if (!arm_state->videocore_use_count)
 		/* usage count zero - check for override unless we're forcing */
-		if (arm_state->resume_blocked)
-			return 0;
-		else
-			return vchiq_platform_videocore_wanted(state);
+		return vchiq_platform_videocore_wanted(state);
 	else
 		/* non-zero usage count - videocore still required */
 		return 1;
@@ -2567,7 +2564,6 @@ static inline void
 unblock_resume(struct vchiq_arm_state *arm_state)
 {
 	complete_all(&arm_state->resume_blocker);
-	arm_state->resume_blocked = 0;
 }
 
 /* Initiate suspend via slot handler. Should be called with the write lock
@@ -2724,46 +2720,6 @@ vchiq_use_internal(struct vchiq_state *state, struct vchiq_service *service,
 	}
 
 	write_lock_bh(&arm_state->susp_res_lock);
-	while (arm_state->resume_blocked) {
-		/* If we call 'use' while force suspend is waiting for suspend,
-		 * then we're about to block the thread which the force is
-		 * waiting to complete, so we're bound to just time out. In this
-		 * case, set the suspend state such that the wait will be
-		 * canceled, so we can complete as quickly as possible. */
-		if (arm_state->resume_blocked && arm_state->vc_suspend_state ==
-				VC_SUSPEND_IDLE) {
-			set_suspend_state(arm_state, VC_SUSPEND_FORCE_CANCELED);
-			break;
-		}
-		/* If suspend is already in progress then we need to block */
-		if (!try_wait_for_completion(&arm_state->resume_blocker)) {
-			/* Indicate that there are threads waiting on the resume
-			 * blocker.  These need to be allowed to complete before
-			 * a _second_ call to force suspend can complete,
-			 * otherwise low priority threads might never actually
-			 * continue */
-			arm_state->blocked_count++;
-			write_unlock_bh(&arm_state->susp_res_lock);
-			vchiq_log_info(vchiq_susp_log_level, "%s %s resume "
-				"blocked - waiting...", __func__, entity);
-			if (wait_for_completion_killable(
-					&arm_state->resume_blocker)) {
-				vchiq_log_error(vchiq_susp_log_level, "%s %s "
-					"wait for resume blocker interrupted",
-					__func__, entity);
-				ret = VCHIQ_ERROR;
-				write_lock_bh(&arm_state->susp_res_lock);
-				arm_state->blocked_count--;
-				write_unlock_bh(&arm_state->susp_res_lock);
-				goto out;
-			}
-			vchiq_log_info(vchiq_susp_log_level, "%s %s resume "
-				"unblocked", __func__, entity);
-			write_lock_bh(&arm_state->susp_res_lock);
-			if (--arm_state->blocked_count == 0)
-				complete_all(&arm_state->blocked_blocker);
-		}
-	}
 
 	stop_suspend_timer(arm_state);
 
@@ -2861,10 +2817,7 @@ vchiq_release_internal(struct vchiq_state *state, struct vchiq_service *service)
 	--(*entity_uc);
 
 	if (!vchiq_videocore_wanted(state)) {
-		if (vchiq_platform_use_suspend_timer() &&
-				!arm_state->resume_blocked) {
-			/* Only use the timer if we're not trying to force
-			 * suspend (=> resume_blocked) */
+		if (vchiq_platform_use_suspend_timer()) {
 			start_suspend_timer(arm_state);
 		} else {
 			vchiq_log_info(vchiq_susp_log_level,
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 f0044289b6bc..c904f7be9084 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
@@ -74,7 +74,6 @@ struct vchiq_arm_state {
 	** ARM is suspending
 	*/
 	struct completion resume_blocker;
-	int resume_blocked;
 	struct completion blocked_blocker;
 	int blocked_count;
 
-- 
2.25.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-01-24 14:48 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 ` Nicolas Saenz Julienne [this message]
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 ` [PATCH 18/22] staging: vc04_services: Get of even more suspend/resume states Nicolas Saenz Julienne
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-3-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).