[PATCH 00/14] Fix issues with ARMv6+v6k+v7 kernels
Tony Lindgren
tony at atomide.com
Mon Jan 17 17:21:07 EST 2011
* Russell King - ARM Linux <linux at arm.linux.org.uk> [110117 11:20]:
> This patch series reworks the ARMv6/ARMv6K support options, code
> selection, and bit operations such that it's possible to safely
> build a kernel which supports ARMv6, ARMv6K, ARMv7 and ARMv7 SMP
> in one image.
>
> Currently, we use CPU_V6 for both ARMv6 and ARMv6K, setting CPU_32v6K
> if we have the K extensions. CPU_32v6K directly controlled whether
> we should include the ARMv6K instructions (clrex, load/store exclusive
> byte, half-word, double). As the bitops code uses the load/store
> exclusive byte operations, unsetting CPU_32v6K results in these
> falling back to their non-SMP local-irq-disabling variants. These
> are only safe in uniprocessor environments.
>
> So, the first two patches convert the bitops to use the ARMv6 load/store
> exclusive word operations - and ensuring correctness by ensuring that
> the pointer passed in is word-aligned.
>
> We then introduce a new CPU_V6K which indicates that we're including
> an ARMv6K CPU in the build, which frees up CPU_V6 to mean that we're
> including an ARMv6 non-K CPU.
>
> We can then use CPU_V6 to ensure that the non-v6K code paths which are
> still SMP safe are selected.
>
> Without this patch set, such a kernel will be unsafe when run on
> SMP platforms as it omits necessary SMP code to ensure that bit
> operations are safe.
Amazing, based on a quick test this series boots just fine on non-v6K
omap2420 using omap2plus_defconfig :)
Tony
More information about the linux-arm-kernel
mailing list