From: 陈亮 Date: Thu, 26 Jun 2014 11:27:24 +0000 (-0700) Subject: fix BUG: sleeping function called from invalid context at kernel/mutex.c X-Git-Tag: firefly_0821_release~5031 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=533d7de8c0ee5d4fb4cff414af04174aff9474c7;p=firefly-linux-kernel-4.4.55.git fix BUG: sleeping function called from invalid context at kernel/mutex.c --- diff --git a/arch/arm/mach-rockchip/dvfs.c b/arch/arm/mach-rockchip/dvfs.c index d6c70be7a862..6b12e0338b3c 100644 --- a/arch/arm/mach-rockchip/dvfs.c +++ b/arch/arm/mach-rockchip/dvfs.c @@ -62,26 +62,28 @@ static int clk_pd_gpu_notifier_call(struct notifier_block *nb, { int ret; - mutex_lock(&switch_vdd_gpu_mutex); switch (event) { case RK_CLK_PD_PREPARE: + mutex_lock(&switch_vdd_gpu_mutex); pd_gpu_off = 0; if (early_suspend) { if (!regulator_is_enabled(vdd_gpu_regulator)) ret = regulator_enable(vdd_gpu_regulator); } + mutex_unlock(&switch_vdd_gpu_mutex); break; case RK_CLK_PD_UNPREPARE: + mutex_lock(&switch_vdd_gpu_mutex); pd_gpu_off = 1; if (early_suspend) { if (regulator_is_enabled(vdd_gpu_regulator)) ret = regulator_disable(vdd_gpu_regulator); } + mutex_unlock(&switch_vdd_gpu_mutex); break; default: break; } - mutex_unlock(&switch_vdd_gpu_mutex); return NOTIFY_OK; } @@ -136,7 +138,6 @@ static struct notifier_block early_suspend_notifier = { .notifier_call = early_suspend_notifier_call, }; - static void dvfs_volt_up_delay(struct vd_node *vd, int new_volt, int old_volt) { int u_time;