From 63ca6bbad8d68ab93ee382e2012b396174d21fd6 Mon Sep 17 00:00:00 2001 From: Zelalem Date: Thu, 13 May 2021 15:10:03 -0500 Subject: [PATCH] refactor(juno): disable non-invasive debug of secure state Disable non-invasive debug of secure state for Juno in release builds. This makes sure that PMU counts only Non-secure events. Signed-off-by: Zelalem Aweke Change-Id: I0d1c3f96f3b4e48360a7211ae55851d65d291025 --- include/plat/arm/css/common/css_def.h | 4 +++- plat/arm/board/juno/juno_security.c | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/plat/arm/css/common/css_def.h b/include/plat/arm/css/common/css_def.h index d59935266..dde174c37 100644 --- a/include/plat/arm/css/common/css_def.h +++ b/include/plat/arm/css/common/css_def.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -137,6 +137,8 @@ #define SSC_DBGCFG_SET 0x14 #define SSC_DBGCFG_CLR 0x18 +#define SPNIDEN_INT_CLR_SHIFT 4 +#define SPNIDEN_SEL_SET_SHIFT 5 #define SPIDEN_INT_CLR_SHIFT 6 #define SPIDEN_SEL_SET_SHIFT 7 diff --git a/plat/arm/board/juno/juno_security.c b/plat/arm/board/juno/juno_security.c index 1e64c029d..654a7f165 100644 --- a/plat/arm/board/juno/juno_security.c +++ b/plat/arm/board/juno/juno_security.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2021, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -115,6 +115,14 @@ static void init_debug_cfg(void) /* Drive SPIDEN LOW to disable invasive debug of secure state. */ mmio_write_32(SSC_REG_BASE + SSC_DBGCFG_CLR, 1U << SPIDEN_INT_CLR_SHIFT); + + /* Set internal drive selection for SPNIDEN. */ + mmio_write_32(SSC_REG_BASE + SSC_DBGCFG_SET, + 1U << SPNIDEN_SEL_SET_SHIFT); + + /* Drive SPNIDEN LOW to disable non-invasive debug of secure state. */ + mmio_write_32(SSC_REG_BASE + SSC_DBGCFG_CLR, + 1U << SPNIDEN_INT_CLR_SHIFT); #endif } -- GitLab