summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
diff options
context:
space:
mode:
authorDavid Nieto <dmartineznie@nvidia.com>2017-03-13 21:45:37 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-24 00:05:35 -0400
commit2a502bdd5f3c93b87286456ca901ad43b0f14906 (patch)
treeaba5c18b07b393e0306588d9ba4707a6c272ae6b /drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
parenta84f601fbaf6b40e14a321eda1e83d93e55cebba (diff)
gpu: nvgpu: pass gk20a struct to gk20a_busy
After driver remove, the device structure passed in gk20a_busy can be invalid. To solve this the prototype of the function is modified to pass the gk20a struct instead of the device pointer. bug 200277762 JIRA: EVLR-1023 Change-Id: I08eb74bd3578834d45115098ed9936ebbb436fdf Signed-off-by: David Nieto <dmartineznie@nvidia.com> Reviewed-on: http://git-master/r/1320194 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/tsg_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
index 21b50700..7725e970 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
@@ -550,7 +550,7 @@ static int gk20a_tsg_ioctl_set_priority(struct gk20a *g,
550 goto done; 550 goto done;
551 } 551 }
552 552
553 err = gk20a_busy(g->dev); 553 err = gk20a_busy(g);
554 if (err) { 554 if (err) {
555 gk20a_err(dev_from_gk20a(g), "failed to power on gpu"); 555 gk20a_err(dev_from_gk20a(g), "failed to power on gpu");
556 goto done; 556 goto done;
@@ -558,7 +558,7 @@ static int gk20a_tsg_ioctl_set_priority(struct gk20a *g,
558 558
559 err = gk20a_tsg_set_priority(g, tsg, arg->priority); 559 err = gk20a_tsg_set_priority(g, tsg, arg->priority);
560 560
561 gk20a_idle(g->dev); 561 gk20a_idle(g);
562done: 562done:
563 nvgpu_mutex_release(&sched->control_lock); 563 nvgpu_mutex_release(&sched->control_lock);
564 return err; 564 return err;
@@ -577,7 +577,7 @@ static int gk20a_tsg_ioctl_set_runlist_interleave(struct gk20a *g,
577 err = -EPERM; 577 err = -EPERM;
578 goto done; 578 goto done;
579 } 579 }
580 err = gk20a_busy(g->dev); 580 err = gk20a_busy(g);
581 if (err) { 581 if (err) {
582 gk20a_err(dev_from_gk20a(g), "failed to power on gpu"); 582 gk20a_err(dev_from_gk20a(g), "failed to power on gpu");
583 goto done; 583 goto done;
@@ -585,7 +585,7 @@ static int gk20a_tsg_ioctl_set_runlist_interleave(struct gk20a *g,
585 585
586 err = gk20a_tsg_set_runlist_interleave(tsg, arg->level); 586 err = gk20a_tsg_set_runlist_interleave(tsg, arg->level);
587 587
588 gk20a_idle(g->dev); 588 gk20a_idle(g);
589done: 589done:
590 nvgpu_mutex_release(&sched->control_lock); 590 nvgpu_mutex_release(&sched->control_lock);
591 return err; 591 return err;
@@ -604,13 +604,13 @@ static int gk20a_tsg_ioctl_set_timeslice(struct gk20a *g,
604 err = -EPERM; 604 err = -EPERM;
605 goto done; 605 goto done;
606 } 606 }
607 err = gk20a_busy(g->dev); 607 err = gk20a_busy(g);
608 if (err) { 608 if (err) {
609 gk20a_err(dev_from_gk20a(g), "failed to power on gpu"); 609 gk20a_err(dev_from_gk20a(g), "failed to power on gpu");
610 goto done; 610 goto done;
611 } 611 }
612 err = gk20a_tsg_set_timeslice(tsg, arg->timeslice_us); 612 err = gk20a_tsg_set_timeslice(tsg, arg->timeslice_us);
613 gk20a_idle(g->dev); 613 gk20a_idle(g);
614done: 614done:
615 nvgpu_mutex_release(&sched->control_lock); 615 nvgpu_mutex_release(&sched->control_lock);
616 return err; 616 return err;
@@ -641,11 +641,11 @@ long gk20a_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
641 } 641 }
642 642
643 if (!g->gr.sw_ready) { 643 if (!g->gr.sw_ready) {
644 err = gk20a_busy(g->dev); 644 err = gk20a_busy(g);
645 if (err) 645 if (err)
646 return err; 646 return err;
647 647
648 gk20a_idle(g->dev); 648 gk20a_idle(g);
649 } 649 }
650 650
651 switch (cmd) { 651 switch (cmd) {
@@ -668,33 +668,33 @@ long gk20a_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
668 668
669 case NVGPU_IOCTL_TSG_ENABLE: 669 case NVGPU_IOCTL_TSG_ENABLE:
670 { 670 {
671 err = gk20a_busy(g->dev); 671 err = gk20a_busy(g);
672 if (err) { 672 if (err) {
673 gk20a_err(g->dev, 673 gk20a_err(g->dev,
674 "failed to host gk20a for ioctl cmd: 0x%x", cmd); 674 "failed to host gk20a for ioctl cmd: 0x%x", cmd);
675 return err; 675 return err;
676 } 676 }
677 gk20a_enable_tsg(tsg); 677 gk20a_enable_tsg(tsg);
678 gk20a_idle(g->dev); 678 gk20a_idle(g);
679 break; 679 break;
680 } 680 }
681 681
682 case NVGPU_IOCTL_TSG_DISABLE: 682 case NVGPU_IOCTL_TSG_DISABLE:
683 { 683 {
684 err = gk20a_busy(g->dev); 684 err = gk20a_busy(g);
685 if (err) { 685 if (err) {
686 gk20a_err(g->dev, 686 gk20a_err(g->dev,
687 "failed to host gk20a for ioctl cmd: 0x%x", cmd); 687 "failed to host gk20a for ioctl cmd: 0x%x", cmd);
688 return err; 688 return err;
689 } 689 }
690 gk20a_disable_tsg(tsg); 690 gk20a_disable_tsg(tsg);
691 gk20a_idle(g->dev); 691 gk20a_idle(g);
692 break; 692 break;
693 } 693 }
694 694
695 case NVGPU_IOCTL_TSG_PREEMPT: 695 case NVGPU_IOCTL_TSG_PREEMPT:
696 { 696 {
697 err = gk20a_busy(g->dev); 697 err = gk20a_busy(g);
698 if (err) { 698 if (err) {
699 gk20a_err(g->dev, 699 gk20a_err(g->dev,
700 "failed to host gk20a for ioctl cmd: 0x%x", cmd); 700 "failed to host gk20a for ioctl cmd: 0x%x", cmd);
@@ -702,7 +702,7 @@ long gk20a_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
702 } 702 }
703 /* preempt TSG */ 703 /* preempt TSG */
704 err = g->ops.fifo.preempt_tsg(g, tsg->tsgid); 704 err = g->ops.fifo.preempt_tsg(g, tsg->tsgid);
705 gk20a_idle(g->dev); 705 gk20a_idle(g);
706 break; 706 break;
707 } 707 }
708 708