summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h
diff options
context:
space:
mode:
authorDebarshi Dutta <ddutta@nvidia.com>2017-10-10 07:03:17 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-10-17 15:55:22 -0400
commit8f55976d4952020f1e7f257087bb79cfeb64f193 (patch)
tree67a640295146de1949eed36a0f1eb5589720abe6 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h
parentb252653ac5f2b12a9a84476f9dde6a844a77a602 (diff)
gpu: nvgpu: cleanup of dbg_gpu_gk20a
This change contains a generic cleanup of linux dependent parts of the dbg_gpu_gk20a.* files. The following changes have been made 1) Moving methods into ioctl_dbg.* inside common/linux/ 2) The structures dbg_session_gk20a and dbg_session_channel_data have been split into two parts. struct device *dev is removed from struct dbg_session_gk20a and instead packed into struct dbg_session_gk20a_linux alongwith dbg_session_gk20a and is moved into ioctl_dbg. dbg_session_gk20a is now rid of any linux dependencies and remains in dbg_gpu_gk20a. Similarly, struct file is removed from struct dbg_session_channel_data and is now packed into struct dbg_session_channel_data_linux alongwith dbg_session_channel_data and is moved into ioctl_dbg. struct dbg_session_channel_data is now rid of linux dependencies and remains in dbg_gpu_gk20a. 3) A callback function is added in order to release the dbg_session_channel_data. JIRA NVGPU-205 Change-Id: I853da6dfbf9a96b7cd210beb77f2304445ff7ea6 Signed-off-by: Debarshi Dutta <ddutta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1575191 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h29
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>
29int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp);
30int gk20a_dbg_gpu_dev_open(struct inode *inode, struct file *filp);
31long gk20a_dbg_gpu_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
32unsigned int gk20a_dbg_gpu_dev_poll(struct file *filep, poll_table *wait);
33
34/* used by profiler driver interface */
35int 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 */
38void gk20a_dbg_gpu_post_events(struct channel_gk20a *fault_ch); 30void 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
101struct dbg_session_channel_data { 91struct 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
116static inline struct dbg_session_channel_data * 100static 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
138int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s,
139 struct dbg_session_channel_data *ch_data);
140
141bool gk20a_dbg_gpu_broadcast_stop_trigger(struct channel_gk20a *ch); 122bool gk20a_dbg_gpu_broadcast_stop_trigger(struct channel_gk20a *ch);
142int gk20a_dbg_gpu_clear_broadcast_stop_trigger(struct channel_gk20a *ch); 123int gk20a_dbg_gpu_clear_broadcast_stop_trigger(struct channel_gk20a *ch);
143 124