From: Greg KH <greg@kroah.com>
To: Robert Beckett <bob.beckett@collabora.com>
Cc: Lucas Stach <l.stach@pengutronix.de>,
Russell King <linux+etnaviv@armlinux.org.uk>,
Christian Gmeiner <christian.gmeiner@gmail.com>,
David Airlie <airlied@linux.ie>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH v4.19.y, v4.14.y, v4.9.y] drm/etnaviv: Backport fix for mmu flushing
Date: Fri, 3 Apr 2020 11:16:52 +0200 [thread overview]
Message-ID: <20200403091652.GB3740897@kroah.com> (raw)
In-Reply-To: <20200402170758.8315-1-bob.beckett@collabora.com>
On Thu, Apr 02, 2020 at 06:07:55PM +0100, Robert Beckett wrote:
> commit 4900dda90af2cb13bc1d4c12ce94b98acc8fe64e upstream
>
> Due to async need_flush updating via other buffer mapping, checking
> gpu->need_flush in 3 places within etnaviv_buffer_queue can cause GPU
> hangs.
>
> This occurs due to need_flush being false for the first 2 checks in that
> function, so that the extra dword does not get accounted for, but by the
> time we come to check for the third time, gpu->mmu->need_flish is true,
> which outputs the flush instruction. This causes the prefetch during the
> final link to be off by 1. This causes GPU hangs.
>
> It causes the ring to contain patterns like this:
>
> 0x40000005, /* LINK (8) PREFETCH=0x5,OP=LINK */
> 0x70040010, /* ADDRESS *0x70040010 */
> 0x40000002, /* LINK (8) PREFETCH=0x2,OP=LINK */
> 0x70040000, /* ADDRESS *0x70040000 */
> 0x08010e04, /* LOAD_STATE (1) Base: 0x03810 Size: 1 Fixp: 0 */
> 0x0000001f, /* GL.FLUSH_MMU := FLUSH_FEMMU=1,FLUSH_UNK1=1,FLUSH_UNK2=1,FLUSH_PEMMU=1,FLUSH_UNK4=1 */
> 0x08010e03, /* LOAD_STATE (1) Base: 0x0380C Size: 1 Fixp: 0 */
> 0x00000000, /* GL.FLUSH_CACHE := DEPTH=0,COLOR=0,TEXTURE=0,PE2D=0,TEXTUREVS=0,SHADER_L1=0,SHADER_L2=0,UNK10=0,UNK11=0,DESCRIPTOR_UNK12=0,DESCRIPTOR_UNK13=0 */
> 0x08010e02, /* LOAD_STATE (1) Base: 0x03808 Size: 1 Fixp: 0 */
> 0x00000701, /* GL.SEMAPHORE_TOKEN := FROM=FE,TO=PE,UNK28=0x0 */
> 0x48000000, /* STALL (9) OP=STALL */
> 0x00000701, /* TOKEN FROM=FE,TO=PE,UNK28=0x0 */
> 0x08010e00, /* LOAD_STATE (1) Base: 0x03800 Size: 1 Fixp: 0 */
> 0x00000000, /* GL.PIPE_SELECT := PIPE=PIPE_3D */
> 0x40000035, /* LINK (8) PREFETCH=0x35,OP=LINK */
> 0x70041000, /* ADDRESS *0x70041000 */
>
> Here we see a link with prefetch of 5 dwords starting with the 3rd
> instruction. It only loads the 5 dwords up and including the final
> LOAD_STATE. It needs to include the final LINK instruction.
>
> This was seen on imx6q, and the fix is confirmed to stop the GPU hangs.
>
> The commit referenced inadvertently fixed this issue by checking
> gpu->mmu->need_flush once at the start of the function.
> Given that this commit is independant, and useful for all version, it
> seems sensible to backport it to the stable branches.
>
>
All now queued up, thanks for the backports.
greg k-h
prev parent reply other threads:[~2020-04-03 9:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-02 17:07 Robert Beckett
2020-04-02 17:07 ` [PATCH v4.14.y] drm/etnaviv: replace MMU flush marker with flush sequence Robert Beckett
2020-04-02 17:07 ` [PATCH v4.19.y] " Robert Beckett
2020-04-02 17:07 ` [PATCH v4.9.y] " Robert Beckett
2020-04-02 17:17 ` [PATCH v4.19.y, v4.14.y, v4.9.y] drm/etnaviv: Backport fix for mmu flushing Lucas Stach
2020-04-03 9:16 ` Greg KH [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200403091652.GB3740897@kroah.com \
--to=greg@kroah.com \
--cc=airlied@linux.ie \
--cc=bob.beckett@collabora.com \
--cc=christian.gmeiner@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®