From 4dac924aba27aa46267fb39f3ed968318292a7f5 Mon Sep 17 00:00:00 2001 From: Prateek Sethi Date: Fri, 4 May 2018 10:30:18 +0530 Subject: gpu: nvgpu: nvhost: PC_SAMPLING ioctl failure. NVGPU_DBG_GPU_IOCTL_PC_SAMPLING ioctl is not handled properly for HV case for both Linux and QNX. Currently guest vm is trying to perform gpu memory read and write operations which supposed to be done by RM server, causing the crash. This patch is supposed to fix ioctl failure. Bug 2052040 Change-Id: Ia0773959b84739a1bced858331764751520a3561 Signed-off-by: Prateek Sethi Reviewed-on: https://git-master.nvidia.com/r/1708102 Reviewed-by: svc-mobile-coverity Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sourab Gupta GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Tested-by: Sourab Gupta Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/vgpu/gr_vgpu.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'drivers/gpu/nvgpu/vgpu/gr_vgpu.c') 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) return g->ops.gr.init_sm_id_table(g); } + +int vgpu_gr_update_pc_sampling(struct channel_gk20a *ch, bool enable) +{ + struct tegra_vgpu_cmd_msg msg; + struct tegra_vgpu_channel_update_pc_sampling *p = + &msg.params.update_pc_sampling; + struct gk20a *g; + int err = -EINVAL; + + if (!ch->g) + return err; + g = ch->g; + nvgpu_log_fn(g, " "); + + msg.cmd = TEGRA_VGPU_CMD_UPDATE_PC_SAMPLING; + msg.handle = vgpu_get_handle(g); + p->handle = ch->virt_ctx; + if (enable) + p->mode = TEGRA_VGPU_ENABLE_SAMPLING; + else + p->mode = TEGRA_VGPU_DISABLE_SAMPLING; + + err = vgpu_comm_sendrecv(&msg, sizeof(msg), sizeof(msg)); + WARN_ON(err || msg.ret); + + return err ? err : msg.ret; +} -- cgit v1.2.2