drm/radeon: Slightly more robust flip completion handling for < DCE-4
authorMario Kleiner <mario.kleiner.de@gmail.com>
Sat, 17 Sep 2016 12:25:38 +0000 (14:25 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 4 Oct 2016 15:15:58 +0000 (11:15 -0400)
commit73d4c23f5361928b12e7827e872612273cc1175a
treeb661a7a346cf474267b2ff442ccd04736c8d9be4
parentc2cbc38b9715bd8318062e600668fc30e5a3fbfa
drm/radeon: Slightly more robust flip completion handling for < DCE-4

Pre DCE4 hardware doesn't have (reliable) pageflip completion
irqs, therefore we have to use the old polling method for flip
completion handling in vblank irq.

As vblank irqs fire a bit before start of vblank (when the
linebuffer fifo read position reaches end of scanout), we
have some fudge for flip completion handling in the last
lines of active scanout. Old code assumed the threshold to
be 99% of active scanout height, a ballpark estimate which
worked ok. Since we know since a while how to calculate the
actual threshold from linebuffer size, lets make use of it
to get a more accurate threshold.

This completion path is still prone to some races in corner
cases, especially on pre-AVIVO hardware, so document them
a bit better in the code comments.

Acked-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_display.c