diff options
author | Debarshi Dutta <ddutta@nvidia.com> | 2017-10-10 07:03:17 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-10-17 15:55:22 -0400 |
commit | 8f55976d4952020f1e7f257087bb79cfeb64f193 (patch) | |
tree | 67a640295146de1949eed36a0f1eb5589720abe6 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h | |
parent | b252653ac5f2b12a9a84476f9dde6a844a77a602 (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.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 | ||