Message ID | 20210514100106.3404011-6-arnd@kernel.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | Unify asm/unaligned.h around struct helper | expand |
Related | show |
Hi Arnd, On Fri, May 14, 2021 at 12:00:53PM +0200, Arnd Bergmann wrote: > Little-endian POWER7 kernels disable > CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS because that is not supported on > the hardware, but the kernel still uses direct load/store for explicti > get_unaligned()/put_unaligned(). > > I assume this is a mistake that leads to power7 having to trap and fix > up all these unaligned accesses at a noticeable performance cost. > > The fix is completely trivial, just remove the file and use the > generic version that gets it right. LE p7 isn't supported (it requires special firmware), and no one uses it anymore, also not for development. It was used for powerpc64le-linux development before p8 was widely available. Segher
On Fri, May 14, 2021 at 1:48 PM Segher Boessenkool <segher@kernel.crashing.org> wrote: > On Fri, May 14, 2021 at 12:00:53PM +0200, Arnd Bergmann wrote: > > Little-endian POWER7 kernels disable > > CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS because that is not supported on > > the hardware, but the kernel still uses direct load/store for explicti > > get_unaligned()/put_unaligned(). > > > > I assume this is a mistake that leads to power7 having to trap and fix > > up all these unaligned accesses at a noticeable performance cost. > > > > The fix is completely trivial, just remove the file and use the > > generic version that gets it right. > > LE p7 isn't supported (it requires special firmware), and no one uses it > anymore, also not for development. It was used for powerpc64le-linux > development before p8 was widely available. Ok, thanks for the clarification. Should we just remove the Kconfig option for it then as further cleanup? Is there any other code such as alignment trap handling that could be removed if LE POWER7 gets dropped? Arnd
diff --git a/arch/powerpc/include/asm/unaligned.h b/arch/powerpc/include/asm/unaligned.h deleted file mode 100644 index ce69c5eff95e..000000000000 --- a/arch/powerpc/include/asm/unaligned.h +++ /dev/null @@ -1,22 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _ASM_POWERPC_UNALIGNED_H -#define _ASM_POWERPC_UNALIGNED_H - -#ifdef __KERNEL__ - -/* - * The PowerPC can do unaligned accesses itself based on its endian mode. - */ -#include <linux/unaligned/access_ok.h> -#include <linux/unaligned/generic.h> - -#ifdef __LITTLE_ENDIAN__ -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#else -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif - -#endif /* __KERNEL__ */ -#endif /* _ASM_POWERPC_UNALIGNED_H */