From 8f55976d4952020f1e7f257087bb79cfeb64f193 Mon Sep 17 00:00:00 2001 From: Debarshi Dutta Date: Tue, 10 Oct 2017 16:33:17 +0530 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1575191 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.h') 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 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ -#ifndef DBG_GPU_GK20A_H -#define DBG_GPU_GK20A_H -#include +#ifndef DBG_GPU_H +#define DBG_GPU_H -/* module debug driver interface */ -int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp); -int gk20a_dbg_gpu_dev_open(struct inode *inode, struct file *filp); -long gk20a_dbg_gpu_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); -unsigned int gk20a_dbg_gpu_dev_poll(struct file *filep, poll_table *wait); - -/* used by profiler driver interface */ -int gk20a_prof_gpu_dev_open(struct inode *inode, struct file *filp); +#include /* used by the interrupt handler to post events */ void gk20a_dbg_gpu_post_events(struct channel_gk20a *fault_ch); @@ -70,8 +62,6 @@ struct dbg_session_gk20a { struct regops_whitelist *global; struct regops_whitelist *per_context; - /* gpu module vagaries */ - struct device *dev; struct gk20a *g; /* list of bound channels, if any */ @@ -99,18 +89,12 @@ dbg_session_data_from_dbg_s_entry(struct nvgpu_list_node *node) }; struct dbg_session_channel_data { - /* - * We have to keep a ref to the _file_, not the channel, because - * close(channel_fd) is synchronous and would deadlock if we had an - * open debug session fd holding a channel ref at that time. Holding a - * ref to the file makes close(channel_fd) just drop a kernel ref to - * the file; the channel will close when the last file ref is dropped. - */ - struct file *ch_f; int channel_fd; int chid; struct nvgpu_list_node ch_entry; struct dbg_session_data *session_data; + int (*unbind_single_channel)(struct dbg_session_gk20a *dbg_s, + struct dbg_session_channel_data *ch_data); }; static inline struct dbg_session_channel_data * @@ -135,9 +119,6 @@ dbg_profiler_object_data_from_prof_obj_entry(struct nvgpu_list_node *node) ((uintptr_t)node - offsetof(struct dbg_profiler_object_data, prof_obj_entry)); }; -int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s, - struct dbg_session_channel_data *ch_data); - bool gk20a_dbg_gpu_broadcast_stop_trigger(struct channel_gk20a *ch); int gk20a_dbg_gpu_clear_broadcast_stop_trigger(struct channel_gk20a *ch); -- cgit v1.2.2