Greetings,
I've just finished bisecting recent coreboot history to see what broke VGA on my EPIA-MII and traced it to commit 5543:
Change real mode API to allow passing intXX number or entry point and some register values from C.
This theoretically fixes non-vga option roms, but it also allows to use the same assembler code for option roms and vsm. ...
After digging through the diff between the good and bad boot logs I noticed that all of the INT# 0x15 ... via_vt8623_int15_handler messages were missing after the "Enable VGA console" message. That call had somehow turned into a no-op. In the diff I observed the following assembly code:
- /* Call VGA BIOS int10 function 0x4f14 to enable main console - * Epia-M does not always autosence the main console so forcing - * it on is good. - */
- /* Ask VGA option rom to enable main console */ - movw $0x4f14,%ax - movw $0x8003,%bx - movw $1, %cx - movw $0, %dx - movw $0, %di - int $0x10
Became 3 copies of this function:
+static void vga_enable_console(void) +{ + /* Call VGA BIOS int10 function 0x4f14 to enable main console + * Epia-M does not always autosense the main console so forcing + * it on is good. + */ + + /* int#, EAX, EBX, ECX, EDX, ESI, EDI */ + realmode_interrupt(0x10, 0x4f1f, 0x8003, 0x0001, 0x0000, 0x0000, 0x0000); +}
The value of AX magically transformed from 0x4f14 to 0x4f1f Doh!
The attach patch fixes the three new C functions back to the original value, this fixes VGA for me.
Cheers,