Commit 0a2d681b authored by Jing Zhang's avatar Jing Zhang Committed by Luo Gengkun
Browse files

drivers/perf: Fix ali_drw_pmu driver interrupt status clearing

mainline inclusion
from mainline-v6.12-rc1
commit a3dd920977dccc453c550260c4b7605b280b79c3
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAYQRS
CVE: CVE-2024-47731

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a3dd920977dccc453c550260c4b7605b280b79c3



--------------------------------

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: cf7b6107 ("drivers/perf: add DDR Sub-System Driveway PMU driver for Yitian 710 SoC")
Signed-off-by: default avatarJing Zhang <renyu.zj@linux.alibaba.com>
Reviewed-by: default avatarShuai Xue <xueshuai@linux.alibaba.com>
Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/1724297611-20686-1-git-send-email-renyu.zj@linux.alibaba.com


Signed-off-by: default avatarWill Deacon <will@kernel.org>
Signed-off-by: default avatarLuo Gengkun <luogengkun@huaweicloud.com>
parent 2eada988
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -408,7 +408,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);
		}