[coreboot] Intel Leafhill/Apollolake wrong CBFS header address in coreboot.rom

Gailu Singh gailu96 at gmail.com
Sun Mar 19 07:20:36 CET 2017

Failing grub code
static void
init_cbfsdisk (void)
  grub_uint32_t ptr;
  struct cbfs_header *head;

  ptr = *(grub_uint32_t *) 0xfffffffc;
  head = (struct cbfs_header *) (grub_addr_t) ptr;
  grub_dprintf ("cbfs", "head=%p\n", head);

  /* coreboot current supports only ROMs <= 16 MiB. Bigger ROMs will
     have problems as RCBA is 18 MiB below end of 32-bit typically,
     so either memory map would have to be rearranged or we'd need to
     reading ROMs through controller directly.
  if (ptr < 0xff000000
      || 0xffffffff - ptr < (grub_uint32_t) sizeof (*head) + 0xf
      || !validate_head (head))

On Sun, Mar 19, 2017 at 11:47 AM, Gailu Singh <gailu96 at gmail.com> wrote:

> Hi Experts,
> On Intel Leafhill board grub fails to find cbfsdisk. We tried to debug and
> found that cbfs header address validation fails.
> According to https://github.com/mrnuke/coreboot/blob/master/
> documentation/cbfs.txt,
> "A pointer to the location of the header will be located at offset -4 from
> the end of the ROM. This translates to address 0xFFFFFFFC on a normal x86
> system. The pointer will be to physical memory somewhere between -
> 0xFFFFB000 and 0xFFFFFFF0".
> We checked the coreboot.rom in hex editor and address in last 4 bytes is
> all ones (FFFFFFFF) as a result grub is not able to find cbfs header.
> We have earlier used coreboot on baytrail and in the coreboot.rom cbfs
> header address in last 4 byte was a valid pointer.
> What is the location grub can find cbfs header on this board?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20170319/4ec7027d/attachment.html>

More information about the coreboot mailing list