Message ID | 1724297611-20686-1-git-send-email-renyu.zj@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drivers/perf: Fix ali_drw_pmu driver interrupt status clearing | expand |
Will, are you happy to pick this up? Mark. On Thu, Aug 22, 2024 at 11:33:31AM +0800, Jing Zhang wrote: > The alibaba_uncore_pmu driver forgot to clear all interrupt status > in the interrupt processing function. After the PMU counter overflow > interrupt occurred, an interrupt storm occurred, causing the system > to hang. > > Therefore, clear the correct interrupt status in the interrupt handling > function to fix it. > > Fixes: cf7b61073e45 ("drivers/perf: add DDR Sub-System Driveway PMU driver for Yitian 710 SoC") > Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com> > Reviewed-by: Shuai Xue <xueshuai@linux.alibaba.com> > Acked-by: Mark Rutland <mark.rutland@arm.com> > --- > drivers/perf/alibaba_uncore_drw_pmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/perf/alibaba_uncore_drw_pmu.c b/drivers/perf/alibaba_uncore_drw_pmu.c > index 38a2947..c6ff1bc 100644 > --- a/drivers/perf/alibaba_uncore_drw_pmu.c > +++ b/drivers/perf/alibaba_uncore_drw_pmu.c > @@ -400,7 +400,7 @@ static irqreturn_t ali_drw_pmu_isr(int irq_num, void *data) > } > > /* clear common counter intr status */ > - clr_status = FIELD_PREP(ALI_DRW_PMCOM_CNT_OV_INTR_MASK, 1); > + clr_status = FIELD_PREP(ALI_DRW_PMCOM_CNT_OV_INTR_MASK, status); > writel(clr_status, > drw_pmu->cfg_base + ALI_DRW_PMU_OV_INTR_CLR); > } > -- > 1.8.3.1 >
On Thu, 22 Aug 2024 11:33:31 +0800, Jing Zhang wrote: > The alibaba_uncore_pmu driver forgot to clear all interrupt status > in the interrupt processing function. After the PMU counter overflow > interrupt occurred, an interrupt storm occurred, causing the system > to hang. > > Therefore, clear the correct interrupt status in the interrupt handling > function to fix it. > > [...] Applied to will (for-next/perf), thanks! [1/1] drivers/perf: Fix ali_drw_pmu driver interrupt status clearing https://git.kernel.org/will/c/a3dd920977dc Cheers,
diff --git a/drivers/perf/alibaba_uncore_drw_pmu.c b/drivers/perf/alibaba_uncore_drw_pmu.c index 38a2947..c6ff1bc 100644 --- a/drivers/perf/alibaba_uncore_drw_pmu.c +++ b/drivers/perf/alibaba_uncore_drw_pmu.c @@ -400,7 +400,7 @@ static irqreturn_t ali_drw_pmu_isr(int irq_num, void *data) } /* clear common counter intr status */ - clr_status = FIELD_PREP(ALI_DRW_PMCOM_CNT_OV_INTR_MASK, 1); + clr_status = FIELD_PREP(ALI_DRW_PMCOM_CNT_OV_INTR_MASK, status); writel(clr_status, drw_pmu->cfg_base + ALI_DRW_PMU_OV_INTR_CLR); }