drm/vc4: Free all stale dlists if channel is disabled
The code handling freeing stale dlists had 2 issues:
- it disabled the interrupt as soon as the first EOF interrupt
occurred, even if it didn't clear all stale allocations, thus
leading to stale entries
- It didn't free stale entries from disabled channels, so eg
"kmstest -c 0" could leave a stale alloc on channel 1 floating
around.
Keep the interrupt enabled whilst there are any outstanding
allocs, and discard those on disabled channels. This second
channel does require us to call vc4_hvs_stop_channel from
vc4_crtc_atomic_disable so that the channel actually gets stopped.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Please register or sign in to comment