This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 9395669ac0 arm64: fix fvp smp faild to boot
9395669ac0 is described below

commit 9395669ac0f5e05f9e9fa11591b57e67bf564811
Author: hujun5 <[email protected]>
AuthorDate: Wed Oct 23 14:42:21 2024 +0800

    arm64: fix fvp smp faild to boot
    
    reason:
    we should give a busy wait addr
    
    This commit fixes the regression from 
https://github.com/apache/nuttx/pull/13640
    
    Signed-off-by: hujun5 <[email protected]>
---
 arch/arm64/src/common/arm64_cpustart.c                    | 2 +-
 boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig | 2 ++
 boards/arm64/fvp-v8r/fvp-armv8r/scripts/dramboot.ld       | 6 ++++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/src/common/arm64_cpustart.c 
b/arch/arm64/src/common/arm64_cpustart.c
index 5aeb600944..ef8e7a90bb 100644
--- a/arch/arm64/src/common/arm64_cpustart.c
+++ b/arch/arm64/src/common/arm64_cpustart.c
@@ -210,7 +210,7 @@ int up_cpu_start(int cpu)
 #ifdef CONFIG_ARM64_SMP_BUSY_WAIT
   uint32_t *address = (uint32_t *)CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR;
   *address = 1;
-  up_flush_dcache((uintptr_t)address, sizeof(address));
+  up_flush_dcache((uintptr_t)address, (uintptr_t)address + sizeof(address));
 #endif
 
   arm64_start_cpu(cpu);
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig 
b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
index 2aa238cb90..dd53a940a3 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
@@ -14,6 +14,8 @@ CONFIG_ARCH_CHIP_FVP_ARMV8R=y
 CONFIG_ARCH_CHIP_FVP_R82=y
 CONFIG_ARCH_EARLY_PRINT=y
 CONFIG_ARCH_INTERRUPTSTACK=4096
+CONFIG_ARM64_SMP_BUSY_WAIT=y
+CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR=0x60000
 CONFIG_ARM64_STRING_FUNCTION=y
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_ASSERTIONS=y
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/scripts/dramboot.ld 
b/boards/arm64/fvp-v8r/fvp-armv8r/scripts/dramboot.ld
index 5153f3fb55..f65db05a23 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/scripts/dramboot.ld
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/scripts/dramboot.ld
@@ -18,6 +18,8 @@
  *
  ****************************************************************************/
 
+#include <nuttx/config.h>
+
 OUTPUT_ARCH(aarch64)
 
 ENTRY(__start)
@@ -93,6 +95,10 @@ SECTIONS
   } :text
   _edata = .; /* End+1 of .data */
 
+#if defined(CONFIG_SMP) && defined(CONFIG_ARM64_SMP_BUSY_WAIT)
+  . = CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR + 4;
+#endif
+
   .bss : {                     /* BSS */
        . = ALIGN(8);
        _sbss = .;

Reply via email to