mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user