diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2016-07-14 14:43:53 -0400 |
---|---|---|
committer | Seshendra Gadagottu <sgadagottu@nvidia.com> | 2016-07-25 20:10:03 -0400 |
commit | 021c23e46eb69ee2c888fa3b05834f110da7a450 (patch) | |
tree | 400c12e9a2b87402bab2b02aee3f111f4077aa4c /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | e2b965e555255be64a7687bd21e0f4ae1a17fe55 (diff) |
gpu: nvgpu: check for valid function pointers
Before calling prod settings functions, check for
availability of those functions.
Similar check is extended for get_clk_freqs.
Bug 1735760
Change-Id: Ic4b38079043ab2049a479a2d8bb0cb6091e94f4a
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/1181571
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Adeel Raza <araza@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 62d3b231..6fc52ad0 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -4656,6 +4656,8 @@ out: | |||
4656 | 4656 | ||
4657 | static void gr_gk20a_load_gating_prod(struct gk20a *g) | 4657 | static void gr_gk20a_load_gating_prod(struct gk20a *g) |
4658 | { | 4658 | { |
4659 | gk20a_dbg_fn(""); | ||
4660 | |||
4659 | /* slcg prod values */ | 4661 | /* slcg prod values */ |
4660 | if (g->ops.clock_gating.slcg_bus_load_gating_prod) | 4662 | if (g->ops.clock_gating.slcg_bus_load_gating_prod) |
4661 | g->ops.clock_gating.slcg_bus_load_gating_prod(g, | 4663 | g->ops.clock_gating.slcg_bus_load_gating_prod(g, |
@@ -4669,7 +4671,9 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g) | |||
4669 | if (g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod) | 4671 | if (g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod) |
4670 | g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod(g, | 4672 | g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod(g, |
4671 | g->slcg_enabled); | 4673 | g->slcg_enabled); |
4672 | g->ops.clock_gating.slcg_perf_load_gating_prod(g, g->slcg_enabled); | 4674 | if (g->ops.clock_gating.slcg_perf_load_gating_prod) |
4675 | g->ops.clock_gating.slcg_perf_load_gating_prod(g, | ||
4676 | g->slcg_enabled); | ||
4673 | if (g->ops.clock_gating.slcg_xbar_load_gating_prod) | 4677 | if (g->ops.clock_gating.slcg_xbar_load_gating_prod) |
4674 | g->ops.clock_gating.slcg_xbar_load_gating_prod(g, | 4678 | g->ops.clock_gating.slcg_xbar_load_gating_prod(g, |
4675 | g->slcg_enabled); | 4679 | g->slcg_enabled); |
@@ -4681,14 +4685,19 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g) | |||
4681 | if (g->ops.clock_gating.blcg_ce_load_gating_prod) | 4685 | if (g->ops.clock_gating.blcg_ce_load_gating_prod) |
4682 | g->ops.clock_gating.blcg_ce_load_gating_prod(g, | 4686 | g->ops.clock_gating.blcg_ce_load_gating_prod(g, |
4683 | g->blcg_enabled); | 4687 | g->blcg_enabled); |
4684 | g->ops.clock_gating.blcg_gr_load_gating_prod(g, g->blcg_enabled); | 4688 | if (g->ops.clock_gating.blcg_gr_load_gating_prod) |
4689 | g->ops.clock_gating.blcg_gr_load_gating_prod(g, | ||
4690 | g->blcg_enabled); | ||
4685 | if (g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod) | 4691 | if (g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod) |
4686 | g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod(g, | 4692 | g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod(g, |
4687 | g->blcg_enabled); | 4693 | g->blcg_enabled); |
4688 | if (g->ops.clock_gating.blcg_xbar_load_gating_prod) | 4694 | if (g->ops.clock_gating.blcg_xbar_load_gating_prod) |
4689 | g->ops.clock_gating.blcg_xbar_load_gating_prod(g, | 4695 | g->ops.clock_gating.blcg_xbar_load_gating_prod(g, |
4690 | g->blcg_enabled); | 4696 | g->blcg_enabled); |
4691 | g->ops.clock_gating.pg_gr_load_gating_prod(g, true); | 4697 | if (g->ops.clock_gating.pg_gr_load_gating_prod) |
4698 | g->ops.clock_gating.pg_gr_load_gating_prod(g, true); | ||
4699 | |||
4700 | gk20a_dbg_fn("done"); | ||
4692 | } | 4701 | } |
4693 | 4702 | ||
4694 | static int gk20a_init_gr_prepare(struct gk20a *g) | 4703 | static int gk20a_init_gr_prepare(struct gk20a *g) |