On 9. 10. 25. 12:23, Yao Zi wrote: > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. > > > On Tue, Aug 19, 2025 at 10:31:42AM +0000, Uros Stajic wrote: >> From: Chao-ying Fu <[email protected]> >> >> Add initial platform support for the P8700-F, a high-performance >> multi-core RV64GC SoC with optional multi-cluster configuration and >> hardware multithreading. >> >> This patch introduces the initial platform code necessary to support >> the P8700 CPU in U-Boot. >> >> Signed-off-by: Chao-ying Fu <[email protected]> >> Signed-off-by: Uros Stajic <[email protected]> >> --- >> arch/riscv/Kconfig | 1 + >> arch/riscv/cpu/p8700/Kconfig | 14 ++ >> arch/riscv/cpu/p8700/Makefile | 9 ++ >> arch/riscv/cpu/p8700/cache.c | 93 +++++++++++ >> arch/riscv/cpu/p8700/cpu.c | 13 ++ >> arch/riscv/cpu/p8700/dram.c | 37 +++++ >> arch/riscv/cpu/p8700/p8700_platform_setup.S | 169 ++++++++++++++++++++ >> arch/riscv/include/asm/arch-p8700/p8700.h | 110 +++++++++++++ >> 8 files changed, 446 insertions(+) >> create mode 100644 arch/riscv/cpu/p8700/Kconfig >> create mode 100644 arch/riscv/cpu/p8700/Makefile >> create mode 100644 arch/riscv/cpu/p8700/cache.c >> create mode 100644 arch/riscv/cpu/p8700/cpu.c >> create mode 100644 arch/riscv/cpu/p8700/dram.c >> create mode 100644 arch/riscv/cpu/p8700/p8700_platform_setup.S >> create mode 100644 arch/riscv/include/asm/arch-p8700/p8700.h >> >> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig >> index 04eb0e6f23c..4eaf0e3db71 100644 >> --- a/arch/riscv/Kconfig >> +++ b/arch/riscv/Kconfig >> @@ -131,6 +131,7 @@ source "arch/riscv/cpu/jh7110/Kconfig" >> source "arch/riscv/cpu/k1/Kconfig" >> source "arch/riscv/cpu/k230/Kconfig" >> source "arch/riscv/cpu/th1520/Kconfig" >> +source "arch/riscv/cpu/p8700/Kconfig" >> >> # architecture-specific options below >> >> diff --git a/arch/riscv/cpu/p8700/Kconfig b/arch/riscv/cpu/p8700/Kconfig >> new file mode 100644 >> index 00000000000..7023575a6be >> --- /dev/null >> +++ b/arch/riscv/cpu/p8700/Kconfig >> @@ -0,0 +1,14 @@ >> +# SPDX-License-Identifier: GPL-2.0+ >> +# >> +# Copyright (C) 2021, Chao-ying Fu <[email protected]> >> + >> +config P8700_RISCV >> + bool >> + select ARCH_EARLY_INIT_R >> + imply CPU >> + imply CPU_RISCV >> + imply SIFIVE_CLINT if (RISCV_MMODE || SPL_RISCV_MMODE) > > SIFIVE_CLINT has been renamed as RISCV_ACLINT back to 2023, and in > PATCH 2 you change SIFIVE_CLINT to RISCV_ACLINT. I think you should > squash the change into PATCH 1. > >> + imply CMD_CPU >> + imply SPL_CPU_SUPPORT >> + imply SPL_OPENSBI >> + imply SPL_LOAD_FIT > > ... > >> diff --git a/arch/riscv/cpu/p8700/p8700_platform_setup.S >> b/arch/riscv/cpu/p8700/p8700_platform_setup.S >> new file mode 100644 >> index 00000000000..7c4475a03dd >> --- /dev/null >> +++ b/arch/riscv/cpu/p8700/p8700_platform_setup.S > > Could this file be converted to C language? Then it'll be easier to > maintain. I think nothing prevents this if you could put the > initialization off until harts_early_init(). > > Futhermore I don't see this file is included in any of your Makefile, > which is suspicious. > > ... > >> diff --git a/arch/riscv/include/asm/arch-p8700/p8700.h >> b/arch/riscv/include/asm/arch-p8700/p8700.h >> new file mode 100644 >> index 00000000000..5ca9b4b9497 >> --- /dev/null >> +++ b/arch/riscv/include/asm/arch-p8700/p8700.h >> @@ -0,0 +1,110 @@ >> +/* SPDX-License-Identifier: GPL-2.0 */ >> +/* >> + * Copyright (C) 2021, Chao-ying Fu <[email protected]> >> + */ >> + >> +#ifndef __P8700_H__ >> +#define __P8700_H__ >> + >> +#define CSR_MIPSCONFIG7 0x7d7 >> +#define CSR_PMACFG0 0x7e0 >> + >> +#define MHARTID_HART_SHIFT 0 >> +#define MHARTID_HART_MASK 0xf >> +#define MHARTID_CORE_SHIFT 4 >> +#define MHARTID_CORE_MASK 0xff >> +#define MHARTID_CLUSTER_SHIFT 16 >> +#define MHARTID_CLUSTER_MASK 0xf >> + >> +#define MARCHID_UARCH_SHIFT 0 >> +#define MARCHID_UARCH_MASK 0xff >> +#define MARCHID_CLASS_SHIFT 8 >> +#define MARCHID_CLASS_MASK 0xff > > If you convert p8700_platform_setup.S to a C file, these macros could be > simplified with GENMASK() and FIELD_GET/PUT(). > > Best regards, > Yao Zi
Hi Yao Zi, Thank you for the review and suggestions! The code from p8700_platform_setup.S has been moved into a C implementation in the newer revision and the initialization is now handled from harts_early_init(). Best regards, Uros

