Message ID | 1504173383-8367-1-git-send-email-yamada.masahiro@socionext.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On Thu, 31 Aug 2017 18:56:23 +0900 Masahiro Yamada wrote: > Aarch64 instructions must be word aligned. The current 16 byte > alignment is more than enough. Relax it into 4 byte alignment. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > I do not know why arm64 Linux requires 16 byte alignment. > > I dug git-history of arch/arm64/include/asm/linkage.h > and the only commit I see is: > > commit aeed41a9371ee02257b608eb06a9058507a7d0f4 > Author: Marc Zyngier <Marc.Zyngier@arm.com> > Date: Fri Oct 19 17:33:27 2012 +0100 > > arm64: fix alignment padding in assembly code > > It just opt out of the asm-generic variant to remove 0x90. > So, the amount of alignment might not be not optimized yet. > > Please correct me if I am missing something. > > > arch/arm64/include/asm/linkage.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/linkage.h > index 636c1bc..1b26629 100644 > --- a/arch/arm64/include/asm/linkage.h > +++ b/arch/arm64/include/asm/linkage.h > @@ -1,7 +1,7 @@ > #ifndef __ASM_LINKAGE_H > #define __ASM_LINKAGE_H > > -#define __ALIGN .align 4 > -#define __ALIGN_STR ".align 4" > +#define __ALIGN .align 2 > +#define __ALIGN_STR ".align 2" > > #endif > My math tells me, that 2 is one half of 4 but 4 is one fourth of 16, so this change doesn't line up with your commit message, or am I missing something? Lothar Waßmann
On 31/08/17 11:23, Lothar Waßmann wrote: > Hi, > > On Thu, 31 Aug 2017 18:56:23 +0900 Masahiro Yamada wrote: >> Aarch64 instructions must be word aligned. The current 16 byte >> alignment is more than enough. Relax it into 4 byte alignment. >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >> --- >> >> I do not know why arm64 Linux requires 16 byte alignment. >> >> I dug git-history of arch/arm64/include/asm/linkage.h >> and the only commit I see is: >> >> commit aeed41a9371ee02257b608eb06a9058507a7d0f4 >> Author: Marc Zyngier <Marc.Zyngier@arm.com> >> Date: Fri Oct 19 17:33:27 2012 +0100 >> >> arm64: fix alignment padding in assembly code >> >> It just opt out of the asm-generic variant to remove 0x90. >> So, the amount of alignment might not be not optimized yet. >> >> Please correct me if I am missing something. >> >> >> arch/arm64/include/asm/linkage.h | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/linkage.h >> index 636c1bc..1b26629 100644 >> --- a/arch/arm64/include/asm/linkage.h >> +++ b/arch/arm64/include/asm/linkage.h >> @@ -1,7 +1,7 @@ >> #ifndef __ASM_LINKAGE_H >> #define __ASM_LINKAGE_H >> >> -#define __ALIGN .align 4 >> -#define __ALIGN_STR ".align 4" >> +#define __ALIGN .align 2 >> +#define __ALIGN_STR ".align 2" >> >> #endif >> > My math tells me, that 2 is one half of 4 but 4 is one fourth of 16, so > this change doesn't line up with your commit message, or am I missing > something? 2^4 = 16 2^2 = 4 The ARM behaviour of the .align directive is a bit funky... Robin. > > > Lothar Waßmann > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >
On Thu, Aug 31, 2017 at 06:56:23PM +0900, Masahiro Yamada wrote: > Aarch64 instructions must be word aligned. The current 16 byte > alignment is more than enough. Relax it into 4 byte alignment. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > --- > > I do not know why arm64 Linux requires 16 byte alignment. > > I dug git-history of arch/arm64/include/asm/linkage.h > and the only commit I see is: > > commit aeed41a9371ee02257b608eb06a9058507a7d0f4 > Author: Marc Zyngier <Marc.Zyngier@arm.com> > Date: Fri Oct 19 17:33:27 2012 +0100 > > arm64: fix alignment padding in assembly code > > It just opt out of the asm-generic variant to remove 0x90. > So, the amount of alignment might not be not optimized yet. > > Please correct me if I am missing something. Not sure why we ended up with 4. Possibly because we forgot the power of 2 difference for arm/arm64. Queued for 4.14. Thanks.
Hi Catalin, 2017-09-08 1:46 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>: > On Thu, Aug 31, 2017 at 06:56:23PM +0900, Masahiro Yamada wrote: >> Aarch64 instructions must be word aligned. The current 16 byte >> alignment is more than enough. Relax it into 4 byte alignment. >> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> >> --- >> >> I do not know why arm64 Linux requires 16 byte alignment. >> >> I dug git-history of arch/arm64/include/asm/linkage.h >> and the only commit I see is: >> >> commit aeed41a9371ee02257b608eb06a9058507a7d0f4 >> Author: Marc Zyngier <Marc.Zyngier@arm.com> >> Date: Fri Oct 19 17:33:27 2012 +0100 >> >> arm64: fix alignment padding in assembly code >> >> It just opt out of the asm-generic variant to remove 0x90. >> So, the amount of alignment might not be not optimized yet. >> >> Please correct me if I am missing something. > > Not sure why we ended up with 4. Possibly because we forgot the power of > 2 difference for arm/arm64. > > Queued for 4.14. Thanks. I still do not see this patch in linux-next. Where was it queued?
On Wed, Sep 20, 2017 at 07:58:34PM +0900, Masahiro Yamada wrote: > 2017-09-08 1:46 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>: > > On Thu, Aug 31, 2017 at 06:56:23PM +0900, Masahiro Yamada wrote: > >> Aarch64 instructions must be word aligned. The current 16 byte > >> alignment is more than enough. Relax it into 4 byte alignment. > >> > >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > >> --- > >> > >> I do not know why arm64 Linux requires 16 byte alignment. > >> > >> I dug git-history of arch/arm64/include/asm/linkage.h > >> and the only commit I see is: > >> > >> commit aeed41a9371ee02257b608eb06a9058507a7d0f4 > >> Author: Marc Zyngier <Marc.Zyngier@arm.com> > >> Date: Fri Oct 19 17:33:27 2012 +0100 > >> > >> arm64: fix alignment padding in assembly code > >> > >> It just opt out of the asm-generic variant to remove 0x90. > >> So, the amount of alignment might not be not optimized yet. > >> > >> Please correct me if I am missing something. > > > > Not sure why we ended up with 4. Possibly because we forgot the power of > > 2 difference for arm/arm64. > > > > Queued for 4.14. Thanks. > > I still do not see this patch in linux-next. It won't make it into linux-next now, I'll push it as a fix for -rc2 (sorry, I've been away at Plumbers and didn't get the chance to send any pull request). I'll push the patch out on fixes/core once I investigate some unrelated failures.
diff --git a/arch/arm64/include/asm/linkage.h b/arch/arm64/include/asm/linkage.h index 636c1bc..1b26629 100644 --- a/arch/arm64/include/asm/linkage.h +++ b/arch/arm64/include/asm/linkage.h @@ -1,7 +1,7 @@ #ifndef __ASM_LINKAGE_H #define __ASM_LINKAGE_H -#define __ALIGN .align 4 -#define __ALIGN_STR ".align 4" +#define __ALIGN .align 2 +#define __ALIGN_STR ".align 2" #endif
Aarch64 instructions must be word aligned. The current 16 byte alignment is more than enough. Relax it into 4 byte alignment. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- I do not know why arm64 Linux requires 16 byte alignment. I dug git-history of arch/arm64/include/asm/linkage.h and the only commit I see is: commit aeed41a9371ee02257b608eb06a9058507a7d0f4 Author: Marc Zyngier <Marc.Zyngier@arm.com> Date: Fri Oct 19 17:33:27 2012 +0100 arm64: fix alignment padding in assembly code It just opt out of the asm-generic variant to remove 0x90. So, the amount of alignment might not be not optimized yet. Please correct me if I am missing something. arch/arm64/include/asm/linkage.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)