[PATCH v2] ARM: alignment: Prevent ignoring of faults with ARMv6 unaligned access model
Nicolas Pitre
nicolas.pitre at linaro.org
Tue Jul 26 17:28:57 EDT 2011
On Tue, 26 Jul 2011, Dave Martin wrote:
> Currently, it's possible to set the kernel to ignore alignment
> faults when changing the alignment fault handling mode at runtime
> via /proc/sys/alignment, even though this is undesirable on ARMv6
> and above, where it can result in infinite spins where an un-fixed-
> up instruction repeatedly faults.
This may be the case only if the U bit in CP15 reg 1 is set, right?
> In addition, the kernel clobbers any alignment mode specified on
> the command-line if running on ARMv6 or above.
>
> This patch factors out the necessary safety check into a couple of
> new helper functions, and checks and modifies the fault handling
> mode as appropriate on boot and on writes to /proc/cpu/alignment.
>
> Prior to ARMv6, the behaviour is unchanged.
>
> For ARMv6 and above, the behaviour changes as follows:
>
> * Attempting to ignore faults on ARMv6 results in the mode being
> forced to UM_FIXUP instead. A warning is printed if this
> happened as a result of a write to /proc/cpu/alignment. The
> user's UM_WARN bit (if present) is still honoured.
Why not clearing the U bit as well as the A bit to preserve consistency
with the pre ARMv6 behavior?
Nicolas
More information about the linux-arm-kernel
mailing list