diff options
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/gr_vgpu.c')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gr_vgpu.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c index 1e633d5f..9d765984 100644 --- a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c | |||
@@ -1310,3 +1310,30 @@ int vgpu_gr_init_fs_state(struct gk20a *g) | |||
1310 | 1310 | ||
1311 | return g->ops.gr.init_sm_id_table(g); | 1311 | return g->ops.gr.init_sm_id_table(g); |
1312 | } | 1312 | } |
1313 | |||
1314 | int vgpu_gr_update_pc_sampling(struct channel_gk20a *ch, bool enable) | ||
1315 | { | ||
1316 | struct tegra_vgpu_cmd_msg msg; | ||
1317 | struct tegra_vgpu_channel_update_pc_sampling *p = | ||
1318 | &msg.params.update_pc_sampling; | ||
1319 | struct gk20a *g; | ||
1320 | int err = -EINVAL; | ||
1321 | |||
1322 | if (!ch->g) | ||
1323 | return err; | ||
1324 | g = ch->g; | ||
1325 | nvgpu_log_fn(g, " "); | ||
1326 | |||
1327 | msg.cmd = TEGRA_VGPU_CMD_UPDATE_PC_SAMPLING; | ||
1328 | msg.handle = vgpu_get_handle(g); | ||
1329 | p->handle = ch->virt_ctx; | ||
1330 | if (enable) | ||
1331 | p->mode = TEGRA_VGPU_ENABLE_SAMPLING; | ||
1332 | else | ||
1333 | p->mode = TEGRA_VGPU_DISABLE_SAMPLING; | ||
1334 | |||
1335 | err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); | ||
1336 | WARN_ON(err || msg.ret); | ||
1337 | |||
1338 | return err ? err : msg.ret; | ||
1339 | } | ||