From: Helge Deller <deller@gmx.de>
To: James Bottomley <James.Bottomley@HansenPartnership.com>,
Sven Schnelle <svens@stackframe.org>
Cc: Parisc List <linux-parisc@vger.kernel.org>
Subject: Re: Compressed kernels currently won't boot
Date: Wed, 31 Jul 2019 22:19:32 +0200 [thread overview]
Message-ID: <2fc63e1d-dbcf-924b-e134-e5c2dcc75260@gmx.de> (raw)
In-Reply-To: <1564602968.3319.56.camel@HansenPartnership.com>
On 31.07.19 21:56, James Bottomley wrote:
> On Wed, 2019-07-31 at 21:46 +0200, Helge Deller wrote:
>> On 31.07.19 21:44, Sven Schnelle wrote:
>>> Hi James,
>>>
>>> On Wed, Jul 31, 2019 at 12:40:12PM -0700, James Bottomley wrote:
>>>
>>>> What about causing the compressed make to build both a stripped
>>>> and a non-stripped bzImage (say sbzImage and bzImage). That way
>>>> you always have the stripped one available for small size things
>>>> like boot from tape or DVD? but in the usual case we use the
>>>> bzImage with full contents.
>>>
>>> In that case we would also need to build two lifimages - how about
>>> adding a config option option? Something like "Strip debug
>>> information from compressed kernel images"?
>>
>> I agree, two lifimages don't make sense. Only one vmlinuz gets
>> installed. Instead of the config option, I tink my latest patch is
>> better.
>
> It doesn't solve the problem that if a stripped compressed image is >
> 128kb then it overwrites the decompress area starting at 0x00100000 so
> we can't decompress the end because we've already overwritten it before
> the decompressor gets to it.
I don't get this point.
hppa64-linux-gnu-objdump -h vmlinuz
shows:
Sections:
Idx Name Size VMA LMA File off Algn
0 .head.text 00000084 00000000000e0000 00000000000e0000 00001000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .opd 00000340 00000000000e0090 00000000000e0090 00001090 2**3
CONTENTS, ALLOC, LOAD, DATA
2 .dlt 00000160 00000000000e03d0 00000000000e03d0 000013d0 2**3
CONTENTS, ALLOC, LOAD, DATA
3 .rodata.compressed 01f3c2b0 00000000000e0530 00000000000e0530 00001530 2**0
CONTENTS, ALLOC, LOAD, DATA
4 .text 00005cc0 000000000201d000 000000000201d000 01f3e000 2**7
CONTENTS, ALLOC, LOAD, READONLY, CODE
5 .data 00000060 0000000002022cc0 0000000002022cc0 01f43cc0 2**3
CONTENTS, ALLOC, LOAD, DATA
Only .head.text gets loaded at e0000, and it is basically just a few bytes which
sets-up registers and jump to .text segment (at 0201d000 in this case).
See: arch/parisc/boot/compressed/head.S
How should that get bigger than 128KB ?
Then the code in .text decompresses the whole kernel image behind itself
(behind "data").
Then the ELF loader moves the parts from the high-memory to the final
destination (e.g. 1000000).
The steps are:
1. palo loads vmlinuz into memory.
2. vmlinuz' head starts, and decompress_kernel() in arch/parisc/boot/compressed/misc.c
decompresses the vmlinuz file to a vmlinux file and stores it to
vmlinux_addr (which is behind the bss section of the boot decompressor).
3. Then the original kernel entry is started (arch/parisc/kernel/entry.S)
which moves the code to where it belongs and starts the kernel.
Helge
> What we could possibly do is be clever and align the .rodata.compressed
> so its last text byte ends where the uncompressed kernel text would
> end. We could be even more clever and split .rodata.compressed into a
> load and a noload part so we would only load the part of the compressed
> kernel we need. Then the lifimage creation scripts could discard the
> noload part containing the debug symbols.
>
> James
>
next prev parent reply other threads:[~2019-07-31 20:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-31 16:44 Compressed kernels currently won't boot James Bottomley
2019-07-31 17:30 ` Sven Schnelle
2019-07-31 17:50 ` James Bottomley
2019-07-31 19:40 ` James Bottomley
2019-07-31 19:44 ` Sven Schnelle
2019-07-31 19:46 ` Helge Deller
2019-07-31 19:56 ` James Bottomley
2019-07-31 20:19 ` Helge Deller [this message]
2019-07-31 20:49 ` James Bottomley
2019-07-31 21:44 ` Helge Deller
2019-08-01 1:37 ` James Bottomley
2019-07-31 21:01 ` James Bottomley
2019-07-31 21:08 ` Sven Schnelle
2019-07-31 21:13 ` Helge Deller
2019-07-31 21:51 ` Helge Deller
2019-08-01 8:10 ` Sven Schnelle
2019-07-31 19:57 ` Helge Deller
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=2fc63e1d-dbcf-924b-e134-e5c2dcc75260@gmx.de \
--to=deller@gmx.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=linux-parisc@vger.kernel.org \
--cc=svens@stackframe.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox