Browse Source

[libcpu/aarch64] 调整获取secondary_entry物理地址的错误处理

wangxiaoyao 3 years ago
parent
commit
442f10c6bc

+ 1 - 1
libcpu/aarch64/common/cpu_ops_common.h

@@ -13,7 +13,7 @@ static inline rt_uint64_t get_secondary_entry_pa(void)
     if (!secondary_entry_pa)
     {
         LOG_E("Failed to translate 'secondary_entry_pa' to physical address");
-        return -1;
+        return 0;
     }
     return secondary_entry_pa;
 }

+ 4 - 0
libcpu/aarch64/common/cpu_psci.c

@@ -42,6 +42,10 @@ static int cpu_psci_cpu_init(rt_uint32_t cpuid)
 static int cpu_psci_cpu_boot(rt_uint32_t cpuid)
 {
     rt_uint64_t secondary_entry_pa = get_secondary_entry_pa();
+
+    if (!secondary_entry_pa)
+        return -1;
+
     if (!psci_ops.cpu_on) {
         LOG_E("Uninitialized psci operation");
         return -1;

+ 3 - 0
libcpu/aarch64/common/cpu_spin_table.c

@@ -38,6 +38,9 @@ static int spin_table_cpu_init(rt_uint32_t cpuid)
 static int spin_table_cpu_boot(rt_uint32_t cpuid)
 {
     rt_uint64_t secondary_entry_pa = get_secondary_entry_pa();
+    if (!secondary_entry_pa)
+        return -1;
+
     // map release_addr to addressable place
     void *rel_va = rt_ioremap((void *)cpu_release_addr[cpuid], sizeof(cpu_release_addr[0]));