From ef4ed26f8b1dd9545b7922def3bfec425cfa0562 Mon Sep 17 00:00:00 2001 From: Arto Merilainen Date: Tue, 8 Apr 2014 14:28:10 +0300 Subject: 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 Reviewed-on: http://git-master/r/393431 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Prashant Malani Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index c4bfe527..e9e0c26f 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c @@ -1270,15 +1270,10 @@ static int pmu_queue_lock(struct pmu_gk20a *pmu, if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) { mutex_lock(&queue->mutex); - queue->locked = true; return 0; } - err = pmu_mutex_acquire(pmu, queue->mutex_id, - &queue->mutex_lock); - if (err == 0) - queue->locked = true; - + err = pmu_mutex_acquire(pmu, queue->mutex_id, &queue->mutex_lock); return err; } @@ -1292,18 +1287,11 @@ static int pmu_queue_unlock(struct pmu_gk20a *pmu, if (PMU_IS_SW_COMMAND_QUEUE(queue->id)) { mutex_unlock(&queue->mutex); - queue->locked = false; return 0; } - if (queue->locked) { - err = pmu_mutex_release(pmu, queue->mutex_id, - &queue->mutex_lock); - if (err == 0) - queue->locked = false; - } - - return 0; + err = pmu_mutex_release(pmu, queue->mutex_id, &queue->mutex_lock); + return err; } /* 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; bool rewind = false; - BUG_ON(!queue->locked); - size = ALIGN(size, QUEUE_ALIGNMENT); pmu_queue_head(pmu, queue, &head, QUEUE_GET); -- cgit v1.2.2