From b8aa486109a43a8c92159b0845a4adc9f6a84654 Mon Sep 17 00:00:00 2001 From: Bharat Nihalani Date: Thu, 4 Jun 2015 05:08:59 -0700 Subject: Revert "Revert "Revert "Revert "gpu: nvgpu: New allocator for VA space"""" This reverts commit 2e5803d0f2b7d7a1577a40f45ab9f3b22ef2df80 since the issue seen with bug 200106514 is fixed with change http://git-master/r/#/c/752080/. Bug 200112195 Change-Id: I588151c2a7ea74bd89dc3fd48bb81ff2c49f5a0a Signed-off-by: Bharat Nihalani Reviewed-on: http://git-master/r/752503 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c b/drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c index 04f61c58..053550f6 100644 --- a/drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/semaphore_gk20a.c @@ -3,7 +3,7 @@ * * GK20A Semaphores * - * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -44,8 +44,10 @@ struct gk20a_semaphore_pool *gk20a_semaphore_pool_alloc(struct device *d, if (gk20a_get_sgtable(d, &p->sgt, p->cpu_va, p->iova, p->size)) goto clean_up; - if (gk20a_allocator_init(&p->alloc, unique_name, 0, - p->size)) + /* Sacrifice one semaphore in the name of returning error codes. */ + if (gk20a_allocator_init(&p->alloc, unique_name, + SEMAPHORE_SIZE, p->size - SEMAPHORE_SIZE, + SEMAPHORE_SIZE)) goto clean_up; gk20a_dbg_info("cpuva=%p iova=%llx phys=%llx", p->cpu_va, @@ -163,8 +165,8 @@ struct gk20a_semaphore *gk20a_semaphore_alloc(struct gk20a_semaphore_pool *pool) if (!s) return NULL; - if (pool->alloc.alloc(&pool->alloc, &s->offset, SEMAPHORE_SIZE, - SEMAPHORE_SIZE)) { + s->offset = gk20a_balloc(&pool->alloc, SEMAPHORE_SIZE); + if (!s->offset) { gk20a_err(pool->dev, "failed to allocate semaphore"); kfree(s); return NULL; @@ -186,8 +188,7 @@ static void gk20a_semaphore_free(struct kref *ref) struct gk20a_semaphore *s = container_of(ref, struct gk20a_semaphore, ref); - s->pool->alloc.free(&s->pool->alloc, s->offset, SEMAPHORE_SIZE, - SEMAPHORE_SIZE); + gk20a_bfree(&s->pool->alloc, s->offset); gk20a_semaphore_pool_put(s->pool); kfree(s); } -- cgit v1.2.2