RE: [PATCH] LoongArch: Make -mstrict-align be configurable

From: David Laight
Date: Fri Feb 03 2023 - 03:46:34 EST


From: Huacai Chen
> Sent: 03 February 2023 02:01
>
> Hi, David,
>
> On Thu, Feb 2, 2023 at 5:01 PM David Laight <David.Laight@xxxxxxxxxx> wrote:
> >
> > From: Huacai Chen
> > > Sent: 02 February 2023 08:43
> > >
> > > Introduce Kconfig option ARCH_STRICT_ALIGN to make -mstrict-align be
> > > configurable.
> > >
> > > Not all LoongArch cores support h/w unaligned access, we can use the
> > > -mstrict-align build parameter to prevent unaligned accesses.
> > >
> > > This option is disabled by default to optimise for performance, but you
> > > can enabled it manually if you want to run kernel on systems without h/w
> > > unaligned access support.
> >
> > Should there be an associated run-time check during kernel initialisation
> > that a kernel compiled without -mstrict-align isn't being run on hardware
> > that doesn't support unaligned accesses.
> >
> > It can be quite a while before you get a compiler-generated misaligned accesses.
>
> If we don't use -mstrict-align, the kernel cannot be run on hardware
> that doesn't support unaligned accesses, so I think the run-time check
> is useless, and it has no chance to run the checking.

If you don't add the check and someone boots the wrong type of kernel
then they'll probably get a panic well after booting.
You really do want a check in the bot code.

There is also the question of how userspace is compiled.
You pretty much don't want to be taking traps to fixup misaligned accesses.
So the default compiler options better include -mstrict-align.

You should look at -mno-strict-align being a performance option when
running on known hardware, not a default.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)