summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorPuja Gupta <pujag@codeaurora.org>2015-08-04 16:51:59 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-12 21:29:38 -0700
commit401ad34cf46330e896ca57e07f2b7db583303d7a (patch)
tree9a3a011495aa25611ebd973652c26e33e490f098 /drivers/soc
parent495996d2f1c53d7408be502a7f4c02e4b04b33e5 (diff)
soc: qcom: remove warning msg in msm_l2_erp_irq()
smp_call_function_many() used in msm_l2_erp_irq() gives a warning when called with interrupt disabled. Instead use smp_call_function_single_async(). Change-Id: I03cdc0cc07281460a33abe9b09ae0f06590029aa Signed-off-by: Puja Gupta <pujag@codeaurora.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/cache_m4m_erp64.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/soc/qcom/cache_m4m_erp64.c b/drivers/soc/qcom/cache_m4m_erp64.c
index 59b890279adb..f19ed9001a8f 100644
--- a/drivers/soc/qcom/cache_m4m_erp64.c
+++ b/drivers/soc/qcom/cache_m4m_erp64.c
@@ -23,6 +23,7 @@
#include <linux/workqueue.h>
#include <linux/of.h>
#include <linux/cpu_pm.h>
+#include <linux/smp.h>
#include <soc/qcom/kryo-l2-accessors.h>
@@ -155,6 +156,7 @@ struct msm_l1_err_stats {
};
static DEFINE_PER_CPU(struct msm_l1_err_stats, msm_l1_erp_stats);
+static DEFINE_PER_CPU(struct call_single_data, handler_csd);
#define erp_mrs(reg) ({ \
u64 __val; \
@@ -289,8 +291,14 @@ static void msm_l2_erp_local_handler(void *force)
static irqreturn_t msm_l2_erp_irq(int irq, void *dev_id)
{
- pr_alert("L2 cache error detected\n");
- on_each_cpu(msm_l2_erp_local_handler, NULL, 1);
+ int cpu;
+ struct call_single_data *csd;
+
+ for_each_online_cpu(cpu) {
+ csd = &per_cpu(handler_csd, cpu);
+ csd->func = msm_l2_erp_local_handler;
+ smp_call_function_single_async(cpu, csd);
+ }
return IRQ_HANDLED;
}