[PATCH] drivers/perf: hisi: Fix readl DDRC_VERSION stuck

From: Youwan Wang
Date: Thu Oct 10 2024 - 04:53:18 EST


The CPU of the device I am using is kunpeng 920,
which can start normally with version 5.4 kernel.
However, when installing version 6.6 kernel, the
kernel gets stuck when loading the "hisi_dddrc_pmu"
driver. I went to debug and found that it gets stuck
when "readl (ddrc_pmu ->base+DDRC_VERSION)". I suspect
that the hardware does not support it. My modification is:
for the "HISI0233" device, according to the implementation
of version 5.4 kernel, the identity is not obtained from
the register. For "identifier" sysfs, identifier: 0

Signed-off-by: Youwan Wang <youwan@xxxxxxxxxxxx>
---
drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c b/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
index b804e3738113..3cecad46b01f 100644
--- a/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
+++ b/drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
@@ -321,6 +321,9 @@ static int hisi_ddrc_pmu_init_data(struct platform_device *pdev,
return PTR_ERR(ddrc_pmu->base);
}

+ if (strstr(pdev->name, "HISI0233"))
+ return 0;
+
ddrc_pmu->identifier = readl(ddrc_pmu->base + DDRC_VERSION);
if (ddrc_pmu->identifier >= HISI_PMU_V2) {
if (device_property_read_u32(&pdev->dev, "hisilicon,sub-id",
--
2.25.1