Tom had brought up some questions about S3 resume. In S3, memory is on but all else is off. The question is how to restart from this.

On ACPI systems, all this stuff is BIOS centric. I don't want to do that. ACPI is a very dangerous tool, given the AML interpreter. The dangers of ACPI viruses are well known and their use is a matter of time.

How I would want to do S3: make it linux-centric. NO AML interpreter.

To start S3, Linux saves state of universe to ram, Linux saves PCI config space to ram. Linux saves whatever it has to save to RAM. Linux would do much of what it does now for software suspend to disk, save for the 'save ram to disk' step.

Right before entering S3, Linux writes the string: "RESUME S3 PC=0xDEADBEEF,PTE=00x1004000 S3 RESUME CHECKSUM" to address 0 or somewhere in page 0. Or, we could write something like:
(RESUME (STATE S3) (PC 0xdeadbeef) (PTE 0x1001000))CHECKSUM
since that can expand as needed. Either will work: comma-seperated-variables with = or s-expressions.

Linux then puts the hardware to S3.

On restart, linuxbios code turns on ram controller so that GX can talk to RAM again. LinuxBIOS does other minimal, but required, startup.

Here's where the power of an open source BIOS comes to our aid. We have complete control. We can add a step to the very early LinuxBIOS OLPC startup code to look for the S3 RESUME string.

Then we add a step to the OLPC ROMCC code. We check for the above string in page 0. If found, we copy and then zero out that string (so we don't get stuck in a loop), then we do what we need to do to re-enter Linux, and then Linux brings the system back up.

I think this S3 resume would be far faster than any resume based on AML bytecodes. The LinuxBIOS step would be very fast -- almost 100% of linuxbios would be bypassed. Linux could then very quickly bring the rest of the system back up.

Comments?

ron
_______________________________________________
Devel mailing list
[email protected]
http://mailman.laptop.org/mailman/listinfo/devel

Reply via email to