mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 02:52:51 +03:00
gpu: nvgpu: update hwpm/smpc ctxsw mode API to accept TSG
Below APIs to update hwpm/smpc ctxsw mode take a channel pointer as a parameter. APIs then extract corresponding TSG from channel and perform various operations on context stored in TSG. g->ops.gr.update_smpc_ctxsw_mode() g->ops.gr.update_hwpm_ctxsw_mode() Update both above APIs to accept TSG pointer instead of a channel. This is a refactor work to support new profiler design where a profiler object is bound to TSG and keeps track of TSG only. Bug 2510974 Jira NVGPU-5360 Change-Id: Ia4cefda503d8420f2bd32d07c57534924f0f557a Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2366122 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Alex Waterman
parent
59230fe64a
commit
7466369a58
@@ -954,6 +954,7 @@ static int nvgpu_dbg_gpu_ioctl_smpc_ctxsw_mode(struct dbg_session_gk20a *dbg_s,
|
||||
int err;
|
||||
struct gk20a *g = dbg_s->g;
|
||||
struct nvgpu_channel *ch_gk20a;
|
||||
struct nvgpu_tsg *tsg;
|
||||
|
||||
nvgpu_log_fn(g, "%s smpc ctxsw mode = %d",
|
||||
g->name, args->mode);
|
||||
@@ -975,7 +976,14 @@ static int nvgpu_dbg_gpu_ioctl_smpc_ctxsw_mode(struct dbg_session_gk20a *dbg_s,
|
||||
goto clean_up;
|
||||
}
|
||||
|
||||
err = g->ops.gr.update_smpc_ctxsw_mode(g, ch_gk20a,
|
||||
tsg = nvgpu_tsg_from_ch(ch_gk20a);
|
||||
if (tsg == NULL) {
|
||||
nvgpu_err(g, "channel not bound to TSG");
|
||||
err = -EINVAL;
|
||||
goto clean_up;
|
||||
}
|
||||
|
||||
err = g->ops.gr.update_smpc_ctxsw_mode(g, tsg,
|
||||
args->mode == NVGPU_DBG_GPU_SMPC_CTXSW_MODE_CTXSW);
|
||||
if (err) {
|
||||
nvgpu_err(g,
|
||||
@@ -1015,6 +1023,7 @@ static int nvgpu_dbg_gpu_ioctl_hwpm_ctxsw_mode(struct dbg_session_gk20a *dbg_s,
|
||||
int err;
|
||||
struct gk20a *g = dbg_s->g;
|
||||
struct nvgpu_channel *ch_gk20a;
|
||||
struct nvgpu_tsg *tsg;
|
||||
u32 mode = nvgpu_hwpm_ctxsw_mode_to_common_mode(args->mode);
|
||||
|
||||
nvgpu_log_fn(g, "%s pm ctxsw mode = %d", g->name, args->mode);
|
||||
@@ -1050,7 +1059,15 @@ static int nvgpu_dbg_gpu_ioctl_hwpm_ctxsw_mode(struct dbg_session_gk20a *dbg_s,
|
||||
err = -ENOSYS;
|
||||
goto clean_up;
|
||||
}
|
||||
err = g->ops.gr.update_hwpm_ctxsw_mode(g, ch_gk20a, 0,
|
||||
|
||||
tsg = nvgpu_tsg_from_ch(ch_gk20a);
|
||||
if (tsg == NULL) {
|
||||
nvgpu_err(g, "channel not bound to TSG");
|
||||
err = -EINVAL;
|
||||
goto clean_up;
|
||||
}
|
||||
|
||||
err = g->ops.gr.update_hwpm_ctxsw_mode(g, tsg, 0,
|
||||
mode);
|
||||
|
||||
if (err)
|
||||
|
||||
Reference in New Issue
Block a user