Skip to contentSkip to conversation

Microblaze fixes

PATCH New Waldemar Brodkorb 5 participants 25 messages Apr 13, 2014 – Apr 29, 2014 Arm/Zynq architecture

lore
Share & tools
lore
#0 lore raw

cover Microblaze fixes

The microblaze buildoot support is in a bad state. Startup of the resulting image in Qemu is killed by OOM-killer. These patches resolves the issues and the resulting images for little endian and big endian are working fine. Network support is working now, too.

Waldemar Brodkorb (6):
use default binutils for microblaze
use default gcc 4.8.2 for microblaze upstream glibc 2.18/2.19 works fine with microblaze disable eglibc, no time to test
temporary hack to fix linking error
update to 3.14

 .../{linux-3.13.config => linux-3.14.config}       |    1 +
 board/qemu/microblazebe-mmu/system.dts             |  367 --------------------
 .../{linux-3.13.config => linux-3.14.config}       |    1 +
 board/qemu/microblazeel-mmu/system.dts             |  367 --------------------
 board/qemu/microblazeel-mmu/xilinx-xemaclite.patch |   11 +
 configs/qemu_microblazebe_mmu_defconfig            |    8 +-
 configs/qemu_microblazeel_mmu_defconfig            |    8 +-
 linux/Config.in                                    |    2 -
 package/binutils/Config.in.host                    |    3 +-
 package/binutils/binutils.mk                       |    5 -
 package/gcc/Config.in.host                         |   12 +-
 package/gcc/gcc.mk                                 |    4 -
 package/glibc/2.18/microblaze-libgcc_eh.patch      |   18 +
 package/glibc/2.19/microblaze-libgcc_eh.patch      |   18 +
 package/glibc/Config.in                            |    2 +-
 package/glibc/glibc.mk                             |   12 -
 toolchain/toolchain-buildroot/Config.in            |    2 +-
 17 files changed, 63 insertions(+), 778 deletions(-)
 rename board/qemu/microblazebe-mmu/{linux-3.13.config => linux-3.14.config} (98%)
 delete mode 100644 board/qemu/microblazebe-mmu/system.dts
 rename board/qemu/microblazeel-mmu/{linux-3.13.config => linux-3.14.config} (98%)
 delete mode 100644 board/qemu/microblazeel-mmu/system.dts
 create mode 100644 board/qemu/microblazeel-mmu/xilinx-xemaclite.patch
 create mode 100644 package/glibc/2.18/microblaze-libgcc_eh.patch
 create mode 100644 package/glibc/2.19/microblaze-libgcc_eh.patch
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/6 use default binutils for microblaze

Upstream binutils 2.24 works fine for microblaze, no need for Xilinx Git.

---
 package/binutils/Config.in.host |    3 +--
 package/binutils/binutils.mk    |    5 -----
 2 files changed, 1 insertion(+), 7 deletions(-)
package/binutils/Config.in.host +1 -2
index 58738e8..25f0dc3 100644
@@ -3,8 +3,8 @@ comment "Binutils Options"
 choice
 	prompt "Binutils Version"
 	depends on !BR2_arc
-	depends on !BR2_microblaze
 	default BR2_BINUTILS_VERSION_2_21 if (BR2_mips || BR2_mipsel || BR2_sh)
+	default BR2_BINUTILS_VERSION_2_24 if BR2_microblaze
 	default BR2_BINUTILS_VERSION_2_22
 	help
 	  Select the version of binutils you wish to use.
@@ -50,7 +50,6 @@ config BR2_BINUTILS_VERSION
 	string
 	default "2.18-avr32-1.0.1" if BR2_BINUTILS_VERSION_2_18_AVR32_1_0_1
 	default "a934fe50786aa0dc0fb5da4754e7e07591c9cd8e" if BR2_arc
-	default "8351467c933d277ebea0c8d99ad2b65b5f7b6bc2" if BR2_microblaze
 	default "2.20.1"	if BR2_BINUTILS_VERSION_2_20_1
 	default "2.21"		if BR2_BINUTILS_VERSION_2_21
 	default "2.21.1"	if BR2_BINUTILS_VERSION_2_21_1
