From: Mikko Perttunen Date: Thu, 10 Jun 2021 11:04:44 +0000 (+0300) Subject: gpu: host1x: Add job release callback X-Git-Tag: v5.15-rc1~148^2~3^2~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17a298e9ac7c011e64a9c0b6f807b43f9af22eac;p=thirdparty%2Fkernel%2Flinux.git gpu: host1x: Add job release callback Add a callback field to the job structure, to be called just before the job is to be freed. This allows the job's submitter to clean up any of its own state, like decrement runtime PM refcounts. Signed-off-by: Mikko Perttunen Signed-off-by: Thierry Reding --- diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c index 8f59b34672c22..09097e19c0d09 100644 --- a/drivers/gpu/host1x/job.c +++ b/drivers/gpu/host1x/job.c @@ -79,6 +79,9 @@ static void job_free(struct kref *ref) { struct host1x_job *job = container_of(ref, struct host1x_job, ref); + if (job->release) + job->release(job); + if (job->waiter) host1x_intr_put_ref(job->syncpt->host, job->syncpt->id, job->waiter, false); diff --git a/include/linux/host1x.h b/include/linux/host1x.h index 8da088ad0b5e2..57271ab1fee84 100644 --- a/include/linux/host1x.h +++ b/include/linux/host1x.h @@ -268,6 +268,10 @@ struct host1x_job { /* Fast-forward syncpoint increments on job timeout */ bool syncpt_recovery; + + /* Callback called when job is freed */ + void (*release)(struct host1x_job *job); + void *user_data; }; struct host1x_job *host1x_job_alloc(struct host1x_channel *ch,