diff options
| author | Srinivas Rao L <lsrao@codeaurora.org> | 2016-01-12 15:40:25 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:17:12 -0700 |
| commit | cf52f9b4670530ff88e3cefe7f70d5deaf0c71bb (patch) | |
| tree | 4621fdadddbf2543f408278f1e1056cba4a76c99 /kernel/power/qos.c | |
| parent | 7df86692910b09519e37f84eea505fa461b6d7be (diff) | |
qos: Disable irq notifier when qos request is removed
When a qos request is added with IRQ affinity, irq notifier
for that irq is added and with out disabling the irq
notifier if the irq is free it is through a warning.
So disable irq notifier when the qos request is removed.
Change-Id: I50faa4ecbe1b632c0f0f203ca52faf18753c33d4
Signed-off-by: Srinivas Rao L <lsrao@codeaurora.org>
Diffstat (limited to 'kernel/power/qos.c')
| -rw-r--r-- | kernel/power/qos.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/power/qos.c b/kernel/power/qos.c index dd46e5db814d..8ecc7b3f7dd9 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -696,12 +696,22 @@ void pm_qos_remove_request(struct pm_qos_request *req) /* silent return to keep pcm code cleaner */ if (!pm_qos_request_active(req)) { - WARN(1, KERN_ERR "pm_qos_remove_request() called for unknown object\n"); + WARN(1, "pm_qos_remove_request() called for unknown object\n"); return; } cancel_delayed_work_sync(&req->work); +#ifdef CONFIG_SMP + if (req->type == PM_QOS_REQ_AFFINE_IRQ) { + int ret = 0; + /* Get the current affinity */ + ret = irq_set_affinity_notifier(req->irq, NULL); + if (ret) + WARN(1, "IRQ affinity notify set failed\n"); + } +#endif + trace_pm_qos_remove_request(req->pm_qos_class, PM_QOS_DEFAULT_VALUE); pm_qos_update_target(pm_qos_array[req->pm_qos_class]->constraints, req, PM_QOS_REMOVE_REQ, |