package/binutils/binutils.mk +0 -5
index b5a2dc7..9cc4d28 100644
@@ -28,11 +28,6 @@ BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils,$(BI
 BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
 BINUTILS_FROM_GIT = y
 endif
-ifeq ($(BR2_microblaze),y)
-BINUTILS_SITE = $(call github,Xilinx,binutils,$(BINUTILS_VERSION))
-BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz
-BINUTILS_FROM_GIT = y
-endif
 BINUTILS_SITE ?= $(BR2_GNU_MIRROR)/binutils
 BINUTILS_SOURCE ?= binutils-$(BINUTILS_VERSION).tar.bz2
 BINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS))
Signature · 1 line
1.7.10.4
#4 lore raw

PATCH 2/6 use default gcc 4.8.2 for microblaze

In reply to Waldemar Brodkorb

Upstream gcc 4.8.2 works fine for microblaze, no need for Xilinx Git.

---
 package/gcc/Config.in.host |   12 +++---------
 package/gcc/gcc.mk         |    4 ----
 2 files changed, 3 insertions(+), 13 deletions(-)
package/gcc/Config.in.host +3 -9
index 4fd8ec9..0223577 100644
@@ -8,7 +8,7 @@ choice
 	default BR2_GCC_VERSION_4_4_X if BR2_sparc_sparchfleon || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleon || BR2_sparc_sparcsfleonv8
 	default BR2_GCC_VERSION_4_2_2_AVR32_2_1_5 if BR2_avr32
 	default BR2_GCC_VERSION_4_8_ARC if BR2_arc
-	default BR2_GCC_VERSION_4_9_MICROBLAZE if BR2_microblaze
+	default BR2_GCC_VERSION_4_8_X if BR2_microblaze
 	default BR2_GCC_VERSION_4_5_X if BR2_bfin
 	default BR2_GCC_VERSION_4_7_X
 	help
@@ -49,7 +49,7 @@ choice
 		bool "gcc 4.7.x"
 
 	config BR2_GCC_VERSION_4_8_X
-		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
+		depends on !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
 		select BR2_GCC_NEEDS_MPC
 		bool "gcc 4.8.x"
 
@@ -58,13 +58,8 @@ choice
 		select BR2_GCC_NEEDS_MPC
 		bool "gcc 4.8-arc"
 
-	config BR2_GCC_VERSION_4_9_MICROBLAZE
-		depends on BR2_microblaze
-		select BR2_GCC_NEEDS_MPC
-		bool "gcc 4.9-microblaze"
-
 	config BR2_GCC_VERSION_SNAP
-		depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
+		depends on !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8
 		select BR2_GCC_NEEDS_MPC
 		bool "gcc snapshot"
 endchoice
@@ -97,7 +92,6 @@ config BR2_GCC_VERSION
 	default "4.7.3"     if BR2_GCC_VERSION_4_7_X
 	default "4.8.2"     if BR2_GCC_VERSION_4_8_X
 	default "c6227bc154124e270f15793deddfa3fe18f7db54" if BR2_GCC_VERSION_4_8_ARC
-	default "b93bb009e021aba64dd4b8cdb0bbc5a176c55543" if BR2_GCC_VERSION_4_9_MICROBLAZE
 	default BR2_GCC_SNAP_DATE if BR2_GCC_VERSION_SNAP
 
 config BR2_EXTRA_GCC_CONFIG_OPTIONS
package/gcc/gcc.mk +0 -4
index dff6dce..bc79abc 100644
@@ -22,10 +22,6 @@ GCC_SITE = ftp://www.at91.com/pub/buildroot/
 else ifeq ($(BR2_arc),y)
 GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
 GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
-else ifeq ($(BR2_microblaze),y)
-GCC_SITE = $(call github,Xilinx,gcc,$(GCC_VERSION))
-GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
-else
 GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
 endif
 
Signature · 1 line
1.7.10.4
#7 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

In reply to Waldemar Brodkorb

There is no need for Xilinx Git.

---
 package/glibc/Config.in |    2 +-
 package/glibc/glibc.mk  |   12 ------------
 2 files changed, 1 insertion(+), 13 deletions(-)
package/glibc/Config.in +1 -1
index a92b5ea..693a33e 100644
@@ -8,7 +8,7 @@ choice
 		   BR2_i386   || BR2_mips     || BR2_mipsel  || \
 		   BR2_mips64 || BR2_mips64el || BR2_powerpc || \
 		   BR2_sh     || BR2_sh64     || BR2_sparc   || \
