]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
gpu: nvgpu: Initialize ELPG ref-count early.
authorNeil Gabriel <ngabriel@nvidia.com>
Thu, 26 Jun 2014 23:02:32 +0000 (18:02 -0500)
committerTodd Poynter <tpoynter@nvidia.com>
Fri, 27 Jun 2014 22:48:30 +0000 (15:48 -0700)
gk20a_pmu_disable_elpg can be called before the PMU driver has
received and processed the INIT message from the PMU. If change
ensures that the ELPG ref-count has been initialized to zero
before that can happen.

Bug 200016313

Change-Id: Ic80ec1ee69b1eb0499effb1abf556f78cb041f5e
Signed-off-by: Neil Gabriel <ngabriel@nvidia.com>
Reviewed-on: http://git-master/r/431927
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Robert Shih <rshih@nvidia.com>
Tested-by: Robert Shih <rshih@nvidia.com>
Reviewed-by: Mitch Luban <mluban@nvidia.com>
drivers/gpu/nvgpu/gk20a/pmu_gk20a.c

index 850c206806e6abcba6b7bb63e9c9f12564b60b00..d1d1a842bed8828dce232dab0a6539bc8b1e1aec 100644 (file)
@@ -1524,6 +1524,10 @@ int gk20a_init_pmu_setup_sw(struct gk20a *g)
 
        gk20a_dbg_fn("");
 
+       /* start with elpg disabled until first enable call */
+       mutex_init(&pmu->elpg_mutex);
+       pmu->elpg_refcnt = 0;
+
        if (pmu->sw_ready) {
                for (i = 0; i < pmu->mutex_cnt; i++) {
                        pmu->mutex[i].id    = i;
@@ -1665,7 +1669,6 @@ int gk20a_init_pmu_setup_sw(struct gk20a *g)
        pmu->sw_ready = true;
 
 skip_init:
-       mutex_init(&pmu->elpg_mutex);
        mutex_init(&pmu->isr_mutex);
        mutex_init(&pmu->isr_enable_lock);
        mutex_init(&pmu->pmu_copy_lock);
@@ -2118,9 +2121,6 @@ static int pmu_init_powergating(struct pmu_gk20a *pmu)
        gk20a_pmu_cmd_post(g, &cmd, NULL, NULL, PMU_COMMAND_QUEUE_HPQ,
                        pmu_handle_pg_elpg_msg, pmu, &seq, ~0);
 
-       /* start with elpg disabled until first enable call */
-       pmu->elpg_refcnt = 0;
-
        pmu->pmu_state = PMU_STATE_STARTING;
 
        return 0;