We don't need to hold and pin original BOs of the gathers in a case of
enabled firewall because in this case gather's content is copied and the
copy is used by the executed job.

Signed-off-by: Dmitry Osipenko <dig...@gmail.com>
---
 drivers/gpu/host1x/job.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c
index a10643aa89aa..a954bd41aa79 100644
--- a/drivers/gpu/host1x/job.c
+++ b/drivers/gpu/host1x/job.c
@@ -27,10 +27,13 @@ struct host1x_job *host1x_job_alloc(struct host1x_channel 
*ch,
                                    u32 num_cmdbufs, u32 num_relocs)
 {
        struct host1x_job *job = NULL;
-       unsigned int num_unpins = num_cmdbufs + num_relocs;
+       unsigned int num_unpins = num_relocs;
        u64 total;
        void *mem;
 
+       if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
+               num_unpins += num_cmdbufs;
+
        /* Check that we're not going to overflow */
        total = sizeof(struct host1x_job) +
                (u64)num_relocs * sizeof(struct host1x_reloc) +
@@ -183,6 +186,13 @@ static unsigned int pin_job(struct host1x *host, struct 
host1x_job *job)
                job->num_unpins++;
        }
 
+       /*
+        * We will copy gathers BO content later, so there is no need to
+        * hold and pin them.
+        */
+       if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
+               return 0;
+
        for (i = 0; i < job->num_gathers; i++) {
                struct host1x_job_gather *g = &job->gathers[i];
                size_t gather_size = 0;
@@ -216,7 +226,7 @@ static unsigned int pin_job(struct host1x *host, struct 
host1x_job *job)
                        goto unpin;
                }
 
-               if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && host->domain) {
+               if (host->domain) {
                        for_each_sg(sgt->sgl, sg, sgt->nents, j)
                                gather_size += sg->length;
                        gather_size = iova_align(&host->iova, gather_size);
-- 
2.26.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to