From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751156AbcETRbj (ORCPT ); Fri, 20 May 2016 13:31:39 -0400 Received: from bh-25.webhostbox.net ([208.91.199.152]:45704 "EHLO bh-25.webhostbox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750909AbcETRbi (ORCPT ); Fri, 20 May 2016 13:31:38 -0400 Date: Fri, 20 May 2016 10:31:39 -0700 From: Guenter Roeck To: "Maciej W. Rozycki" Cc: stable , Linux MIPS Mailing List , Ben Hutchings , Li Zefan , "linux-kernel@vger.kernel.org" Subject: Re: Building older mips kernels with different versions of binutils; possible patch for 3.2 and 3.4 Message-ID: <20160520173139.GB12632@roeck-us.net> References: <573936E3.3050003@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Authenticated_sender: guenter@roeck-us.net X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bh-25.webhostbox.net X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - roeck-us.net X-Get-Message-Sender-Via: bh-25.webhostbox.net: authenticated_id: guenter@roeck-us.net X-Authenticated-Sender: bh-25.webhostbox.net: guenter@roeck-us.net X-Source: X-Source-Args: X-Source-Dir: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 20, 2016 at 02:21:34PM +0100, Maciej W. Rozycki wrote: > Hi Guenter, > > > building mips images with a consistent infrastructure is becoming more and > > more difficult. > > As the current MIPS binutils maintainer I am sorry to hear about this, > and apologise for the state of affairs. Of course I can't help with any > sins of the past, but at least I can help straightening out the current > situation and making sure that the most recent binutils work as expected. > > > Current state is as follows. > > > > Binutils/ 2.22 2.24 2.25 > > Kernel > > 3.2 X - - > > 3.4 X - - > > 3.10 X X - > > 3.14 X X - > > 3.16 X X - > > 3.18 X X (X) [1] > > 4.1 X X (X) > > 4.4 X X (X) > > 4.5 X X (X) > > 4.6 X X (X) > > next - X (X) > > > > [1] (at least) allnoconfig fails to build with binutils 2.25 (2.25.1, more > > specifically). > > > > I used the following toolchains for the above tests: > > - Poky 1.3 (binutils 2.22) > > - Poky 2.0 (binutils 2.25.1) > > - gcc-4.6.3-nolibc from kernel.org (binutils 2.22) > > - gcc-4.9.0-nolibc from kernel.org (binutils 2.24) > > > > For 3.4 and 3.2 kernels to build with binutils v2.24, it would be necessary to > > apply patch c02263063362 ("MIPS: Refactor 'clear_page' and 'copy_page' > > functions"). > > Mind that this change is really only needed to build microMIPS kernels, > only required for pure microMIPS hardware, i.e. processors which do not > support regular (aka AD 1985 classic) MIPS execution at all -- have you > been building such configurations? For mixed-mode processors a regular > MIPS kernel will do as it'll handle microMIPS userland just fine. > > Or is there a hidden catch in this change beyond what's been stated in > the commit description? > > > It applies cleanly to 3.4, but has a Makefile conflict in 3.2. It might > > make sense to apply this patch to both releases. Would this be possible ? > > This way, we would have at least one toolchain which can build all 3.2+ > > kernels. > > If you send me messages from build errors you think may be caused by an > incompatibility between the most recent binutils and kernel code, along > with a kernel GIT commit ID, then I'll investigate and see if this is a > problem on the binutils or the kernel side. I may need to ask for .config > in the process. If you have problems with older binutils, then I just > *might* be able to provide advice or a workaround, but my capabilities > beyond that may be limited, I'm a limited resource after all. > binutils 2.25, any kernel supporting it (3.18+), mips:allnoconfig: CC arch/mips/mm/sc-ip22.o {standard input}: Assembler messages: {standard input}:131: Error: number (0x9000000080000000) larger than 32 bits {standard input}:154: Error: number (0x9000000080000000) larger than 32 bits {standard input}:191: Error: number (0x9000000080000000) larger than 32 bits There is assembler code in arch/mips/mm/sc-ip22.c which first sets "mips3" (which I think is 32 bit) and then issues "dli\t$1, 0x9000000080000000\n\t", which apparently the assembler in binutils 2.25 doesn't like. --- binutils 2.24, mips:defconfig or mips:allnoconfig; Kernel 3.2.y or 3.4.y arch/mips/mm/page.c:88:6: error: 'clear_page' alias in between function and variable is not supported void clear_page(void *page) __attribute__((alias("clear_page_array"))); [there are several of those messages] I can not really comment on microMIPS or not. Maybe some configurations do work with binutils 2.24 and kernel versions 3.2 or 3.4. If so, I have not been able to find them. Builds with binutils 2.22 on recent kernels fail on and off (there was a failure in -next a few days ago which has since then be fixed). Overall using it as "default" builder is by now too fragile, which is why I dropped it as baseline version. I now only build defconfig and allnoconfig with it as basic sanity test. For qemu tests, I ended up using a combination of binutils 2.22, 2.24, and 2.25 depending on the kernel version. Previously I only used 2.22, but again that is by now too risky. I can not just use 2.25 since it isn't supported in older kernels (plus mips-gcc in Poky 2.0 seems to be buggy for mipsel64, or maybe that compiler and qemu don't like each other), I can not just use 2.24 because it isn't supported in 3.2 and 3.4, and I don't want to use 2.22 for recent kernels since all tests may end up failing because some feature only available in later versions of binutils was added to the kernel. Guenter