-		   BR2_x86_64
+		   BR2_x86_64 || BR2_microblaze
 
 config BR2_GLIBC_VERSION_2_18
        bool "2.18"
package/glibc/glibc.mk +0 -12
index 6579f46..d02ab7e 100644
@@ -4,17 +4,6 @@
 #
 ################################################################################
 
-ifeq ($(BR2_microblaze),y)
-ifeq ($(BR2_TOOLCHAIN_BUILDROOT_EGLIBC),y)
-GLIBC_VERSION = 7f0bcce417c47aefad06ddfec7cd4ced3a4e10ff
-GLIBC_SITE = $(call github,Xilinx,eglibc,$(GLIBC_VERSION))
-GLIBC_SRC_SUBDIR = .
-else
-GLIBC_VERSION = b86835ca92a1942ed08d8b5ee47498e711feaddb
-GLIBC_SITE = $(call github,Xilinx,glibc,$(GLIBC_VERSION))
-GLIBC_SRC_SUBDIR = .
-endif
-else
 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_EGLIBC),y)
 GLIBC_VERSION = 2.18-svnr23787
 GLIBC_SITE = http://downloads.yoctoproject.org/releases/eglibc/
@@ -26,7 +15,6 @@ GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
 GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
 GLIBC_SRC_SUBDIR = .
 endif
-endif
 
 GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
 GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
Signature · 1 line
1.7.10.4
#9 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Greetings,

When you say BR works fine for microblaze 'on QEMU', could you be more specific? little endian? mmu? which 'defconfig' did you use with buildroot? Which version of QEMU, what command line?

I'd like to recreate your working setup and maybe that will give me a clue to my troubles here...

I am trying to use the 'buildroot native toolchain' with a Spartan 6 little endian microblaze MMU design, but I don't get very far with the native toolchain. However, using the older 'external' toolchain boots linux fine.

thanks,

William

Quoted 8 lines · Gustavo Zacarias
Quoted 3 lines · Waldemar Brodkorb

There is no need for Xilinx Git.

Quoted 8 lines

(on Qemu)

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140428/56da4166/attachment.html>

#10 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Quoted 15 lines · William Welch

Greetings,

When you say BR works fine for microblaze 'on QEMU', could you be more specific? little endian? mmu? which 'defconfig' did you use with buildroot? Which version of QEMU, what command line?

I'd like to recreate your working setup and maybe that will give me a clue to my troubles here...

I am trying to use the 'buildroot native toolchain' with a Spartan 6 little endian microblaze MMU design, but I don't get very far with the native toolchain. However, using the older 'external' toolchain boots linux fine.

Quoted 3 lines

thanks,

William

Hi.
It means all relevant buildroot qemu sample defconfigs boot to a login prompt where you can login and get dhcp working on the emulated network (if said config has networking).
For microblaze this means big and little endian with MMU, we don't have a nommu configuration since i've never managed to get that working in a satisfactory way.
And that's with Waldemar's patches, not as it is right now which broke those qemu defconfigs when the toolchain was changed to the internal backend.
I do not know if it's the toolchain to blame and/or some Qemu limitation, i just know that Waldemar's patches fix it for what i have at hand (no microblaze hardware, just emulation).
Regards.

#11 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Hi again,

Thank you for your help on this -- I should have said, that I am using the 'git' buildroot from earlier today ( a few hours ago), with no luck on the native toolchain. So am I correct, that, for example, using the 'git buildroot', then ' make qemu_microblazeel_mmu_defconfig' should build the native toolchain and the resulting image should boot? Or, maybe the patches are not merged into the git tree yet?

I am not very skilled with qemu, so to confirm, are the directions in the boards/qemu/microblazeel-mmu/readme.txt correct? It is a little confusing, since they mention the s3adsp1800, whereas the system.dts mentions a ML505 design. Also the readme mentions qemu 1.7.0? I have 1.5.0 at the moment but I can install 1.7.0 if required.

thank you,

William

Quoted 21 lines · Gustavo Zacarias
Quoted 15 lines · William Welch

Greetings,

When you say BR works fine for microblaze 'on QEMU', could you be more specific? little endian? mmu? which 'defconfig' did you use with buildroot? Which version of QEMU, what command line?

I'd like to recreate your working setup and maybe that will give me a clue to my troubles here...

I am trying to use the 'buildroot native toolchain' with a Spartan 6 little endian microblaze MMU design, but I don't get very far with the native toolchain. However, using the older 'external' toolchain boots linux fine.

