]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
Undo"video: tegra: gk20a: Fix protected elpg race"
authorPrabhu Kuttiyam <pkuttiyam@nvidia.com>
Thu, 20 Feb 2014 21:40:17 +0000 (13:40 -0800)
committerWinnie Hsu <whsu@nvidia.com>
Fri, 21 Feb 2014 04:44:33 +0000 (20:44 -0800)
This reverts commit 6e3a8322adfdfc07e045fc874242e7cbd8ec8553.

Change-Id: I206bcd01d716d81b222491ac7d8f5c156070bbe0
Signed-off-by: Prabhu Kuttiyam <pkuttiyam@nvidia.com>
Reviewed-on: http://git-master/r/370167
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Winnie Hsu <whsu@nvidia.com>
Tested-by: Winnie Hsu <whsu@nvidia.com>
drivers/video/tegra/host/gk20a/gr_gk20a.h
drivers/video/tegra/host/gk20a/pmu_gk20a.c
drivers/video/tegra/host/gk20a/pmu_gk20a.h

index 49cd7b4a1d6f2deba1ec8d38edd53b1362e54a52..ce726e9eb2a074827dd508473a0041712bbba0a9 100644 (file)
@@ -350,11 +350,9 @@ bool gk20a_gr_sm_debugger_attached(struct gk20a *g);
 #define gr_gk20a_elpg_protected_call(g, func) \
        ({ \
                int err; \
-               mutex_lock(&g->pmu.pg_init_mutex); \
                gk20a_pmu_disable_elpg(g); \
                err = func; \
                gk20a_pmu_enable_elpg(g); \
-               mutex_unlock(&g->pmu.pg_init_mutex); \
                err; \
        })
 
index 96b198976bdaa2f7febffc3787831639062070ce..fef6bb8ce346b8b666329373743e7eae3823a44d 100644 (file)
@@ -1127,7 +1127,6 @@ skip_init:
        mutex_init(&pmu->isr_mutex);
        mutex_init(&pmu->pmu_copy_lock);
        mutex_init(&pmu->pmu_seq_lock);
-       mutex_init(&pmu->pg_init_mutex);
 
        pmu->perfmon_counter.index = 3; /* GR & CE2 */
        pmu->perfmon_counter.group_id = PMU_DOMAIN_GROUP_PSTATE;
@@ -1394,7 +1393,6 @@ int gk20a_init_pmu_setup_hw2(struct gk20a *g)
         */
        gk20a_writel(g, 0x10a164, 0x109ff);
 
-       mutex_lock(&pmu->pg_init_mutex);
        pmu->initialized = true;
        pmu->zbc_ready = true;
 
@@ -1410,7 +1408,6 @@ int gk20a_init_pmu_setup_hw2(struct gk20a *g)
 
        if (g->elpg_enabled)
                gk20a_pmu_enable_elpg(g);
-       mutex_unlock(&pmu->pg_init_mutex);
 
        return 0;
 
@@ -2769,10 +2766,7 @@ int gk20a_pmu_destroy(struct gk20a *g)
        gk20a_pmu_get_elpg_residency_gating(g, &elpg_ingating_time,
                &elpg_ungating_time, &gating_cnt);
 
-       mutex_lock(&pmu->pg_init_mutex);
        gk20a_pmu_disable_elpg_defer_enable(g, false);
-       pmu->initialized = false;
-       mutex_unlock(&pmu->pg_init_mutex);
 
        /* update the s/w ELPG residency counters */
        g->pg_ingating_time_us += (u64)elpg_ingating_time;
index cecbc8a5472d382ce5a48bed4438c2343bcd289a..39fc84c04f640a7ac937e978b6a854b55c22a70d 100644 (file)
@@ -697,7 +697,6 @@ struct pmu_gk20a {
        struct work_struct pg_init;
        bool elpg_enable_allow; /* true after init, false after disable, true after delay */
        struct mutex elpg_mutex; /* protect elpg enable/disable */
-       struct mutex pg_init_mutex; /* protect pmu pg_initialization routine */
        int elpg_refcnt; /* disable -1, enable +1, <=0 elpg disabled, > 0 elpg enabled */
 
        struct pmu_perfmon_counter perfmon_counter;