diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c index 4e265b81..e33477f6 100644 --- a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c | |||
@@ -475,6 +475,7 @@ static int gk20a_ctxsw_init_devs(struct gk20a *g) | |||
475 | { | 475 | { |
476 | struct gk20a_ctxsw_trace *trace = g->ctxsw_trace; | 476 | struct gk20a_ctxsw_trace *trace = g->ctxsw_trace; |
477 | struct gk20a_ctxsw_dev *dev = trace->devs; | 477 | struct gk20a_ctxsw_dev *dev = trace->devs; |
478 | int err; | ||
478 | int i; | 479 | int i; |
479 | 480 | ||
480 | for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) { | 481 | for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) { |
@@ -482,7 +483,9 @@ static int gk20a_ctxsw_init_devs(struct gk20a *g) | |||
482 | dev->hdr = NULL; | 483 | dev->hdr = NULL; |
483 | dev->write_enabled = false; | 484 | dev->write_enabled = false; |
484 | init_waitqueue_head(&dev->readout_wq); | 485 | init_waitqueue_head(&dev->readout_wq); |
485 | nvgpu_mutex_init(&dev->write_lock); | 486 | err = nvgpu_mutex_init(&dev->write_lock); |
487 | if (err) | ||
488 | return err; | ||
486 | atomic_set(&dev->vma_ref, 0); | 489 | atomic_set(&dev->vma_ref, 0); |
487 | dev++; | 490 | dev++; |
488 | } | 491 | } |
@@ -533,9 +536,21 @@ fail: | |||
533 | void gk20a_ctxsw_trace_cleanup(struct gk20a *g) | 536 | void gk20a_ctxsw_trace_cleanup(struct gk20a *g) |
534 | { | 537 | { |
535 | #ifdef CONFIG_GK20A_CTXSW_TRACE | 538 | #ifdef CONFIG_GK20A_CTXSW_TRACE |
539 | struct gk20a_ctxsw_trace *trace; | ||
540 | struct gk20a_ctxsw_dev *dev; | ||
541 | int i; | ||
542 | |||
536 | if (!g->ctxsw_trace) | 543 | if (!g->ctxsw_trace) |
537 | return; | 544 | return; |
538 | 545 | ||
546 | trace = g->ctxsw_trace; | ||
547 | dev = trace->devs; | ||
548 | |||
549 | for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) { | ||
550 | nvgpu_mutex_destroy(&dev->write_lock); | ||
551 | dev++; | ||
552 | } | ||
553 | |||
539 | kfree(g->ctxsw_trace); | 554 | kfree(g->ctxsw_trace); |
540 | g->ctxsw_trace = NULL; | 555 | g->ctxsw_trace = NULL; |
541 | 556 | ||