summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2014-06-05 07:36:17 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:11 -0400
commit3227958a5e30692c22433b3f8afe3f0254137b62 (patch)
tree1ee6e6dce9aa5686975dd8caabf3267bdd8735a3 /drivers
parent725b56f71aa321816368d54332e68a2e93eda6fa (diff)
gpu: nvgpu: allocate secure buffer in probe
Allocate dummy secure buffer of size PAGE_SIZE during gk20a_probe(). This will also help to initiate first secure memory (VPR) resize call while GPU is rail gated and in reset. This dummy buffer is released after we allocate some more secure memory buffers in alloc_global_ctx_buffers() Bug 1487804 Change-Id: I61604d9e5ffb585801ee893435c98a0d3e69d666 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/421701 (cherry picked from commit 4236ab3323ee3c02fac562740d8b80d763589dea) Reviewed-on: http://git-master/r/419610 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c21
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c3
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index b7872e73..12c36d33 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -1316,6 +1316,21 @@ static int gk20a_pm_init(struct platform_device *dev)
1316 return err; 1316 return err;
1317} 1317}
1318 1318
1319int gk20a_secure_page_alloc(struct platform_device *pdev)
1320{
1321 struct gk20a_platform *platform = platform_get_drvdata(pdev);
1322 int err = 0;
1323
1324 if (platform->secure_page_alloc) {
1325 tegra_periph_reset_assert(platform->clk[0]);
1326 udelay(10);
1327 err = platform->secure_page_alloc(pdev);
1328 tegra_periph_reset_deassert(platform->clk[0]);
1329 }
1330
1331 return err;
1332}
1333
1319static int gk20a_probe(struct platform_device *dev) 1334static int gk20a_probe(struct platform_device *dev)
1320{ 1335{
1321 struct gk20a *gk20a; 1336 struct gk20a *gk20a;
@@ -1414,6 +1429,12 @@ static int gk20a_probe(struct platform_device *dev)
1414 } 1429 }
1415 } 1430 }
1416 1431
1432 err = gk20a_secure_page_alloc(dev);
1433 if (err) {
1434 dev_err(&dev->dev, "failed to allocate secure buffer\n");
1435 return err;
1436 }
1437
1417 gk20a_debug_init(dev); 1438 gk20a_debug_init(dev);
1418 1439
1419 /* Set DMA parameters to allow larger sgt lists */ 1440 /* Set DMA parameters to allow larger sgt lists */
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index f3e82243..0e178e9e 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -2348,6 +2348,9 @@ static int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g)
2348 &gr->global_ctx_buffer[ATTRIBUTE_VPR], 2348 &gr->global_ctx_buffer[ATTRIBUTE_VPR],
2349 attr_buffer_size); 2349 attr_buffer_size);
2350 2350
2351 if (platform->secure_buffer.destroy)
2352 platform->secure_buffer.destroy(pdev, &platform->secure_buffer);
2353
2351 gk20a_dbg_info("golden_image_size : %d", 2354 gk20a_dbg_info("golden_image_size : %d",
2352 gr->ctx_vars.golden_image_size); 2355 gr->ctx_vars.golden_image_size);
2353 2356