Dear Coreboot community,

I am developing bios for my custom Apollo Lake SoC E3950 mainboard. I got to a point where SeaBios is loaded and awaits to choose a boot option. The problem is that its getting stuck while waiting for timeout or keyboard press (see log attached). I figured out that it is getting stuck on wait_irq() function. In particular, call stack looks like this:

 

interactive_bootmenu() (/coreboot/payloads/external/SeaBIOS/seabios/src/boot.c)

get_keystroke() (int scan_code = get_keystroke(menutime);)

get_keystroke_full()

yield_toirq()

wait_irq()

__stack_hop_back_wait_irq()

 

Why can this happen? Is hardware not initialized properly during Coreboot operation or it should be done in SeaBios?

Looks like interrupts from timer and keyboard are not working. I tried loading with FILO payload and keyboard was working Ok except keyboard leds were not working.

 

Best Regards,

Anatolii Vorobev