[coreboot-gerrit] Patch set updated for coreboot: 1263abd CBMEM: Tidy up CAR migration
Kyösti Mälkki (kyosti.malkki@gmail.com)
gerrit at coreboot.org
Thu Dec 18 20:54:33 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 1263abd8e4e50c7b72de7bc5cdf59e8887f113df
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date: Wed Dec 17 23:05:13 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/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/boot/Makefile.inc | 3 +--
src/arch/x86/boot/cbmem.c | 9 +++++++++
src/arch/x86/include/arch/early_variables.h | 1 -
src/cpu/x86/Makefile.inc | 3 +--
src/lib/Makefile.inc | 3 +--
src/lib/cbmem.c | 3 ++-
src/lib/dynamic_cbmem.c | 10 ++--------
10 files changed, 16 insertions(+), 27 deletions(-)
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/boot/Makefile.inc b/src/arch/x86/boot/Makefile.inc
index 9a68d81..9f06b4f 100644
--- a/src/arch/x86/boot/Makefile.inc
+++ b/src/arch/x86/boot/Makefile.inc
@@ -1,8 +1,7 @@
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
-romstage-$(CONFIG_EARLY_CBMEM_INIT) += cbmem.c
-romstage-$(CONFIG_BROKEN_CAR_MIGRATE) += cbmem.c
+romstage-y += cbmem.c
endif # CONFIG_ARCH_ROMSTAGE_X86_32
diff --git a/src/arch/x86/boot/cbmem.c b/src/arch/x86/boot/cbmem.c
index c0297d0..9f00e26 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,14 @@ void *cbmem_top(void)
void cbmem_arch_init(void)
{
+#if defined(__PRE_RAM__)
+#if IS_ENABLED(CONFIG_CACHE_AS_RAM) && !IS_ENABLED(CONFIG_BROKEN_CAR_MIGRATE)
+ /* Migrate car.global_data. */
+ car_migrate_variables();
+#endif
+#endif
+
+ /* Migrate preram_cbmem_console. */
__cbmemc_relocate();
#if !defined(__PRE_RAM__)
diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h
index c850a84..e913626 100644
--- a/src/arch/x86/include/arch/early_variables.h
+++ b/src/arch/x86/include/arch/early_variables.h
@@ -53,7 +53,6 @@ void car_migrate_variables(void);
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/cpu/x86/Makefile.inc b/src/cpu/x86/Makefile.inc
index 418b5d7..2347f88 100644
--- a/src/cpu/x86/Makefile.inc
+++ b/src/cpu/x86/Makefile.inc
@@ -1,6 +1,5 @@
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
-romstage-$(CONFIG_EARLY_CBMEM_INIT) += car.c
-romstage-$(CONFIG_BROKEN_CAR_MIGRATE) += car.c
+romstage-$(CONFIG_CACHE_AS_RAM) += car.c
endif
subdirs-$(CONFIG_PARALLEL_MP) += name
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index b7daea1..2b5c203 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -75,8 +75,7 @@ ramstage-y += dynamic_cbmem.c
romstage-y += dynamic_cbmem.c
else
ramstage-y += cbmem.c
-romstage-$(CONFIG_EARLY_CBMEM_INIT) += cbmem.c
-romstage-$(CONFIG_BROKEN_CAR_MIGRATE) += cbmem.c
+romstage-y += cbmem.c
endif # CONFIG_DYNAMIC_CBMEM
ramstage-y += cbmem_info.c
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