diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c index fbeb1e4a..6d0f0854 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.c | |||
@@ -678,7 +678,7 @@ static int gk20a_channel_semaphore_wait_fd( | |||
678 | sema->timeline, | 678 | sema->timeline, |
679 | fp_sema, | 679 | fp_sema, |
680 | &c->semaphore_wq, | 680 | &c->semaphore_wq, |
681 | NULL, false, false); | 681 | false, false); |
682 | if (err) { | 682 | if (err) { |
683 | nvgpu_semaphore_put(fp_sema); | 683 | nvgpu_semaphore_put(fp_sema); |
684 | goto clean_up_priv_cmd; | 684 | goto clean_up_priv_cmd; |
@@ -742,7 +742,7 @@ static int gk20a_channel_semaphore_wait_fd( | |||
742 | * already signaled | 742 | * already signaled |
743 | */ | 743 | */ |
744 | err = gk20a_fence_from_semaphore(c->g, fence, sema->timeline, w->sema, | 744 | err = gk20a_fence_from_semaphore(c->g, fence, sema->timeline, w->sema, |
745 | &c->semaphore_wq, NULL, false, false); | 745 | &c->semaphore_wq, false, false); |
746 | if (err) | 746 | if (err) |
747 | goto clean_up_sema; | 747 | goto clean_up_sema; |
748 | 748 | ||
@@ -787,7 +787,6 @@ clean_up_sync_fence: | |||
787 | 787 | ||
788 | static int __gk20a_channel_semaphore_incr( | 788 | static int __gk20a_channel_semaphore_incr( |
789 | struct gk20a_channel_sync *s, bool wfi_cmd, | 789 | struct gk20a_channel_sync *s, bool wfi_cmd, |
790 | struct sync_fence *dependency, | ||
791 | struct priv_cmd_entry *incr_cmd, | 790 | struct priv_cmd_entry *incr_cmd, |
792 | struct gk20a_fence *fence, | 791 | struct gk20a_fence *fence, |
793 | bool need_sync_fence) | 792 | bool need_sync_fence) |
@@ -820,7 +819,7 @@ static int __gk20a_channel_semaphore_incr( | |||
820 | err = gk20a_fence_from_semaphore(c->g, fence, | 819 | err = gk20a_fence_from_semaphore(c->g, fence, |
821 | sp->timeline, semaphore, | 820 | sp->timeline, semaphore, |
822 | &c->semaphore_wq, | 821 | &c->semaphore_wq, |
823 | dependency, wfi_cmd, | 822 | wfi_cmd, |
824 | need_sync_fence); | 823 | need_sync_fence); |
825 | if (err) | 824 | if (err) |
826 | goto clean_up_sema; | 825 | goto clean_up_sema; |
@@ -839,7 +838,6 @@ static int gk20a_channel_semaphore_incr_wfi( | |||
839 | { | 838 | { |
840 | return __gk20a_channel_semaphore_incr(s, | 839 | return __gk20a_channel_semaphore_incr(s, |
841 | true /* wfi */, | 840 | true /* wfi */, |
842 | NULL, | ||
843 | entry, fence, true); | 841 | entry, fence, true); |
844 | } | 842 | } |
845 | 843 | ||
@@ -854,7 +852,6 @@ static int gk20a_channel_semaphore_incr( | |||
854 | * a fence to user space. */ | 852 | * a fence to user space. */ |
855 | return __gk20a_channel_semaphore_incr(s, | 853 | return __gk20a_channel_semaphore_incr(s, |
856 | false /* no wfi */, | 854 | false /* no wfi */, |
857 | NULL, | ||
858 | entry, fence, need_sync_fence); | 855 | entry, fence, need_sync_fence); |
859 | } | 856 | } |
860 | 857 | ||
@@ -868,22 +865,12 @@ static int gk20a_channel_semaphore_incr_user( | |||
868 | bool register_irq) | 865 | bool register_irq) |
869 | { | 866 | { |
870 | #ifdef CONFIG_SYNC | 867 | #ifdef CONFIG_SYNC |
871 | struct sync_fence *dependency = NULL; | ||
872 | int err; | 868 | int err; |
873 | 869 | ||
874 | if (wait_fence_fd >= 0) { | 870 | err = __gk20a_channel_semaphore_incr(s, wfi, entry, fence, |
875 | dependency = gk20a_sync_fence_fdget(wait_fence_fd); | 871 | need_sync_fence); |
876 | if (!dependency) | 872 | if (err) |
877 | return -EINVAL; | ||
878 | } | ||
879 | |||
880 | err = __gk20a_channel_semaphore_incr(s, wfi, dependency, | ||
881 | entry, fence, need_sync_fence); | ||
882 | if (err) { | ||
883 | if (dependency) | ||
884 | sync_fence_put(dependency); | ||
885 | return err; | 873 | return err; |
886 | } | ||
887 | 874 | ||
888 | return 0; | 875 | return 0; |
889 | #else | 876 | #else |