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

Commit eac44d9c authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Ralf Baechle
Browse files

MIPS: OCTEON: disable HOTPLUG_CPU if the bootloader version is incorrect



Disable HOTPLUG_CPU functionality if the bootloader version is incorrect.

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Cc: linux-mips@linux-mips.org
Cc: David Daney <ddaney.cavm@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/7200/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 5ca0e377
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -88,8 +88,10 @@ static void octeon_smp_hotplug_setup(void)
		return;

	labi = (struct linux_app_boot_info *)PHYS_TO_XKSEG_CACHED(LABI_ADDR_IN_BOOTLOADER);
	if (labi->labi_signature != LABI_SIGNATURE)
		panic("The bootloader version on this board is incorrect.");
	if (labi->labi_signature != LABI_SIGNATURE) {
		pr_info("The bootloader on this board does not support HOTPLUG_CPU.");
		return;
	}

	octeon_bootloader_entry_addr = labi->InitTLBStart_addr;
#endif
@@ -132,7 +134,8 @@ static void octeon_smp_setup(void)
	 * will assign CPU numbers for possible cores as well.	Cores
	 * are always consecutively numberd from 0.
	 */
	for (id = 0; setup_max_cpus && id < num_cores && id < NR_CPUS; id++) {
	for (id = 0; setup_max_cpus && octeon_bootloader_entry_addr &&
		     id < num_cores && id < NR_CPUS; id++) {
		if (!(core_mask & (1 << id))) {
			set_cpu_possible(cpus, true);
			__cpu_number_map[id] = cpus;
@@ -232,6 +235,9 @@ static int octeon_cpu_disable(void)
	if (cpu == 0)
		return -EBUSY;

	if (!octeon_bootloader_entry_addr)
		return -ENOTSUPP;

	set_cpu_online(cpu, false);
	cpu_clear(cpu, cpu_callin_map);
	local_irq_disable();