From patchwork Mon Aug 7 14:13:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengyu Qu X-Patchwork-Id: 1818021 X-Patchwork-Delegate: uboot@andestech.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=outlook.com header.i=@outlook.com header.a=rsa-sha256 header.s=selector1 header.b=OARsoNyS; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RKJTL4gjnz1yVt for ; Tue, 8 Aug 2023 00:23:34 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C7D31867DF; Mon, 7 Aug 2023 16:23:01 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=outlook.com header.i=@outlook.com header.b="OARsoNyS"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2CE2B80DF7; Mon, 7 Aug 2023 16:14:30 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from JPN01-TYC-obe.outbound.protection.outlook.com (mail-tycjpn01olkn2082d.outbound.protection.outlook.com [IPv6:2a01:111:f403:7010::82d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 38F1E833BF for ; Mon, 7 Aug 2023 16:14:27 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=wiagn233@outlook.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BX/wLVyu1IT+8RVCFZbRny5uNgqcQPgu48/qH+LQqUB0dbuqpI/BP9a2AOKskClRrzi11FHt4loOne0GMEqrOKRreDEXQa20O8elA3pIL0S14dAJsz6V0DbfF+nDlkXxbX3Mjadw4mGriy7gn+pxPXSYQwv32ZgSz8H0pDoj6DsxwRJt9p8pUjJVwiicokjrdAhPU/0Y3/i+t03hnOMMnLLCMvzFpeTy/sI1dQf/dImDUqOMjRj81/TQ+zAtgwGGLSTPB4FZRQE0SzuHAxd245prL347lxoOt7dRDaU142pp7KlU2lBE+2gaBGZOc+udLmTGw9DawOUHATfGWnoMJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ivB8gn+Db/Igm4Rpm7ntrKCDJG/aFCYRevewvDronXM=; b=ivSvbGNj5PMXJ/4RT6kVcgrZ+pfWdwkJmU0SFs59yeiZKIomKSWxkWASTYPwrZR5/bMSGuoG8wrABRzzQ3N0t/aAjwyuXKYvc2AUWI7kAqkFwTZRfuAlrY85E6HGm4Q6Xqr8BpaFodieZwdBLV2xDsbRExzj+FlKMdJ8FE4BGFYstSawXAyquqebufM/sEZM0LhQ2tidizlknMdX8KBtuobuDWzCrbqEVvpQFoRCb//LLBp6RNBcaouUUDPq7yToh0ZTsoqTEqf4R5sTEmcUhb6y2KCHA8nP2tnGer8itOF5XtxlmVRo2XN6afS2OEKjmryAQraE/fqWRwODFv5/Sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ivB8gn+Db/Igm4Rpm7ntrKCDJG/aFCYRevewvDronXM=; b=OARsoNyS1qncx0s/xa+9RtNmkRoryMMLIorTj9iIL7L2qt3AVBE6X/DJuchKcNrcds8Q0D05+lRO+pvboTgZvfNeHtSgKwjpkYywugnKRdQ64qVZfFdULKhx0yWOcwvAwY6MAdOqmikQX9GvurXpoMDW6Xwih3Dg9AMuQI9Oqy4OAtDhrQsBsEvEqFL6d6rFKX6BmGUBW3AcAhEqI7k74NG9LOk/oxYDWO1bS3YU0ELS75OR1cCNjqU+5vbkw5YWsqte/zY5c7WB7C8FDTqx/GUSGx8xow2V4BtMWDP/SwHe7ouXfNn/j8ROIB0oQByGOIHaqDz1n4Mz2hWR09uVyg== Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) by TY1P286MB3108.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:326::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.27; Mon, 7 Aug 2023 14:14:22 +0000 Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM ([fe80::e67d:f61a:b248:f597]) by TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM ([fe80::e67d:f61a:b248:f597%3]) with mapi id 15.20.6652.026; Mon, 7 Aug 2023 14:14:22 +0000 From: Shengyu Qu To: rick@andestech.com, ycliang@andestech.com, bmeng@tinylab.org, ganboing@gmail.com, yanhong.wang@starfivetech.com, n.shubin@yadro.com, u-boot@lists.denx.de Cc: Shengyu Qu Subject: [PATCH v2 2/3] riscv: Add ZERO_MEM_BEFORE_USE implementation Date: Mon, 7 Aug 2023 22:13:54 +0800 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230807141354.27841-2-wiagn233@outlook.com> References: <20230807141354.27841-2-wiagn233@outlook.com> X-TMN: [1dHw5Z5E3VuMzA67RlKkqLeKn650R+rz] X-ClientProxiedBy: TYCP286CA0100.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b4::7) To TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) X-Microsoft-Original-Message-ID: <20230807141354.27841-4-wiagn233@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY3P286MB2611:EE_|TY1P286MB3108:EE_ X-MS-Office365-Filtering-Correlation-Id: 766f49e8-0907-448c-7f0a-08db97509902 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmoX37RsZ1wniXeiQbrJPNAd457UWczNTMVkhMBAC8GmYqqSYPVXw0LDtRltn4+bnOi8srkmQNzqrL/fReK/CZP3T8Z1u2F94wdnH0zw8/jsKpZGAoR65PjVDt/72NKBSBWEK3E7qsUoDSaRsdOBXy3AARBOrUfKjq6U8V4Gn4zvjz4Ju0W5IA8WO485UB/8ig6laWBy3JE2xvjMsVcflSAmgWG7kY4D4kI6VhvmPVoQ4Lx/kYwYTYPvS4oYoIFPlz5GkNGgOWNqizaUvi8D79AOWhRhro1jlG6VWzagfR9hhoKxSa0rioAkW54g8rgaiER70/IN3ovJ2mikHsHRT2ztSff84Yg9zTRJThLEL0zyvpRnM9HNxIvTSBOXG+fvU4oD6+YXQECubu2zPhG02TguvPA7nC9AWt4tXfIBaMvZbVcVOHzVrYyPimeVo/EMC4Ov9dpqLWWTmDlfXxvikjM5LiKtjKptX5m0siVKn8ovTptHcQxvq6yrEZRcMKoGjZaA2kAp1N84HxkTbxFVwzGi0x5Cf6tHnOg5oaj60HrFZtbVKh2auq+IfE7gwd07YXmF3wFfprABrOflTltay+KfI0tDPjcwPiS9Jvsz+50bX3nVtZPwRMrETyprsCECfTmqBwOMOlmrBVP7VhwyOkNpvPswYURNRKEjjElqbp+q2zHISfyXIaWRA8kictcyCARyilKgtCjCQOp8jWm45sZhmzI9rMQWbIGTdAKoZ3t4Oj1nEhfc9GerGuGfACZ6eMM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: noRU8X9vS3z4UkwBVe/bvq06PX9um4qBqy/0ncOuQD85H6lJFA9V5dlTnT2DIV6w5PBBunaZR+/NHey2xRkTPIEZZZW5jdbXaxb8jcQJ3N/bW4uoUURF0Yy2SMNzwC2/j+R5BNEQh2peM0YdC7U4a3pmWoADGOx7m6dSDhh/DDzlEJK7iaa0imZyuwXl5xmNI4gMbC1ZZWMOI/w7cVOHV6yTbWJCWVYOoQ5Ts7ddXhB7C/wJNRlC4UUgrA228Cn8F92MVRU1RVXH8u7j6l8IMns6IAqC0LxySouaP2kfzzTWOhWbKAKxcpOgHqXFQ+rkuHVmIShKtJiVFska58Rsz3/VzJYzRmAt+JnSXKVa544dAI5dP2HmC4QU7Ch8AlVcxrBfh3DZX+7O77yUFjgmT0KO8yw2p+wvd+L6/w5Dq2EZcIwIMqZvBWScZhH8n7fqap7+8f0r1fV2Z05NgpORhIrhL84p0/6Z8IHVy4UXAxnfxbAqY+ZUL+cNr+Zj/6IIyaDp403+1bEW+5pGF0v4MdzRNO9GSk3mWX6vq4lXUHal/SPyOoQrUvba8bsSbA35nxVV+mHyXEF2XAnD/oPdA34ZJ/47eSqZRdKxVvfmasU10kUtMClH4zhsmfx5Mnyu X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KJETZURFU13Nx9UeVK3Rhw/Xt+CRt83Pub9Y6ne6gP3v4FYYEYz+st8ldQT9v+gfq7becNzxXGUaoaEQ9qIUNwkYMpMOtb35hgP9oiubSbH5V5BY78qXH5Jj9GmarVQU0dTJCQd4jkHd5nYJw30v3NZwbtzi7XFXseKfLbyFcQ+Cltm+XYw/+U3IwMmOrlfO7OSBLrVpwdBwxtg79xqla3h6Yrkfn/lv5q688YD5vrglUGaxuKwHOCld1fNIReBGemqhR5+arvzdVbY4zFMqrFQnbFKl93rPOa47/WhT8/Dg/DVGWvBLe053eozcPseLJx9/Vr6zP7PV9O4GFEluiVHvB+8N/EyLUcPun3TiLzQ3CrfUi41QOeVZT5PqIlwks+6p/daDrXTtd4qttv/Ns92JXWN6BCvlkq/4F+GhxBn5tBvWdL4fxunG8TsLkG0bP9OJ75Mg/ymUahBOMSvfb4Pgdt7fAFLsWcPHdZS/o4RXAvBUkfr/6g9yS1XW356R8GBtXaAu/cVbXK0DgdlrIQkoZcfeyJjh9xaw4JO0GV0fuF7y2PdM/XtCteZ3bi5PEHoQdzs3TXRuyd8UomqGbX7VX/z8Kmcv9EXwqjOnA/6jlQFSGNhC/JFnto7aGw87JUmzJQHPiIKEN/ZjsIDgfVWq2VknutB8ZfjdF3Q+4ONVlV/zbwSoEYUhBA1I93UsKX8xjmVsLDfaXuITqDn0zcMX7RI0bho891B93/KXrelQIUqnLKCqG9G9eik2hNXg5Jda5Z6On6LEnqW3M/IC4iBOKeppojIu4NGNFWmmi8dHLdCSCUXcBMpUN6wHzbY4kNWnq9OzVKDdx/LMOWCE21vExGvYMfLpmjZQIRNTshFSgZE79d9Ep4erFxyxtEkpJUD5f5nN55dCuL3gpZ7XpMBYozvjE2pIyVTApVv9mU+zmBZM3BPxYK44/tDRLikzIo5juP5qJYeYmQX4korr3RcNBRCz4Jb1gDxx6Ebw+TBUeNdZ85QaTMCbqQL2lY4eO37354aK+RnGrKYSn+1t1zromoFtKXXF2yvmD/sR3z7Eu5rd1IibW/kti3/9Ry//rc4QoI0ILmKKWJgZOu08TsLmafmrQiQ5GTYxg1pr9GGU4m0rMNZ02kgQE2ERndUXYuCVO73eS7hPzY7pFlkgQT00+lGN9+wy6Nu6XHHH9EkslYBb6buiXbarRA/pTN50kZIFEc6WYlB/tPBrAChSEg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 766f49e8-0907-448c-7f0a-08db97509902 X-MS-Exchange-CrossTenant-AuthSource: TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2023 14:14:22.6257 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3108 X-Mailman-Approved-At: Mon, 07 Aug 2023 16:22:59 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Add the actual support code for ZERO_MEM_BEFORE_USE and remove existing Starfive JH7110's L2 LIM clean code, since existing code has following issues: 1. Each hart (in the middle of a function call) overwriting its own stack and other harts' stacks. (data-race and data-corruption) 2. Lottery winner hart can be doing "board_init_f_init_reserve", while other harts are in the middle of zeroing L2 LIM. (data-race) Signed-off-by: Bo Gan Signed-off-by: Shengyu Qu --- arch/riscv/cpu/jh7110/spl.c | 25 ------------------------- arch/riscv/cpu/start.S | 12 ++++++++++++ common/init/board_init.c | 3 +++ 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/arch/riscv/cpu/jh7110/spl.c b/arch/riscv/cpu/jh7110/spl.c index 72adcefa0e..4047b10efe 100644 --- a/arch/riscv/cpu/jh7110/spl.c +++ b/arch/riscv/cpu/jh7110/spl.c @@ -13,7 +13,6 @@ #include #define CSR_U74_FEATURE_DISABLE 0x7c1 -#define L2_LIM_MEM_END 0x81FFFFFUL DECLARE_GLOBAL_DATA_PTR; @@ -59,9 +58,6 @@ int spl_soc_init(void) void harts_early_init(void) { - ulong *ptr; - u8 *tmp; - ulong len, remain; /* * Feature Disable CSR * @@ -70,25 +66,4 @@ void harts_early_init(void) */ if (CONFIG_IS_ENABLED(RISCV_MMODE)) csr_write(CSR_U74_FEATURE_DISABLE, 0); - - /* clear L2 LIM memory - * set __bss_end to 0x81FFFFF region to zero - * The L2 Cache Controller supports ECC. ECC is applied to SRAM. - * If it is not cleared, the ECC part is invalid, and an ECC error - * will be reported when reading data. - */ - ptr = (ulong *)&__bss_end; - len = L2_LIM_MEM_END - (ulong)&__bss_end; - remain = len % sizeof(ulong); - len /= sizeof(ulong); - - while (len--) - *ptr++ = 0; - - /* clear the remain bytes */ - if (remain) { - tmp = (u8 *)ptr; - while (remain--) - *tmp++ = 0; - } } diff --git a/arch/riscv/cpu/start.S b/arch/riscv/cpu/start.S index 59d58a5a57..30cf674370 100644 --- a/arch/riscv/cpu/start.S +++ b/arch/riscv/cpu/start.S @@ -111,6 +111,18 @@ call_board_init_f: * It's essential before any function call, otherwise, we get data-race. */ +/* clear stack if necessary */ +#if CONFIG_IS_ENABLED(ZERO_MEM_BEFORE_USE) +clear_stack: + li t1, 1 + slli t1, t1, CONFIG_STACK_SIZE_SHIFT + sub t1, sp, t1 +clear_stack_loop: + SREG zero, 0(t1) /* t1 is always 16 byte aligned */ + addi t1, t1, REGBYTES + blt t1, sp, clear_stack_loop +#endif + call_board_init_f_0: /* find top of reserve space */ #if CONFIG_IS_ENABLED(SMP) diff --git a/common/init/board_init.c b/common/init/board_init.c index 96ffb79a98..ab8c508ad8 100644 --- a/common/init/board_init.c +++ b/common/init/board_init.c @@ -162,6 +162,9 @@ void board_init_f_init_reserve(ulong base) #if CONFIG_VAL(SYS_MALLOC_F_LEN) /* go down one 'early malloc arena' */ gd->malloc_base = base; +#if CONFIG_IS_ENABLED(ZERO_MEM_BEFORE_USE) + memset((void *)base, '\0', CONFIG_VAL(SYS_MALLOC_F_LEN)); +#endif #endif if (CONFIG_IS_ENABLED(SYS_REPORT_STACK_F_USAGE))