Quoted 3 lines

thanks,

William

Quoted 16 lines

Hi.
It means all relevant buildroot qemu sample defconfigs boot to a login prompt where you can login and get dhcp working on the emulated network (if said config has networking).
For microblaze this means big and little endian with MMU, we don't have a nommu configuration since i've never managed to get that working in a satisfactory way.
And that's with Waldemar's patches, not as it is right now which broke those qemu defconfigs when the toolchain was changed to the internal backend.
I do not know if it's the toolchain to blame and/or some Qemu limitation, i just know that Waldemar's patches fix it for what i have at hand (no microblaze hardware, just emulation).
Regards.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140428/7ba03a0a/attachment.html>

#12 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Quoted 15 lines · William Welch

Hi again,

Thank you for your help on this -- I should have said, that I am using the 'git' buildroot from earlier today ( a few hours ago), with no luck on the native toolchain. So am I correct, that, for example, using the 'git buildroot', then ' make qemu_microblazeel_mmu_defconfig' should build the native toolchain and the resulting image should boot? Or, maybe the patches are not merged into the git tree yet?

I am not very skilled with qemu, so to confirm, are the directions in the boards/qemu/microblazeel-mmu/readme.txt correct? It is a little confusing, since they mention the s3adsp1800, whereas the system.dts mentions a ML505 design. Also the readme mentions qemu 1.7.0? I have 1.5.0 at the moment but I can install 1.7.0 if required.

Quoted 3 lines

thank you,

William

Hi.
They are not merged yet, Waldemar was waiting for my gcc 4.9.x patches to get merged (done) and is going to rebase when he has time probably. The directions in the readme.txt are correct, i make it a habit of testing them regularly.
I have seen different versions of Qemu failing to work properly, even if newer or older, there's no rule for that, that's the reason i mention the exact version there.
Unfortunately for the 2014.02 release when the toolchain changes were shipped and the configs weren't updated so they are effectively broken for the current toolchain (it may be that the current toolchain is broken for real scenarios, i can't know).
Waldemar's last patch updates the qemu defconfigs to a nice and simpler config without the need for an external dts and brings in networking support as well.
For the "latest" i've used Qemu 2.0.0
And to make things nicer i've got a patchset that builds qemu within buildroot to avoid the messy problem of different vesions available, it just needs some proper docs i think and should get in, right guys? :) Regards.

#13 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

In reply to William Welch

Hi William,

William Welch wrote,

Quoted 8 lines

Hi again,

Thank you for your help on this -- I should have said, that I am using the 'git' buildroot from earlier today ( a few hours ago), with no luck on the native toolchain. ?So am I correct, that, for example, using the 'git buildroot', then ' make qemu_microblazeel_mmu_defconfig' ?should build the native toolchain and the resulting image should boot? ?Or, maybe the patches are not merged into the git tree yet?

It seems that they will be merged now. I had not the time to respin a new patch set because I didn't know how to do it correctly ;) On sunday I got a nice git workshop by a friend and now I am able to do it right. May be I will add a patch to the manual.

The changes do not show up yet on
http://git.buildroot.net/buildroot. May be Peter did not pushed the changes yesterday.

Quoted 5 lines

I am not very skilled with qemu, so to confirm, are the directions in the boards/qemu/microblazeel-mmu/readme.txt correct? ?It is a little confusing, since they mention the s3adsp1800, whereas the system.dts mentions a ML505 design. ?Also the readme mentions qemu 1.7.0? I have 1.5.0 at the moment but I can install 1.7.0 if required.

If you want to use Qemu with -initrd you should use Qemu 1.7.x or above. I only tested the microblaze stuff with Qemu 1.7.x and 2.0. There is no need for a separate system.dts, because the Qemu provided dtb matches the emulated hardware the best.
The default is to emulate s3adsp1800, but ml605 could be used, too. Networking does work better with s3adsp1800 emulation. Both little endian and big endian targets are tested with default configuration.

Some more Qemu microblaze stuff can be found here:
http://blog.waldemar-brodkorb.de/index.php?archives/10-English.html&serendipity[lang_selected]=en&serendipity[user_language]=en

Unfortunately I was again wrong with my assumption that gcc 4.9.0 solves the linking error with libgcc_eh. I accidently had my patches applied while testing with gcc 4.9.0.

