[coreboot] ARMv8 prototype in simulator failing at payload_load()

tmiket tmiket at recipes4linux.com
Tue Oct 11 19:46:52 CEST 2016

Prior to hardware being available I am getting a headstart on coreboot 
using Trace32 in simulator mode.

Most of the SOC support is stubbed out, e.g. dram initialization.

I can extract the COREBOOT CBFS partition from coreboot.rom using 
cbfstool and load this file along with bootblock.elf into T32.

I can step from bootblock to romstage to ramstage, look at console 
output in memory, etc.

This call in ...src/lib/prog_loader.c:payload_load() fails:

	/* Pass cbtables to payload if architecture desires it. */
	prog_set_entry(payload, selfload(payload, true),

payload_targets_usable_ram() follows this path:
		/* Payload segment not targeting RAM. */
		printk(BIOS_ERR, "SELF Payload doesn't target RAM:\n");
		printk(BIOS_ERR, "Failed Segment: 0x%lx, %lu bytes\n",
			ptr->s_dstaddr, ptr->s_memsz);

If I disable the check in call to selfload, I can step into bl31.
Interestingly bl31 is loaded with selfload() with the check disabled.

My suspicion is that some underlying resource structure is not 
initialized correctly with my dram info, because I'm skipping all of the 
basic initialization and the simulator doesn't care.

Can anybody comment on this suspicion, as well as why the check is 
enabled for payload load but disabled for bl31 load?

Since the boolean parameter is part of the selfload() api I'm trying to 
understand the history here.

More information about the coreboot mailing list