disp: msm: sde: delay frame trigger on esd failure
This change adds support for delaying kickoff in case of ESD error. This delay is required to handle a race condition between esd workqueue and display thread. When ESD workqueue detects the esd and while handling the failure notification if the new updates arrive on display thread, there is a possibility that ESD workqueue will keep on waiting on pp_done. This could happen if display thread keeps on incrementing the kickoff_cnt before workqueue can check the condition. With this change the kickoff is delayed, allowing the workqueue to get scheduled and avoiding the race condition. Change-Id: I8e6fff5ea5494ae801d1e60ae85b7ad19cc12961 Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
This commit is contained in:
@@ -189,6 +189,10 @@ struct sde_encoder_ops {
|
||||
* @valid_cpu_mask: actual voted cpu core mask
|
||||
* @mode_info: stores the current mode and should be used
|
||||
* only in commit phase
|
||||
* @delay_kickoff boolean to delay the kickoff, used in case
|
||||
* of esd attack to ensure esd workqueue detects
|
||||
* the previous frame transfer completion before
|
||||
* next update is triggered.
|
||||
*/
|
||||
struct sde_encoder_virt {
|
||||
struct drm_encoder base;
|
||||
@@ -256,6 +260,7 @@ struct sde_encoder_virt {
|
||||
struct dev_pm_qos_request pm_qos_cpu_req[NR_CPUS];
|
||||
struct cpumask valid_cpu_mask;
|
||||
struct msm_mode_info mode_info;
|
||||
bool delay_kickoff;
|
||||
};
|
||||
|
||||
#define to_sde_encoder_virt(x) container_of(x, struct sde_encoder_virt, base)
|
||||
|
Viittaa uudesa ongelmassa
Block a user