[coreboot] Loading Linux payloads on RISC-V

ron minnich rminnich at gmail.com
Sun Sep 23 16:59:18 CEST 2018


ah sorry I forgot.

I think selfboot could be reworked (and should be) to interpret "0" as
"somewhere useful"?

On Sat, Sep 22, 2018 at 10:47 PM ron minnich <rminnich at gmail.com> wrote:

> shouldn't we fix the riscv kernel build process? it's producing bad elf
> files?
>
> On Sat, Sep 22, 2018 at 4:40 PM Jonathan Neuschäfer <j.neuschaefer at gmx.net>
> wrote:
>
>> Hi,
>>
>> we've discussed this briefly at OSFC: Linux's ELF file (vmlinux)
>> currently has segments starting at 0x0 (if you look at the physical
>> address field) and an entry point at 0xffffffe000000000:
>>
>> > $ readelf -l vmlinux
>> >
>> > Elf file type is EXEC (Executable file)
>> > Entry point 0xffffffe000000000
>> > There are 3 program headers, starting at offset 64
>> >
>> > Program Headers:
>> >   Type           Offset             VirtAddr           PhysAddr
>> >                  FileSiz            MemSiz              Flags  Align
>> >   LOAD           0x0000000000001000 0xffffffe000000000
>> 0x0000000000000000
>> >                  0x000000000000ffce 0x000000000000ffce  R E    0x1000
>> >   LOAD           0x0000000000011000 0xffffffe000010000
>> 0x0000000000010000
>> >                  0x00000000002cda3c 0x00000000002cda3c  RWE    0x1000
>> >   NOTE           0x00000000002dea00 0xffffffe0002dda00
>> 0x00000000002dda00
>> >                  0x000000000000003c 0x000000000000003c  R      0x4
>> >
>> >  Section to Segment mapping:
>> >   Segment Sections...
>> >    00     .init.text
>> >    01     .init.data .exit.text .data..percpu .text .softirqentry.text
>> .rodata __param __modver .srodata .data __bug_table .sdata .bss __ex_table
>> .notes
>> >    02     .notes
>>
>>
>> coreboot's SELF loader rightly points out that 0x0 is not in RAM:
>>
>> > Loading segment from ROM address 0x00000000200287b8
>> >   code (compression=0)
>> >   New segment dstaddr 0x0 memsize 0xffce srcaddr 0x2002880c filesize
>> 0xffce
>> > Loading segment from ROM address 0x00000000200287d4
>> >   code (compression=0)
>> >   New segment dstaddr 0x10000 memsize 0x2cda3c srcaddr 0x200387da
>> filesize 0x2cda3c
>> > Loading segment from ROM address 0x00000000200287f0
>> >   Entry Point 0xffffffe000000000
>> > SELF Payload doesn't target RAM:
>> > Failed Segment: 0x0, 65486 bytes
>> >  0. 0000000080000000-0000000080011fff: RAMSTAGE
>> >  1. 0000000080012000-000000008003ffff: RAM
>> >  2. 0000000080040000-0000000080044fff: RAMSTAGE
>> >  3. 0000000080045000-00000000fffdbfff: RAM
>> >  4. 00000000fffdc000-00000000ffffffff: CONFIGURATION TABLES
>> >  5. 0000000100000000-000000027fffffff: RAM
>> > Payload not loaded.
>>
>>
>> How should we solve this?
>>
>> One option I see is to keep CONFIG_PAYLOAD_ELF as is, and add quirks to
>> CONFIG_PAYLOAD_LINUX.
>>
>>
>> Jonathan
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot/attachments/20180923/b7d5e94f/attachment.html>


More information about the coreboot mailing list