]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/lima: reset async_reset on gp hard reset
authorErico Nunes <nunes.erico@gmail.com>
Wed, 24 Jan 2024 02:59:41 +0000 (03:59 +0100)
committerQiang Yu <yuq825@gmail.com>
Mon, 12 Feb 2024 08:26:47 +0000 (16:26 +0800)
Lima gp jobs use an async reset to avoid having to wait for the soft
reset right after a job. The soft reset is done at the end of a job and
a reset_complete flag is expected to be set at the next job.
However, in case the user runs into a job timeout from any application,
a hard reset is issued to the hardware. This hard reset clears the
reset_complete flag, which causes an error message to show up before the
next job.
This is probably harmless for the execution but can be very confusing to
debug, as it blames a reset timeout on the next application to submit a
job.
Reset the async_reset flag when doing the hard reset so that we don't
get that message.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240124025947.2110659-3-nunes.erico@gmail.com
drivers/gpu/drm/lima/lima_gp.c

index 8dd501b7a3d0d8bd3656429c2508e0f937f66e04..b9a06e701a33c025c0c51528fbb9e2a631420550 100644 (file)
@@ -189,6 +189,13 @@ static int lima_gp_hard_reset(struct lima_ip *ip)
        gp_write(LIMA_GP_PERF_CNT_0_LIMIT, 0);
        gp_write(LIMA_GP_INT_CLEAR, LIMA_GP_IRQ_MASK_ALL);
        gp_write(LIMA_GP_INT_MASK, LIMA_GP_IRQ_MASK_USED);
+
+       /*
+        * if there was an async soft reset queued,
+        * don't wait for it in the next job
+        */
+       ip->data.async_reset = false;
+
        return 0;
 }