gpu: nvgpu: Infinite wait for fixed alloc unmap

In non-silicon wait infinitely for all jobs to complete before
unmapping a fixed allocation.

Bug 200078514

Change-Id: I9196afb1d3c5f0c999113a4a17ada2989ac55707
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/744067
(cherry picked from commit 6ccac11b4dd1a4eaf9c914fd567cdf7922184e28)
Reviewed-on: http://git-master/r/753284
Reviewed-by: Automatic_Commit_Validation_User
This commit is contained in:
Terje Bergstrom
2015-05-18 16:12:05 -07:00
parent 2d7c96c5e9
commit 8c8d05aec7

View File

@@ -810,7 +810,7 @@ void gk20a_vm_put_buffers(struct vm_gk20a *vm,
static void gk20a_vm_unmap_user(struct vm_gk20a *vm, u64 offset)
{
struct device *d = dev_from_vm(vm);
int retries;
int retries = 1000;
struct mapped_buffer_node *mapped_buffer;
mutex_lock(&vm->update_gmmu_lock);
@@ -825,17 +825,13 @@ static void gk20a_vm_unmap_user(struct vm_gk20a *vm, u64 offset)
if (mapped_buffer->flags & NVGPU_AS_MAP_BUFFER_FLAGS_FIXED_OFFSET) {
mutex_unlock(&vm->update_gmmu_lock);
if (tegra_platform_is_silicon())
retries = 1000;
else
retries = 1000000;
while (retries) {
while (retries >= 0 || !tegra_platform_is_silicon()) {
if (atomic_read(&mapped_buffer->ref.refcount) == 1)
break;
retries--;
udelay(50);
udelay(5);
}
if (!retries)
if (retries < 0 && tegra_platform_is_silicon())
gk20a_err(d, "sync-unmap failed on 0x%llx",
offset);
mutex_lock(&vm->update_gmmu_lock);