* Re: Bug#1003490: u-boot: FTBFS on arch:all with qemu-ppce500 target
[not found] ` <YeLmODRhLSqiwb25@aurel32.net>
@ 2022-01-26 1:03 ` Vagrant Cascadian
2022-01-26 3:04 ` Vagrant Cascadian
0 siblings, 1 reply; 3+ messages in thread
From: Vagrant Cascadian @ 2022-01-26 1:03 UTC (permalink / raw)
To: Aurelien Jarno; +Cc: Lennart Sorensen, 1003490, u-boot, Stefano Stabellini
[-- Attachment #1: Type: text/plain, Size: 5388 bytes --]
A bug in Debian is causing a build failure of the qemu-ppce500 target:
https://bugs.debian.org/1003490
I've CCed u-boot in case they're not aware of the issue.
Some background follows...
On 2022-01-15, Aurelien Jarno wrote:
> On 2022-01-11 16:40, Vagrant Cascadian wrote:
>> On 2022-01-11, Lennart Sorensen wrote:
>> > On Mon, Jan 10, 2022 at 05:10:04PM -0800, Vagrant Cascadian wrote:
>> >> Something in the toolchain recently changed which causes u-boot arch:all
>> >> build to FTBFS... I suspect binutils, as building in "bookworm" still
>> >> works fine where binutils hasn't yet migrated.
>> >>
>> >> On arch:all builds the qemu-ppce500 target is cross-compiled.
>> >>
>> >> Full log:
>> >>
>> >> https://buildd.debian.org/status/fetch.php?pkg=u-boot&arch=all&ver=2022.01%2Bdfsg-1&stamp=1641860624&raw=0
>> >>
>> >> The hopefully relevent lines from the build log:
>> >>
>> >> powerpc-linux-gnu-gcc -Wp,-MD,arch/powerpc/cpu/mpc85xx/.tlb.o.d -nostdinc -isystem /usr/lib/gcc-cross/powerpc-linux-gnu/11/include -Iinclude -I/<<PKGBUILDDIR>>/include -I/<<PKGBUILDDIR>>/arch/powerpc/include -include /<<PKGBUILDDIR>>/include/linux/kconfig.h -I/<<PKGBUILDDIR>>/arch/powerpc/cpu/mpc85xx -Iarch/powerpc/cpu/mpc85xx -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -std=gnu11 -fshort-wchar -fno-strict-aliasing -fno-PIE -Os -fno-stack-protector -fno-delete-null-pointer-checks -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-maybe-uninitialized -fmacro-prefix-map=/<<PKGBUILDDIR>>/= -g -fstack-usage -Wno-format-nonliteral -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=date-time -Wno-packed-not-aligned -D__powerpc__ -ffixed-r2 -m32 -fno-ira-hoist-pressure -Wa,-me500 -msoft-float -mno-string -fpic -mrelocatable -ffunction-sections -fdata-sections -mcall-linux -msingle-pic-base -fno-jump-tables -pipe -DKBUILD_BASENAME='"tlb"' -DKBUILD_MODNAME='"tlb"' -c -o arch/powerpc/cpu/mpc85xx/tlb.o /<<PKGBUILDDIR>>/arch/powerpc/cpu/mpc85xx/tlb.c
>> >> ...
>> >> {standard input}: Assembler messages:
>> >> {standard input}:127: Error: unrecognized opcode: `tlbre'
>> >> {standard input}:418: Error: unrecognized opcode: `tlbre'
>> >> {standard input}:821: Error: unrecognized opcode: `msync'
>> >> {standard input}:821: Error: unrecognized opcode: `tlbwe'
>> >> {standard input}:884: Error: unrecognized opcode: `tlbsx'
>> >> make[4]: *** [/<<PKGBUILDDIR>>/scripts/Makefile.build:253: arch/powerpc/cpu/mpc85xx/tlb.o] Error 1
>> >> make[3]: *** [/<<PKGBUILDDIR>>/Makefile:1810: arch/powerpc/cpu/mpc85xx] Error 2
>> >> make[3]: *** Waiting for unfinished jobs....
>> >> powerpc-linux-gnu-gcc -Wp,-MD,arch/powerpc/lib/.traps.o.d -nost
...
>> The binutils versions appear to be:
>>
>> succeeding, bookworm 2.37-10.1
>> failing, sid 2.37.50.20220106-2
>>
>
> Yep, this is due to commit b25f942e18d6ecd7ec3e2d2e9930eb4f996c258a on
> the binutils side [1], which changes the behavior of `.machine`
> directives to override, rather than augment, the base CPU. GCC is called
> with -Wa,-me500 to enable PowerPC e500 instructions on the assembler
> side, but as the default GCC machine is ppc, a `.set machine ppc` is
> emitted at the beginning of the assembly code.
>
> One option would be to force the CPU to e500 on the GCC side, however
> support for it has been removed. The options is therefore to force the
> machine in the assembly code. This is what the attached patch does.
Somehow I missed that you had attached a patch! I will try to get this
tested and uploaded to Debian soon...
live well,
vagrant
> --- u-boot-2022.01+dfsg.orig/arch/powerpc/cpu/mpc85xx/tlb.c
> +++ u-boot-2022.01+dfsg/arch/powerpc/cpu/mpc85xx/tlb.c
> @@ -50,7 +50,10 @@ void read_tlbcam_entry(int idx, u32 *val
> u32 _mas1;
>
> mtspr(MAS0, FSL_BOOKE_MAS0(1, idx, 0));
> - asm volatile("tlbre;isync");
> + asm volatile(".machine push;\n"
> + ".machine e500;\n"
> + "tlbre;isync;\n"
> + ".machine pop;\n");
> _mas1 = mfspr(MAS1);
>
> *valid = (_mas1 & MAS1_VALID);
> @@ -109,7 +112,10 @@ void init_used_tlb_cams(void)
> /* walk all the entries */
> for (i = 0; i < num_cam; i++) {
> mtspr(MAS0, FSL_BOOKE_MAS0(1, i, 0));
> - asm volatile("tlbre;isync");
> + asm volatile(".machine push;\n"
> + ".machine e500;\n"
> + "tlbre;isync;\n"
> + ".machine pop;");
> if (mfspr(MAS1) & MAS1_VALID)
> use_tlb_cam(i);
> }
> @@ -183,7 +189,10 @@ void disable_tlb(u8 esel)
> #ifdef CONFIG_ENABLE_36BIT_PHYS
> mtspr(MAS7, 0);
> #endif
> - asm volatile("isync;msync;tlbwe;isync");
> + asm volatile(".machine push;\n"
> + ".machine e500;\n"
> + "isync;msync;tlbwe;isync;\n"
> + ".machine pop;\n");
>
> #ifdef CONFIG_ADDR_MAP
> if (gd->flags & GD_FLG_RELOC)
> @@ -193,7 +202,11 @@ void disable_tlb(u8 esel)
>
> static void tlbsx (const volatile unsigned *addr)
> {
> - __asm__ __volatile__ ("tlbsx 0,%0" : : "r" (addr), "m" (*addr));
> + __asm__ __volatile__ (".machine push;\n"
> + ".machine e500;\n"
> + "tlbsx 0,%0;\n"
> + ".machine pop;\n"
> + : : "r" (addr), "m" (*addr));
> }
>
> /* return -1 if we didn't find anything */
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Bug#1003490: u-boot: FTBFS on arch:all with qemu-ppce500 target
2022-01-26 1:03 ` Bug#1003490: u-boot: FTBFS on arch:all with qemu-ppce500 target Vagrant Cascadian
@ 2022-01-26 3:04 ` Vagrant Cascadian
2022-01-26 7:43 ` Aurelien Jarno
0 siblings, 1 reply; 3+ messages in thread
From: Vagrant Cascadian @ 2022-01-26 3:04 UTC (permalink / raw)
To: Aurelien Jarno; +Cc: 1003490, u-boot, debian-riscv
[-- Attachment #1: Type: text/plain, Size: 4740 bytes --]
On 2022-01-25, Vagrant Cascadian wrote:
> On 2022-01-15, Aurelien Jarno wrote:
>> On 2022-01-11 16:40, Vagrant Cascadian wrote:
>>> On 2022-01-11, Lennart Sorensen wrote:
>>> > On Mon, Jan 10, 2022 at 05:10:04PM -0800, Vagrant Cascadian wrote:
>>> >> Something in the toolchain recently changed which causes u-boot arch:all
>>> >> build to FTBFS... I suspect binutils, as building in "bookworm" still
>>> >> works fine where binutils hasn't yet migrated.
>>> >>
>>> >> On arch:all builds the qemu-ppce500 target is cross-compiled.
>>> >>
>>> >> Full log:
>>> >>
>>> >> https://buildd.debian.org/status/fetch.php?pkg=u-boot&arch=all&ver=2022.01%2Bdfsg-1&stamp=1641860624&raw=0
>>> >>
>>> >> The hopefully relevent lines from the build log:
...
>>> >> {standard input}: Assembler messages:
>>> >> {standard input}:127: Error: unrecognized opcode: `tlbre'
>>> >> {standard input}:418: Error: unrecognized opcode: `tlbre'
>>> >> {standard input}:821: Error: unrecognized opcode: `msync'
>>> >> {standard input}:821: Error: unrecognized opcode: `tlbwe'
>>> >> {standard input}:884: Error: unrecognized opcode: `tlbsx'
>>> >> make[4]: *** [/<<PKGBUILDDIR>>/scripts/Makefile.build:253: arch/powerpc/cpu/mpc85xx/tlb.o] Error 1
>>> >> make[3]: *** [/<<PKGBUILDDIR>>/Makefile:1810: arch/powerpc/cpu/mpc85xx] Error 2
>>> >> make[3]: *** Waiting for unfinished jobs....
>>> >> powerpc-linux-gnu-gcc -Wp,-MD,arch/powerpc/lib/.traps.o.d -nost
> ...
>>> The binutils versions appear to be:
>>>
>>> succeeding, bookworm 2.37-10.1
>>> failing, sid 2.37.50.20220106-2
>>>
>>
>> Yep, this is due to commit b25f942e18d6ecd7ec3e2d2e9930eb4f996c258a on
>> the binutils side [1], which changes the behavior of `.machine`
>> directives to override, rather than augment, the base CPU. GCC is called
>> with -Wa,-me500 to enable PowerPC e500 instructions on the assembler
>> side, but as the default GCC machine is ppc, a `.set machine ppc` is
>> emitted at the beginning of the assembly code.
>>
>> One option would be to force the CPU to e500 on the GCC side, however
>> support for it has been removed. The options is therefore to force the
>> machine in the assembly code. This is what the attached patch does.
>
> Somehow I missed that you had attached a patch! I will try to get this
> tested and uploaded to Debian soon...
Your patch fixed building qemu-ppce500, but now I think we have a
potentially similar problem with qemu-riscv64 and qemu-riscv64_smode:
/<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c: Assembler messages:
/<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c:94: Error: unrecognized opcode
`csrs sstatus,a5'
/<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c:95: Error: unrecognized opcode
`csrw 0x003,0'
make[4]: *** [/<<PKGBUILDDIR>>/scripts/Makefile.build:254:
arch/riscv/cpu/cpu.o] Error 1
make[3]: *** [/<<PKGBUILDDIR>>/Makefile:1810: arch/riscv/cpu] Error 2
make[3]: Leaving directory
'/<<PKGBUILDDIR>>/debian/build/qemu-riscv64_smode'
live well,
vagrant
>> --- u-boot-2022.01+dfsg.orig/arch/powerpc/cpu/mpc85xx/tlb.c
>> +++ u-boot-2022.01+dfsg/arch/powerpc/cpu/mpc85xx/tlb.c
>> @@ -50,7 +50,10 @@ void read_tlbcam_entry(int idx, u32 *val
>> u32 _mas1;
>>
>> mtspr(MAS0, FSL_BOOKE_MAS0(1, idx, 0));
>> - asm volatile("tlbre;isync");
>> + asm volatile(".machine push;\n"
>> + ".machine e500;\n"
>> + "tlbre;isync;\n"
>> + ".machine pop;\n");
>> _mas1 = mfspr(MAS1);
>>
>> *valid = (_mas1 & MAS1_VALID);
>> @@ -109,7 +112,10 @@ void init_used_tlb_cams(void)
>> /* walk all the entries */
>> for (i = 0; i < num_cam; i++) {
>> mtspr(MAS0, FSL_BOOKE_MAS0(1, i, 0));
>> - asm volatile("tlbre;isync");
>> + asm volatile(".machine push;\n"
>> + ".machine e500;\n"
>> + "tlbre;isync;\n"
>> + ".machine pop;");
>> if (mfspr(MAS1) & MAS1_VALID)
>> use_tlb_cam(i);
>> }
>> @@ -183,7 +189,10 @@ void disable_tlb(u8 esel)
>> #ifdef CONFIG_ENABLE_36BIT_PHYS
>> mtspr(MAS7, 0);
>> #endif
>> - asm volatile("isync;msync;tlbwe;isync");
>> + asm volatile(".machine push;\n"
>> + ".machine e500;\n"
>> + "isync;msync;tlbwe;isync;\n"
>> + ".machine pop;\n");
>>
>> #ifdef CONFIG_ADDR_MAP
>> if (gd->flags & GD_FLG_RELOC)
>> @@ -193,7 +202,11 @@ void disable_tlb(u8 esel)
>>
>> static void tlbsx (const volatile unsigned *addr)
>> {
>> - __asm__ __volatile__ ("tlbsx 0,%0" : : "r" (addr), "m" (*addr));
>> + __asm__ __volatile__ (".machine push;\n"
>> + ".machine e500;\n"
>> + "tlbsx 0,%0;\n"
>> + ".machine pop;\n"
>> + : : "r" (addr), "m" (*addr));
>> }
>>
>> /* return -1 if we didn't find anything */
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Bug#1003490: u-boot: FTBFS on arch:all with qemu-ppce500 target
2022-01-26 3:04 ` Vagrant Cascadian
@ 2022-01-26 7:43 ` Aurelien Jarno
0 siblings, 0 replies; 3+ messages in thread
From: Aurelien Jarno @ 2022-01-26 7:43 UTC (permalink / raw)
To: Vagrant Cascadian; +Cc: 1003490, u-boot, debian-riscv
[-- Attachment #1: Type: text/plain, Size: 3596 bytes --]
On 2022-01-25 19:04, Vagrant Cascadian wrote:
> On 2022-01-25, Vagrant Cascadian wrote:
> > On 2022-01-15, Aurelien Jarno wrote:
> >> On 2022-01-11 16:40, Vagrant Cascadian wrote:
> >>> On 2022-01-11, Lennart Sorensen wrote:
> >>> > On Mon, Jan 10, 2022 at 05:10:04PM -0800, Vagrant Cascadian wrote:
> >>> >> Something in the toolchain recently changed which causes u-boot arch:all
> >>> >> build to FTBFS... I suspect binutils, as building in "bookworm" still
> >>> >> works fine where binutils hasn't yet migrated.
> >>> >>
> >>> >> On arch:all builds the qemu-ppce500 target is cross-compiled.
> >>> >>
> >>> >> Full log:
> >>> >>
> >>> >> https://buildd.debian.org/status/fetch.php?pkg=u-boot&arch=all&ver=2022.01%2Bdfsg-1&stamp=1641860624&raw=0
> >>> >>
> >>> >> The hopefully relevent lines from the build log:
> ...
> >>> >> {standard input}: Assembler messages:
> >>> >> {standard input}:127: Error: unrecognized opcode: `tlbre'
> >>> >> {standard input}:418: Error: unrecognized opcode: `tlbre'
> >>> >> {standard input}:821: Error: unrecognized opcode: `msync'
> >>> >> {standard input}:821: Error: unrecognized opcode: `tlbwe'
> >>> >> {standard input}:884: Error: unrecognized opcode: `tlbsx'
> >>> >> make[4]: *** [/<<PKGBUILDDIR>>/scripts/Makefile.build:253: arch/powerpc/cpu/mpc85xx/tlb.o] Error 1
> >>> >> make[3]: *** [/<<PKGBUILDDIR>>/Makefile:1810: arch/powerpc/cpu/mpc85xx] Error 2
> >>> >> make[3]: *** Waiting for unfinished jobs....
> >>> >> powerpc-linux-gnu-gcc -Wp,-MD,arch/powerpc/lib/.traps.o.d -nost
> > ...
> >>> The binutils versions appear to be:
> >>>
> >>> succeeding, bookworm 2.37-10.1
> >>> failing, sid 2.37.50.20220106-2
> >>>
> >>
> >> Yep, this is due to commit b25f942e18d6ecd7ec3e2d2e9930eb4f996c258a on
> >> the binutils side [1], which changes the behavior of `.machine`
> >> directives to override, rather than augment, the base CPU. GCC is called
> >> with -Wa,-me500 to enable PowerPC e500 instructions on the assembler
> >> side, but as the default GCC machine is ppc, a `.set machine ppc` is
> >> emitted at the beginning of the assembly code.
> >>
> >> One option would be to force the CPU to e500 on the GCC side, however
> >> support for it has been removed. The options is therefore to force the
> >> machine in the assembly code. This is what the attached patch does.
> >
> > Somehow I missed that you had attached a patch! I will try to get this
> > tested and uploaded to Debian soon...
>
> Your patch fixed building qemu-ppce500, but now I think we have a
> potentially similar problem with qemu-riscv64 and qemu-riscv64_smode:
>
> /<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c: Assembler messages:
> /<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c:94: Error: unrecognized opcode
> `csrs sstatus,a5'
> /<<PKGBUILDDIR>>/arch/riscv/cpu/cpu.c:95: Error: unrecognized opcode
> `csrw 0x003,0'
> make[4]: *** [/<<PKGBUILDDIR>>/scripts/Makefile.build:254:
> arch/riscv/cpu/cpu.o] Error 1
> make[3]: *** [/<<PKGBUILDDIR>>/Makefile:1810: arch/riscv/cpu] Error 2
> make[3]: Leaving directory
> '/<<PKGBUILDDIR>>/debian/build/qemu-riscv64_smode'
I guess this is due to:
http://lists.infradead.org/pipermail/linux-riscv/2022-January/011728.html
Unfortunately as the change has been done in a not yet released binutils
version, there is no way for the fix to have been done upstream yet.
Note that this also breaks at least linux and opensbi.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-01-26 23:24 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <87wnj7oz6b.fsf@ponder>
[not found] ` <Yd4UYNsgSutYk/Zh@csclub.uwaterloo.ca>
[not found] ` <87sftt4wi4.fsf@ponder>
[not found] ` <YeLmODRhLSqiwb25@aurel32.net>
2022-01-26 1:03 ` Bug#1003490: u-boot: FTBFS on arch:all with qemu-ppce500 target Vagrant Cascadian
2022-01-26 3:04 ` Vagrant Cascadian
2022-01-26 7:43 ` Aurelien Jarno
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.