drm: samsung: move recovery work out of decon kthread
There is potential deadlock issue if recovery work is executed in decon
kthread. It happens when there is new commit comes and recovery work is
scheduled to execute in decon kthread. At this moment, recovery work is
wating new commit hw done but new commit is not able to execute on decon
kthread. To avoid this deadlock, move recovery work to different thread
to free decon kthread to execute new commit.
HWC | decon kthread
-------------------------|-------------------------------
atomic commit#1 |
(queue to decon kthread) |
| handle atomic commit#1
|
atomic commit#2 | timeout, trigger recovery work
(queue to decon kthread) | (queue to decon kthread)
|
| execute recovery work
| (wait commit#2 hw done)
|
atomic commit#3 |
(wait recovery work |
release lock) |
Bug: 197217227
Test: stress test on recovery path
Signed-off-by:
Midas Chien <midaschieh@google.com>
Change-Id: I0806c1a85668eba83aae66cb3a88728247c298d2
Loading
Please sign in to comment