diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_channel.c | 33 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_channel.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_tsg.c | 7 |
3 files changed, 39 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_channel.c b/drivers/gpu/nvgpu/common/linux/ioctl_channel.c index 44f662cb..9a867bcb 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_channel.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_channel.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/anon_inodes.h> | 21 | #include <linux/anon_inodes.h> |
22 | #include <linux/dma-buf.h> | 22 | #include <linux/dma-buf.h> |
23 | #include <linux/poll.h> | 23 | #include <linux/poll.h> |
24 | #include <uapi/linux/nvgpu.h> | ||
25 | #include <uapi/linux/nvgpu-t18x.h> | ||
24 | 26 | ||
25 | #include <nvgpu/semaphore.h> | 27 | #include <nvgpu/semaphore.h> |
26 | #include <nvgpu/timers.h> | 28 | #include <nvgpu/timers.h> |
@@ -689,12 +691,41 @@ static int gk20a_channel_get_event_data_from_id(struct channel_gk20a *ch, | |||
689 | } | 691 | } |
690 | } | 692 | } |
691 | 693 | ||
694 | /* | ||
695 | * Convert common event_id of the form NVGPU_EVENT_ID_* to Linux specific | ||
696 | * event_id of the form NVGPU_IOCTL_CHANNEL_EVENT_ID_* which is used in IOCTLs | ||
697 | */ | ||
698 | u32 nvgpu_event_id_to_ioctl_channel_event_id(u32 event_id) | ||
699 | { | ||
700 | switch (event_id) { | ||
701 | case NVGPU_EVENT_ID_BPT_INT: | ||
702 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_BPT_INT; | ||
703 | case NVGPU_EVENT_ID_BPT_PAUSE: | ||
704 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_BPT_PAUSE; | ||
705 | case NVGPU_EVENT_ID_BLOCKING_SYNC: | ||
706 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_BLOCKING_SYNC; | ||
707 | case NVGPU_EVENT_ID_CILP_PREEMPTION_STARTED: | ||
708 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_CILP_PREEMPTION_STARTED; | ||
709 | case NVGPU_EVENT_ID_CILP_PREEMPTION_COMPLETE: | ||
710 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_CILP_PREEMPTION_COMPLETE; | ||
711 | case NVGPU_EVENT_ID_GR_SEMAPHORE_WRITE_AWAKEN: | ||
712 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_GR_SEMAPHORE_WRITE_AWAKEN; | ||
713 | } | ||
714 | |||
715 | return NVGPU_IOCTL_CHANNEL_EVENT_ID_MAX; | ||
716 | } | ||
717 | |||
692 | void gk20a_channel_event_id_post_event(struct channel_gk20a *ch, | 718 | void gk20a_channel_event_id_post_event(struct channel_gk20a *ch, |
693 | u32 event_id) | 719 | u32 __event_id) |
694 | { | 720 | { |
695 | struct gk20a_event_id_data *event_id_data; | 721 | struct gk20a_event_id_data *event_id_data; |
722 | u32 event_id; | ||
696 | int err = 0; | 723 | int err = 0; |
697 | 724 | ||
725 | event_id = nvgpu_event_id_to_ioctl_channel_event_id(__event_id); | ||
726 | if (event_id >= NVGPU_IOCTL_CHANNEL_EVENT_ID_MAX) | ||
727 | return; | ||
728 | |||
698 | err = gk20a_channel_get_event_data_from_id(ch, event_id, | 729 | err = gk20a_channel_get_event_data_from_id(ch, event_id, |
699 | &event_id_data); | 730 | &event_id_data); |
700 | if (err) | 731 | if (err) |
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_channel.h b/drivers/gpu/nvgpu/common/linux/ioctl_channel.h index 1aac04aa..8cfce7e1 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_channel.h +++ b/drivers/gpu/nvgpu/common/linux/ioctl_channel.h | |||
@@ -23,4 +23,5 @@ int gk20a_channel_open_ioctl(struct gk20a *g, | |||
23 | extern const struct file_operations gk20a_event_id_ops; | 23 | extern const struct file_operations gk20a_event_id_ops; |
24 | extern const struct file_operations gk20a_channel_ops; | 24 | extern const struct file_operations gk20a_channel_ops; |
25 | 25 | ||
26 | u32 nvgpu_event_id_to_ioctl_channel_event_id(u32 event_id); | ||
26 | #endif | 27 | #endif |
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c b/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c index 2570886d..681a5e66 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c | |||
@@ -80,11 +80,16 @@ static int gk20a_tsg_get_event_data_from_id(struct tsg_gk20a *tsg, | |||
80 | } | 80 | } |
81 | 81 | ||
82 | void gk20a_tsg_event_id_post_event(struct tsg_gk20a *tsg, | 82 | void gk20a_tsg_event_id_post_event(struct tsg_gk20a *tsg, |
83 | int event_id) | 83 | int __event_id) |
84 | { | 84 | { |
85 | struct gk20a_event_id_data *event_id_data; | 85 | struct gk20a_event_id_data *event_id_data; |
86 | u32 event_id; | ||
86 | int err = 0; | 87 | int err = 0; |
87 | 88 | ||
89 | event_id = nvgpu_event_id_to_ioctl_channel_event_id(__event_id); | ||
90 | if (event_id >= NVGPU_IOCTL_CHANNEL_EVENT_ID_MAX) | ||
91 | return; | ||
92 | |||
88 | err = gk20a_tsg_get_event_data_from_id(tsg, event_id, | 93 | err = gk20a_tsg_get_event_data_from_id(tsg, event_id, |
89 | &event_id_data); | 94 | &event_id_data); |
90 | if (err) | 95 | if (err) |