qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: POST failure (loop) with isapc and seabios


From: Sebastian Herbszt
Subject: Re: [Qemu-devel] Re: POST failure (loop) with isapc and seabios
Date: Wed, 25 Nov 2009 22:08:16 +0100

Jamie Lokier wrote:
What about DOS and DOS-extender programs which do a soft reset by
triple-faulting the CPU (see Sebastian's notes on i440FX behaviour),
and asking the keyboard controller?

Both of those methods are used by DOS and DOS-extender programs to
switch from protected mode to real mode.  Keyboard controller was used
originally, but then someone figured out that triple fault can be used
(on most PCs) and is faster.

The switch to real mode is done by writing somewhere the BIOS checks,
so the BIOS just branches back to the application.

I think that may imply it has to be a "soft reset" as described by
Sebastian in the i440FX description, and I would think the BIOS must
not be reloaded.

But the BIOS must be reloaded from ROM, I'm guessing, if the keyboard
controller method is used and the word asking for a branch back to the
application has not been set.  Because that's how a modern OS (if not
using ACPI) asks for a system reset.

Do you think the above is (a) correct, and (b) what's implemented?

The 440fx spec says "External logic is required to combine the PMC soft
reset with the keyboard controller and I/O port 92 soft reset generation."
I conclude from this, that the keyboard controller generates a soft reset too.

The ACPI spec says "The optional ACPI reset mechanism specifies a standard
mechanism that provides a complete system reset. When implemented, this
mechanism must reset the entire system. This includes processors, core logic,
all buses, and all peripherals. From an OSPM perspective, asserting the reset
mechanism is the logical equivalent to power cycling the machine. Upon gaining
control after a reset, OSPM will perform actions in like manner to a cold boot."
I think this power cycle behaviour is what "system_reset" should implement.

- Sebastian





reply via email to

[Prev in Thread] Current Thread [Next in Thread]