[SeaBIOS] int 1589 test case?

Sebastian Herbszt herbszt at gmx.de
Sun Jan 10 16:11:51 CET 2010


Kevin O'Connor wrote:
> On Fri, Jan 08, 2010 at 11:19:56PM -0500, Kevin O'Connor wrote:
>> On Mon, Jan 04, 2010 at 08:54:48PM -0500, Kevin O'Connor wrote:
>> > On SeaBIOS, I too get "Protected mode has been entered !" followed by
>> > a call into resume with a shutdown code of "5".  The code then hangs -
>> > probably because I also used freedos.
>> 
>> Interestingly, if I apply this change:
>> 
>> --- a/src/resume.c
>> +++ b/src/resume.c
>> @@ -29,6 +29,9 @@ void VISIBLE16
>>  handle_resume(u8 status)
>>  {
>>      init_dma();
>> +    pic_setup();
>> +    asm volatile("lgdtw %cs:rombios32_gdt_48");
>> +    asm volatile("lidtw %cs:rmode_IDT_info");
> 
> Under bochs, with the above change, the screen doesn't hang, and the
> test program returns to real mode.  However, the system still hangs
> because it looks like bochs reset the f-segment. 

Can you elaborate on "hangs". With Bochs cvs i end up back in FreeDOS
shell, the keyboard works and i can try to execute commands.

> It looks like the
> test program triple-faults, and bochs does more than just reset the
> cpu in that case:
> 
> 00163682527e[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 05h, resetting
> 00163682527i[SYS  ] bx_pc_system_c::Reset(HARDWARE) called
> 00163682527i[CPU0 ] cpu hardware reset
> 00163682527i[APIC0] local apic in CPU 0 initializing
> 00163682527i[PLGIN] reset of 'unmapped' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'biosdev' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'harddrv' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'keyboard' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'serial' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'parallel' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'extfpuirq' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'gameport' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'speaker' plugin device by virtual method
> 00163682527i[PLGIN] reset of 'pci_ide' plugin device by virtual method
> 00163936082i[BIOS ] In resume (status=5)
> 
>> then FreeDOS is able to resume (I see irqs working).  However, the
>> screen is still stuck under qemu - not sure why.
> 
> I'm guessing something similar causes the video lockup on qemu.

If i try to execute commands after resume the bios freaks out:

00206894578i[BIOS ] In resume (status=5)
00219543399i[BIOS ] int13_harddisk: function 02, parameters out of range 0000/0000/0001!

If i change BX_RESET_HARDWARE to BX_RESET_SOFTWARE it works as expected.

- Sebastian




More information about the SeaBIOS mailing list