There seems to be a fix in https://github.com/Xilinx/gcc, but I am unsure how to get it extracted. The snapshot for the gcc used in buildroot does not contain the git history and the short tag from the directory (Xilinx-gcc-b93bb00) is not available as an object in the git repository. I would use git bisect to find the required patch to gcc to avoid the eglibc/glibc workaround, but I don't know which branch and commit is used as the basis for the gcc tarball.

Anyone know this?

So the glibc patch is still required.

Have fun
Waldemar

Quoted 47 lines

thank you,

William

On Mon, Apr 28, 2014 at 2:18 PM, Gustavo Zacarias <[email protected]> wrote:

On 04/28/2014 04:08 PM, William Welch wrote:

> Greetings,
>
> When you say BR works fine for microblaze 'on QEMU', could you be more > specific? ?little endian? ?mmu? which 'defconfig' did you use with > buildroot? ?Which version of QEMU, what command line?
>
> I'd like to recreate your working setup and maybe that will give me a > clue to my troubles here...
>
> I am trying to use the 'buildroot native toolchain' with a Spartan 6 > little endian microblaze MMU design, but I don't get very far with the > native toolchain. However, using the older 'external' toolchain boots > linux fine.
>
>
> thanks,
>
> William

Hi.
It means all relevant buildroot qemu sample defconfigs boot to a login prompt where you can login and get dhcp working on the emulated network (if said config has networking).
For microblaze this means big and little endian with MMU, we don't have a nommu configuration since i've never managed to get that working in a satisfactory way.
And that's with Waldemar's patches, not as it is right now which broke those qemu defconfigs when the toolchain was changed to the internal backend.
I do not know if it's the toolchain to blame and/or some Qemu limitation, i just know that Waldemar's patches fix it for what i have at hand (no microblaze hardware, just emulation).
Regards.

#14 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Quoted 8 lines · Waldemar Brodkorb

It seems that they will be merged now. I had not the time to respin a new patch set because I didn't know how to do it correctly ;) On sunday I got a nice git workshop by a friend and now I am able to do it right. May be I will add a patch to the manual.

The changes do not show up yet on
http://git.buildroot.net/buildroot. May be Peter did not pushed the changes yesterday.

Hi Waldemar, William.
It's in the process of being commited, i'm working with Peter on it.

Quoted 15 lines

Some more Qemu microblaze stuff can be found here:
http://blog.waldemar-brodkorb.de/index.php?archives/10-English.html&serendipity[lang_selected]=en&serendipity[user_language]=en

Unfortunately I was again wrong with my assumption that gcc 4.9.0 solves the linking error with libgcc_eh. I accidently had my patches applied while testing with gcc 4.9.0.

There seems to be a fix in https://github.com/Xilinx/gcc, but I am unsure how to get it extracted. The snapshot for the gcc used in buildroot does not contain the git history and the short tag from the directory (Xilinx-gcc-b93bb00) is not available as an object in the git repository. I would use git bisect to find the required patch to gcc to avoid the eglibc/glibc workaround, but I don't know which branch and commit is used as the basis for the gcc tarball.

Quoted 3 lines

Anyone know this?

So the glibc patch is still required.

I managed to track the issue down to 23c35173490ac2d6348a668dfc9c1a6eb62171f2 from xilinx-gcc git. Basically that enables DWARF EH handling which is what's getting fixed by including libgcc_eh.
It seems that gcc 4.9.0 with that patch ditches the new to patch glibc (and possibly also eglibc). I'm testing that right now and will send updated patches if that's true, in the meantime i've sent the glibc hack patch conditional on microblaze (it's not commited yet).
The only "drawbrack" is that said patch doesn't apply cleanly to 4.8.x. Regards.

#15 lore raw

PATCH 3/6 upstream glibc 2.18/2.19 works fine with microblaze

Quoted 3 lines · On Tue, 29 Apr 2014 10:14:09 -0300 Gustavo Zacarias <[email protected]>…
Quoted 3 lines

The changes do not show up yet on
http://git.buildroot.net/buildroot. May be Peter did not pushed the changes yesterday.

Ah, so -
The "Buildroot Gottcha" is back.

Compare the view of:
http://git.buildroot.net/buildroot
with:
http://git.buildroot.net/buildroot/

At least at this moment, they are different (again).

Mike

#17 lore raw

PATCH 4/6 disable eglibc, no time to test

