diff --git a/drivers/gpu/nvgpu/common/debugger.c b/drivers/gpu/nvgpu/common/debugger.c index 72d700c2a..93136cf6a 100644 --- a/drivers/gpu/nvgpu/common/debugger.c +++ b/drivers/gpu/nvgpu/common/debugger.c @@ -242,7 +242,7 @@ int nvgpu_dbg_set_powergate(struct dbg_session_gk20a *dbg_s, bool disable_powerg bool nvgpu_check_and_set_global_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; @@ -258,7 +258,7 @@ bool nvgpu_check_and_set_global_reservation( bool nvgpu_check_and_set_context_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; @@ -272,7 +272,7 @@ bool nvgpu_check_and_set_context_reservation( } void nvgpu_release_profiler_reservation(struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; diff --git a/drivers/gpu/nvgpu/common/profiler/profiler.c b/drivers/gpu/nvgpu/common/profiler/profiler.c index 7da67cc0b..1ff9654eb 100644 --- a/drivers/gpu/nvgpu/common/profiler/profiler.c +++ b/drivers/gpu/nvgpu/common/profiler/profiler.c @@ -33,9 +33,9 @@ static int generate_unique_id(void) } int nvgpu_profiler_alloc(struct gk20a *g, - struct dbg_profiler_object_data **_prof) + struct nvgpu_profiler_object **_prof) { - struct dbg_profiler_object_data *prof; + struct nvgpu_profiler_object *prof; *_prof = NULL; nvgpu_log(g, gpu_dbg_fn | gpu_dbg_gpu_dbg, " "); @@ -55,7 +55,7 @@ int nvgpu_profiler_alloc(struct gk20a *g, return 0; } -void nvgpu_profiler_free(struct dbg_profiler_object_data *prof) +void nvgpu_profiler_free(struct nvgpu_profiler_object *prof) { struct gk20a *g = prof->g; diff --git a/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.c b/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.c index 9a24242c0..e76154d10 100644 --- a/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.c +++ b/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.c @@ -137,7 +137,7 @@ static int vgpu_sendrecv_prof_cmd(struct dbg_session_gk20a *dbg_s, u32 mode) bool vgpu_check_and_set_global_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; @@ -158,7 +158,7 @@ bool vgpu_check_and_set_global_reservation( bool vgpu_check_and_set_context_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; @@ -181,7 +181,7 @@ bool vgpu_check_and_set_context_reservation( void vgpu_release_profiler_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj) + struct nvgpu_profiler_object *prof_obj) { struct gk20a *g = dbg_s->g; diff --git a/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.h b/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.h index 51c071929..c7201a12c 100644 --- a/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.h +++ b/drivers/gpu/nvgpu/common/vgpu/debugger_vgpu.h @@ -25,7 +25,7 @@ struct dbg_session_gk20a; struct nvgpu_dbg_reg_op; -struct dbg_profiler_object_data; +struct nvgpu_profiler_object; struct gk20a; struct nvgpu_channel; @@ -39,12 +39,12 @@ int vgpu_dbg_set_powergate(struct dbg_session_gk20a *dbg_s, bool disable_powergate); bool vgpu_check_and_set_global_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); bool vgpu_check_and_set_context_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); void vgpu_release_profiler_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); #endif /* NVGPU_DBG_VGPU_H */ diff --git a/drivers/gpu/nvgpu/include/nvgpu/debugger.h b/drivers/gpu/nvgpu/include/nvgpu/debugger.h index 3258439b8..78c0f6673 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/debugger.h +++ b/drivers/gpu/nvgpu/include/nvgpu/debugger.h @@ -33,7 +33,7 @@ struct gk20a; struct nvgpu_channel; struct dbg_session_gk20a; -struct dbg_profiler_object_data; +struct nvgpu_profiler_object; struct nvgpu_channel * nvgpu_dbg_gpu_get_session_channel(struct dbg_session_gk20a *dbg_s); @@ -111,12 +111,12 @@ void nvgpu_dbg_gpu_clear_broadcast_stop_trigger(struct nvgpu_channel *ch); int nvgpu_dbg_set_powergate(struct dbg_session_gk20a *dbg_s, bool disable_powergate); bool nvgpu_check_and_set_global_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); bool nvgpu_check_and_set_context_reservation( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); void nvgpu_release_profiler_reservation(struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); void nvgpu_dbg_session_post_event(struct dbg_session_gk20a *dbg_s); u32 nvgpu_set_powergate_locked(struct dbg_session_gk20a *dbg_s, diff --git a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h index 7b0916755..aa1fb062e 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gk20a.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gk20a.h @@ -78,7 +78,7 @@ struct sim_nvgpu; struct nvgpu_ce_app; struct gk20a_ctxsw_trace; struct nvgpu_mem_alloc_tracker; -struct dbg_profiler_object_data; +struct nvgpu_profiler_object; struct nvgpu_debug_context; struct nvgpu_clk_pll_debug_data; struct nvgpu_nvhost_dev; @@ -437,13 +437,13 @@ struct gpu_ops { bool disable_powergate); bool (*check_and_set_global_reservation)( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); bool (*check_and_set_context_reservation)( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); void (*release_profiler_reservation)( struct dbg_session_gk20a *dbg_s, - struct dbg_profiler_object_data *prof_obj); + struct nvgpu_profiler_object *prof_obj); } debugger; struct { void (*enable_membuf)(struct gk20a *g, u32 size, diff --git a/drivers/gpu/nvgpu/include/nvgpu/profiler.h b/drivers/gpu/nvgpu/include/nvgpu/profiler.h index 4614838ee..7014bedc0 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/profiler.h +++ b/drivers/gpu/nvgpu/include/nvgpu/profiler.h @@ -30,25 +30,44 @@ struct gk20a; struct nvgpu_channel; -struct dbg_profiler_object_data { +struct nvgpu_profiler_object { struct gk20a *g; + + /* + * Debug session id. Only valid for profiler objects + * allocated through debug session i.e. in ioctl_dbg.c. + */ int session_id; + + /* Unique profiler object handle. Also used as reservation id. */ u32 prof_handle; + + /* + * Pointer to context being profiled, applicable only for profiler + * objects with context scope. + */ struct nvgpu_tsg *tsg; + + /* If profiler object has HWPM reservation. */ bool has_reservation; + + /* + * Entry of this object into global list of objects + * maintained in struct gk20a. + */ struct nvgpu_list_node prof_obj_entry; }; -static inline struct dbg_profiler_object_data * -dbg_profiler_object_data_from_prof_obj_entry(struct nvgpu_list_node *node) +static inline struct nvgpu_profiler_object * +nvgpu_profiler_object_from_prof_obj_entry(struct nvgpu_list_node *node) { - return (struct dbg_profiler_object_data *) - ((uintptr_t)node - offsetof(struct dbg_profiler_object_data, prof_obj_entry)); + return (struct nvgpu_profiler_object *) + ((uintptr_t)node - offsetof(struct nvgpu_profiler_object, prof_obj_entry)); }; int nvgpu_profiler_alloc(struct gk20a *g, - struct dbg_profiler_object_data **_prof); -void nvgpu_profiler_free(struct dbg_profiler_object_data *prof); + struct nvgpu_profiler_object **_prof); +void nvgpu_profiler_free(struct nvgpu_profiler_object *prof); #endif /* CONFIG_NVGPU_PROFILER */ #endif /* NVGPU_PROFILER_H */ diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_dbg.c b/drivers/gpu/nvgpu/os/linux/ioctl_dbg.c index 3369cef7f..809fb3ca4 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_dbg.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_dbg.c @@ -183,7 +183,7 @@ int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp) struct dbg_session_gk20a_linux *dbg_session_linux = filp->private_data; struct dbg_session_gk20a *dbg_s = &dbg_session_linux->dbg_s; struct gk20a *g = dbg_s->g; - struct dbg_profiler_object_data *prof_obj, *tmp_obj; + struct nvgpu_profiler_object *prof_obj, *tmp_obj; nvgpu_log(g, gpu_dbg_gpu_dbg | gpu_dbg_fn, "%s", g->name); @@ -208,7 +208,7 @@ int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp) * dbg_unbind_all_channels. We could still have global ones. */ nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, - dbg_profiler_object_data, prof_obj_entry) { + nvgpu_profiler_object, prof_obj_entry) { if (prof_obj->session_id == dbg_s->id) { if (prof_obj->has_reservation) g->ops.debugger. @@ -444,7 +444,7 @@ static int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s, struct gk20a *g = dbg_s->g; u32 chid; struct dbg_session_data *session_data; - struct dbg_profiler_object_data *prof_obj, *tmp_obj; + struct nvgpu_profiler_object *prof_obj, *tmp_obj; struct dbg_session_channel_data_linux *ch_data_linux; struct nvgpu_channel *ch; @@ -457,7 +457,7 @@ static int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s, * session/channel pair, release it. */ nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, - dbg_profiler_object_data, prof_obj_entry) { + nvgpu_profiler_object, prof_obj_entry) { if ((prof_obj->session_id == dbg_s->id) && (prof_obj->tsg->tsgid == ch->tsgid)) { if (prof_obj->has_reservation) { @@ -1171,7 +1171,7 @@ static int nvgpu_ioctl_allocate_profiler_object( int err = 0; struct dbg_session_gk20a *dbg_s = &dbg_session_linux->dbg_s; struct gk20a *g = get_gk20a(dbg_session_linux->dev); - struct dbg_profiler_object_data *prof_obj; + struct nvgpu_profiler_object *prof_obj; struct nvgpu_channel *ch = NULL; struct nvgpu_tsg *tsg; @@ -1220,7 +1220,7 @@ static int nvgpu_ioctl_free_profiler_object( int err = 0; struct dbg_session_gk20a *dbg_s = &dbg_s_linux->dbg_s; struct gk20a *g = get_gk20a(dbg_s_linux->dev); - struct dbg_profiler_object_data *prof_obj, *tmp_obj; + struct nvgpu_profiler_object *prof_obj, *tmp_obj; bool obj_found = false; nvgpu_log_fn(g, "%s session_id = %d profiler_handle = %x", @@ -1230,7 +1230,7 @@ static int nvgpu_ioctl_free_profiler_object( /* Remove profiler object from the list, if a match is found */ nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, - dbg_profiler_object_data, prof_obj_entry) { + nvgpu_profiler_object, prof_obj_entry) { if (prof_obj->prof_handle == args->profiler_handle) { if (prof_obj->session_id != dbg_s->id) { nvgpu_err(g, @@ -1257,15 +1257,15 @@ static int nvgpu_ioctl_free_profiler_object( return err; } -static struct dbg_profiler_object_data *find_matching_prof_obj( +static struct nvgpu_profiler_object *find_matching_prof_obj( struct dbg_session_gk20a *dbg_s, u32 profiler_handle) { struct gk20a *g = dbg_s->g; - struct dbg_profiler_object_data *prof_obj; + struct nvgpu_profiler_object *prof_obj; nvgpu_list_for_each_entry(prof_obj, &g->profiler_objects, - dbg_profiler_object_data, prof_obj_entry) { + nvgpu_profiler_object, prof_obj_entry) { if (prof_obj->prof_handle == profiler_handle) { if (prof_obj->session_id != dbg_s->id) { nvgpu_err(g, @@ -1683,7 +1683,7 @@ static int nvgpu_profiler_reserve_release(struct dbg_session_gk20a *dbg_s, u32 profiler_handle) { struct gk20a *g = dbg_s->g; - struct dbg_profiler_object_data *prof_obj; + struct nvgpu_profiler_object *prof_obj; int err = 0; nvgpu_log_fn(g, "%s profiler_handle = %x", g->name, profiler_handle); @@ -1715,7 +1715,7 @@ static int nvgpu_profiler_reserve_acquire(struct dbg_session_gk20a *dbg_s, u32 profiler_handle) { struct gk20a *g = dbg_s->g; - struct dbg_profiler_object_data *prof_obj, *my_prof_obj; + struct nvgpu_profiler_object *prof_obj, *my_prof_obj; int err = 0; nvgpu_log_fn(g, "%s profiler_handle = %x", g->name, profiler_handle); @@ -1764,7 +1764,7 @@ static int nvgpu_profiler_reserve_acquire(struct dbg_session_gk20a *dbg_s, u32 my_tsgid = my_prof_obj->tsg->tsgid; nvgpu_list_for_each_entry(prof_obj, &g->profiler_objects, - dbg_profiler_object_data, prof_obj_entry) { + nvgpu_profiler_object, prof_obj_entry) { if (prof_obj->has_reservation && (prof_obj->tsg->tsgid == my_tsgid)) { nvgpu_err(g,