From patchwork Wed Aug 9 13:11:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shengyu Qu X-Patchwork-Id: 1819320 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=QFezoPdl; 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 4RLW280f7wz1yYC for ; Wed, 9 Aug 2023 23:22:39 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 3385A8681A; Wed, 9 Aug 2023 15:22:07 +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="QFezoPdl"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A5571867C3; Wed, 9 Aug 2023 15:12:05 +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-tycjpn01olkn2082a.outbound.protection.outlook.com [IPv6:2a01:111:f403:7010::82a]) (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 9AE218662F for ; Wed, 9 Aug 2023 15:12:03 +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=Mki51Eszt2WqA92MxrenHkmWsNhZ34Gjgwz/kWdoAvrhKzXoA0QLOpul2cliEYJbv3c4xWjqZZLNwWzemttY3k0jLb9w7ox1k4dZm7oBIUrqCB3t4vSb7QeXtvsYZGQCEtjULd3VEcF3M/Vz/mdQOMbvS7/u4xGwVDEHxRSIPlgUH6vpVftKyETuzIE3beQgpENJW4u4Nf8XJ40jk5lnHxGEyRaaGmt5hur6OWrLHUPQvTZnrHLKVzcZDAhZODQd3Fi3DV5JJbv0ZiyIMOVcXtiN1m3q4bmDujvXl+gIN4o+j9iEiEfeG6W3/k2Z4gElvNPQE4RRHKfpZWC0yOWzMQ== 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=VGa4YDdYk5F4sOJYtvVqnLJH07JXfD56p/nR7gQCv0A=; b=h6Map2zfu6X7TI6fmoGPsPVJ9lS9cplVDv5GxiD6r4kjWc2VtUfvMMW512EfKJty5/BIbr0vnTeGBbMr8uV6UZPfWRvj6dGP91c0L/zOU4TORQ1IrVCd6cnehjHmJrXv7e9P6bdw/zJ+GLDKa/uTY1tZIMDFdXGJ8doHqfcAUjZppJ/K//AhngpnQ+Y/xMMiAK5QkymnWQgxWr25L+KZs3HpeKOYT1Vs5GdXDbpz/WcBO7wHiseG4EVbkL9s87TJphQITcgzJGdwalAQN9cSzhMMunasWlvknas48hzPZwgV80qPEDcJnRQX4T0E/zYTt/Pauv8N10OrFSeGpKiPXQ== 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=VGa4YDdYk5F4sOJYtvVqnLJH07JXfD56p/nR7gQCv0A=; b=QFezoPdlr2+ypzYPN8aq9m6WuV8mV2inhtTvjvA8afODgywNKwPRqgHY3T307r3s4ROSf9fkm+oW9+dwBNAsNIZVe/tfNpe3fglWulnJMUfWPTRBfcjiB1CDmJNNb/h2ghSCaW3Ot8bXB0AusQAz4mqOkqBqOKpLtBRxo+bow5pib6Ta8NvaslfZ7ZMkdk2IYLte9E6ieZX6fFY1+ZmSUlgsI0I87SaUJ8lDKKUbvc9NcXmdsyHzxFgRwjTLR8aQelPpv9T24C2+5OGzIpAsNu6K9rUI+SvSZnhsGEaD8nC2pJo6+d02QtC4+BX4RE8IT40YbpedRc2exfUJ0D270g== Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) by TYCP286MB2227.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:13a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.28; Wed, 9 Aug 2023 13:11:59 +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; Wed, 9 Aug 2023 13:11:59 +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 v4 2/3] riscv: Add SPL_ZERO_MEM_BEFORE_USE implementation Date: Wed, 9 Aug 2023 21:11:32 +0800 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230809131133.28646-1-wiagn233@outlook.com> References: <20230809131133.28646-1-wiagn233@outlook.com> X-TMN: [WxQ4xxrZ1SIgZfMapdtHZEBiloTHQULh] X-ClientProxiedBy: SG2P153CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096::11) To TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:23e::10) X-Microsoft-Original-Message-ID: <20230809131133.28646-3-wiagn233@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY3P286MB2611:EE_|TYCP286MB2227:EE_ X-MS-Office365-Filtering-Correlation-Id: 29f1e69e-df81-4b8f-58a2-08db98da367f X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmpBL2wTkE/Fcdub1xpbsZUKlI1tKRBNl36OClYSjbpfRTacccLdoSYPnYQUZWXF52cdp7y36gFNsqCz9Hs1pcYejEvGlb2fboA2+d6+JmuhbG3i/ibgcDkXoJA/q6g3LIBNMuWp3NdtNZuRb4gD43q9IO77ZBH2BAuH3WmhLAvWJVcZO9v45HDYltURdmhv90qerzCoUiZ1hrh3sW1oNJfqarGJJWwrCdxW+v0WYyz6nxrmiHllDjbjmZNKMuiYopb9AN1Fcvcm6bCFYz0dEjhbrzBoGZBlZ8Xl2UlC/bZldQLIqbkeUfVtouwO6hQNy+GSa/IZJcHZsY+SZOj1vzIms+J00ekkQ5daOp/4hH3Pcq0Z4zcysKM8XJeuJrExLgF5xrE2pFVUATtRYVO/yMzz3VgLdOuJdeH+0DDy/lOma/eLndDyZ2rBmNp6uFQpWi8Tlgd1z0JhXR1YRHy26jg/fo//tEDsyZFOQsX0ss2gkm1SL1ETO57axWkbZpRpUPleQ27hLcsDS/4O/e1LY30GilD4HoSdZ1cN9DWOPfzWbdJIhbqfQwH5a0+hfMY3wDN5uiSnLxtj4+ztw7UMLgkmuMD9I589EPAFbyaLDOzmUZ6Ev7+KjWD23HExAmDrH2fdeMx4cSRW/m6pgpfWeqTMOtUifvLO9D6hIYW3OiklQAZlpbtDT8xoEMIU4wwOQtSEAUFZh7iofyJpnZBZtqY6c/sPnxNWTrZp/JRu4VElkfGhupXo8MJgT+KJjMozPIQ= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nTq4enAFu+04kAIuaOFEbAHhE7y22zIx8v/5tdkSqcIG8nfLVjEDEmRczS50HzBWNCVv4EwmPQqZS7EEVN2JM/gCN+/LtRAgtaYy8Bfa7bEpPcDg+CEwmzGIGtgc6N5/rG1fDsaCpDxUKYw4MbRxZAFck/xWqCU067nYhd4PQISeTrGpO/Oaqnfidoc+egl4T6Ig6rBZ+X7jDwmjNmJjnOLhqGQv4lKX0xJEENUOSABINt+WN5CRLKz2ongijSGtvfmJzDaG1PmQEua7MgifTFDQEeeQyJ2fzNgoZvXeVg4sbx9s5YTyXRw0jMcM9ne4q+i+QvGFPMZgFACBZT3WHZQgpa/vj8CzJT92b6NVbXtAsrY4iid3tRWaffp4J8HAoEbpjKdZiSiExFva/ZTHOvAM4mwKnsL2DadMOHtBRg0fBvpgbOUDvhnA21w3+FuxaslnCpcsKlNznfjj3U/Sfkat0MNFy4SzdTVWU8clFJ/G9p2fsYCsYCxO1X7R6w/WV2//nENQVKnbZ0zhiCetexI4G0sgn4bhsPk45wZtBLYcP7Hh5oWKOfhTr9h3JwRtggYFFyuU3qjfkGKA/SGqUyybqv32LclSFHZ8ZIoVnWo17Vi1HKxJ9WYEE7SYqzfU X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Mm9A22ld3j2HlqEb+2X0mciO6ACzVmelpW0EQNcKH7XmbibS9VN2Jr34Cpgn4YLkpbTqdoE6scS9PFwP2lxe7o/7W5TYPnvaovojsmnD+LJ4aScFY/6C6F2XCnIlgQZ936QXal2vSQP0STlVVINx2nzMxcMEr+mnXLQxjKYmkV1Kt7rByVrx/hg0G14j4o1XAbahFE5GTf+r//4xWEi9BmUC/Vq/72S5ba7NbPhLtVdToIegdGUIWQ7CkluWGIbtIbVzXxezw/P8bb2JrSc0qAmWtyEXgurvZE4O+oNXVr5vjKeUTfknI5vcrqgwLLnWphrEACPIiBRjb3yZZtHKk/vFU9fwppB2XRmm7KXZI9NYgHhzikok9hdUmlvhi93budtBgT/tlDLZMbYTolGmn/kjzxjvMhHiRxfq3min0PK1ykQc/8C3yNHynThDrlFUWcFHM5H7p1XOspAv2/kGrRnAsMfMkBW/RgzayAAApVx2RRwlo77Ap/yMHFBDHUBJqGPWbjxmw+33Liy6u7+EjDGpfbbAjfeBDh3OnCzHFaQB2wcRjdUfkcJyA5tWYn2iLaQmVHLkbyDbEVjVmBn4KZn2DXD+DjlLod6A5HTQcL9ecoWHvOnGpvnDHi+26fidUjUVx/BzbVkav6IWNf8JlSvXEcM9PxtLI4pKDO+VrljH6NIJalG8jgt/ZGqpr+HeniDPh3SaYBuvoGbKjmIOO/B2N40NFV+Bd4wrFSbJT44qNvzwHVGU3pDDGteT5ALRHxmFzWnRx8YeU/J+S8ft1maNw/F06PVN1ePu8MdxpqoHNsz0xRVm0Sqr88fGOrkOBz2WCw56ovGMjDEne1XyuzEpkwMjFoMvCxpHcgHyEev5taKgH1dZsKZc6DN7BysMdbW8ra/SplnlGckttYxNNbRuBlBJLVvHVfnKp7IGNKD4bc7kkIiep8d36Z7ysPwGMfD7H1JvbKFxVU2UHMWhDI1hI7vlXw5vPIzLFaPaaMR+8tnDKsnndjvZhPsLZ3Mtj+lkmqBUGvrGMvEQ6TJE+yCQ2fwC+HHdrM0HDvP/ekxhKsal+3z2QyGDlnmd87YxmhQj3AOj6K63EMlf8wVnarUmG6wht9c1bDaxA1E2/WzqQUgSOwMnkf9jhJZp8CTQlssNSiqM+rIbAF8DbuOSB5pX0mZ32ReP2pzc8uqDR6fnqaXlLmeboxECCQ9Cyo1QUOBGMBPd6dpdSVs408bGtA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29f1e69e-df81-4b8f-58a2-08db98da367f X-MS-Exchange-CrossTenant-AuthSource: TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2023 13:11:59.0610 (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: TYCP286MB2227 X-Mailman-Approved-At: Wed, 09 Aug 2023 15:22:05 +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 Reviewed-by: Leo Yu-Chi Liang --- Changes since v2: - Fix typo (ZERO_MEM_BEFORE_USE to SPL_ZERO_MEM_BEFORE_USE) Changes since v3: - Revert v3's fix since original implementation is actually right --- 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))