gpu: nvgpu: Remove redundant locked variable

Queue locked variable holds entirely redundant information about the
queue status and having the variable causes a race between lock() and
unlock() functions. This patch removes the locked variable.

Bug 1495617

Change-Id: I05682bfe7a23acc77c2bfe405938ace7d2b3d081
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/393431
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Prashant Malani <pmalani@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
Arto Merilainen
2014-04-08 14:28:10 +03:00
committed by Dan Willemsen
parent c38dae5b52
commit ef4ed26f8b
2 changed files with 3 additions and 18 deletions

View File

@@ -1270,15 +1270,10 @@ static int pmu_queue_lock(struct pmu_gk20a *pmu,
if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) { if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) {
mutex_lock(&queue->mutex); mutex_lock(&queue->mutex);
queue->locked = true;
return 0; return 0;
} }
err = pmu_mutex_acquire(pmu, queue->mutex_id, err = pmu_mutex_acquire(pmu, queue->mutex_id, &queue->mutex_lock);
&queue->mutex_lock);
if (err == 0)
queue->locked = true;
return err; return err;
} }
@@ -1292,18 +1287,11 @@ static int pmu_queue_unlock(struct pmu_gk20a *pmu,
if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) { if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) {
mutex_unlock(&queue->mutex); mutex_unlock(&queue->mutex);
queue->locked = false;
return 0; return 0;
} }
if (queue->locked) { err = pmu_mutex_release(pmu, queue->mutex_id, &queue->mutex_lock);
err = pmu_mutex_release(pmu, queue->mutex_id, return err;
&queue->mutex_lock);
if (err == 0)
queue->locked = false;
}
return 0;
} }
/* called by pmu_read_message, no lock */ /* called by pmu_read_message, no lock */
@@ -1327,8 +1315,6 @@ static bool pmu_queue_has_room(struct pmu_gk20a *pmu,
u32 head, tail, free; u32 head, tail, free;
bool rewind = false; bool rewind = false;
BUG_ON(!queue->locked);
size = ALIGN(size, QUEUE_ALIGNMENT); size = ALIGN(size, QUEUE_ALIGNMENT);
pmu_queue_head(pmu, queue, &head, QUEUE_GET); pmu_queue_head(pmu, queue, &head, QUEUE_GET);

View File

@@ -862,7 +862,6 @@ struct pmu_queue {
/* open-flag */ /* open-flag */
u32 oflag; u32 oflag;
bool opened; /* opened implies locked */ bool opened; /* opened implies locked */
bool locked; /* check free space after setting locked but before setting opened */
}; };