gpu: nvgpu: return error from mutex_acquire() if pmu not initialized

In pmu_mutex_acquire(), we return zero (success) if
pmu->initialized is not set

Since mutex_acquire() was successful, we then call
pmu_mutex_release()

If now pmu->initialized is set in some other thread
then we proceed to validate the mutex owner and
end up causing below warning :

pmu_mutex_release: requester 0x00000000 NOT match owner 0x00000008

Hence to fix this return error from mutex_acquire()
and mutex_release() if pmu->initialized is not yet set
and in that case we proceed to call elpg enable/disable

Bug 1533644

Change-Id: Ifbb9e6a8e13f6478a13e3f9d98ced11792cc881f
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/439333
GVS: Gerrit_Virtual_Submit
Reviewed-by: Naveen Kumar S <nkumars@nvidia.com>
Tested-by: Naveen Kumar S <nkumars@nvidia.com>
Reviewed-by: Arto Merilainen <amerilainen@nvidia.com>
This commit is contained in:
Deepak Nibade
2014-07-17 18:09:13 +05:30
committed by Dan Willemsen
parent d98099c9b6
commit a84dc62b5e

View File

@@ -1227,7 +1227,7 @@ int pmu_mutex_acquire(struct pmu_gk20a *pmu, u32 id, u32 *token)
u32 data, owner, max_retry; u32 data, owner, max_retry;
if (!pmu->initialized) if (!pmu->initialized)
return 0; return -EINVAL;
BUG_ON(!token); BUG_ON(!token);
BUG_ON(!PMU_MUTEX_ID_IS_VALID(id)); BUG_ON(!PMU_MUTEX_ID_IS_VALID(id));
@@ -1296,7 +1296,7 @@ int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token)
u32 owner, data; u32 owner, data;
if (!pmu->initialized) if (!pmu->initialized)
return 0; return -EINVAL;
BUG_ON(!token); BUG_ON(!token);
BUG_ON(!PMU_MUTEX_ID_IS_VALID(id)); BUG_ON(!PMU_MUTEX_ID_IS_VALID(id));