diff --git a/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c index b23d2794a..349101525 100644 --- a/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c @@ -569,8 +569,10 @@ static int css_gr_free_client_data(struct gk20a_cs_snapshot *data, client->perfmon_start, client->perfmon_count)) ret = -EINVAL; } + if (client->dma_handler) { - dma_buf_vunmap(client->dma_handler, client->snapshot); + if (client->snapshot) + dma_buf_vunmap(client->dma_handler, client->snapshot); dma_buf_put(client->dma_handler); } diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index b17479876..badb77176 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -2008,7 +2008,12 @@ int gk20a_init_gpu_characteristics(struct gk20a *g) if (IS_ENABLED(CONFIG_GK20A_CYCLE_STATS)) { gpu->flags |= NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS; - gpu->flags |= NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS_SNAPSHOT; + /* the snapshots must be supported only for t210 */ + if (NVGPU_GPU_ARCH_GM200 == gpu->arch && + NVGPU_GPU_IMPL_GM20B == gpu->impl) { + gpu->flags |= + NVGPU_GPU_FLAGS_SUPPORT_CYCLE_STATS_SNAPSHOT; + } } gpu->gpc_mask = 1;