mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 02:52:51 +03:00
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 <bnihalani@nvidia.com> Reviewed-on: http://git-master/r/752503 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
56d7896731
commit
b8aa486109
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user