From 8c5b39353e7353b358c0da9d0de8691922e1179d Mon Sep 17 00:00:00 2001 From: Konsta Holtta Date: Thu, 23 Oct 2014 14:17:52 +0300 Subject: gpu: nvgpu: cde: move GK20A_CDE to platform data CONFIG_GK20A_CDE has not even been used for enabling CDE, just for initializing it at boot time, and it was disabled; initialization has been done late when the engine is first used. Remove the config setting and add information about CDE support in gk20a platform data, forcing the initialization at boot time. Boot time init removes rare race conditions when CDE would be initialized by first user. Bug 200046882 Change-Id: I85d5fb73dc27acbbe203138d25f6e342de030d93 Signed-off-by: Konsta Holtta Reviewed-on: http://git-master/r/562855 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/cde_gk20a.c | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/cde_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c index 22a422a3..d9fe9ef1 100644 --- a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c @@ -879,16 +879,8 @@ int gk20a_cde_reload(struct gk20a *g) struct gk20a_cde_ctx *cde_ctx = cde_app->cde_ctx; int err, i; - if (!cde_app->initialised) { - err = gk20a_busy(g->dev); - if (err) - return err; - gk20a_init_cde_support(g); - gk20a_idle(g->dev); - if (!cde_app->initialised) - return -ENOSYS; - return 0; - } + if (!cde_app->initialised) + return -ENOSYS; err = gk20a_busy(g->dev); if (err) @@ -1044,11 +1036,8 @@ static int gk20a_buffer_convert_gpu_to_cde( const int gridw = roundup(xtiles, xalign) / xalign; const int gridh = roundup(ytiles, yalign) / yalign; - if (!g->cde_app.initialised) { - err = gk20a_cde_reload(g); - if (err) - return err; - } + if (!g->cde_app.initialised) + return -ENOSYS; if (xtiles > 4096 / 8 || ytiles > 4096 / 8) gk20a_warn(&g->dev->dev, "cde: surface is exceptionally large (xtiles=%d, ytiles=%d)", @@ -1087,16 +1076,12 @@ static int gk20a_buffer_convert_gpu_to_cde( err = gk20a_busy(g->dev); if (err) return err; - err = gk20a_init_cde_support(g); - if (err) - goto out; err = gk20a_cde_convert(g, dmabuf, 0, /* dst kind */ compbits_offset, 0, /* dst_size, 0 = auto */ fence_in, submit_flags, params, param, fence_out); -out: gk20a_idle(g->dev); return err; } -- cgit v1.2.2