Sasha Levin <sashal@xxxxxxxxxx> writes: > From: Nicholas Piggin <npiggin@xxxxxxxxx> > > [ Upstream commit 6735fef14c1f089ae43fd6d43add818b7ff682a8 ] > > Stack-passed parameters begin at a different offset in the caller's > stack in the ELFv2 ABI. > > Reported-by: Geoff Levand <geoff@xxxxxxxxxxxxx> > Fixes: 8c5fa3b5c4df ("powerpc/64: Make ELFv2 the default for big-endian builds") > Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> > Tested-by: Geoff Levand <geoff@xxxxxxxxxxxxx> > Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx> > Link: https://msgid.link/20231227072405.63751-2-npiggin@xxxxxxxxx > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > --- > arch/powerpc/include/asm/ppc_asm.h | 6 ++++-- > arch/powerpc/platforms/ps3/hvcall.S | 18 +++++++++--------- > 2 files changed, 13 insertions(+), 11 deletions(-) This commit is OK on its own, but it doesn't have any effect unless the full series up to 914d081ead11 ("Revert "powerpc/ps3_defconfig: Disable PPC64_BIG_ENDIAN_ELF_ABI_V2"") is backported. I don't think the full series warrants backporting, it's really enabling a new feature (ELFv2 build for ps3). So IMHO please drop this patch from 6.6, 6.7, 6.8. cheers > diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h > index e7792aa135105..041ee25955205 100644 > --- a/arch/powerpc/include/asm/ppc_asm.h > +++ b/arch/powerpc/include/asm/ppc_asm.h > @@ -201,11 +201,13 @@ > > #ifdef CONFIG_PPC64_ELF_ABI_V2 > #define STK_GOT 24 > -#define __STK_PARAM(i) (32 + ((i)-3)*8) > +#define STK_PARAM_AREA 32 > #else > #define STK_GOT 40 > -#define __STK_PARAM(i) (48 + ((i)-3)*8) > +#define STK_PARAM_AREA 48 > #endif > + > +#define __STK_PARAM(i) (STK_PARAM_AREA + ((i)-3)*8) > #define STK_PARAM(i) __STK_PARAM(__REG_##i) > > #ifdef CONFIG_PPC64_ELF_ABI_V2 > diff --git a/arch/powerpc/platforms/ps3/hvcall.S b/arch/powerpc/platforms/ps3/hvcall.S > index 509e30ad01bb4..59ea569debf47 100644 > --- a/arch/powerpc/platforms/ps3/hvcall.S > +++ b/arch/powerpc/platforms/ps3/hvcall.S > @@ -714,7 +714,7 @@ _GLOBAL(_##API_NAME) \ > std r4, 0(r11); \ > ld r11, -16(r1); \ > std r5, 0(r11); \ > - ld r11, 48+8*8(r1); \ > + ld r11, STK_PARAM_AREA+8*8(r1); \ > std r6, 0(r11); \ > \ > ld r0, 16(r1); \ > @@ -746,22 +746,22 @@ _GLOBAL(_##API_NAME) \ > mflr r0; \ > std r0, 16(r1); \ > \ > - std r10, 48+8*7(r1); \ > + std r10, STK_PARAM_AREA+8*7(r1); \ > \ > li r11, API_NUMBER; \ > lv1call; \ > \ > - ld r11, 48+8*7(r1); \ > + ld r11, STK_PARAM_AREA+8*7(r1); \ > std r4, 0(r11); \ > - ld r11, 48+8*8(r1); \ > + ld r11, STK_PARAM_AREA+8*8(r1); \ > std r5, 0(r11); \ > - ld r11, 48+8*9(r1); \ > + ld r11, STK_PARAM_AREA+8*9(r1); \ > std r6, 0(r11); \ > - ld r11, 48+8*10(r1); \ > + ld r11, STK_PARAM_AREA+8*10(r1); \ > std r7, 0(r11); \ > - ld r11, 48+8*11(r1); \ > + ld r11, STK_PARAM_AREA+8*11(r1); \ > std r8, 0(r11); \ > - ld r11, 48+8*12(r1); \ > + ld r11, STK_PARAM_AREA+8*12(r1); \ > std r9, 0(r11); \ > \ > ld r0, 16(r1); \ > @@ -777,7 +777,7 @@ _GLOBAL(_##API_NAME) \ > li r11, API_NUMBER; \ > lv1call; \ > \ > - ld r11, 48+8*8(r1); \ > + ld r11, STK_PARAM_AREA+8*8(r1); \ > std r4, 0(r11); \ > \ > ld r0, 16(r1); \ > -- > 2.43.0