gpu: host1x: Reset max value when freeing a syncpoint
authorMikko Perttunen <mperttunen@nvidia.com>
Mon, 29 Mar 2021 13:38:33 +0000 (16:38 +0300)
committerThierry Reding <treding@nvidia.com>
Wed, 31 Mar 2021 15:42:13 +0000 (17:42 +0200)
With job recovery becoming optional, syncpoints may have a mismatch
between their value and max value when freed. As such, when freeing,
set the max value to the current value of the syncpoint so that it
is in a sane state for the next user.

Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/host1x/syncpt.c

index 7bb5de8..877c5ab 100644 (file)
@@ -400,6 +400,8 @@ static void syncpt_release(struct kref *ref)
 {
        struct host1x_syncpt *sp = container_of(ref, struct host1x_syncpt, ref);
 
+       atomic_set(&sp->max_val, host1x_syncpt_read(sp));
+
        mutex_lock(&sp->host->syncpt_mutex);
 
        host1x_syncpt_base_free(sp->base);