diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2016-03-31 03:03:19 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-07 11:43:49 -0400 |
commit | e87ba53235151cccee181489ceb5e35b131e7d2d (patch) | |
tree | 478b71365cebaab36879c1020c6582842c8d5760 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | 76ab6c1e5b351b069cde3ae8137e3fbdf4994d16 (diff) |
gpu: nvgpu: add channel event id support
With NVGPU_IOCTL_CHANNEL_EVENTS_CTRL, nvgpu can
raise events to User space. But user space
cannot distinguish between various types of events.
To overcome this, we need finer-grained API to
deliver various events to user space.
Remove old API NVGPU_IOCTL_CHANNEL_EVENTS_CTRL,
and all the support for this API (we can remove
this since User space has not started using this
API at all)
Add new API NVGPU_IOCTL_CHANNEL_EVENT_ID_CTRL
which will accept an event_id (like BPT.INT or
BPT.PAUSE), a command to enable the event,
and return a file descriptor on which
we can raise the event (if cmd=enable)
Event is disabled when file descriptor is closed
Add file operations "gk20a_event_id_ops"
to support polling on event fd
Also add API gk20a_channel_get_event_data_from_id()
to get event_data of event from its id
Bug 200089620
Change-Id: I5288f19f38ff49448c46338c33b2a927c9e02254
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1030775
(cherry picked from commit 5721ce2735950440bedc2b86f851db08ed593275)
Reviewed-on: http://git-master/r/1120318
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index a10650be..56d1d505 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -4983,7 +4983,7 @@ static int gk20a_gr_handle_semaphore_pending(struct gk20a *g, | |||
4983 | struct fifo_gk20a *f = &g->fifo; | 4983 | struct fifo_gk20a *f = &g->fifo; |
4984 | struct channel_gk20a *ch = &f->channel[isr_data->chid]; | 4984 | struct channel_gk20a *ch = &f->channel[isr_data->chid]; |
4985 | 4985 | ||
4986 | gk20a_channel_post_event(ch); | 4986 | wake_up_interruptible_all(&ch->semaphore_wq); |
4987 | 4987 | ||
4988 | return 0; | 4988 | return 0; |
4989 | } | 4989 | } |