From mboxrd@z Thu Jan 1 00:00:00 1970 From: Will Deacon Date: Tue, 8 Nov 2016 23:50:19 +0000 Subject: [U-Boot] U-Boot overlaps BSS and initrd on arm64 In-Reply-To: <20161108194730.GF6637@bill-the-cat> References: <20161108175144.GC6637@bill-the-cat> <20161108180142.GL20591@arm.com> <20161108180440.GD6637@bill-the-cat> <20161108193434.GB17771@arm.com> <20161108194730.GF6637@bill-the-cat> Message-ID: <20161108235019.GD17771@arm.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Nov 08, 2016 at 02:47:30PM -0500, Tom Rini wrote: > On Tue, Nov 08, 2016 at 07:34:34PM +0000, Will Deacon wrote: > > On Tue, Nov 08, 2016 at 01:04:40PM -0500, Tom Rini wrote: > > > On Tue, Nov 08, 2016 at 06:01:42PM +0000, Will Deacon wrote: > > > > On Tue, Nov 08, 2016 at 12:51:44PM -0500, Tom Rini wrote: > > > > > On Tue, Nov 08, 2016 at 09:41:13AM -0800, Dmitry Vyukov wrote: > > > > > > Hello, > > > > > > > > > > > > We've got a boot problem on arm64 devices. Here is boot log: > > > > > > https://storage.kernelci.org/mainline/v4.9-rc4/arm64-defconfig+CONFIG_KASAN=y/lab-baylibre-seattle/boot-juno-r2.txt > > > > > > https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/ > > > > > > > > > > > > Here is some debugging that Andrey and Mark did: > > > > > > > > > > > > On Tue, Nov 8, 2016 at 2:00 AM, Andrey Ryabinin wrote: > > > > > > > I've looked at juno-r2: https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/ > > > > > > > So we have > > > > > > > Dtb address 0x81f00000 > > > > > > > Load address 0x80000000 > > > > > > > Which gives us 31Mb for kernel. > > > > > > > > > > > > > > It says that Kernel image is 24.62 MiB, but that's without BSS. > > > > > > > If bss is big enough it might overwrite dtb. > > > > > > > And indeed, build details - > > > > > > > https://kernelci.org/build/id/581e850959b514e564f03bdc/ > > > > > > > shows that bss is 8.5 Mb which is enough to overlap with dtb. > > > > > > > > > > > > On Tue, Nov 8, 2016 at 3:21 AM, Mark Rutland wrote: > > > > > > > FWIW, since v3.17 we've had an image_size field in the arm64 Image > > > > > > > header which describes the "real" size of the Image, BSS included. See > > > > > > > [1,2]. > > > > > > > It should be possible to modify U-Boot to use that to automatically > > > > > > > place the DTB and initrd at non-clashing locations (or at least to > > > > > > > expose the value somehow). > > > > > > > I had assumed U-Boot already did that, but it doesn't seem to be the > > > > > > > case. > > > > > > > > > > Yes, we've supported the image_size field since v2016.07 and that board > > > > > is running v2016.01. Unfortunately the booting.txt changes that added > > > > > the image_size field weren't publicized widely so we didn't see it until > > > > > someone else ran into the problem you're describing. > > > > > > > > Hmm, that's a good point. If you like, I could add something to that file > > > > asking for all changes to CC the u-boot list? We should probably do the > > > > same for edk2. > > > > > > That would be nice, sure. I was even thinking that something like the > > > cross-distro or boot-architecture lists that linaro runs would have had > > > this info go by as well. Thanks! > > > > D'oh, the u-boot list seems to be subscriber-only, so I'm not going to make > > a whole lot of friends if I ask kernel devs to add it to cc. > > Ah yes. So boot-architecture is probably best. This list: https://lists.linaro.org/pipermail/boot-architecture/ ? I was about to point out that there have only been 11 posts there in the last four months, but then I saw the "2015" part :/ Will