[PATCH] coresight: etm4x: avoid build failure with unrolled loops

From: Tao Zhang
Date: Sun Sep 26 2021 - 06:36:28 EST


clang-12 fails to build the etm4x driver with -fsanitize=array-bounds,
where it decides to unroll certain loops in a way that result in a
C variable getting put into an inline assembly.

Search this build failure and find this is a known issue and there
has been a mail thread discussing it.
https://patchwork.kernel.org/project/linux-arm-kernel/patch/20210429145752.3218324-1-arnd@xxxxxxxxxx/
According to the modification suggestions of this mail thread,
coresight infrastucture has already provided another API that
can replace the function that caused the error.

Used here "csdev_access_read32" to replace the original API
"etm4x_relaxed_read32".

This patch applies to coresight/next
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Signed-off-by: Tao Zhang <quic_taozha@xxxxxxxxxxx>
---
drivers/hwtracing/coresight/coresight-etm4x-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index f58afbab6e6d..0bca8e2be070 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -797,7 +797,7 @@ static void etm4_disable_hw(void *info)
/* read back the current counter values */
for (i = 0; i < drvdata->nr_cntr; i++) {
config->cntr_val[i] =
- etm4x_relaxed_read32(csa, TRCCNTVRn(i));
+ csdev_access_read32(csa, TRCCNTVRn(i));
}

coresight_disclaim_device_unlocked(csdev);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project