[coreboot] Loading Linux payloads on RISC-V
Aaron Durbin
adurbin at google.com
Mon Sep 24 17:45:40 CEST 2018
On Sun, Sep 23, 2018 at 9:00 AM ron minnich <rminnich at gmail.com> wrote:
>
> ah sorry I forgot.
>
> I think selfboot could be reworked (and should be) to interpret "0" as "somewhere useful"?
Why is the kernel being loaded at 0?
>
> 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
>
> --
> coreboot mailing list: coreboot at coreboot.org
> https://mail.coreboot.org/mailman/listinfo/coreboot
More information about the coreboot
mailing list