mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
feat(spmd): introduce platform handler for Group0 interrupt
This patch introduces a handler for FVP platform to triage Group0 secure interrupts. Currently, it is empty but serves as a placeholder for future Group0 interrupt sources. Moreover, this patch also provides a dummy implementation of the above mentioned platform hook for QEMU, corstone100, n1sdp and hikey960 ports. Change-Id: I01d3451408f47ac313b0af74046cce89f89b85bb Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
This commit is contained in:
parent
6671b3d822
commit
f0b64e507e
8 changed files with 81 additions and 3 deletions
18
plat/arm/board/corstone1000/common/corstone1000_bl31_setup.c
Normal file
18
plat/arm/board/corstone1000/common/corstone1000_bl31_setup.c
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(SPD_spmd)
|
||||
/*
|
||||
* A dummy implementation of the platform handler for Group0 secure interrupt.
|
||||
*/
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t intid)
|
||||
{
|
||||
(void)intid;
|
||||
return -1;
|
||||
}
|
||||
#endif /*defined(SPD_spmd)*/
|
|
@ -56,6 +56,7 @@ BL31_SOURCES += drivers/cfi/v2m/v2m_flash.c \
|
|||
plat/arm/board/corstone1000/common/corstone1000_security.c \
|
||||
plat/arm/board/corstone1000/common/corstone1000_plat.c \
|
||||
plat/arm/board/corstone1000/common/corstone1000_pm.c \
|
||||
plat/arm/board/corstone1000/common/corstone1000_bl31_setup.c \
|
||||
${CORSTONE1000_CPU_LIBS} \
|
||||
${CORSTONE1000_GIC_SOURCES}
|
||||
|
||||
|
|
17
plat/arm/board/fvp/fvp_spmd.c
Normal file
17
plat/arm/board/fvp/fvp_spmd.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t intid)
|
||||
{
|
||||
/*
|
||||
* As of now, there are no sources of Group0 secure interrupt enabled
|
||||
* for FVP.
|
||||
*/
|
||||
(void)intid;
|
||||
return -1;
|
||||
}
|
|
@ -510,3 +510,7 @@ ifeq (${PLATFORM_TEST_EA_FFH}, 1)
|
|||
endif
|
||||
BL31_SOURCES += plat/arm/board/fvp/aarch64/fvp_ea.c
|
||||
endif
|
||||
|
||||
ifeq (${SPD},spmd)
|
||||
BL31_SOURCES += plat/arm/board/fvp/fvp_spmd.c
|
||||
endif
|
||||
|
|
|
@ -159,3 +159,14 @@ void bl31_platform_setup(void)
|
|||
if ((plat_info.multichip_mode) && (plat_info.remote_ddr_size != 0))
|
||||
remote_dmc_ecc_setup(plat_info.remote_ddr_size);
|
||||
}
|
||||
|
||||
#if defined(SPD_spmd)
|
||||
/*
|
||||
* A dummy implementation of the platform handler for Group0 secure interrupt.
|
||||
*/
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t intid)
|
||||
{
|
||||
(void)intid;
|
||||
return -1;
|
||||
}
|
||||
#endif /*defined(SPD_spmd)*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2022, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2017-2023, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -245,6 +245,15 @@ static uint64_t hikey_debug_fiq_handler(uint32_t id,
|
|||
|
||||
return 0;
|
||||
}
|
||||
#elif defined(SPD_spmd) && (SPMD_SPM_AT_SEL2 == 1)
|
||||
/*
|
||||
* A dummy implementation of the platform handler for Group0 secure interrupt.
|
||||
*/
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t intid)
|
||||
{
|
||||
(void)intid;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void bl31_plat_runtime_setup(void)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
/*
|
||||
* Copyright (c) 2015-2022, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -162,3 +162,14 @@ int plat_spmc_shmem_reclaim(struct ffa_mtd *desc)
|
|||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(SPD_spmd) && (SPMD_SPM_AT_SEL2 == 1)
|
||||
/*
|
||||
* A dummy implementation of the platform handler for Group0 secure interrupt.
|
||||
*/
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t intid)
|
||||
{
|
||||
(void)intid;
|
||||
return -1;
|
||||
}
|
||||
#endif /*defined(SPD_spmd) && (SPMD_SPM_AT_SEL2 == 1)*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2019-2022, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2019-2023, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -93,6 +93,13 @@ spmd_spm_core_context_t *spmd_get_context(void);
|
|||
int spmd_pm_secondary_ep_register(uintptr_t entry_point);
|
||||
bool spmd_check_address_in_binary_image(uint64_t address);
|
||||
|
||||
/*
|
||||
* Platform hook in EL3 firmware to handle for Group0 secure interrupt.
|
||||
* Return values:
|
||||
* 0 = success
|
||||
* otherwise it returns a negative value
|
||||
*/
|
||||
int plat_spmd_handle_group0_interrupt(uint32_t id);
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
#endif /* SPMD_PRIVATE_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue