I'm probably going to have to chase this one down for myself, but before I do I figured I'd ask if anyone's seen anything similar before, and can give me some pointers...
When booting FreeBSD 9 under real SeaBIOS, it all works fine. When SeaBIOS is invoked for a 'legacy' boot under EFI, the FreeBSD bootloader gets as far as displaying its main screen with the FreeBSD banner and the ASCII-art dæmon and the options, but then seems to *stop* before displaying the 'Autoboot in 9 seconds. Press [Space] to pause' message.
The qemu log shows that it's in an endless stream of
Servicing hardware INT=0x20 44024: v=20 cr0=00000032 e=0000 i=0 cpl=0 IP=f000:000000000000ffec pc=00000000000fffec SP=0000:0000000000005d9c EAX=0000000000000000 EAX=00000000 EBX=00005dd0 ECX=0000ffea EDX=00000000 ESI=0000c350 EDI=00000000 EBP=00000000 ESP=00005d9c EIP=0000ffec EFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 ES =d500 000d5000 ffffffff 00cf9300 CS =f000 000f0000 0000ffff 00009a00 SS =0000 00000000 ffffffff 00cf9300 DS =0000 00000000 ffffffff 00cf9300 FS =0000 00000000 ffffffff 00cff300 GS =0000 00000000 ffffffff 00cff300 LDT=0000 00000000 0000ffff 00008200 TR =0038 00005f98 00002067 00008900 GDT= 00009590 0000003f IDT= 00000000 000003ff CR0=00000032 CR2=00000000 CR3=7fb36000 CR4=00000648 DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 DR6=00000000ffff0ff0 DR7=0000000000000400 CCS=00000044 CCD=00000000 CCO=EFLAGS EFER=0000000000000000 44025: v=1c cr0=00000032 e=0000 i=1 cpl=0 IP=f000:000000000000f856 pc=00000000000ff856 SP=0000:0000000000005d72 EAX=0000000000000000 EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000 ESI=00000000 EDI=00000000 EBP=00000000 ESP=00005d72 EIP=0000f856 EFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 ES =0000 00000000 ffffffff 00cf9300 CS =f000 000f0000 0000ffff 00009a00 SS =0000 00000000 ffffffff 00cf9300 DS =0000 00000000 ffffffff 00cf9300 FS =0000 00000000 ffffffff 00cff300 GS =0000 00000000 ffffffff 00cff300 LDT=0000 00000000 0000ffff 00008200 TR =0038 00005f98 00002067 00008900 GDT= 00009590 0000003f IDT= 00000000 000003ff CR0=00000032 CR2=00000000 CR3=7fb36000 CR4=00000648 DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 DR6=00000000ffff0ff0 DR7=0000000000000400 CCS=00000000 CCD=00000000 CCO=EFLAGS EFER=0000000000000000 Servicing hardware INT=0x20
David Woodhouse wrote:
seems to *stop* before displaying the 'Autoboot in 9 seconds
Sounds like a timer problem. The hardware interrupt somehow supports that theory.
//Peter
On Tue, 2013-01-22 at 15:19 +0100, Peter Stuge wrote:
Sounds like a timer problem. The hardware interrupt somehow supports that theory.
Indeed. Turns out the EFI side was disabling interrupts after we'd set stuff up. By saving the PIC masks on the way back to EFI, then restoring them at each entry back into SeaBIOS code, I can make things work a lot better.
Thanks.