From patchwork Thu Nov 9 15:48:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mariam Elshakfy X-Patchwork-Id: 34162 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53139C4167D for ; Thu, 9 Nov 2023 15:48:46 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.124852.1699544923710471935 for ; Thu, 09 Nov 2023 07:48:44 -0800 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: mariam.elshakfy@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A926112FC; Thu, 9 Nov 2023 07:49:27 -0800 (PST) Received: from Ubuntu.cambridge.arm.com (PW04GXME.arm.com [10.1.29.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id AAB2C3F64C; Thu, 9 Nov 2023 07:48:42 -0800 (PST) From: mariam.elshakfy@arm.com To: meta-arm@lists.yoctoproject.org Cc: Mariam Elshakfy Subject: [PATCH] arm-bsp/corstone1000: Remove inappropriate kernel delay patch Date: Thu, 9 Nov 2023 15:48:27 +0000 Message-Id: <20231109154827.4103-1-mariam.elshakfy@arm.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 09 Nov 2023 15:48:46 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5221 From: Mariam Elshakfy When booting, the tee driver from kernel side invokes a yielding call to OP-TEE, which gets stuck because OP-TEE never sends Done response: OPTEE_FFA_YIELDING_CALL_RETURN_DONE This issue was previously resolved by introducing an inappropriate patch to the kernel with 1 ms delay in ffa_msg_send_direct_req. Further investigation proved that OP-TEE doesn't get enough processing time and is constantly interrupted by the kernel requests. To remove this patch, TF-A logging level is lowered to default (40 in debug builds and 20 in release builds), which eliminates the time consumed previously by TF-A VERBOSE logs (giving OP-TEE more processing time). Signed-off-by: Mariam Elshakfy --- .../trusted-firmware-a-corstone1000.inc | 11 +++++- ...dds-workaround-for-cs1k-specific-bug.patch | 37 ------------------- .../linux/linux-arm-platforms.inc | 1 - 3 files changed, 10 insertions(+), 39 deletions(-) delete mode 100644 meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0002-Adds-workaround-for-cs1k-specific-bug.patch diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc index ee071371..8673199d 100644 --- a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc +++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc @@ -24,6 +24,16 @@ TFA_SPMD_SPM_AT_SEL2 = "0" # BL2 loads BL32 (optee). So, optee needs to be built first: DEPENDS += "optee-os" +# Note: Regarding the build option: LOG_LEVEL. +# There seems to be an issue when setting it +# to 50 (LOG_LEVEL_VERBOSE), where the kernel +# tee driver sends yielding requests to OP-TEE +# at a faster pace than OP-TEE processes them, +# as the processing time is consumed by logging +# in TF-A. When this issue occurs, booting halts +# as soon as optee driver starts initialization. +# Therefore, it's not currently recommended to +# set LOG_LEVEL to 50 at all. EXTRA_OEMAKE:append = " \ ARCH=aarch64 \ TARGET_PLATFORM=${TFA_TARGET_PLATFORM} \ @@ -41,5 +51,4 @@ EXTRA_OEMAKE:append = " \ ERRATA_A35_855472=1 \ ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem \ BL32=${RECIPE_SYSROOT}/${nonarch_base_libdir}/firmware/tee-pager_v2.bin \ - LOG_LEVEL=50 \ " diff --git a/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0002-Adds-workaround-for-cs1k-specific-bug.patch b/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0002-Adds-workaround-for-cs1k-specific-bug.patch deleted file mode 100644 index 4fbeb23e..00000000 --- a/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/0002-Adds-workaround-for-cs1k-specific-bug.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 555ac46f6f5157741a6fd8f21f74beb1340ed941 Mon Sep 17 00:00:00 2001 -From: Emekcan -Date: Thu, 13 Oct 2022 20:53:42 +0100 -Subject: [PATCH] Adds workaround for cs1k specific bug - -Adds a temporary workaround to solve a possible -race-conditioning issue in the tee driver -for corstone1000. - -Upstream-Status: Inappropriate -Signed-off-by: Emekcan Aras -Signed-off-by: Rui Miguel Silva ---- - drivers/firmware/arm_ffa/driver.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c -index 2109cd178ff7..c15b3a83c720 100644 ---- a/drivers/firmware/arm_ffa/driver.c -+++ b/drivers/firmware/arm_ffa/driver.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - - #include "common.h" - -@@ -282,7 +283,7 @@ static int ffa_msg_send_direct_req(u16 src_id, u16 dst_id, bool mode_32bit, - { - u32 req_id, resp_id, src_dst_ids = PACK_TARGET_INFO(src_id, dst_id); - ffa_value_t ret; -- -+ msleep(1); - if (mode_32bit) { - req_id = FFA_MSG_SEND_DIRECT_REQ; - resp_id = FFA_MSG_SEND_DIRECT_RESP; diff --git a/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc b/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc index 045c8568..6c132c97 100644 --- a/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc +++ b/meta-arm-bsp/recipes-kernel/linux/linux-arm-platforms.inc @@ -30,7 +30,6 @@ LINUX_KERNEL_TYPE:corstone1000 = "standard" KERNEL_EXTRA_ARGS:corstone1000 += "CONFIG_INITRAMFS_COMPRESSION_NONE=y" SRC_URI:append:corstone1000 = " \ file://defconfig \ - file://0002-Adds-workaround-for-cs1k-specific-bug.patch \ " SRC_URI:append:corstone1000 = " ${@bb.utils.contains('MACHINE_FEATURES', \