In reply to Waldemar Brodkorb
---
 toolchain/toolchain-buildroot/Config.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
toolchain/toolchain-buildroot/Config.in +1 -1
index 42166d2..5a10b50 100644
@@ -44,7 +44,7 @@ config BR2_TOOLCHAIN_BUILDROOT_EGLIBC
 		   BR2_i386   || BR2_mips     || BR2_mipsel  || \
 		   BR2_mips64 || BR2_mips64el || BR2_powerpc || \
 		   BR2_sh     || BR2_sh64     || BR2_sparc   || \
-		   BR2_x86_64 || BR2_microblaze
+		   BR2_x86_64
 	depends on BR2_USE_MMU
 	depends on !BR2_PREFER_STATIC_LIB
 	select BR2_TOOLCHAIN_USES_GLIBC
Signature · 1 line
1.7.10.4
#19 lore raw

PATCH 5/6 temporary hack to fix linking error

In reply to Waldemar Brodkorb

See here for more info:
https://sourceware.org/ml/libc-help/2014-04/msg00020.html

Still working on the issue.

---
 package/glibc/2.18/microblaze-libgcc_eh.patch |   18 ++++++++++++++++++
 package/glibc/2.19/microblaze-libgcc_eh.patch |   18 ++++++++++++++++++
 2 files changed, 36 insertions(+)
 create mode 100644 package/glibc/2.18/microblaze-libgcc_eh.patch
 create mode 100644 package/glibc/2.19/microblaze-libgcc_eh.patch
package/glibc/2.18/microblaze-libgcc_eh.patch new file +18 -0
new file mode 100644
index 0000000..a8650df
@@ -0,0 +1,18 @@
+diff -Nur glibc-2.19.orig/Makeconfig glibc-2.19/Makeconfig
+--- glibc-2.19.orig/Makeconfig	2014-02-07 10:04:38.000000000 +0100
++++ glibc-2.19/Makeconfig	2014-04-11 08:22:27.000000000 +0200
+@@ -559,12 +559,12 @@
+ # statically link programs.  When --disable-shared is used, we use
+ # -lgcc_eh since elf/static-stubs.o isn't sufficient.
+ ifeq (yes,$(build-shared))
+-static-gnulib = -lgcc $(static-gnulib-arch)
++static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
+ else
+ static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
+ endif
+ static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
+-libc.so-gnulib := -lgcc
++libc.so-gnulib := -lgcc -lgcc_eh
+ endif
+ +preinit = $(addprefix $(csu-objpfx),crti.o)
+ +postinit = $(addprefix $(csu-objpfx),crtn.o)
package/glibc/2.19/microblaze-libgcc_eh.patch new file +18 -0
new file mode 100644
index 0000000..a8650df
@@ -0,0 +1,18 @@
+diff -Nur glibc-2.19.orig/Makeconfig glibc-2.19/Makeconfig
+--- glibc-2.19.orig/Makeconfig	2014-02-07 10:04:38.000000000 +0100
++++ glibc-2.19/Makeconfig	2014-04-11 08:22:27.000000000 +0200
+@@ -559,12 +559,12 @@
+ # statically link programs.  When --disable-shared is used, we use
+ # -lgcc_eh since elf/static-stubs.o isn't sufficient.
+ ifeq (yes,$(build-shared))
+-static-gnulib = -lgcc $(static-gnulib-arch)
++static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
+ else
+ static-gnulib = -lgcc -lgcc_eh $(static-gnulib-arch)
+ endif
+ static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
+-libc.so-gnulib := -lgcc
++libc.so-gnulib := -lgcc -lgcc_eh
+ endif
+ +preinit = $(addprefix $(csu-objpfx),crti.o)
+ +postinit = $(addprefix $(csu-objpfx),crtn.o)
Signature · 1 line
1.7.10.4
#20 lore raw

PATCH 5/6 temporary hack to fix linking error

Quoted 4 lines · Waldemar Brodkorb

See here for more info:
https://sourceware.org/ml/libc-help/2014-04/msg00020.html

Still working on the issue.

This patch works, but by it being temporary/hacky it should be conditionally applied just for microblaze since you probably have no idea how it can affect other architectures.

