Do not abort GPU probe if secure page alloc fails.
We can just note that this allocation failed (using bool
secure_alloc_ready) and prevent further secure memory
allocation if this flag is not set.
Bug
1525465
Change-Id: Ie4eb6393951690174013d2de3db507876d7b657f
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/427730
(cherry picked from commit
e7e47bb45d5ff5dcb48d8a961e9908b71db9e02f)
Reviewed-on: http://git-master/r/428306
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
tegra_periph_reset_deassert(platform->clk[0]);
}
+ if (!err)
+ platform->secure_alloc_ready = true;
+
return err;
}
}
err = gk20a_secure_page_alloc(dev);
- if (err) {
- dev_err(&dev->dev, "failed to allocate secure buffer\n");
- return err;
- }
+ if (err)
+ dev_err(&dev->dev,
+ "failed to allocate secure buffer %d\n", err);
gk20a_debug_init(dev);
*/
int (*secure_page_alloc)(struct platform_device *dev);
struct secure_page_buffer secure_buffer;
+ bool secure_alloc_ready;
/* Device is going to be suspended */
int (*suspend)(struct device *);
struct gr_ctx_buffer_desc *desc,
size_t size)
{
+ struct gk20a_platform *platform = platform_get_drvdata(pdev);
struct device *dev = &pdev->dev;
DEFINE_DMA_ATTRS(attrs);
dma_addr_t iova;
struct page *page;
int err = 0;
+ if (!platform->secure_alloc_ready)
+ return -EINVAL;
+
(void)dma_alloc_attrs(&tegra_vpr_dev, size, &iova,
DMA_MEMORY_NOMAP, &attrs);
if (dma_mapping_error(&tegra_vpr_dev, iova))