diff options
| author | Puja Gupta <pujag@codeaurora.org> | 2015-08-04 16:51:59 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-04-12 21:29:38 -0700 |
| commit | 401ad34cf46330e896ca57e07f2b7db583303d7a (patch) | |
| tree | 9a3a011495aa25611ebd973652c26e33e490f098 /drivers/soc | |
| parent | 495996d2f1c53d7408be502a7f4c02e4b04b33e5 (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.c | 12 |
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; } |
