[bisected] 5.13-rc2 i915 regression in b12d691ea5e01d "i915: fix remap_io_sg to verify the pgprot"

From: Sergei Trofimovich
Date: Wed May 19 2021 - 10:42:15 EST


Hi Christoph and i915 maintainers!

vanilla 5.13-rc2 got some rendering regression on gen2(?) i915 chips:

In gtk apps cursor gets corrupted for a short period of time.

In firefox text selection and text scrolling shows artifacts for a short
time (seconds). As if tiny horisontal tiles (1 pixel high, ~20-50 pixels
long) fail to refresh in time.

I was not able get a screenshot with artifacts: pictures are always clean.
I can grab a photo or tiny video if needed.

Bisection was straightforward and landed on:

b12d691ea5e01db42ccf3b4207e57cb3ce7cfe91 is the first bad commit
commit b12d691ea5e01db42ccf3b4207e57cb3ce7cfe91
Author: Christoph Hellwig <hch@xxxxxx>
Date: Thu Apr 29 22:57:38 2021 -0700

i915: fix remap_io_sg to verify the pgprot

remap_io_sg claims that the pgprot is pre-verified using an io_mapping,
but actually does not get passed an io_mapping and just uses the pgprot in
the VMA. Remove the apply_to_page_range abuse and just loop over
remap_pfn_range for each segment.

Note: this could use io_mapping_map_user by passing an iomap to
remap_io_sg if the maintainers can verify that the pgprot in the iomap in
the only caller is indeed the desired one here.

Link: https://lkml.kernel.org/r/20210326055505.1424432-5-hch@xxxxxx
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Daniel Vetter <daniel.vetter@xxxxxxxx>
Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

drivers/gpu/drm/i915/i915_mm.c | 73 +++++++++++++-----------------------------
1 file changed, 23 insertions(+), 50 deletions(-)

System:
$ Linux sf 5.12.0-11146-g8ca5297e7e38 #302 SMP PREEMPT Thu Apr 29 23:30:52 BST 2021 x86_64 Intel(R) Core(TM) i7-2700K CPU @ 3.50GHz GenuineIntel GNU/Linux
$ lspci -v
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Subsystem: Gigabyte Technology Co., Ltd 2nd Generation Core Processor Family Integrated Graphics Controller
Flags: bus master, fast devsel, latency 0, IRQ 27
Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: i915

Software:
mesa-20.3.5 : i965 driver
glamor X acceleration enabled on Mesa DRI Intel(R) HD Graphics 3000 (SNB GT2)
xorg-server-1.20.11

Thanks!

--

Sergei