Hello coreboot folks,

I've gotten pretty far along with coreboot on my X220 running Fedora 23. I've extracted a VGA option ROM, and it loads correctly. I have grub configured as the primary payload, which can chainload SeaBIOS from its memdisk. The grub.cfg in cbfs can find and load the grub.cfg in /boot on my ssd.

However, here's my problem. While grub finds the grub.cfg on the ssd and presents me with a list of Fedora kernels to boot,  when I select one, the screen turns black and the system appears to reboot displaying "Welcome to GRUB!", and then drops me back to grub, presenting the options in my (cbfsdisk)/etc/grub.cfg menu.

However, if I chainload SeaBIOS, it correctly finds grub in the MBR on the ssd which loads the grub.cfg on the ssd, and when I select the Fedora kernel, it drops me at the LUKS password prompt as expected, and boots Fedora just fine after I enter my FDE password.

As mentioned before, I have extracted a working VGA option ROM and included it in the image. Since graphics in SeaBIOS works now I'm confident that's working. I have configured coreboot to load the VGA option ROM itself, as when I set native graphics initialization but included the option ROM in the cbfs disk, I got no video output in SeaBIOS. This is probably because SeaBIOS is in the Grub2 memdisk, not cbfs, and can't reach the option ROM.

Also mentioned before, I'm using LUKS full disk encryption. Grub doesn't complain about any missing modules, and my grub mkstandalone invocation is as follows:

../grub-mkstandalone \
--grub-mkimage=../grub-mkimage -O i386-coreboot -o ../grub2-X220.elf \
--modules='ahci ehci uhci usb_keyboard usbms part_msdos xfs ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs minix_be minix minix3_be minix3 minix2_be minix2 ufs2 ufs1_be ufs1 udf romfs procfs odc nilfs2 newc iso9660 cpio exfat cpio_be afs video_bochs password png keystatus sleep loopback gfxterm_background' \
--install-modules='syslinuxcfg bsd ls cat echo linux linux16 search configfile normal cbtime cbls memrw iorw minicmd lsmmap lspci halt reboot hexdump pcidump regexp setpci lsacpi chain test lvm crypto cryptodisk luks gzio gfxterm all_video' \
--fonts= \
--themes= \
--locales= \
-d ../grub-core/ \
/boot/grub/grub.cfg=../coreboot.cfg \
$(find -type f)

I'm including luks, crypto, cryptodisk, and lvm, among many of things, so I don't think it's an issue with not having the modules necessary for mounting an encrypted disk. I'm not really sure where to go from here. I don't have any usb_serial or serial interfaces to do debug, but since I have video by this point I'm not really sure this would give me any more information. Is there some way I can get grub to print what problems it is having that makes it reboot? I suspect it's some kind of problem with video, since the prompt for the LUKS password has a background image. And since it works fine on SeaBIOS...

Also, if it helps, this is my config as extracted from the ROM.

# This image was built using coreboot 4.4-523-gd71cfd2-dirty
CONFIG_BOOTSPLASH_IMAGE=y
CONFIG_BOOTSPLASH_FILE="~/Projects/blobs/bootsplash.png"
CONFIG_VENDOR_LENOVO=y
CONFIG_VGA_BIOS=y
CONFIG_VGA_BIOS_FILE="~/Projects/blobs/vgabios.bin"
CONFIG_HAVE_IFD_BIN=y
CONFIG_HAVE_ME_BIN=y
CONFIG_HAVE_GBE_BIN=y
CONFIG_BOARD_LENOVO_X220=y
# CONFIG_S3_VGA_ROM_RUN is not set
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_BOOTSPLASH=y
CONFIG_PAYLOAD_ELF=y
CONFIG_PAYLOAD_FILE="/home/ecramer/Projects/grub/grub2-X220.elf"
CONFIG_COREINFO_SECONDARY_PAYLOAD=y
CONFIG_DEBUG_CBFS=y

Also, here is a link to my grub configs http://pastebin.com/CSitTf34

The first is the grub.cfg in /boot/grub2 and the second is the grub.cfg included in the CBFS in coreboot.rom

Does anybody have any tips of where I should go from here? I'm out of ideas on how to debug this.