Dave Martin <dave.mar...@linaro.org> writes: Hi, > Hi all, > > I've recently become aware that a few packages are causing alignment > faults on ARM, and are relying on the alignment fixup emulation code in > the kernel in order to work. > > Such faults are very expensive in terms of CPU cycles, and can generally > only result from wrong code (for example, C/C++ code which violates the > relevant language standards, assembler which makes invalid assumptions, > or functions called with misaligned pointers due to other bugs). > > Currently, on a natty Ubuntu desktop image I observe no faults except > from firefox and mono-based apps (see below). > > As part of the general effort to make open source on ARM better, I think > it would be great if we can disable the alignment fixups (or at least > enable logging) and work with upstreams to get the affected packages > fixed. > > For release images we might want to be more forgiving, but for development > we have the option of being more aggressive. > > The number of affected packages and bugs appears small enough for the > fixing effort to be feasible, without temporarily breaking whole > distros. > > > For ARM, we can achieve the goal by augmenting the default kernel command- > line options: either > > alignment=3 > Fix up each alingment fault, but also log the faulting address > and name of the offending process to dmesg. > > alignment=5 > Pass each alignment fault to the user process as SIGBUS (fatal > by default) and log the faulting address and name of the > offending process to dmesg.
iirc, someone sent some months/years ago a patch to change the default but it has been rejected because there are (was ?) some libc including glibc doing some unaligned access [1], and this can happen early in the boot process. In this kind of case, things like getting a sigbus would hurt. Also, as noted by someone else in the thread, you do want to test on something like armv5* or v4* because there are high chances than the trap used by the alignment fix won't be triggered at all on >= armv6. Arnaud [1] See commit log of commit d944d549aa86e08cba080396513234cf048fee1f. _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev