* Re: Kernel crosscompilers
[not found] ` <CAK8P3a3OdcSQQGKxRob3A6qfh8tVD1JtLdcTp9i25SizqWpiXA@mail.gmail.com>
@ 2021-05-08 6:46 ` Christophe Leroy
2021-05-08 9:22 ` Christophe Leroy
2021-05-08 9:43 ` Arnd Bergmann
0 siblings, 2 replies; 7+ messages in thread
From: Christophe Leroy @ 2021-05-08 6:46 UTC (permalink / raw)
To: Arnd Bergmann, linuxppc-dev, Segher Boessenkool
Le 06/05/2021 à 16:17, Arnd Bergmann a écrit :
> On Thu, May 6, 2021 at 2:42 PM Christophe Leroy
> <christophe.leroy@csgroup.eu> wrote:
>>
>> Hello Arnd,
>>
>> May I ask you whether you plan to build cross compilers based on GCC 11.1 at
>> https://mirrors.edge.kernel.org/pub/tools/crosstool/ ?
>
> Hi Christophe,
>
> I've built a snapshot a few days before the release, that one is
> identical to 11.1
> except for the reported version number. I've tried to ask around for
> help testing
> this, but so far I have not heard from anyone.
>
> Building a new set of compilers takes around a day on my build box, so I want
> to make sure I don't have to do it more often than necessary. If you are able
> to give the binaries a spin, preferably on a ppc64le or arm64 host, please let
> me know how it goes and I'll rebuilt them on the release tag.
>
Hi Arnd,
I don't have any ppc or arm host I can build on.
I'm building on x86 for powerpc embedded boards.
I have tried your GCC 11 snapshot, I get something booting but it crashes when launching init.
[ 7.368410] init[1]: bad frame in sys_sigreturn: 7fb2fd60 nip 001083cc lr 001083c4
[ 7.376283] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 7.383680] CPU: 0 PID: 1 Comm: init Not tainted 5.12.0-s3k-dev-16316-g9e799d5df185 #5054
[ 7.391767] Call Trace:
[ 7.394174] [c9023db0] [c00211e8] panic+0x130/0x304 (unreliable)
[ 7.400112] [c9023e10] [c0024e68] do_exit+0x874/0x910
[ 7.405104] [c9023e50] [c0024f80] do_group_exit+0x40/0xc4
[ 7.410440] [c9023e60] [c0033334] get_signal+0x1d8/0x93c
[ 7.415689] [c9023ec0] [c0007f34] do_notify_resume+0x6c/0x314
[ 7.421369] [c9023f20] [c000d580] syscall_exit_prepare+0x120/0x184
[ 7.427479] [c9023f30] [c001101c] ret_from_syscall+0xc/0x28
Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
Seems like there is something wrong with it with GCC11. When forcing CONFIG_CC_HAS_ASM_GOTO_OUTPUT
to 'n', the kernel boots ok.
Christophe
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 6:46 ` Kernel crosscompilers Christophe Leroy
@ 2021-05-08 9:22 ` Christophe Leroy
2021-05-08 9:37 ` Arnd Bergmann
2021-05-10 6:07 ` Michael Ellerman
2021-05-08 9:43 ` Arnd Bergmann
1 sibling, 2 replies; 7+ messages in thread
From: Christophe Leroy @ 2021-05-08 9:22 UTC (permalink / raw)
To: Arnd Bergmann, linuxppc-dev, Segher Boessenkool
Le 08/05/2021 à 08:46, Christophe Leroy a écrit :
>
>
> Le 06/05/2021 à 16:17, Arnd Bergmann a écrit :
>> On Thu, May 6, 2021 at 2:42 PM Christophe Leroy
>> <christophe.leroy@csgroup.eu> wrote:
>>>
>>> Hello Arnd,
>>>
>>> May I ask you whether you plan to build cross compilers based on GCC 11.1 at
>>> https://mirrors.edge.kernel.org/pub/tools/crosstool/ ?
>>
>> Hi Christophe,
>>
>> I've built a snapshot a few days before the release, that one is
>> identical to 11.1
>> except for the reported version number. I've tried to ask around for
>> help testing
>> this, but so far I have not heard from anyone.
>>
>> Building a new set of compilers takes around a day on my build box, so I want
>> to make sure I don't have to do it more often than necessary. If you are able
>> to give the binaries a spin, preferably on a ppc64le or arm64 host, please let
>> me know how it goes and I'll rebuilt them on the release tag.
>>
>
> Hi Arnd,
>
> I don't have any ppc or arm host I can build on.
> I'm building on x86 for powerpc embedded boards.
>
> I have tried your GCC 11 snapshot, I get something booting but it crashes when launching init.
>
> [ 7.368410] init[1]: bad frame in sys_sigreturn: 7fb2fd60 nip 001083cc lr 001083c4
> [ 7.376283] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> [ 7.383680] CPU: 0 PID: 1 Comm: init Not tainted 5.12.0-s3k-dev-16316-g9e799d5df185 #5054
> [ 7.391767] Call Trace:
> [ 7.394174] [c9023db0] [c00211e8] panic+0x130/0x304 (unreliable)
> [ 7.400112] [c9023e10] [c0024e68] do_exit+0x874/0x910
> [ 7.405104] [c9023e50] [c0024f80] do_group_exit+0x40/0xc4
> [ 7.410440] [c9023e60] [c0033334] get_signal+0x1d8/0x93c
> [ 7.415689] [c9023ec0] [c0007f34] do_notify_resume+0x6c/0x314
> [ 7.421369] [c9023f20] [c000d580] syscall_exit_prepare+0x120/0x184
> [ 7.427479] [c9023f30] [c001101c] ret_from_syscall+0xc/0x28
>
> Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
> cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
>
> Seems like there is something wrong with it with GCC11. When forcing CONFIG_CC_HAS_ASM_GOTO_OUTPUT
> to 'n', the kernel boots ok.
>
I found the problem, that's due to r10 register being reused by GCC in the copy loop below:
10: 7d 09 03 a6 mtctr r8
14: 80 ca 00 00 lwz r6,0(r10)
18: 80 ea 00 04 lwz r7,4(r10)
1c: 90 c9 00 08 stw r6,8(r9)
20: 90 e9 00 0c stw r7,12(r9)
24: 39 0a 00 08 addi r8,r10,8
28: 39 29 00 08 addi r9,r9,8
=>2c: 81 4a 00 08 lwz r10,8(r10)
30: 81 6a 00 0c lwz r11,12(r10)
34: 91 49 00 08 stw r10,8(r9)
38: 91 69 00 0c stw r11,12(r9)
3c: 39 48 00 08 addi r10,r8,8
40: 39 29 00 08 addi r9,r9,8
44: 42 00 ff d0 bdnz 14 <__unsafe_restore_general_regs+0x14>
earlyclobber modifier is missing in the CONFIG_CC_HAS_ASM_GOTO_OUTPUT version of __get_user_asm2_goto().
This is not a GCC bug, with that fixed my board is working OK.
Christophe
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 9:22 ` Christophe Leroy
@ 2021-05-08 9:37 ` Arnd Bergmann
2021-05-10 6:07 ` Michael Ellerman
1 sibling, 0 replies; 7+ messages in thread
From: Arnd Bergmann @ 2021-05-08 9:37 UTC (permalink / raw)
To: Christophe Leroy; +Cc: linuxppc-dev
On Sat, May 8, 2021 at 11:22 AM Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
> Le 08/05/2021 à 08:46, Christophe Leroy a écrit :
> >
> > I don't have any ppc or arm host I can build on.
> > I'm building on x86 for powerpc embedded boards.
> >
> > I have tried your GCC 11 snapshot, I get something booting but it crashes when launching init.
> >
...
> > Seems like there is something wrong with it with GCC11. When forcing CONFIG_CC_HAS_ASM_GOTO_OUTPUT
> > to 'n', the kernel boots ok.
> >
>
> I found the problem, that's due to r10 register being reused by GCC in the copy loop below:
Ok, thanks for testing. I'll try to rebuild the release tag in the
next few days.
Arnd
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 6:46 ` Kernel crosscompilers Christophe Leroy
2021-05-08 9:22 ` Christophe Leroy
@ 2021-05-08 9:43 ` Arnd Bergmann
2021-05-08 10:15 ` Christophe Leroy
1 sibling, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2021-05-08 9:43 UTC (permalink / raw)
To: Christophe Leroy; +Cc: linuxppc-dev
On Sat, May 8, 2021 at 8:46 AM Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
> Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
> cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
BTW, can you point me to those patches? I think it would be nice if we
could eventually
converge parts of get_user()/put_user() implementation on something
that works for all
architectures, we do seem to rewrite these way too often. Ideally we'd
have something
in asm-generic that provides all the wrappers, and just requires an
architecture to
implement the inline asm helpers for each of the sizes.
Arnd
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 9:43 ` Arnd Bergmann
@ 2021-05-08 10:15 ` Christophe Leroy
2021-05-08 12:21 ` Arnd Bergmann
0 siblings, 1 reply; 7+ messages in thread
From: Christophe Leroy @ 2021-05-08 10:15 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: linuxppc-dev
Le 08/05/2021 à 11:43, Arnd Bergmann a écrit :
> On Sat, May 8, 2021 at 8:46 AM Christophe Leroy
> <christophe.leroy@csgroup.eu> wrote:
>>
>> Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
>> cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
>
> BTW, can you point me to those patches? I think it would be nice if we
> could eventually
> converge parts of get_user()/put_user() implementation on something
> that works for all
> architectures, we do seem to rewrite these way too often. Ideally we'd
> have something
> in asm-generic that provides all the wrappers, and just requires an
> architecture to
> implement the inline asm helpers for each of the sizes.
>
The series that is merged for 5.13 is here:
https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=233250&state=*
And of course the result is just
https://github.com/linuxppc/linux/blob/master/arch/powerpc/include/asm/uaccess.h
and all its history at
https://github.com/linuxppc/linux/commits/master/arch/powerpc/include/asm/uaccess.h
The fix from today here:
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/cf0a050d124d4f426cdc7a74009d17b01d8d8969.1620465917.git.christophe.leroy@csgroup.eu/
I made a try to use asm-generic/uaccess.h a few weeks ago, but it was not conclusive. I can't
remember the details, but I can have a new look at it next week if you are interested with the details.
Christophe
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 10:15 ` Christophe Leroy
@ 2021-05-08 12:21 ` Arnd Bergmann
0 siblings, 0 replies; 7+ messages in thread
From: Arnd Bergmann @ 2021-05-08 12:21 UTC (permalink / raw)
To: Christophe Leroy; +Cc: linuxppc-dev
On Sat, May 8, 2021 at 12:15 PM Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
> Le 08/05/2021 à 11:43, Arnd Bergmann a écrit :
> > On Sat, May 8, 2021 at 8:46 AM Christophe Leroy
> > <christophe.leroy@csgroup.eu> wrote:
> >>
> >> Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
> >> cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
> >
> > BTW, can you point me to those patches? I think it would be nice if we
> > could eventually
> > converge parts of get_user()/put_user() implementation on something
> > that works for all
> > architectures, we do seem to rewrite these way too often. Ideally we'd
> > have something
> > in asm-generic that provides all the wrappers, and just requires an
> > architecture to
> > implement the inline asm helpers for each of the sizes.
> >
>
> The series that is merged for 5.13 is here:
> https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=233250&state=*
>
> And of course the result is just
> https://github.com/linuxppc/linux/blob/master/arch/powerpc/include/asm/uaccess.h
> and all its history at
> https://github.com/linuxppc/linux/commits/master/arch/powerpc/include/asm/uaccess.h
Ah, I should have looked there first ;-)
> The fix from today here:
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/cf0a050d124d4f426cdc7a74009d17b01d8d8969.1620465917.git.christophe.leroy@csgroup.eu/
>
> I made a try to use asm-generic/uaccess.h a few weeks ago, but it was not conclusive. I can't
> remember the details, but I can have a new look at it next week if you are interested with the details.
I hope you didn't waste too much time on that. The current asm-generic/uaccess.h
code is not helpful anywhere and needs to be rewritten before we can have
normal architectures using it.
Arnd
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel crosscompilers
2021-05-08 9:22 ` Christophe Leroy
2021-05-08 9:37 ` Arnd Bergmann
@ 2021-05-10 6:07 ` Michael Ellerman
1 sibling, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2021-05-10 6:07 UTC (permalink / raw)
To: Christophe Leroy, Arnd Bergmann, linuxppc-dev, Segher Boessenkool
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 08/05/2021 à 08:46, Christophe Leroy a écrit :
>> Le 06/05/2021 à 16:17, Arnd Bergmann a écrit :
>>> On Thu, May 6, 2021 at 2:42 PM Christophe Leroy
>>> <christophe.leroy@csgroup.eu> wrote:
>>>>
>>>> Hello Arnd,
>>>>
>>>> May I ask you whether you plan to build cross compilers based on GCC 11.1 at
>>>> https://mirrors.edge.kernel.org/pub/tools/crosstool/ ?
>>>
>>> Hi Christophe,
>>>
>>> I've built a snapshot a few days before the release, that one is
>>> identical to 11.1
>>> except for the reported version number. I've tried to ask around for
>>> help testing
>>> this, but so far I have not heard from anyone.
>>>
>>> Building a new set of compilers takes around a day on my build box, so I want
>>> to make sure I don't have to do it more often than necessary. If you are able
>>> to give the binaries a spin, preferably on a ppc64le or arm64 host, please let
>>> me know how it goes and I'll rebuilt them on the release tag.
>>>
>>
>> Hi Arnd,
>>
>> I don't have any ppc or arm host I can build on.
>> I'm building on x86 for powerpc embedded boards.
>>
>> I have tried your GCC 11 snapshot, I get something booting but it crashes when launching init.
>>
>> [ 7.368410] init[1]: bad frame in sys_sigreturn: 7fb2fd60 nip 001083cc lr 001083c4
>> [ 7.376283] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
>> [ 7.383680] CPU: 0 PID: 1 Comm: init Not tainted 5.12.0-s3k-dev-16316-g9e799d5df185 #5054
>> [ 7.391767] Call Trace:
>> [ 7.394174] [c9023db0] [c00211e8] panic+0x130/0x304 (unreliable)
>> [ 7.400112] [c9023e10] [c0024e68] do_exit+0x874/0x910
>> [ 7.405104] [c9023e50] [c0024f80] do_group_exit+0x40/0xc4
>> [ 7.410440] [c9023e60] [c0033334] get_signal+0x1d8/0x93c
>> [ 7.415689] [c9023ec0] [c0007f34] do_notify_resume+0x6c/0x314
>> [ 7.421369] [c9023f20] [c000d580] syscall_exit_prepare+0x120/0x184
>> [ 7.427479] [c9023f30] [c001101c] ret_from_syscall+0xc/0x28
>>
>> Something is going wrong with asm goto output. I implemented get_user() helpers with asm goto this
>> cycle (commit 5cd29b1fd3e8). I tested it with CLANG before submitting, it was working.
>>
>> Seems like there is something wrong with it with GCC11. When forcing CONFIG_CC_HAS_ASM_GOTO_OUTPUT
>> to 'n', the kernel boots ok.
>>
>
> I found the problem, that's due to r10 register being reused by GCC in the copy loop below:
>
> 10: 7d 09 03 a6 mtctr r8
> 14: 80 ca 00 00 lwz r6,0(r10)
> 18: 80 ea 00 04 lwz r7,4(r10)
> 1c: 90 c9 00 08 stw r6,8(r9)
> 20: 90 e9 00 0c stw r7,12(r9)
> 24: 39 0a 00 08 addi r8,r10,8
> 28: 39 29 00 08 addi r9,r9,8
> =>2c: 81 4a 00 08 lwz r10,8(r10)
> 30: 81 6a 00 0c lwz r11,12(r10)
> 34: 91 49 00 08 stw r10,8(r9)
> 38: 91 69 00 0c stw r11,12(r9)
> 3c: 39 48 00 08 addi r10,r8,8
> 40: 39 29 00 08 addi r9,r9,8
> 44: 42 00 ff d0 bdnz 14 <__unsafe_restore_general_regs+0x14>
>
> earlyclobber modifier is missing in the CONFIG_CC_HAS_ASM_GOTO_OUTPUT version of __get_user_asm2_goto().
Thanks for tracking that down. I hit it last week when testing Arnd's
compilers but hadn't had time to find the root cause.
cheers
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-05-10 6:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <be7c92b2-43c2-0d8a-6e8c-ac92e7e07bfc@csgroup.eu>
[not found] ` <CAK8P3a3OdcSQQGKxRob3A6qfh8tVD1JtLdcTp9i25SizqWpiXA@mail.gmail.com>
2021-05-08 6:46 ` Kernel crosscompilers Christophe Leroy
2021-05-08 9:22 ` Christophe Leroy
2021-05-08 9:37 ` Arnd Bergmann
2021-05-10 6:07 ` Michael Ellerman
2021-05-08 9:43 ` Arnd Bergmann
2021-05-08 10:15 ` Christophe Leroy
2021-05-08 12:21 ` Arnd Bergmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.