On Tue, May 23, 2017 at 2:14 AM, Dmitry Osipenko digetx@gmail.com wrote:
In case of relocations / waitchecks patching failure the jobs pins stay referenced till DRM file get closed, wasting memory. Add the missed unpinning.
Signed-off-by: Dmitry Osipenko digetx@gmail.com
drivers/gpu/host1x/job.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c index d9933828fe87..14f3f957ffab 100644 --- a/drivers/gpu/host1x/job.c +++ b/drivers/gpu/host1x/job.c @@ -592,22 +592,20 @@ int host1x_job_pin(struct host1x_job *job, struct device *dev)
err = do_relocs(job, g->bo); if (err)
break;
goto out; err = do_waitchks(job, host, g->bo); if (err)
break;
goto out; }
if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && !err) {
err = copy_gathers(job, dev);
if (err) {
host1x_job_unpin(job);
return err;
}
}
if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
goto out;
err = copy_gathers(job, dev);
out:
if (err)
host1x_job_unpin(job); wmb(); return err;
-- 2.13.0
One subtle undocumented change here, is that wmb() now gets called in the copy_gathers()-error case (just like it already does for the other error-cases). That's seems like an OK change, so:
Reviewed-by: Erik Faye-Lund kusmabite@gmail.com