diff options
author | David Nieto <dmartineznie@nvidia.com> | 2017-03-13 21:45:37 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-24 00:05:35 -0400 |
commit | 2a502bdd5f3c93b87286456ca901ad43b0f14906 (patch) | |
tree | aba5c18b07b393e0306588d9ba4707a6c272ae6b /drivers/gpu/nvgpu/gk20a/tsg_gk20a.c | |
parent | a84f601fbaf6b40e14a321eda1e83d93e55cebba (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.c | 28 |
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); |
562 | done: | 562 | done: |
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); |
589 | done: | 589 | done: |
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); |
614 | done: | 614 | done: |
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 | ||