Hi Tao,
On Sun, Sep 26, 2021 at 06:35:50PM +0800, Tao Zhang wrote:
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.3... 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@quicinc.com
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));
It seems like the patch you are referencing above was never applied... So the question is, how is it that only this instance is giving you trouble when there are many more instances of the same pattern in the file?
Thanks, Mathieu
} coresight_disclaim_device_unlocked(csdev); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project