From 82b7038405ba4a5b0810bcf3e967ed701e334114 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 27 Feb 2023 09:28:20 +0100 Subject: [PATCH] revert(zynqmp): remove EM SMC handler EM support was out of SMC SIP range that's why has been moved to SIP range 0x3000 by commit acbae3998bd8 ("fix(zynqmp): move EM SMC range to SIP range"). But after another investigation was found that this interface has no user in any our SW and likely never adopted by anybody else. That's why simply remove it. If there is any user it can be added back but as TF-A size is challenging removing unused code is very welcome. Origin code was added by commit 504925f99da0 ("xilinx: zynqmp: Add support for Error Management"). Change-Id: I2d9222d7dde507400893e06f7f12e1713ce6bc9a Signed-off-by: Michal Simek --- plat/xilinx/zynqmp/pm_service/pm_api_sys.c | 31 ------------ plat/xilinx/zynqmp/pm_service/pm_api_sys.h | 4 +- plat/xilinx/zynqmp/pm_service/pm_defs.h | 11 ----- plat/xilinx/zynqmp/pm_service/pm_svc_main.c | 54 +-------------------- plat/xilinx/zynqmp/pm_service/pm_svc_main.h | 5 +- plat/xilinx/zynqmp/sip_svc_setup.c | 8 --- 6 files changed, 3 insertions(+), 110 deletions(-) diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_sys.c b/plat/xilinx/zynqmp/pm_service/pm_api_sys.c index 6965f4be7..99594f756 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_sys.c +++ b/plat/xilinx/zynqmp/pm_service/pm_api_sys.c @@ -253,10 +253,6 @@ uint32_t pm_get_shutdown_scope(void) return pm_shutdown_scope; } -#define EM_PACK_PAYLOAD1(pl, arg0) { \ - pl[0] = (uint16_t)(0xE) << 16 | (uint16_t)arg0; \ -} - /** * pm_self_suspend() - PM call for processor to suspend itself * @nid Node id of the processor or subsystem @@ -1810,30 +1806,3 @@ enum pm_ret_status pm_efuse_access(uint32_t address_high, return pm_ipi_send_sync(primary_proc, payload, value, 1); } - -enum pm_ret_status em_set_action(uint32_t *value) -{ - uint32_t payload[PAYLOAD_ARG_CNT]; - - /* Send request to the PMU */ - EM_PACK_PAYLOAD1(payload, EM_SET_ACTION); - return pm_ipi_send_sync(primary_proc, payload, value, 1); -} - -enum pm_ret_status em_remove_action(uint32_t *value) -{ - uint32_t payload[PAYLOAD_ARG_CNT]; - - /* Send request to the PMU */ - EM_PACK_PAYLOAD1(payload, EM_REMOVE_ACTION); - return pm_ipi_send_sync(primary_proc, payload, value, 1); -} - -enum pm_ret_status em_send_errors(uint32_t *value) -{ - uint32_t payload[PAYLOAD_ARG_CNT]; - - /* Send request to the PMU */ - EM_PACK_PAYLOAD1(payload, EM_SEND_ERRORS); - return pm_ipi_send_sync(primary_proc, payload, value, 1); -} diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_sys.h b/plat/xilinx/zynqmp/pm_service/pm_api_sys.h index 9ba9475d4..c4fe038df 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_api_sys.h +++ b/plat/xilinx/zynqmp/pm_service/pm_api_sys.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2023, Advanced Micro Devices Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -187,9 +188,6 @@ enum pm_ret_status pm_pll_set_mode(enum pm_node_id nid, enum pm_pll_mode mode); enum pm_ret_status pm_pll_get_mode(enum pm_node_id nid, enum pm_pll_mode *mode); enum pm_ret_status pm_efuse_access(uint32_t address_high, uint32_t address_low, uint32_t *value); -enum pm_ret_status em_set_action(uint32_t *value); -enum pm_ret_status em_remove_action(uint32_t *value); -enum pm_ret_status em_send_errors(uint32_t *value); enum pm_ret_status pm_feature_check(uint32_t api_id, uint32_t *version, uint32_t *bit_mask, uint8_t len); enum pm_ret_status check_api_dependency(uint8_t id); diff --git a/plat/xilinx/zynqmp/pm_service/pm_defs.h b/plat/xilinx/zynqmp/pm_service/pm_defs.h index f0a8d0389..008cfdc90 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_defs.h +++ b/plat/xilinx/zynqmp/pm_service/pm_defs.h @@ -53,8 +53,6 @@ #define PM_PROC_STATE_SLEEP 2U #define PM_PROC_STATE_SUSPENDING 3U -#define EM_FUNID_NUM_MASK 0xF0000U - #define PM_GET_CALLBACK_DATA 0xa01 #define PM_SET_SUSPEND_MODE 0xa02 #define PM_GET_TRUSTZONE_VERSION 0xa03 @@ -355,13 +353,4 @@ enum pm_clock_div_id { PM_CLOCK_DIV1_ID, }; -/** - * EM API IDs - */ -enum em_api_id { - EM_SET_ACTION = 0x3001, - EM_REMOVE_ACTION, - EM_SEND_ERRORS, -}; - #endif /* PM_DEFS_H */ diff --git a/plat/xilinx/zynqmp/pm_service/pm_svc_main.c b/plat/xilinx/zynqmp/pm_service/pm_svc_main.c index a3f027891..c907773b4 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_svc_main.c +++ b/plat/xilinx/zynqmp/pm_service/pm_svc_main.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2023, Advanced Micro Devices Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -568,56 +569,3 @@ uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, (uint64_t)result[1] | ((uint64_t)result[2] << 32U)); } } - -/** - * em_smc_handler() - SMC handler for EM-API calls coming from EL1/EL2. - * @smc_fid - Function Identifier - * @x1 - x4 - Arguments - * @cookie - Unused - * @handler - Pointer to caller's context structure - * - * @return - Unused - * - * Determines that smc_fid is valid and supported EM SMC Function ID from the - * list of em_api_ids, otherwise completes the request with - * the unknown SMC Function ID - * - * The SMC calls for EM service are forwarded from SIP Service SMC handler - * function with rt_svc_handle signature - */ -uint64_t em_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, - uint64_t x4, const void *cookie, void *handle, uint64_t flags) -{ - enum pm_ret_status ret; - - switch (smc_fid & FUNCID_NUM_MASK) { - /* EM API Functions */ - case EM_SET_ACTION: - { - uint32_t value; - - ret = em_set_action(&value); - SMC_RET1(handle, (uint64_t)ret | ((uint64_t)value) << 32U); - } - - case EM_REMOVE_ACTION: - { - uint32_t value; - - ret = em_remove_action(&value); - SMC_RET1(handle, (uint64_t)ret | ((uint64_t)value) << 32U); - } - - case EM_SEND_ERRORS: - { - uint32_t value; - - ret = em_send_errors(&value); - SMC_RET1(handle, (uint64_t)ret | ((uint64_t)value) << 32U); - } - - default: - WARN("Unimplemented EM Service Call: 0x%x\n", smc_fid); - SMC_RET1(handle, SMC_UNK); - } -} diff --git a/plat/xilinx/zynqmp/pm_service/pm_svc_main.h b/plat/xilinx/zynqmp/pm_service/pm_svc_main.h index c1781f3e0..3c3082faf 100644 --- a/plat/xilinx/zynqmp/pm_service/pm_svc_main.h +++ b/plat/xilinx/zynqmp/pm_service/pm_svc_main.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2023, Advanced Micro Devices Inc. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -13,8 +14,4 @@ int32_t pm_setup(void); uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, const void *cookie, void *handle, uint64_t flags); - -uint64_t em_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, - uint64_t x4, const void *cookie, void *handle, - uint64_t flags); #endif /* PM_SVC_MAIN_H */ diff --git a/plat/xilinx/zynqmp/sip_svc_setup.c b/plat/xilinx/zynqmp/sip_svc_setup.c index c928e43bd..c55784e3f 100644 --- a/plat/xilinx/zynqmp/sip_svc_setup.c +++ b/plat/xilinx/zynqmp/sip_svc_setup.c @@ -30,8 +30,6 @@ #define XLNX_FID_MASK GENMASK(23, 12) #define PM_FID_VALUE 0u #define IPI_FID_VALUE 0x1000u -#define EM_FID_VALUE 0x3000u -#define is_em_fid(_fid) (((_fid) & XLNX_FID_MASK) == EM_FID_VALUE) #define is_pm_fid(_fid) (((_fid) & XLNX_FID_MASK) == PM_FID_VALUE) #define is_ipi_fid(_fid) (((_fid) & XLNX_FID_MASK) == IPI_FID_VALUE) @@ -74,12 +72,6 @@ static uintptr_t sip_svc_smc_handler(uint32_t smc_fid, SMC_RET1(handle, SMC_UNK); } - /* Let EM SMC handler deal with EM-related requests */ - if (is_em_fid(smc_fid)) { - return em_smc_handler(smc_fid, x1, x2, x3, x4, cookie, handle, - flags); - } - /* Let PM SMC handler deal with PM-related requests */ if (is_pm_fid(smc_fid)) { return pm_smc_handler(smc_fid, x1, x2, x3, x4, cookie, handle, -- 2.39.5