diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2017-04-12 04:31:54 +0300 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2017-08-02 04:50:33 +0000 |
commit | fb32be4090f088da8db877d3dce42d95b50212b6 (patch) | |
tree | d8ab453bfd95b773b96be927b25e020bf0399f08 /src | |
parent | a18f58b862061cb68fd1c6afc862d31dd6ac69e3 (diff) | |
download | coreboot-fb32be4090f088da8db877d3dce42d95b50212b6.tar.xz |
AGESA: Implement EARLY_CBMEM_INIT
Boards without AGESA_LEGACY_WRAPPER gain EARLY_CBMEM_INIT.
This does not apply to family12 and family14 just yet, as
they do invalidate without write-back on CAR teardown.
Change-Id: I008356efa2bc3df0ed1f0720e225ecc7e9995127
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/19329
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/amd/agesa/romstage.c | 21 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/Kconfig | 2 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family10/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family12/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family14/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family15/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family15rl/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family15tn/Kconfig | 1 | ||||
-rw-r--r-- | src/northbridge/amd/agesa/family16kb/Kconfig | 1 |
9 files changed, 23 insertions, 7 deletions
diff --git a/src/cpu/amd/agesa/romstage.c b/src/cpu/amd/agesa/romstage.c index 54ef602d20..cb98e7b6d3 100644 --- a/src/cpu/amd/agesa/romstage.c +++ b/src/cpu/amd/agesa/romstage.c @@ -23,6 +23,7 @@ #include <console/console.h> #include <halt.h> #include <program_loading.h> +#include <romstage_handoff.h> #include <smp/node.h> #include <string.h> #include <northbridge/amd/agesa/agesa_helper.h> @@ -52,6 +53,8 @@ void * asmlinkage romstage_main(unsigned long bist) struct sysinfo romstage_state; struct sysinfo *cb = &romstage_state; u8 initial_apic_id = (u8) (cpuid_ebx(1) >> 24); + uintptr_t stack_top = CACHE_TMP_RAMTOP; + int cbmem_initted = 0; fill_sysinfo(cb); @@ -85,17 +88,23 @@ void * asmlinkage romstage_main(unsigned long bist) } - uintptr_t stack_top = CACHE_TMP_RAMTOP; - if (cb->s3resume) { - if (cbmem_recovery(1)) { - printk(BIOS_EMERG, "Unable to recover CBMEM\n"); - halt(); - } + if (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) || cb->s3resume) + cbmem_initted = !cbmem_recovery(cb->s3resume); + + if (cb->s3resume && !cbmem_initted) { + printk(BIOS_EMERG, "Unable to recover CBMEM\n"); + halt(); + } + + if (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) || cb->s3resume) { stack_top = romstage_ram_stack_base(HIGH_ROMSTAGE_STACK_SIZE, ROMSTAGE_STACK_CBMEM); stack_top += HIGH_ROMSTAGE_STACK_SIZE; } + if (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)) + romstage_handoff_init(cb->s3resume); + printk(BIOS_DEBUG, "Move CAR stack.\n"); return (void*)stack_top; } diff --git a/src/northbridge/amd/agesa/Kconfig b/src/northbridge/amd/agesa/Kconfig index d5cff805ef..4bf1d472b8 100644 --- a/src/northbridge/amd/agesa/Kconfig +++ b/src/northbridge/amd/agesa/Kconfig @@ -16,7 +16,7 @@ config NORTHBRIDGE_AMD_AGESA bool default CPU_AMD_AGESA - select LATE_CBMEM_INIT + select CBMEM_TOP_BACKUP if NORTHBRIDGE_AMD_AGESA diff --git a/src/northbridge/amd/agesa/family10/Kconfig b/src/northbridge/amd/agesa/family10/Kconfig index 51e4a9d9b2..c961275b01 100644 --- a/src/northbridge/amd/agesa/family10/Kconfig +++ b/src/northbridge/amd/agesa/family10/Kconfig @@ -18,6 +18,7 @@ config NORTHBRIDGE_AMD_AGESA_FAMILY10 select HAVE_DEBUG_RAM_SETUP select HAVE_DEBUG_SMBUS select HYPERTRANSPORT_PLUGIN_SUPPORT + select LATE_CBMEM_INIT if AGESA_LEGACY_WRAPPER if NORTHBRIDGE_AMD_AGESA_FAMILY10 diff --git a/src/northbridge/amd/agesa/family12/Kconfig b/src/northbridge/amd/agesa/family12/Kconfig index f967837b3c..ccae75773c 100644 --- a/src/northbridge/amd/agesa/family12/Kconfig +++ b/src/northbridge/amd/agesa/family12/Kconfig @@ -17,6 +17,7 @@ config NORTHBRIDGE_AMD_AGESA_FAMILY12 select HAVE_DEBUG_RAM_SETUP select HAVE_DEBUG_SMBUS select HYPERTRANSPORT_PLUGIN_SUPPORT + select LATE_CBMEM_INIT if NORTHBRIDGE_AMD_AGESA_FAMILY12 diff --git a/src/northbridge/amd/agesa/family14/Kconfig b/src/northbridge/amd/agesa/family14/Kconfig index 2e295ef528..4f6c51e0d9 100644 --- a/src/northbridge/amd/agesa/family14/Kconfig +++ b/src/northbridge/amd/agesa/family14/Kconfig @@ -14,6 +14,7 @@ ## config NORTHBRIDGE_AMD_AGESA_FAMILY14 bool + select LATE_CBMEM_INIT if NORTHBRIDGE_AMD_AGESA_FAMILY14 diff --git a/src/northbridge/amd/agesa/family15/Kconfig b/src/northbridge/amd/agesa/family15/Kconfig index c895b5d7ab..b9cf3a7653 100644 --- a/src/northbridge/amd/agesa/family15/Kconfig +++ b/src/northbridge/amd/agesa/family15/Kconfig @@ -18,6 +18,7 @@ config NORTHBRIDGE_AMD_AGESA_FAMILY15 select HAVE_DEBUG_RAM_SETUP select HAVE_DEBUG_SMBUS select HYPERTRANSPORT_PLUGIN_SUPPORT + select LATE_CBMEM_INIT if AGESA_LEGACY_WRAPPER if NORTHBRIDGE_AMD_AGESA_FAMILY15 diff --git a/src/northbridge/amd/agesa/family15rl/Kconfig b/src/northbridge/amd/agesa/family15rl/Kconfig index 2089a22541..656119f408 100644 --- a/src/northbridge/amd/agesa/family15rl/Kconfig +++ b/src/northbridge/amd/agesa/family15rl/Kconfig @@ -14,6 +14,7 @@ ## config NORTHBRIDGE_AMD_AGESA_FAMILY15_RL bool + select LATE_CBMEM_INIT if AGESA_LEGACY_WRAPPER if NORTHBRIDGE_AMD_AGESA_FAMILY15_RL diff --git a/src/northbridge/amd/agesa/family15tn/Kconfig b/src/northbridge/amd/agesa/family15tn/Kconfig index 26a99844e8..8c4bd43c6f 100644 --- a/src/northbridge/amd/agesa/family15tn/Kconfig +++ b/src/northbridge/amd/agesa/family15tn/Kconfig @@ -14,6 +14,7 @@ ## config NORTHBRIDGE_AMD_AGESA_FAMILY15_TN bool + select LATE_CBMEM_INIT if AGESA_LEGACY_WRAPPER if NORTHBRIDGE_AMD_AGESA_FAMILY15_TN diff --git a/src/northbridge/amd/agesa/family16kb/Kconfig b/src/northbridge/amd/agesa/family16kb/Kconfig index bafbe2df09..fcd14a1356 100644 --- a/src/northbridge/amd/agesa/family16kb/Kconfig +++ b/src/northbridge/amd/agesa/family16kb/Kconfig @@ -15,6 +15,7 @@ ## config NORTHBRIDGE_AMD_AGESA_FAMILY16_KB bool + select LATE_CBMEM_INIT if AGESA_LEGACY_WRAPPER if NORTHBRIDGE_AMD_AGESA_FAMILY16_KB |