mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 02:52:51 +03:00
Revert "Revert "gpu: nvgpu: New allocator for VA space""
This reverts commit 7eb42bc239dbd207208ff491c3fb65c3d83274d8. The original commit was actually fine. Change-Id: I564ce6530ac73fcfad17dcec9c53f0353b4f02d4 Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: http://git-master/r/743300 (cherry picked from commit e99aa2485f8992eabe3556f3ebcb57bdc8ad91ff) Reviewed-on: http://git-master/r/743301 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
7ddd6e261e
commit
01f359f3f1
@@ -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