Commit 619f3018 authored by Vineet Gupta's avatar Vineet Gupta

ARC: Allow SMP kernel to build/boot on UP-only infrastructure

In light of recent SNAFU with SMP build, allow simple platform to build
as SMP but run UP.

* Remove the dependence on simulation SMP extension to enable quick
  build/test iterations of SMP kernel.

* In absence of platform SMP registration, prevent the NULL smp feature
  name from borkign the system
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent 2ce7598c
...@@ -59,7 +59,15 @@ struct plat_smp_ops { ...@@ -59,7 +59,15 @@ struct plat_smp_ops {
/* TBD: stop exporting it for direct population by platform */ /* TBD: stop exporting it for direct population by platform */
extern struct plat_smp_ops plat_smp_ops; extern struct plat_smp_ops plat_smp_ops;
#endif /* CONFIG_SMP */ #else /* CONFIG_SMP */
static inline void smp_init_cpus(void) {}
static inline const char *arc_platform_smp_cpuinfo(void)
{
return "";
}
#endif /* !CONFIG_SMP */
/* /*
* ARC700 doesn't support atomic Read-Modify-Write ops. * ARC700 doesn't support atomic Read-Modify-Write ops.
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/unwind.h> #include <asm/unwind.h>
#include <asm/clk.h> #include <asm/clk.h>
#include <asm/mach_desc.h> #include <asm/mach_desc.h>
#include <asm/smp.h>
#define FIX_PTR(x) __asm__ __volatile__(";" : "+r"(x)) #define FIX_PTR(x) __asm__ __volatile__(";" : "+r"(x))
...@@ -306,10 +307,7 @@ void setup_processor(void) ...@@ -306,10 +307,7 @@ void setup_processor(void)
arc_chk_ccms(); arc_chk_ccms();
printk(arc_extn_mumbojumbo(cpu_id, str, sizeof(str))); printk(arc_extn_mumbojumbo(cpu_id, str, sizeof(str)));
#ifdef CONFIG_SMP
printk(arc_platform_smp_cpuinfo()); printk(arc_platform_smp_cpuinfo());
#endif
arc_chk_fpu(); arc_chk_fpu();
} }
...@@ -360,11 +358,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -360,11 +358,7 @@ void __init setup_arch(char **cmdline_p)
machine_desc->init_early(); machine_desc->init_early();
setup_processor(); setup_processor();
#ifdef CONFIG_SMP
smp_init_cpus(); smp_init_cpus();
#endif
setup_arch_memory(); setup_arch_memory();
/* copy flat DT out of .init and then unflatten it */ /* copy flat DT out of .init and then unflatten it */
...@@ -424,14 +418,9 @@ static int show_cpuinfo(struct seq_file *m, void *v) ...@@ -424,14 +418,9 @@ static int show_cpuinfo(struct seq_file *m, void *v)
(loops_per_jiffy / (5000 / HZ)) % 100); (loops_per_jiffy / (5000 / HZ)) % 100);
seq_printf(m, arc_mmu_mumbojumbo(cpu_id, str, PAGE_SIZE)); seq_printf(m, arc_mmu_mumbojumbo(cpu_id, str, PAGE_SIZE));
seq_printf(m, arc_cache_mumbojumbo(cpu_id, str, PAGE_SIZE)); seq_printf(m, arc_cache_mumbojumbo(cpu_id, str, PAGE_SIZE));
seq_printf(m, arc_extn_mumbojumbo(cpu_id, str, PAGE_SIZE)); seq_printf(m, arc_extn_mumbojumbo(cpu_id, str, PAGE_SIZE));
#ifdef CONFIG_SMP
seq_printf(m, arc_platform_smp_cpuinfo()); seq_printf(m, arc_platform_smp_cpuinfo());
#endif
free_page((unsigned long)str); free_page((unsigned long)str);
done: done:
......
...@@ -101,7 +101,7 @@ void __weak arc_platform_smp_wait_to_boot(int cpu) ...@@ -101,7 +101,7 @@ void __weak arc_platform_smp_wait_to_boot(int cpu)
const char *arc_platform_smp_cpuinfo(void) const char *arc_platform_smp_cpuinfo(void)
{ {
return plat_smp_ops.info; return plat_smp_ops.info ? : "";
} }
/* /*
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
menuconfig ARC_PLAT_FPGA_LEGACY menuconfig ARC_PLAT_FPGA_LEGACY
bool "\"Legacy\" ARC FPGA dev Boards" bool "\"Legacy\" ARC FPGA dev Boards"
select ISS_SMP_EXTN if SMP select ARC_HAS_COH_CACHES if SMP
help help
Support for ARC development boards, provided by Synopsys. Support for ARC development boards, provided by Synopsys.
These are based on FPGA or ISS. e.g. These are based on FPGA or ISS. e.g.
......
...@@ -71,7 +71,7 @@ MACHINE_START(ML509, "ml509") ...@@ -71,7 +71,7 @@ MACHINE_START(ML509, "ml509")
.dt_compat = ml509_compat, .dt_compat = ml509_compat,
.init_early = plat_fpga_early_init, .init_early = plat_fpga_early_init,
.init_machine = plat_fpga_populate_dev, .init_machine = plat_fpga_populate_dev,
#ifdef CONFIG_SMP #ifdef CONFIG_ISS_SMP_EXTN
.init_smp = iss_model_init_smp, .init_smp = iss_model_init_smp,
#endif #endif
MACHINE_END MACHINE_END
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment