[PATCH] ARM: EXYNOS4: Add support AFTR mode on EXYNOS4210
Russell King - ARM Linux
linux at arm.linux.org.uk
Fri Jul 8 14:15:27 EDT 2011
On Fri, Jul 08, 2011 at 06:43:55PM +0900, Jaecheol Lee wrote:
> This patch adds support AFTR(ARM OFF TOP RUNNING) mode in
> cpuidle driver. L2 cache keeps their data in this mode.
This conflicts with my suspend branch. Please wait until after the
merge window for this patch.
> +void exynos4_cpu_lp(unsigned long arg)
Should be 'static int' now.
> +static int exynos4_enter_lowpower(struct cpuidle_device *dev,
> + struct cpuidle_state *state)
> +{
> + struct cpuidle_state *new_state = state;
> +
> + /* This mode only can be entered when Core1 is offline */
> + if (cpu_online(1)) {
What if you had a four code exynos4 tomorrow?
Presumably you actually mean: "can only be entered when other CPUs are
offline" so that should be:
if (num_cpus_online() != 1) {
> +
> + l2cc_save[0] = __raw_readl(S5P_VA_L2CC + L2X0_PREFETCH_CTRL);
> + l2cc_save[1] = __raw_readl(S5P_VA_L2CC + L2X0_POWER_CTRL);
> + l2cc_save[2] = __raw_readl(S5P_VA_L2CC + L2X0_TAG_LATENCY_CTRL);
> + l2cc_save[3] = __raw_readl(S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL);
> + l2cc_save[4] = __raw_readl(S5P_VA_L2CC + L2X0_AUX_CTRL);
> +
> + clean_dcache_area(&l2cc_save[0], 5 * sizeof(unsigned long));
> + outer_clean_range(virt_to_phys(&l2cc_save[0]),
> + virt_to_phys(&l2cc_save[4] + sizeof(unsigned long)));
Erm, this is bad news, using internal APIs for this, especially
'clean_dcache_area' which may well become a no-op on systems with
TLBs which can read out of L1 cache...
More information about the linux-arm-kernel
mailing list