staging: vc04_services: Get of even more suspend/resume states
authorNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Fri, 31 Jan 2020 10:38:32 +0000 (11:38 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Feb 2020 00:23:01 +0000 (16:23 -0800)
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>
Link: https://lore.kernel.org/r/20200131103836.14312-17-nsaenzjulienne@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h

index db7ae20..cee643a 100644 (file)
 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);
-}
-
 void
 vchiq_platform_check_suspend(struct vchiq_state *state)
 {
@@ -2500,16 +2421,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 ((use_type != USE_TYPE_SERVICE_NO_RESUME) && 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);
 
@@ -2720,7 +2634,6 @@ vchiq_dump_service_use_state(struct vchiq_state *state)
        int only_nonzero = 0;
        static const char *nz = "<-- preventing suspend";
 
-       enum vc_suspend_status vc_suspend_state;
        enum vc_resume_status  vc_resume_state;
        int peer_count;
        int vc_use_count;
@@ -2735,7 +2648,6 @@ vchiq_dump_service_use_state(struct vchiq_state *state)
                return;
 
        read_lock_bh(&arm_state->susp_res_lock);
-       vc_suspend_state = arm_state->vc_suspend_state;
        vc_resume_state  = arm_state->vc_resume_state;
        peer_count = arm_state->peer_use_count;
        vc_use_count = arm_state->videocore_use_count;
@@ -2814,12 +2726,10 @@ vchiq_check_service(struct vchiq_service *service)
        if (ret == VCHIQ_ERROR) {
                vchiq_log_error(vchiq_susp_log_level,
                        "%s ERROR - %c%c%c%c:%d service count %d, "
-                       "state count %d, videocore suspend state %s", __func__,
+                       "state count %d", __func__,
                        VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc),
                        service->client_id, service->service_use_count,
-                       arm_state->videocore_use_count,
-                       suspend_state_names[arm_state->vc_suspend_state +
-                                               VC_SUSPEND_NUM_OFFSET]);
+                       arm_state->videocore_use_count);
                vchiq_dump_service_use_state(service->state);
        }
 out:
index afd8225..b1fad28 100644 (file)
 #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) */
 };
 
@@ -42,7 +35,6 @@ struct vchiq_arm_state {
        struct completion vc_resume_complete;
 
        rwlock_t susp_res_lock;
-       enum vc_suspend_status vc_suspend_state;
        enum vc_resume_status vc_resume_state;
 
        struct vchiq_state *state;
@@ -131,10 +123,6 @@ 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);