* 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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox