diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h index 1a6de3a8..d50ce844 100644 --- a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h | |||
@@ -21,18 +21,10 @@ | |||
21 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 21 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
22 | * DEALINGS IN THE SOFTWARE. | 22 | * DEALINGS IN THE SOFTWARE. |
23 | */ | 23 | */ |
24 | #ifndef DBG_GPU_GK20A_H | 24 | #ifndef DBG_GPU_H |
25 | #define DBG_GPU_GK20A_H | 25 | #define DBG_GPU_H |
26 | #include <linux/poll.h> | ||
27 | 26 | ||
28 | /* module debug driver interface */ | 27 | #include <nvgpu/cond.h> |
29 | int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp); | ||
30 | int gk20a_dbg_gpu_dev_open(struct inode *inode, struct file *filp); | ||
31 | long gk20a_dbg_gpu_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); | ||
32 | unsigned int gk20a_dbg_gpu_dev_poll(struct file *filep, poll_table *wait); | ||
33 | |||
34 | /* used by profiler driver interface */ | ||
35 | int gk20a_prof_gpu_dev_open(struct inode *inode, struct file *filp); | ||
36 | 28 | ||
37 | /* used by the interrupt handler to post events */ | 29 | /* used by the interrupt handler to post events */ |
38 | void gk20a_dbg_gpu_post_events(struct channel_gk20a *fault_ch); | 30 | void gk20a_dbg_gpu_post_events(struct channel_gk20a *fault_ch); |
@@ -70,8 +62,6 @@ struct dbg_session_gk20a { | |||
70 | struct regops_whitelist *global; | 62 | struct regops_whitelist *global; |
71 | struct regops_whitelist *per_context; | 63 | struct regops_whitelist *per_context; |
72 | 64 | ||
73 | /* gpu module vagaries */ | ||
74 | struct device *dev; | ||
75 | struct gk20a *g; | 65 | struct gk20a *g; |
76 | 66 | ||
77 | /* list of bound channels, if any */ | 67 | /* list of bound channels, if any */ |
@@ -99,18 +89,12 @@ dbg_session_data_from_dbg_s_entry(struct nvgpu_list_node *node) | |||
99 | }; | 89 | }; |
100 | 90 | ||
101 | struct dbg_session_channel_data { | 91 | struct dbg_session_channel_data { |
102 | /* | ||
103 | * We have to keep a ref to the _file_, not the channel, because | ||
104 | * close(channel_fd) is synchronous and would deadlock if we had an | ||
105 | * open debug session fd holding a channel ref at that time. Holding a | ||
106 | * ref to the file makes close(channel_fd) just drop a kernel ref to | ||
107 | * the file; the channel will close when the last file ref is dropped. | ||
108 | */ | ||
109 | struct file *ch_f; | ||
110 | int channel_fd; | 92 | int channel_fd; |
111 | int chid; | 93 | int chid; |
112 | struct nvgpu_list_node ch_entry; | 94 | struct nvgpu_list_node ch_entry; |
113 | struct dbg_session_data *session_data; | 95 | struct dbg_session_data *session_data; |
96 | int (*unbind_single_channel)(struct dbg_session_gk20a *dbg_s, | ||
97 | struct dbg_session_channel_data *ch_data); | ||
114 | }; | 98 | }; |
115 | 99 | ||
116 | static inline struct dbg_session_channel_data * | 100 | static inline struct dbg_session_channel_data * |
@@ -135,9 +119,6 @@ dbg_profiler_object_data_from_prof_obj_entry(struct nvgpu_list_node *node) | |||
135 | ((uintptr_t)node - offsetof(struct dbg_profiler_object_data, prof_obj_entry)); | 119 | ((uintptr_t)node - offsetof(struct dbg_profiler_object_data, prof_obj_entry)); |
136 | }; | 120 | }; |
137 | 121 | ||
138 | int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s, | ||
139 | struct dbg_session_channel_data *ch_data); | ||
140 | |||
141 | bool gk20a_dbg_gpu_broadcast_stop_trigger(struct channel_gk20a *ch); | 122 | bool gk20a_dbg_gpu_broadcast_stop_trigger(struct channel_gk20a *ch); |
142 | int gk20a_dbg_gpu_clear_broadcast_stop_trigger(struct channel_gk20a *ch); | 123 | int gk20a_dbg_gpu_clear_broadcast_stop_trigger(struct channel_gk20a *ch); |
143 | 124 | ||