On 08.09.2008 17:34, Stefan Reinauer wrote:
- Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net [080908 17:17]:
- Declare the CAR area as reserved.
What is it again that keeps us from putting CAR area somewhere where there's no real RAM?
The current v3 stage1 design may fail. I don't know of a way to tell gcc that the stack moved in the middle of a function. Maybe there is one.
- When loading any LAR member which is not XIP, back up the memory that
would be clobbered to the reserved area at the top of memory.
Why don't we just put it into the reserved area to begin with, instead of doing those luxations? Creating a generic relocator does not make much sense, because stuff like the SeaBIOS area will not have to be preserved.
Unless you want a linker running on boot, you have to know the location of the code and data in advance. That means the reserved area would have to be independent of actual RAM size (i.e. not at the top of RAM) and machines with less RAM than the predesignated reserved area location would fail during runtime.
- Make sure to store any created tables only in specially reserved memory.
Now that's where it's getting really hard. Linux always keeps the first two pages reserved though. It also reserves most tables itself (which is why you get those page 0 reserved twice warnings when you put the mptable into page 0)
Decide on the first boot where to put the tables, then declare that area as reserved. Looks easy to me.
The SuperIO has GPIOs. These control various things, among them can be the power lines of devices, such as WiFi or even RAM. Software needs to be able to control RAM power, so either the southbridge GPIOs or the SuperIO GPIOs are used for that.
Cool. Could you add that very important information to the wiki somewhere?
I don't think it's magic,.. but where to put it? Can someone start an S3/Resume page?
Don't we already have one? Seems you're right and we have to start a page.
Regards, Carl-Daniel