From patchwork Tue Aug 8 12:39:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengyu Qu X-Patchwork-Id: 1818601 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=fiydfud1; 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 4RKtPZ4wQZz1yYl for ; Tue, 8 Aug 2023 22:52:18 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 16BD586688; Tue, 8 Aug 2023 14:51:12 +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="fiydfud1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4221685BBE; Tue, 8 Aug 2023 14:40:27 +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-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01olkn20823.outbound.protection.outlook.com [IPv6:2a01:111:f403:700c::823]) (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 6CD8D861DA for ; Tue, 8 Aug 2023 14:40:24 +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=BTxKUeOBC93WpMb/rTgdnCXKlQA8Onz6R+JU+0YkBeAA7SjPOqbhKgn+cVTwwXre54gwhWSXm6yFPTouTGZAOmPj6iz3U8WQySYZLAqleQ0WxdVg2UGZQ7e7rO3M3zKgpL97DwrSzFANmyZueWUn95H9nZEvvnAGWyzUaRZG9xdXVOpgy/sCDr2JPFkLquPSncU3zGlZTjtz40ruqJMzGD3m6kzG0VxfiBvb6VqdT1LQ8UYTe8Dwj+03J+6MQTGUTvvY0G9Rhpev8OxmTXou6EDllQXSIFblLpczhGxPwbwg/7LP1nBjq5nSviTwvRx1xvzN6aDRVFrHk7ufUgVpeA== 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=2aNDwJChXZ38HjKxMpi01MaA3CrYGwvviXD2D+kPJj8=; b=f6MuL5/AqXHeAW8W7o/2nUVH9nyVdaSjYiQlczAgSsNLDmC/kwQmrG0yHSPensSnDUkxR2Wj2n61Bn5ryraLaj9/B+vIXLRw293GAxKqa6+hnPI8gRDipE9W9nsVwoO/zihwM0kHaeMO+ylBNMIwIxuK/pjfIMmd4guFu/ucBw65a28KmZQvkiPH4esVBaC70RE1BfAQT/MhCB7Es6sMWW2focYeIF45+sGgiJscOL8nAgj90HhE0bgpmdD4xnLGVmN+D6h9uhwJvSZi3zQE5UGWe0CQda08s+aS6XtUSMYZlCZv/6c7YD7TSJZXuPln24q+jOtRHvl9kxRtLkBvxQ== 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=2aNDwJChXZ38HjKxMpi01MaA3CrYGwvviXD2D+kPJj8=; b=fiydfud10kVo5sMVHsf/BktfUW8obaYOapJRBiXzXiuGBQt503C8GAR3UoORz39E0DLve19VfxXj+qZf6cQzgYi12BLyIS8RXbEISbNWhifNoiaMQtnhL8W87FaOKOc6dk6cFtKxrlg2zxsON8coy0Onlq+MVsO6bdRGqhOCjG7x8hUiqtmsEVDjjX774RgItuE3fHJmThiXQIiHtWjcv6CtiL+lqZ5aV9U6nWCyXgph9tJvCF3uNz8zL/kXYcY7uFgUMx9J4oLCG9/ogAirhSUC9C0m3KFZRWwFGw2relIV6HczQawdb05Bs7XdZ87UHHv2PEZfPq0/XVueqoKhhw== Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) by TYCP286MB1753.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:186::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.27; Tue, 8 Aug 2023 12:40:21 +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; Tue, 8 Aug 2023 12:40:21 +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 v3 2/3] riscv: Add SPL_ZERO_MEM_BEFORE_USE implementation Date: Tue, 8 Aug 2023 20:39:56 +0800 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230808123957.3727-1-wiagn233@outlook.com> References: <20230808123957.3727-1-wiagn233@outlook.com> X-TMN: [APy8i6oHi9JjhXxjye2bIA7Y/Uhs6Wq4] X-ClientProxiedBy: SGBP274CA0007.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b0::19) To TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) X-Microsoft-Original-Message-ID: <20230808123957.3727-3-wiagn233@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY3P286MB2611:EE_|TYCP286MB1753:EE_ X-MS-Office365-Filtering-Correlation-Id: ed4ab056-ce30-4117-afe8-08db980ca0dd X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmoMTHls4qxpPCYYkh36TB/2CP1s69btRYC0ccjd62zPQ2NL1B//OqtQfFiWprl81xpzUha25hEITfchx/QHlY6wS5QiJVr3ktfNM2I7BDCv48lQYMlukDxCy56MABiDiuLtdWmhN+xcMfaUF3PyKxdSP2mCJovK5avj+UaqpX1cqsMWFb9e0vXxgedh5vrJYEMJhc1j5i9wKQbrEJFx4OmADYNlcDr3lRbDvClqg5O7A5XzCzTj+dOV4GPTomRD5ZHoPhf7WjqdkiJXR1+JBSztzmUP3wHs+r/qAHSHLCOT7zYoMPyvqRjey4tKPlisuVLJjlPVWJoHbfykMYqZGLhClohdbT4u9F94U0v8aU7paPomAEWevjTgzk7YIjcduocZQ3VTTFUr6wfg/w4E4PBSnfudChT/NuG2jTKpLasuStZreFO8+MzhSdZB//uLkfHDaKxli4lcn4BtZ2U73YMZjZLIyZjcL3rpl8ia6j1V+Ih7QYR15kbxLIyaXTThCkvZEwps3inGdBWk1jzNL3P4RZzhLOGFzBjEy1LEwCuBL4wUeDQAjHEzzJaeXGg4alJacbH6TibaKp7Dg0rIBwuuuiWakPSmDo9JqMqROan4JWeFtPMgG99yKHkbro2NvGm1+RSzh6D/8hwluKMph7MaFiJ2DmhMYVGGDghA2AYdeZ7FNzbXEeYC+ZalT0r3cFiCxEAv3fFBRRA4cw12Yq24XwbAfZ3rbTBeB7xATupQnBZM3M3ITCZB6jly8VA922Y= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bJqhkeffKTD62pCULlvP1Emyw/U0mciLtuZ5CjvFgj+j7NAkNVzaT6xC1kyxgAuGdi6HZhBnCQpsRpehirBPV11giOeja4eBRnhc3Bg8VktuGxqe/IviXma0bXVvnKioiUoIqFDrOWsSw/Xbp+r3FOF8lcJOzkXr9PQXgy6fY3BvzCw4pxZwLni0j5Di6OGbL8wR6DzVmi91C46OvDq/BXocSAWZtOUsMXDvjsoh6FMNXbryFQMi1VVM6sx4XL9YibkBBJCzWGOtOt8e8Y6RdDk7YlcSM8H7yd5zzComa8Tk8Iup408a4lXQqkGdcR680yL/ZyJn3MBOVL8IT9WLf9MmJthS0Y6ha1/+k9lKVcxmzkkCU8QXMQws06KKDmwpi8td9AFfyj6M6DV8Bj8f0yElSBIw98dBPpShZAi2kdqO3M4b0DyDQ1yrSydHHi9aHasrS7LdlhkZ0S5p3jcNL99L2RZEcX6HMrxcQFrO/2c0IvT26rg/gXy1Eysswh0yENU9WaDgK0FmNETQwU609wFHEK+sg53+Ltb7gx0XqJWta0EcB+872ic6C8qKv434J0rjgjsFGuN0S8J7TnWmGwKU8NlfGEnkVHChJUBE77GiYojPGT3Py1KOzY7qCtcn X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: g7ngAgHf49SzK9XOEdMENyKNsQf4r6lz9WTxDcOwgI6846HuUUALhLMHi6bWbXayDHwj+CrL96LpiMsKfOQWyarwjd3PNkffGJHbk74Bvi3yfFIPj1DVQO2kBk2XCTf3oW0M6CYRDPHZ3EDE9uQ5BZ8Nb0gBNwzIKy3kuMKVC7qnQO3+LXEKW0PutI9XNn+gQ/uwTbymxTK24XaawTco/fW9PFmmNgDke2zqF2vahLlHuep6Gx6cs59eD6KX4RDVuWTx3vpjfuLdcu8b8L9jEA4DaLWxC/THGDA5FWZCcNJQfA6IjvOLgUcJ/sfqOAjThFDEaWGd5xo3YNvhW3xljybkBGoLa3TiRBVlELpTYHw07/S93tjca+Z7SeyTeD2f/BEtOU0ZFa8tfOva/xfIPLBZx3sO/mBAagUEXMlXxR9cIktnJmsFkeGNWvekAYdDlWZsn77TUKViFawIXkIrDAXqKXVG0S4Am0B8S6SnkjE7lisbybL10mhakLpLXPgAlWdKmhG4DORfM5/KCxRHK4Y9U4XIVARWWzAQ65t1PguWmn3LkvSwyE3soPRl+tZzJ8do2ysw/GfMIKCHXNKgm8zzdZzEyXL7aDGOOfnbLLWq3CRpYM1DimbxjfXcEo71Jn5AqdKjJC9N/3aP019M5Vrts1AMUQ1MK0XQqSS40G3iOSzA77XBSC1wN2ApbthLbJwQSjQ/mEQtCH2u63b7T/9YxvTSi3y7ebmS+iH7rrX5JTa83reL7PuLdlh+N8xUD+lYVz5nFBgVyPfIt83K+GhKJbGzD2YzIkihceqO3VBwh9nTTnBaSHw6dSwk5IbpzyRENh2jIHBD+YzTR4T0Qae4+s1UY1Ibx2IKRKO+bOfXDb7OPkp5HkjAddQdTZhLfF3r0meAZt1BzPBudAjQHygCjIJ+Ib4mOHe2tGYPNLJ/9/K0KMoinevHbpgFqFWrOo8jlVsH59hDN64uL87PCmCDBkmdUSl+LmLKbcdHFd4taN+yVEwWE4AzN+HIcGJUlv1sQnc8PYn2IMloK3t+BvBYvQQW0u8wEq98zQ7dH5w6Zt3s3zcbUAHgx1l/A8GX8kwksBNQSo/vEyulerb5T8FBfLhT76cOq/ghbM1gNaasCSHTzF2dsqHiHKpfHAjMWa/xClGUu+PQcg9oqZpnM7rX2GjWqj/0c3Rtj5VoYDl1GvZcCvPb+u64241LdZoCtKO4Y6jjfIB6a3PRQM12PQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed4ab056-ce30-4117-afe8-08db980ca0dd X-MS-Exchange-CrossTenant-AuthSource: TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Aug 2023 12:40:21.2035 (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: TYCP286MB1753 X-Mailman-Approved-At: Tue, 08 Aug 2023 14:51:08 +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 SPL_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 --- Changes since v2: - Fix typo (ZERO_MEM_BEFORE_USE to SPL_ZERO_MEM_BEFORE_USE) --- 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..930309d8d2 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(SPL_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..51d9ec9a13 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(SPL_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))