diff options
| author | Christian Gmeiner <cgmeiner@igalia.com> | 2026-11-02 11:18:53 +0100 |
|---|---|---|
| committer | Christian Gmeiner <cgmeiner@igalia.com> | 2026-11-05 12:17:30 +0100 |
| commit | c1a757f8df1363032623fa9b1baaba0dcf34de6d (patch) | |
| tree | 05097e7039e3857a150ab323895642aec8b821a3 /scripts/Makefile.thinlto | |
| parent | a0560a12d8c1a03e925c5d9be8479da75663a40f (diff) | |
| download | linux-next-c1a757f8df1363032623fa9b1baaba0dcf34de6d.tar.gz linux-next-c1a757f8df1363032623fa9b1baaba0dcf34de6d.zip | |
drm/etnaviv: Flush the tile status cache through both the PE and BLT
Since commit f232d9ec029c ("drm/etnaviv: fix TS cache flushing on GPUs
with BLT engine"), jobs on GPUs with a BLT engine use a BLT command to
flush the tile status cache instead of TS_FLUSH_CACHE, which is broken
on most of these GPUs.
GC7000 r6008/r6009 and GC8200 r6401 are the other way around:
TS_FLUSH_CACHE works, but the BLT command does not flush the cache.
The vendor driver handles these GPUs using TS_FLUSH_CACHE, but the
etnaviv kernel driver has no way to identify them.
As a result, dirty tile status cache lines survive the end of a job.
They are written back by the next cache flush, using the page table of
the job issuing it. If that job belongs to another process, the write
goes to the wrong address space.
On GC7000 r6009 this causes MMU faults and GPU recoveries blamed on an
innocent process. I see around 1100 per run of a multisample
depth/stencil test running alongside two other GPU clients.
Emit both flushes at the end of every job on GPUs with a BLT engine.
Whichever does not work on a given GPU is a no-op. Since dirty lines
are only written back once, this costs one additional state load per
job.
Fixes: f232d9ec029c ("drm/etnaviv: fix TS cache flushing on GPUs with BLT engine")
Cc: stable@vger.kernel.org
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://patch.msgid.link/20261102-etna-pe-ts-flush-v1-1-e4454ed86f85@igalia.com
Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
