61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
From 07451c781b0890dd194b0a53606250bed8f6ecbf Mon Sep 17 00:00:00 2001
|
|
From: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Date: Fri, 30 Jul 2021 15:44:13 +0800
|
|
Subject: [PATCH 22/55] drivers/perf: hisi: Fix data source control
|
|
|
|
mainline inclusion
|
|
from mainline-v5.13-rc3
|
|
commit 814be609baae62aaa6c02fa6f3ad66cff32a6d15
|
|
category: bugfix
|
|
bugzilla: 175148
|
|
CVE: NA
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=814be609baae62aaa6c02fa6f3ad66cff32a6d15
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
'Data source' is a new function for HHA PMU and config / clear
|
|
interface was wrong by mistake. 'HHA_DATSRC_CTRL' register is
|
|
mainly used for data source configuration, if we enable bit0
|
|
as driver, it will go on count the event and we didn't check
|
|
it carefully. So fix the issue and do as the initial purpose.
|
|
|
|
Fixes: 932f6a99f9b0 ("drivers/perf: hisi: Add new functions for HHA PMU")
|
|
Reported-by: kernel test robot <lkp@intel.com>
|
|
Cc: Will Deacon <will@kernel.org>
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Link: https://lore.kernel.org/r/1622709291-37996-1-git-send-email-zhangshaokun@hisilicon.com
|
|
Signed-off-by: Will Deacon <will@kernel.org>
|
|
Reviewed-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
|
|
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
|
|
---
|
|
drivers/perf/hisilicon/hisi_uncore_hha_pmu.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c b/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
index 89996b4d939f..3b120fc55e01 100644
|
|
--- a/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
+++ b/drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
|
|
@@ -93,7 +93,7 @@ static void hisi_hha_pmu_config_ds(struct perf_event *event)
|
|
|
|
val = readl(hha_pmu->base + HHA_DATSRC_CTRL);
|
|
val |= HHA_DATSRC_SKT_EN;
|
|
- writel(ds_skt, hha_pmu->base + HHA_DATSRC_CTRL);
|
|
+ writel(val, hha_pmu->base + HHA_DATSRC_CTRL);
|
|
}
|
|
}
|
|
|
|
@@ -107,7 +107,7 @@ static void hisi_hha_pmu_clear_ds(struct perf_event *event)
|
|
|
|
val = readl(hha_pmu->base + HHA_DATSRC_CTRL);
|
|
val &= ~HHA_DATSRC_SKT_EN;
|
|
- writel(ds_skt, hha_pmu->base + HHA_DATSRC_CTRL);
|
|
+ writel(val, hha_pmu->base + HHA_DATSRC_CTRL);
|
|
}
|
|
}
|
|
|
|
--
|
|
2.27.0
|
|
|