]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpu: host1x: Always return syncpoint value when waiting
authorMikko Perttunen <mperttunen@nvidia.com>
Mon, 7 Feb 2022 13:19:31 +0000 (15:19 +0200)
committerThierry Reding <treding@nvidia.com>
Wed, 16 Feb 2022 16:20:53 +0000 (17:20 +0100)
The new TegraDRM UAPI uses syncpoint waiting with timeout set to
zero to indicate reading the syncpoint value. To support that we
need to return the syncpoint value always when waiting.

Fixes: 44e961381354 ("drm/tegra: Implement syncpoint wait UAPI")
Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/host1x/syncpt.c

index 83a16e46146b780b8997a2d69bf86237172feac9..f87a8705f51834cb9fc568b82a8a0ac31cd5447c 100644 (file)
@@ -234,27 +234,12 @@ int host1x_syncpt_wait(struct host1x_syncpt *sp, u32 thresh, long timeout,
        void *ref;
        struct host1x_waitlist *waiter;
        int err = 0, check_count = 0;
-       u32 val;
 
        if (value)
-               *value = 0;
-
-       /* first check cache */
-       if (host1x_syncpt_is_expired(sp, thresh)) {
-               if (value)
-                       *value = host1x_syncpt_load(sp);
+               *value = host1x_syncpt_load(sp);
 
+       if (host1x_syncpt_is_expired(sp, thresh))
                return 0;
-       }
-
-       /* try to read from register */
-       val = host1x_hw_syncpt_load(sp->host, sp);
-       if (host1x_syncpt_is_expired(sp, thresh)) {
-               if (value)
-                       *value = val;
-
-               goto done;
-       }
 
        if (!timeout) {
                err = -EAGAIN;