[coreboot-gerrit] Patch set updated for coreboot: 7335299 CBMEM: Tidy up CAR migration
Kyösti Mälkki (kyosti.malkki@gmail.com)
gerrit at coreboot.org
Fri Dec 19 14:10:58 CET 2014
Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7860
-gerrit
commit 7335299c7d941311f14de1aac8d685c059c2f774
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date: Fri Dec 19 07:53:42 2014 +0200
CBMEM: Tidy up CAR migration
Move the CAR migration call to arch -specific part of CBMEM init,
it is truly a x86 specific thing.
Change-Id: I715417e54f197b8745e0670d6b900a5660178141
Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
src/Kconfig | 14 --------------
src/arch/arm/include/arch/early_variables.h | 1 -
src/arch/arm64/include/arch/early_variables.h | 5 -----
src/arch/riscv/include/arch/early_variables.h | 5 -----
src/arch/x86/Kconfig | 15 +++++++++++++++
src/arch/x86/boot/cbmem.c | 4 ++++
src/lib/cbmem.c | 3 ++-
src/lib/dynamic_cbmem.c | 10 ++--------
8 files changed, 23 insertions(+), 34 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig
index 32d4820..33647a2 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -151,20 +151,6 @@ config INCLUDE_CONFIG_FILE
config EARLY_CBMEM_INIT
def_bool !LATE_CBMEM_INIT
-config LATE_CBMEM_INIT
- def_bool n
- help
- Enable this in chipset's Kconfig if northbridge does not implement
- early get_top_of_ram() call for romstage. CBMEM tables will be
- allocated late in ramstage, after PCI devices resources are known.
-
-config BROKEN_CAR_MIGRATE
- def_bool LATE_CBMEM_INIT
- help
- Many boards use CAR_GLOBAL but have no EARLY_CBMEM_INIT and
- manage CAR migration on S3 resume path only. Couple boards use
- CAR_GLOBAL and never do CAR migration.
-
config DYNAMIC_CBMEM
bool
default n
diff --git a/src/arch/arm/include/arch/early_variables.h b/src/arch/arm/include/arch/early_variables.h
index 5b58baa..539b572 100644
--- a/src/arch/arm/include/arch/early_variables.h
+++ b/src/arch/arm/include/arch/early_variables.h
@@ -26,6 +26,5 @@
static inline void *car_get_var_ptr(void *var) { return var; }
#define car_get_var(var) (var)
#define car_set_var(var, val) do { (var) = (val); } while (0)
-static inline void car_migrate_variables(void) { }
#endif
diff --git a/src/arch/arm64/include/arch/early_variables.h b/src/arch/arm64/include/arch/early_variables.h
index 3d9fa26..539b572 100644
--- a/src/arch/arm64/include/arch/early_variables.h
+++ b/src/arch/arm64/include/arch/early_variables.h
@@ -20,16 +20,11 @@
#ifndef ARCH_EARLY_VARIABLES_H
#define ARCH_EARLY_VARIABLES_H
-#if CONFIG_CAR_MIGRATION
- #error "This is ARM, silly... we don't have CAR here."
-#endif
-
#define CAR_GLOBAL
#define CAR_MIGRATE(migrate_fn_)
static inline void *car_get_var_ptr(void *var) { return var; }
#define car_get_var(var) (var)
#define car_set_var(var, val) do { (var) = (val); } while (0)
-static inline void car_migrate_variables(void) { }
#endif
diff --git a/src/arch/riscv/include/arch/early_variables.h b/src/arch/riscv/include/arch/early_variables.h
index 3a1f20d..539b572 100644
--- a/src/arch/riscv/include/arch/early_variables.h
+++ b/src/arch/riscv/include/arch/early_variables.h
@@ -20,16 +20,11 @@
#ifndef ARCH_EARLY_VARIABLES_H
#define ARCH_EARLY_VARIABLES_H
-#if defined(CONFIG_CAR_MIGRATION) && CONFIG_CAR_MIGRATION
- #error "This is RISCV, silly... we don't have CAR here."
-#endif
-
#define CAR_GLOBAL
#define CAR_MIGRATE(migrate_fn_)
static inline void *car_get_var_ptr(void *var) { return var; }
#define car_get_var(var) (var)
#define car_set_var(var, val) do { (var) = (val); } while (0)
-static inline void car_migrate_variables(void) { }
#endif
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 56d8f88..b6791ed 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -47,6 +47,21 @@ config ROMCC
bool
default n
+config BROKEN_CAR_MIGRATE
+ def_bool n
+ help
+ Many boards use CAR_GLOBAL but have no EARLY_CBMEM_INIT and
+ manage CAR migration on S3 resume path only. Couple boards use
+ CAR_GLOBAL and never do CAR migration.
+
+config LATE_CBMEM_INIT
+ def_bool n
+ select BROKEN_CAR_MIGRATE
+ help
+ Enable this in chipset's Kconfig if northbridge does not implement
+ early get_top_of_ram() call for romstage. CBMEM tables will be
+ allocated late in ramstage, after PCI devices resources are known.
+
config PC80_SYSTEM
bool
default y if ARCH_X86
diff --git a/src/arch/x86/boot/cbmem.c b/src/arch/x86/boot/cbmem.c
index ba80013..1599840 100644
--- a/src/arch/x86/boot/cbmem.c
+++ b/src/arch/x86/boot/cbmem.c
@@ -21,6 +21,7 @@
#include <cpu/x86/gdt.h>
#include <cbmem.h>
#include <arch/acpi.h>
+#include <arch/early_variables.h>
#if !CONFIG_DYNAMIC_CBMEM
void get_cbmem_table(uint64_t *base, uint64_t *size)
@@ -73,6 +74,9 @@ void *cbmem_top(void)
void cbmem_arch_init(void)
{
+ /* Migrate car.global_data. */
+ car_migrate_variables();
+
/* Migrate preram_cbmem_console. */
__cbmemc_relocate();
diff --git a/src/lib/cbmem.c b/src/lib/cbmem.c
index 11d5cab..5ea8d88 100644
--- a/src/lib/cbmem.c
+++ b/src/lib/cbmem.c
@@ -242,8 +242,9 @@ int cbmem_recovery(int is_wakeup)
cbmem_fail_resume();
}
- car_migrate_variables();
+ /* Complete migration to CBMEM. */
cbmem_arch_init();
+
return !found;
}
diff --git a/src/lib/dynamic_cbmem.c b/src/lib/dynamic_cbmem.c
index 3fe7c4d..fbd6148 100644
--- a/src/lib/dynamic_cbmem.c
+++ b/src/lib/dynamic_cbmem.c
@@ -170,19 +170,14 @@ void cbmem_initialize_empty(void)
printk(BIOS_DEBUG, "CBMEM: root @ %p %d entries.\n",
root, root->max_entries);
- /* Migrate cache-as-ram variables. */
- car_migrate_variables();
-
+ /* Complete migration to CBMEM. */
cbmem_arch_init();
-
}
static inline int cbmem_fail_recovery(void)
{
cbmem_initialize_empty();
cbmem_fail_resume();
- /* Migrate cache-as-ram variables. */
- car_migrate_variables();
return 1;
}
@@ -249,8 +244,7 @@ int cbmem_initialize(void)
root->locked = 1;
#endif
- /* Migrate cache-as-ram variables. */
- car_migrate_variables();
+ /* Complete migration to CBMEM. */
cbmem_arch_init();
/* Recovery successful. */
More information about the coreboot-gerrit
mailing list