On 12/21/2013 07:44 PM, Rudolf Marek wrote:
Hi Paul,
I think I have seen your previous log that get_top_of_mem() was missing. maybe someone broke it some time ago. I did not try with this board since I have the new fm2 board.
The get_top_of_ram() is in early_car.c in southbridge/via/k8t890
It has still CONFIG_HAVE_ACPI_RESUME I seen some efforts of removing this... Not sure what is the state now.
Please check if you dont see the messages WARNING: you need to define get_top_of_ram()
The function is indeed missing from ramstage but that is not relevant here. In the logs I have seen, S3 resume path finds valid CBMEM region.
This is flagged as a warning because ramstage has no early access to CBMEM storage. For example, CBMEM console is first collected in low memory and later copied to CBMEM area.
The top of ram mechanism is quite simple. Since this chipset has integrated VGA it is not possible to just read TOP or TOM2 MSR. Instead during the initialization a top of ram is written via backup_top_of_ram() to the NVRAM at offset K8T890_NVRAM_TOP_OF_RAM.
Actually, get_top_of_ram() on this platform is a complex beast. With GFXUMA, this should be a simple function of total amount of memory installed, and this is managed without any nvram use on Intel platforms.
Second case, one without GFXUMA, is the complicated one. Probably doable without nvram too if it had pre-defined IO window allocation below 4GB.
I have some work started to get this, and EARLY_CBMEM_INIT or DYNAMIC_CBMEM for AMD platforms.
You could also check if you are not hitting some errata of the CPU or if CBMEM console does not interfere.
We did pickup some possible CBMEM console interference from SeaBIOS, but we did not hit that problem here.
Thanks
Rudolf
Kyösti