diff options
Diffstat (limited to 'kernel/power/qos.c')
| -rw-r--r-- | kernel/power/qos.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/power/qos.c b/kernel/power/qos.c index 97b0df71303e..168ff442ebde 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -482,7 +482,16 @@ void pm_qos_update_request(struct pm_qos_request *req,  		return;  	} -	cancel_delayed_work_sync(&req->work); +	/* +	 * This function may be called very early during boot, for example, +	 * from of_clk_init(), where irq needs to stay disabled. +	 * cancel_delayed_work_sync() assumes that irq is enabled on +	 * invocation and re-enables it on return.  Avoid calling it until +	 * workqueue is initialized. +	 */ +	if (keventd_up()) +		cancel_delayed_work_sync(&req->work); +  	__pm_qos_update_request(req, new_value);  }  EXPORT_SYMBOL_GPL(pm_qos_update_request);  | 
