riscv: Probe cpus during boot
authorBin Meng <bmeng.cn@gmail.com>
Wed, 12 Dec 2018 14:12:34 +0000 (06:12 -0800)
committerAndes <uboot@andestech.com>
Tue, 18 Dec 2018 01:56:27 +0000 (09:56 +0800)
This calls cpu_probe_all() to probe all available cpus.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Anup Patel <anup@brainfault.org>
arch/riscv/cpu/cpu.c
arch/riscv/cpu/qemu/Kconfig

index d9f820c..8286a0c 100644 (file)
@@ -4,6 +4,8 @@
  */
 
 #include <common.h>
+#include <cpu.h>
+#include <log.h>
 #include <asm/csr.h>
 
 /*
@@ -53,3 +55,27 @@ int print_cpuinfo(void)
 
        return 0;
 }
+
+static int riscv_cpu_probe(void)
+{
+#ifdef CONFIG_CPU
+       int ret;
+
+       /* probe cpus so that RISC-V timer can be bound */
+       ret = cpu_probe_all();
+       if (ret)
+               return log_msg_ret("RISC-V cpus probe failed\n", ret);
+#endif
+
+       return 0;
+}
+
+int arch_cpu_init_dm(void)
+{
+       return riscv_cpu_probe();
+}
+
+int arch_early_init_r(void)
+{
+       return riscv_cpu_probe();
+}
index 2e953e1..f48751e 100644 (file)
@@ -4,6 +4,7 @@
 
 config QEMU_RISCV
        bool
+       select ARCH_EARLY_INIT_R
        imply CPU
        imply CPU_RISCV
        imply RISCV_TIMER