cpu_hotplug: fix dead lock between flush work and ipa [1/1]

PD#TV-7161

Problem:
dead lock between flush work and ipa

Solution:
fix dead lock between flush work and ipa

Verify:
TL1

Change-Id: I479869601c0816bbaeaa693a26bf606b6a168da0
Signed-off-by: Jianxin Pan <jianxin.pan@amlogic.com>
This commit is contained in:
Jianxin Pan
2019-06-26 05:08:49 -04:00
committed by Chris KIM
parent 8277e45c5b
commit e5ce82e7a1

View File

@@ -33,6 +33,7 @@
#include <linux/sched/rt.h>
#include <linux/notifier.h>
#include "linux/amlogic/cpu_hotplug.h"
#include <linux/delay.h>
#define MAX_CLUSTRS 2
struct cpu_hotplug_s {
@@ -102,7 +103,8 @@ void cpu_hotplug_set_max(unsigned int num, int clustr)
return;
}
mutex_lock(&hpg.mutex);
if (!mutex_trylock(&hpg.mutex))
return;
if (num > hpg.cpunum[clustr])
num = hpg.cpunum[clustr];
if (hpg.max_num[clustr] == num) {
@@ -157,7 +159,10 @@ static int __ref cpu_hotplug_thread(void *data)
while (1) {
if (kthread_should_stop())
break;
mutex_lock(&hpg.mutex);
if (!mutex_trylock(&hpg.mutex)) {
usleep_range(1000, 2000);
continue;
}
for (clustr = 0; clustr < hpg.clusters; clustr++) {
if (!hpg.flgs[clustr])
continue;