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

Commit 8db2bc45 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: cache secondary CPUs idle loop.



This provides a cache of the secondary CPUs idle loop for the cases where
hotplug simply enters a low power state instead of resetting or powering
off the core.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 1cfa1e8f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -85,6 +85,10 @@ struct sh_cpuinfo {
	struct tlb_info itlb;
	struct tlb_info dtlb;

#ifdef CONFIG_SMP
	struct task_struct *idle;
#endif

	unsigned long flags;
} __attribute__ ((aligned(L1_CACHE_BYTES)));

+9 −4
Original line number Diff line number Diff line
@@ -125,12 +125,17 @@ int __cpuinit __cpu_up(unsigned int cpu)
	struct task_struct *tsk;
	unsigned long timeout;

	tsk = cpu_data[cpu].idle;
	if (!tsk) {
		tsk = fork_idle(cpu);
		if (IS_ERR(tsk)) {
		printk(KERN_ERR "Failed forking idle task for cpu %d\n", cpu);
			pr_err("Failed forking idle task for cpu %d\n", cpu);
			return PTR_ERR(tsk);
		}

		cpu_data[cpu].idle = tsk;
	}

	per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;

	/* Fill in data in head.S for secondary cpus */