By the way, how is it that we're not interested in fixing things or something like that?
(https://sourceware.org/ml/libc-help/2014-04/msg00027.html)
I'm using my (volunteer/spare) time looking at your patchset and testing it, so i think that's not a fair assessment, and disabling eglibc because "no time to test" and saying that at the same time sounds pretty much like double-standards.
I'm not saying this to get you angry or anything like that, it's just that you're stating it in a very public mailing list and it seems utterly unfair to many BR contributors. Many people do what they can when they can.

Now with that out of the way, care to respin this patch with the consideration i mentioned above?
Regards.

#21 lore raw

PATCH 5/6 temporary hack to fix linking error

Hi Gustavo,
Gustavo Zacarias wrote,

Quoted 11 lines · Waldemar Brodkorb
Quoted 5 lines

See here for more info:
https://sourceware.org/ml/libc-help/2014-04/msg00020.html

Still working on the issue.

This patch works, but by it being temporary/hacky it should be conditionally applied just for microblaze since you probably have no idea how it can affect other architectures.

Quoted 11 lines

By the way, how is it that we're not interested in fixing things or something like that?
(https://sourceware.org/ml/libc-help/2014-04/msg00027.html)
I'm using my (volunteer/spare) time looking at your patchset and testing it, so i think that's not a fair assessment, and disabling eglibc because "no time to test" and saying that at the same time sounds pretty much like double-standards.
I'm not saying this to get you angry or anything like that, it's just that you're stating it in a very public mailing list and it seems utterly unfair to many BR contributors. Many people do what they can when they can.

Okay, sorry. I thought that there is no interest in my patches, because I got no feedback at all. Looking at the traffic on the mailinglist nearly every patch set gets some feedback after 2-3 days. My bug report about the microblaze OOM got no feedback, too. I stop whining now, and start hacking.

Quoted 2 lines

Now with that out of the way, care to respin this patch with the consideration i mentioned above?

I will respin the patches after your gcc 4.9 patch set gets committed. I tested with gcc 4.9 and the workaround for glibc/eglibc is not required anymore.

best regards
Waldemar

#22 lore raw

PATCH 5/6 temporary hack to fix linking error

Quoted 5 lines · Waldemar Brodkorb

Okay, sorry. I thought that there is no interest in my patches, because I got no feedback at all. Looking at the traffic on the mailinglist nearly every patch set gets some feedback after 2-3 days. My bug report about the microblaze OOM got no feedback, too. I stop whining now, and start hacking.

Hi.
Ok, cool, now we're talking! :)

Quoted 3 lines

I will respin the patches after your gcc 4.9 patch set gets committed. I tested with gcc 4.9 and the workaround for glibc/eglibc is not required anymore.

Great.
Only the gcc patch would need a respin i think, the rest can be committed as they are.
Thanks.
Regards.

#23 lore raw

PATCH 6/6 update to 3.14

In reply to Waldemar Brodkorb

* fix networking in Qemu using a small patch
* disable DTS, because linux.bin does not include any DTB the default Qemu included DTB is used and this is okay and works fine

---
 .../{linux-3.13.config => linux-3.14.config}       |    1 +
 board/qemu/microblazebe-mmu/system.dts             |  367 --------------------
 .../{linux-3.13.config => linux-3.14.config}       |    1 +
 board/qemu/microblazeel-mmu/system.dts             |  367 --------------------
 board/qemu/microblazeel-mmu/xilinx-xemaclite.patch |   11 +
 configs/qemu_microblazebe_mmu_defconfig            |    8 +-
 configs/qemu_microblazeel_mmu_defconfig            |    8 +-
 linux/Config.in                                    |    2 -
 8 files changed, 21 insertions(+), 744 deletions(-)
 rename board/qemu/microblazebe-mmu/{linux-3.13.config => linux-3.14.config} (98%)
 delete mode 100644 board/qemu/microblazebe-mmu/system.dts
 rename board/qemu/microblazeel-mmu/{linux-3.13.config => linux-3.14.config} (98%)
 delete mode 100644 board/qemu/microblazeel-mmu/system.dts
 create mode 100644 board/qemu/microblazeel-mmu/xilinx-xemaclite.patch
board/qemu/microblazebe-mmu/linux-3.14.config renamed from board/qemu/microblazebe-mmu/linux-3.13.config +1 -0
similarity index 98%
rename from board/qemu/microblazebe-mmu/linux-3.13.config
rename to board/qemu/microblazebe-mmu/linux-3.14.config
index c2ef789..d7e3235 100644
@@ -36,6 +36,7 @@ CONFIG_PROC_DEVICETREE=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_NETDEVICES=y
+CONFIG_NET_VENDOR_XILINX=y
 CONFIG_XILINX_EMACLITE=y
 # CONFIG_INPUT is not set
 # CONFIG_SERIO is not set
board/qemu/microblazebe-mmu/system.dts deleted +0 -367

367 lines not on this page · raw message

board/qemu/microblazeel-mmu/linux-3.14.config renamed from board/qemu/microblazeel-mmu/linux-3.13.config +1 -0
similarity index 98%
rename from board/qemu/microblazeel-mmu/linux-3.13.config
rename to board/qemu/microblazeel-mmu/linux-3.14.config
index 7426f1f..d31faf6 100644
@@ -35,6 +35,7 @@ CONFIG_PROC_DEVICETREE=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_NETDEVICES=y
+CONFIG_NET_VENDOR_XILINX=y
 CONFIG_XILINX_EMACLITE=y
 # CONFIG_INPUT is not set
 # CONFIG_SERIO is not set
board/qemu/microblazeel-mmu/system.dts deleted +0 -367

367 lines not on this page · raw message

board/qemu/microblazeel-mmu/xilinx-xemaclite.patch new file +11 -0
new file mode 100644
index 0000000..756bfae
@@ -0,0 +1,11 @@
+diff -Nur linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c
+--- linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c	2014-03-31 05:40:15.000000000 +0200
++++ linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c	2014-04-11 22:53:42.000000000 +0200
+@@ -1249,6 +1249,7 @@
+ 	{ .compatible = "xlnx,opb-ethernetlite-1.01.b", },
+ 	{ .compatible = "xlnx,xps-ethernetlite-1.00.a", },
+ 	{ .compatible = "xlnx,xps-ethernetlite-2.00.a", },
++	{ .compatible = "xlnx,xps-ethernetlite-2.00.b", },
+ 	{ .compatible = "xlnx,xps-ethernetlite-2.01.a", },
+ 	{ .compatible = "xlnx,xps-ethernetlite-3.00.a", },
+ 	{ /* end of list */ },
configs/qemu_microblazebe_mmu_defconfig +4 -4
index f74a3a1..15c3ca1 100644
@@ -12,9 +12,9 @@ BR2_TARGET_ROOTFS_INITRAMFS=y
 # Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.13.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.14"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux-3.13.config"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux-3.14.config"
 BR2_LINUX_KERNEL_LINUX_BIN=y
-BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/qemu/microblazebe-mmu/system.dts"
+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=n
+BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch"
configs/qemu_microblazeel_mmu_defconfig +4 -4
index 3a66d1b..6a59707 100644
@@ -12,9 +12,9 @@ BR2_TARGET_ROOTFS_INITRAMFS=y
 # Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.13.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.14"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux-3.13.config"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux-3.14.config"
 BR2_LINUX_KERNEL_LINUX_BIN=y
-BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/qemu/microblazeel-mmu/system.dts"
+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=n
+BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch"
linux/Config.in +0 -2
index c40dcd0..cb0506f 100644
@@ -210,8 +210,6 @@ config BR2_LINUX_KERNEL_LINUX_BIN
 	bool "linux.bin"
 	depends on BR2_microblaze
 	select BR2_LINUX_KERNEL_UBOOT_IMAGE
-	select BR2_LINUX_KERNEL_DTS_SUPPORT
-	select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
 
 config BR2_LINUX_KERNEL_VMLINUX_BIN
 	bool "vmlinux.bin"
Signature · 1 line
1.7.10.4
#24 lore raw

PATCH 6/6 update to 3.14

Quoted 5 lines · Waldemar Brodkorb

* fix networking in Qemu using a small patch
* disable DTS, because linux.bin does not include any DTB the default Qemu included DTB is used and this is okay and works fine

(on Qemu)

Some detail nitpicking below:

configs/qemu_microblazebe_mmu_defconfig

Quoted 3 lines
configs/qemu_microblazebe_mmu_defconfig +1 -0
+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=n

It's the default so you can just delete it.

Quoted 1 line

+BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch"

Should use a separate copy of the patch for BE in the BE dir even if it's the same.

configs/qemu_microblazeel_mmu_defconfig

Quoted 5 lines
configs/qemu_microblazeel_mmu_defconfig +1 -0
index 3a66d1b..6a59707 100644
+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=n

Ditto above.
Thanks.