From: linux@armlinux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: compressed: discard ksym/kcrctab input section
Date: Mon, 23 Oct 2017 12:48:25 +0100 [thread overview]
Message-ID: <20171023114825.GV20805@n2100.armlinux.org.uk> (raw)
In-Reply-To: <20171023092956.GN20805@n2100.armlinux.org.uk>
On Mon, Oct 23, 2017 at 10:29:56AM +0100, Russell King - ARM Linux wrote:
> On Mon, Oct 23, 2017 at 12:00:46AM +0200, Matthias Brugger wrote:
> > Hi Ard,
> >
> > On 10/21/2017 10:14 AM, Ard Biesheuvel wrote:
> > > On 21 October 2017 at 08:56, Matthias Brugger <mbrugger@suse.com> wrote:
> > >> On 09/08/2017 05:31 PM, Ard Biesheuvel wrote:
> > >>> As it turns out, building the ARM kernel with EFI support pulls in
> > >>> a couple of sections that we don't really need in the decompressor.
> > >>> This is due to the fact the the UEFI stub uses sort() to sort the UEFI
> > >>> memory map, which is an exported symbol pulled in from lib/sort.c.
> > >>>
> > >>> Before commit e4bae4d0b5f3 ("arm/efi: Split zImage code and data into
> > >>> separate PE/COFF sections"), this resulted in the following layout
> > >>> for the decompressor ELF binary.
> > >>>
> > >>> [Nr] Name Type Addr Off Size ES Flg Lk Inf Al
> > >>> [ 0] NULL 00000000 000000 000000 00 0 0 0
> > >>> [ 1] .text PROGBITS 00000000 010000 009b3c 00 AX 0 0 512
> > >>> [ 2] .rodata PROGBITS 00009b3c 019b3c 001684 00 A 0 0 4
> > >>> [ 3] __ksymtab_strings PROGBITS 0000b1c0 01b1c0 000005 00 A 0 0 1
> > >>> [ 4] .data PROGBITS 0000b1c8 01b1c8 000020 00 WA 0 0 8
> > >>> [ 5] ___ksymtab+sort PROGBITS 0000b1e8 01b1e8 000008 00 WA 0 0 4
> > >>> [ 6] .piggydata PROGBITS 0000b1f0 01b1f0 77ac38 00 A 0 0 1
> > >>> [ 7] .got.plt PROGBITS 00785e28 795e28 00000c 04 WA 0 0 4
> > >>> [ 8] .got PROGBITS 00785e34 795e34 000028 00 WA 0 0 4
> > >>> [ 9] .pad PROGBITS 00785e5c 795e5c 000004 00 WA 0 0 1
> > >>> [10] .bss NOBITS 00785e60 795e60 00001c 00 WA 0 0 4
> > >>> [11] .stack NOBITS 00785e80 795e60 001000 00 WA 0 0 1
> > >>>
> > >>> Commit e4bae4d0b5f3 made some changes to the linker script to allow the
> > >>> UEFI firmware to map the decompressor with strict R-X/RW- permissions
> > >>> before invoking it. Unfortunately, this turns out to break the boot on
> > >>> some systems, because the linker now also moves the ksymtab/kcrctab
> > >>> sections around, resulting in .piggydata to appear misaligned.
> > >>>
> > >>> [Nr] Name Type Addr Off Size ES Flg Lk Inf Al
> > >>> [ 0] NULL 00000000 000000 000000 00 0 0 0
> > >>> [ 1] .text PROGBITS 00000000 010000 00a93c 00 AX 0 0 4096
> > >>> [ 2] .rodata PROGBITS 0000a93c 01a93c 001684 00 A 0 0 4
> > >>> [ 3] __ksymtab_strings PROGBITS 0000bfc0 01bfc0 000005 00 A 0 0 1
> > >>> [ 4] .piggydata PROGBITS 0000bfc5 01bfc5 77ac47 00 A 0 0 1
> > >>> [ 5] .got.plt PROGBITS 00786c0c 796c0c 00000c 04 WA 0 0 4
> > >>> [ 6] .got PROGBITS 00786c18 796c18 000028 00 WA 0 0 4
> > >>> [ 7] .pad PROGBITS 00786c40 796c40 000008 00 WA 0 0 1
> > >>> [ 8] .data PROGBITS 00787000 797000 000200 00 WA 0 0 4096
> > >>> [ 9] ___ksymtab+sort PROGBITS 00787200 797200 000008 00 WA 0 0 4
> > >>> [10] .bss NOBITS 00787208 797208 00001c 00 WA 0 0 4
> > >>> [11] .stack NOBITS 00787228 797208 001000 00 WA 0 0 1
> > >>>
> > >>> So let's align piggydata explicitly, and discard these sections from the
> > >>> binary.
> > >>>
> > >>> Cc: Russell King <linux@armlinux.org.uk>
> > >>> Fixes: e4bae4d0b5f3 ("arm/efi: Split zImage code and data into separate ...")
> > >>> Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
> > >>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > >>> ---
> > >>> arch/arm/boot/compressed/piggy.S | 1 +
> > >>> arch/arm/boot/compressed/vmlinux.lds.S | 1 +
> > >>> 2 files changed, 2 insertions(+)
> > >>>
> > >>
> > >> This fixes the boot regression on bananapi-r2.
> > >> Thanks! Feel free to add:
> > >>
> > >> Tested-by: Matthias Brugger <mbrugger@suse.com>
> > >>
> > >
> > > Thanks for confirming Matthias. Could you please check whether this
> > > patch from Arnd
> > >
> > > https://marc.info/?l=linux-kernel&m=150852980119217&w=2
> > >
> > > fixes the issue as well? (after reverting this one)
> > >
> >
> > After only applying this patch on top of v4.14-rc5 I was not able to boot.
>
> Which decompression method are you using?
>
> What does objdump -h arch/arm/boot/vmlinux say?
Oh, and one more question: are you appending a dtb to your zImage (and
if so, why are you doing that, that's supposed to be for obsolete boot
loaders only.)
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up
next prev parent reply other threads:[~2017-10-23 11:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-08 15:31 [PATCH] ARM: compressed: discard ksym/kcrctab input section Ard Biesheuvel
2017-09-08 15:39 ` Gregory CLEMENT
2017-09-08 15:41 ` Ard Biesheuvel
2017-10-04 12:16 ` Gregory CLEMENT
2017-10-04 12:20 ` Ard Biesheuvel
2017-10-04 12:43 ` Russell King - ARM Linux
2017-10-09 12:39 ` Ard Biesheuvel
2017-10-12 9:24 ` Gregory CLEMENT
2017-10-12 9:45 ` Russell King - ARM Linux
2017-10-12 19:03 ` Ard Biesheuvel
2017-10-20 15:25 ` Gregory CLEMENT
2017-10-20 15:28 ` Ard Biesheuvel
2017-10-20 16:11 ` Russell King - ARM Linux
2017-10-20 16:20 ` Ard Biesheuvel
2017-10-20 16:32 ` Russell King - ARM Linux
2017-10-20 16:36 ` Ard Biesheuvel
2017-10-20 16:54 ` Russell King - ARM Linux
2017-10-20 17:12 ` Ard Biesheuvel
2017-10-21 7:56 ` Matthias Brugger
2017-10-21 8:14 ` Ard Biesheuvel
2017-10-22 22:00 ` Matthias Brugger
2017-10-23 9:29 ` Russell King - ARM Linux
2017-10-23 11:48 ` Russell King - ARM Linux [this message]
2017-10-23 21:17 ` Matthias Brugger
2017-10-23 22:19 ` Russell King - ARM Linux
2017-10-24 6:51 ` Matthias Brugger
2017-10-23 21:15 ` Matthias Brugger
2017-10-23 21:32 ` Matthias Brugger
2017-10-23 22:29 ` Russell King - ARM Linux
2017-10-24 8:36 ` Andrea Adami
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171023114825.GV20805@n2100.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.