mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 01:50:07 +03:00
gpu: nvgpu: support binding multiple channels to a debug session
We currently bind only one channel to a debug session But some use cases might need multiple channels bound to same debug session Add this support by adding a list of channels to debug session. List structure is implemented as struct dbg_session_channel_data List node dbg_s_list_node is currently defined in struct dbg_session_gk20a. But this is inefficient when we need to add debug session to multiple channels Hence add new reference structure dbg_session_data to store dbg_session pointer and list entry For each NVGPU_DBG_GPU_IOCTL_BIND_CHANNEL call, create two reference structure dbg_session_channel_data for channel and dbg_session_data for debug session and bind them together Define API nvgpu_dbg_gpu_get_session_channel() which will get first channel in the list of debug session Use this API wherever we refer to channel bound to debug session Remove dbg_sessions define in struct gk20a since it is not being used anywhere Add new API NVGPU_DBG_GPU_IOCTL_UNBIND_CHANNEL to support unbinding of channel from debug sesssion Bug 200156699 Change-Id: I3bfa6f9cd5b90e7254a75c7e64ac893739776b7f Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1120331 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
c651adbeaa
commit
dfac8ce704
@@ -496,8 +496,7 @@ struct nvgpu_gpu_get_gpu_time_args {
|
||||
* Binding/attaching a debugger session to an nvgpu channel
|
||||
*
|
||||
* The 'channel_fd' given here is the fd used to allocate the
|
||||
* gpu channel context. To detach/unbind the debugger session
|
||||
* use a channel_fd of -1.
|
||||
* gpu channel context.
|
||||
*
|
||||
*/
|
||||
struct nvgpu_dbg_gpu_bind_channel_args {
|
||||
@@ -510,6 +509,8 @@ struct nvgpu_dbg_gpu_bind_channel_args {
|
||||
|
||||
/*
|
||||
* Register operations
|
||||
* All operations are targeted towards first channel
|
||||
* attached to debug session
|
||||
*/
|
||||
/* valid op values */
|
||||
#define NVGPU_DBG_GPU_REG_OP_READ_32 (0x00000000)
|
||||
@@ -722,9 +723,23 @@ struct nvgpu_dbg_gpu_write_single_sm_error_state_args {
|
||||
#define NVGPU_DBG_GPU_IOCTL_WRITE_SINGLE_SM_ERROR_STATE \
|
||||
_IOW(NVGPU_DBG_GPU_IOCTL_MAGIC, 16, struct nvgpu_dbg_gpu_write_single_sm_error_state_args)
|
||||
|
||||
/*
|
||||
* Unbinding/detaching a debugger session from a nvgpu channel
|
||||
*
|
||||
* The 'channel_fd' given here is the fd used to allocate the
|
||||
* gpu channel context.
|
||||
*/
|
||||
struct nvgpu_dbg_gpu_unbind_channel_args {
|
||||
__u32 channel_fd; /* in */
|
||||
__u32 _pad0[1];
|
||||
};
|
||||
|
||||
#define NVGPU_DBG_GPU_IOCTL_UNBIND_CHANNEL \
|
||||
_IOW(NVGPU_DBG_GPU_IOCTL_MAGIC, 17, struct nvgpu_dbg_gpu_unbind_channel_args)
|
||||
|
||||
|
||||
#define NVGPU_DBG_GPU_IOCTL_LAST \
|
||||
_IOC_NR(NVGPU_DBG_GPU_IOCTL_WRITE_SINGLE_SM_ERROR_STATE)
|
||||
_IOC_NR(NVGPU_DBG_GPU_IOCTL_UNBIND_CHANNEL)
|
||||
|
||||
#define NVGPU_DBG_GPU_IOCTL_MAX_ARG_SIZE \
|
||||
sizeof(struct nvgpu_dbg_gpu_perfbuf_map_args)
|
||||
|
||||
Reference in New Issue
Block a user