Loading drivers/soc/qcom/cache_m4m_erp64.c +10 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; \ Loading Loading @@ -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; } Loading Loading
drivers/soc/qcom/cache_m4m_erp64.c +10 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; \ Loading Loading @@ -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; } Loading