-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
I have some questions:
1) is 0x600 as base for lowmem trampoline safe? it always makes me wonder, this was the reason why I did the realmode code which runs above 1MB ;) Maybe we can have that too and only copy the trampoline to the highmem save area and execute it there. This would mean all memory bellow 1MB is untouched.
2)
You seem to follow different way how to detect S3.
I had in the code for all boards (like memory controller init)
ifdef ACPI_IS_WAKEUP_EARLY <------>int suspend = acpi_is_wakeup_early(); #else <------>int suspend = 0; #endif
And for per chipset CAR code I defined a function which is doing it:
define ACPI_IS_WAKEUP_EARLY 1
int acpi_is_wakeup_early(void) { device_t dev; u16 tmp; print_debug("IN TEST WAKEUP\n"); ...
And for the normal ram stage there is:
/* this is to be filled by SB code - startup value what was found */
u8 acpi_slp_type = 0;
int acpi_is_wakeup(void) { <------>return (acpi_slp_type == 3); }
Which is backup what was the sleep type. I think this is how you deal with that using the scratchpads.
3) I think your SMM code corrupts lowmem, or I have not seen any backup of that mem? Maybe I'm wrong?
4) Changes to the stack
I think you changed the stack to some other place, not sure how to change that for K8 CAR? Also there is an remaining issue if CAR gets flushed to memory or not. I think Carl-Daniel had some patch for this.
5) Don't understand much the cbmem_reinit((u64)high_ram_base)) in CAR code, you seem to take the TOM from PCI reg but this gets more complicated for UMA, I dont know how to do that for K8. Partially because the high_ram_base gets dynamically lowered in K8M890 resource code :/ In other words there is no easy way for me to find it in memory. Except some hacks like make the cbmem look like some proprietary ACPI table and walk acpi tables as for we do for resume but in car stage just to find out where the tables are...
I think only issue #5 is a real problem.
Rudolf