Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -59,7 +59,15 @@ struct plat_smp_ops {
/* TBD: stop exporting it for direct population by platform */
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.
+1 −12
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <asm/unwind.h>
#include <asm/clk.h>
#include <asm/mach_desc.h>
#include <asm/smp.h>

#define FIX_PTR(x)  __asm__ __volatile__(";" : "+r"(x))

@@ -306,10 +307,7 @@ void setup_processor(void)
	arc_chk_ccms();

	printk(arc_extn_mumbojumbo(cpu_id, str, sizeof(str)));

#ifdef CONFIG_SMP
	printk(arc_platform_smp_cpuinfo());
#endif

	arc_chk_fpu();
}
@@ -360,11 +358,7 @@ void __init setup_arch(char **cmdline_p)
		machine_desc->init_early();

	setup_processor();

#ifdef CONFIG_SMP
	smp_init_cpus();
#endif

	setup_arch_memory();

	/* copy flat DT out of .init and then unflatten it */
@@ -424,14 +418,9 @@ static int show_cpuinfo(struct seq_file *m, void *v)
		   (loops_per_jiffy / (5000 / HZ)) % 100);

	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_extn_mumbojumbo(cpu_id, str, PAGE_SIZE));

#ifdef CONFIG_SMP
	seq_printf(m, arc_platform_smp_cpuinfo());
#endif

	free_page((unsigned long)str);
done:
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ void __weak arc_platform_smp_wait_to_boot(int cpu)

const char *arc_platform_smp_cpuinfo(void)
{
	return plat_smp_ops.info;
	return plat_smp_ops.info ? : "";
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@

menuconfig ARC_PLAT_FPGA_LEGACY
	bool "\"Legacy\" ARC FPGA dev Boards"
	select ISS_SMP_EXTN if SMP
	select ARC_HAS_COH_CACHES if SMP
	help
	  Support for ARC development boards, provided by Synopsys.
	  These are based on FPGA or ISS. e.g.
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ MACHINE_START(ML509, "ml509")
	.dt_compat	= ml509_compat,
	.init_early	= plat_fpga_early_init,
	.init_machine	= plat_fpga_populate_dev,
#ifdef CONFIG_SMP
#ifdef CONFIG_ISS_SMP_EXTN
	.init_smp	= iss_model_init_smp,
#endif
MACHINE_END