[coreboot-gerrit] Patch set updated for coreboot: 6cf9235 cbmem: Unify CBMEM init tasks with CBMEM_INIT_HOOK() API

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Mon Jun 8 23:45:36 CEST 2015


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7878

-gerrit

commit 6cf9235a77d9b52a1c5bbc6469ba243c30d19fc0
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Wed Jan 7 04:48:43 2015 +0200

    cbmem: Unify CBMEM init tasks with CBMEM_INIT_HOOK() API
    
    Squashed and adjusted two changes from chromium.git. Covers
    CBMEM init for ROMTAGE and RAMSTAGE.
    
    cbmem: Unify random on-CBMEM-init tasks under common CBMEM_INIT_HOOK() API
    
    There are several use cases for performing a certain task when CBMEM is
    first set up (usually to migrate some data into it that was previously
    kept in BSS/SRAM/hammerspace), and unfortunately we handle each of them
    differently: timestamp migration is called explicitly from
    cbmem_initialize(), certain x86-chipset-specific tasks use the
    CAR_MIGRATION() macro to register a hook, and the CBMEM console is
    migrated through a direct call from romstage (on non-x86 and SandyBridge
    boards).
    
    This patch decouples the CAR_MIGRATION() hook mechanism from
    cache-as-RAM and rechristens it to CBMEM_INIT_HOOK(), which is a clearer
    description of what it really does. All of the above use cases are
    ported to this new, consistent model, allowing us to have one less line
    of boilerplate in non-CAR romstages.
    
    BRANCH=None
    BUG=None
    TEST=Built and booted on Nyan_Blaze and Falco with and without
    CONFIG_CBMEM_CONSOLE. Confirmed that 'cbmem -c' shows the full log after
    boot (and the resume log after S3 resume on Falco). Compiled for Parrot,
    Stout and Lumpy.
    
    Original-Change-Id: I1681b372664f5a1f15c3733cbd32b9b11f55f8ea
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/232612
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    cbmem: Extend hooks to ramstage, fix timestamp synching
    
    Commit 7dd5bbd71 (cbmem: Unify random on-CBMEM-init tasks under common
    CBMEM_INIT_HOOK() API) inadvertently broke ramstage timestamps since
    timestamp_sync() was no longer called there. Oops.
    
    This patch fixes the issue by extending the CBMEM_INIT_HOOK() mechanism
    to the cbmem_initialize() call in ramstage. The macro is split into
    explicit ROMSTAGE_/RAMSTAGE_ versions to make the behavior as clear as
    possible and prevent surprises (although just using a single macro and
    relying on the Makefiles to link an object into all appropriate stages
    would also work).
    
    This allows us to get rid of the explicit cbmemc_reinit() in ramstage
    (which I somehow accounted for in the last patch without realizing that
    timestamps work exactly the same way...), and replace the older and less
    flexible cbmem_arch_init() mechanism.
    
    Also added a size assertion for the pre-RAM CBMEM console to memlayout
    that could prevent a very unlikely buffer overflow I just noticed.
    
    BRANCH=None
    BUG=None
    TEST=Booted on Pinky and Falco, confirmed that ramstage timestamps once
    again show up. Compile-tested for Rambi and Samus.
    
    Original-Change-Id: If907266c3f20dc3d599b5c968ea5b39fe5c00e9c
    Signed-off-by: Julius Werner <jwerner at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/233533
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    Change-Id: I1be89bafacfe85cba63426e2d91f5d8d4caa1800
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
---
 src/arch/arm/include/arch/early_variables.h    |  1 -
 src/arch/arm64/include/arch/early_variables.h  |  1 -
 src/arch/x86/boot/cbmem.c                      | 22 ----------------------
 src/arch/x86/boot/gdt.c                        |  3 ++-
 src/arch/x86/include/arch/early_variables.h    | 12 ------------
 src/arch/x86/init/romstage.ld                  |  9 ++++-----
 src/cpu/x86/car.c                              | 18 +++---------------
 src/drivers/usb/ehci_debug.c                   |  2 +-
 src/include/cbmem.h                            | 22 ++++++++++++++++++++++
 src/include/console/cbmem_console.h            |  6 ------
 src/include/cpu/x86/gdt.h                      |  3 ---
 src/include/symbols.h                          |  4 ++++
 src/include/timestamp.h                        |  2 --
 src/lib/cbmem_common.c                         | 22 ++++++++++------------
 src/lib/cbmem_console.c                        |  7 +++----
 src/lib/ramstage.ld                            |  3 +++
 src/lib/rmodule.ld                             |  3 +++
 src/lib/romstage.ld                            |  4 ++++
 src/lib/timestamp.c                            |  7 ++++---
 src/soc/intel/baytrail/romstage/romstage.c     |  2 +-
 src/soc/intel/broadwell/romstage/power_state.c |  2 +-
 src/soc/nvidia/tegra132/romstage.c             |  2 --
 22 files changed, 65 insertions(+), 92 deletions(-)

diff --git a/src/arch/arm/include/arch/early_variables.h b/src/arch/arm/include/arch/early_variables.h
index 725650a..5e09448 100644
--- a/src/arch/arm/include/arch/early_variables.h
+++ b/src/arch/arm/include/arch/early_variables.h
@@ -22,7 +22,6 @@
 
 #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_sync_var(var) (var)
diff --git a/src/arch/arm64/include/arch/early_variables.h b/src/arch/arm64/include/arch/early_variables.h
index 725650a..5e09448 100644
--- a/src/arch/arm64/include/arch/early_variables.h
+++ b/src/arch/arm64/include/arch/early_variables.h
@@ -22,7 +22,6 @@
 
 #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_sync_var(var) (var)
diff --git a/src/arch/x86/boot/cbmem.c b/src/arch/x86/boot/cbmem.c
index a9127d7..e279db9 100644
--- a/src/arch/x86/boot/cbmem.c
+++ b/src/arch/x86/boot/cbmem.c
@@ -20,12 +20,6 @@
 #include <cbmem.h>
 #include <arch/acpi.h>
 
-/* FIXME: Remove after CBMEM_INIT_HOOKS. */
-#include <arch/early_variables.h>
-#include <cpu/x86/gdt.h>
-#include <console/cbmem_console.h>
-#include <timestamp.h>
-
 #if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)
 
 #if !defined(__PRE_RAM__)
@@ -71,22 +65,6 @@ void *cbmem_top(void)
 
 #endif /* LATE_CBMEM_INIT */
 
-void cbmem_run_init_hooks(void)
-{
-	/* Migrate car.global_data. */
-	car_migrate_variables();
-
-#if !defined(__PRE_RAM__)
-	/* Relocate CBMEM console. */
-	cbmemc_reinit();
-
-	/* Relocate timestamps stash. */
-	timestamp_reinit();
-
-	move_gdt();
-#endif
-}
-
 /* Something went wrong, our high memory area got wiped */
 void cbmem_fail_resume(void)
 {
diff --git a/src/arch/x86/boot/gdt.c b/src/arch/x86/boot/gdt.c
index 9d9517a..e13d3bc 100644
--- a/src/arch/x86/boot/gdt.c
+++ b/src/arch/x86/boot/gdt.c
@@ -32,7 +32,7 @@ struct gdtarg {
 /* Copy GDT to new location and reload it.
  * FIXME: We only do this for BSP CPU.
  */
-void move_gdt(void)
+static void move_gdt(void)
 {
 	void *newgdt;
 	u16 num_gdt_bytes = (u32)&gdt_end - (u32)&gdt;
@@ -55,3 +55,4 @@ void move_gdt(void)
 	__asm__ __volatile__ ("lgdt %0\n\t" : : "m" (gdtarg));
 	printk(BIOS_DEBUG, "ok\n");
 }
+RAMSTAGE_CBMEM_INIT_HOOK(move_gdt)
diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h
index bfb1201..d9f1cd7 100644
--- a/src/arch/x86/include/arch/early_variables.h
+++ b/src/arch/x86/include/arch/early_variables.h
@@ -29,13 +29,6 @@ asm(".previous");
 #define CAR_GLOBAL __attribute__((used,section(".car.global_data#")))
 #endif /* __clang__ */
 
-#define CAR_MIGRATE_ATTR __attribute__ ((used,section (".car.migrate")))
-
-/* Call migrate_fn_() when CAR globals are migrated. */
-#define CAR_MIGRATE(migrate_fn_) \
-	static void (* const migrate_fn_ ## _ptr)(void) CAR_MIGRATE_ATTR = \
-	migrate_fn_;
-
 /* Get the correct pointer for the CAR global variable. */
 void *car_get_var_ptr(void *var);
 
@@ -50,17 +43,12 @@ void *car_sync_var_ptr(void *var);
 #define car_set_var(var, val) \
 	do { car_get_var(var) = (val); } while(0)
 
-/* Migrate the CAR variables to memory. */
-void car_migrate_variables(void);
-
 #else
 #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_sync_var(var) (var)
 #define car_set_var(var, val) do { (var) = (val); } while (0)
-static inline void car_migrate_variables(void) { }
 #endif
 
 #endif
diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld
index ae7049b..74e665f 100644
--- a/src/arch/x86/init/romstage.ld
+++ b/src/arch/x86/init/romstage.ld
@@ -34,15 +34,14 @@ SECTIONS
 		*(.text);
 		*(.text.*);
 		*(.rom.data);
+		. = ALIGN(4);
+		_cbmem_init_hooks = .;
+		KEEP(*(.rodata.cbmem_init_hooks));
+		_ecbmem_init_hooks = .;
 		*(.rodata);
 		*(.rodata.*);
 		*(.rom.data.*);
 		. = ALIGN(16);
-		_car_migrate_start = .;
-		KEEP(*(.car.migrate));
-		LONG(0);
-		_car_migrate_end = .;
-		. = ALIGN(16);
 		_erom = .;
 	}
 
diff --git a/src/cpu/x86/car.c b/src/cpu/x86/car.c
index 165a0e6..ffcf0db 100644
--- a/src/cpu/x86/car.c
+++ b/src/cpu/x86/car.c
@@ -136,21 +136,9 @@ static void do_car_migrate_variables(void)
 	car_migrated = ~0;
 }
 
-static void do_car_migrate_hooks(void)
+static void car_migrate_variables(void)
 {
-	car_migration_func_t *migrate_func;
-	/* Call all the migration functions. */
-	migrate_func = &_car_migrate_start;
-	while (*migrate_func != NULL) {
-		(*migrate_func)();
-		migrate_func++;
-	}
-}
-
-void car_migrate_variables(void)
-{
-	if (!IS_ENABLED(PLATFORM_USES_FSP1_0))
+	if (!IS_ENABLED(CONFIG_BROKEN_CAR_MIGRATE) && !IS_ENABLED(PLATFORM_USES_FSP1_0))
 		do_car_migrate_variables();
-
-	do_car_migrate_hooks();
 }
+ROMSTAGE_CBMEM_INIT_HOOK(car_migrate_variables)
diff --git a/src/drivers/usb/ehci_debug.c b/src/drivers/usb/ehci_debug.c
index 68fd0fa..a6de8b2 100644
--- a/src/drivers/usb/ehci_debug.c
+++ b/src/drivers/usb/ehci_debug.c
@@ -682,7 +682,7 @@ static void migrate_ehci_debug(void)
 	memcpy(dbg_info_cbmem, dbg_info, sizeof(*dbg_info));
 	car_set_var(glob_dbg_info_p, dbg_info_cbmem);
 }
-CAR_MIGRATE(migrate_ehci_debug);
+ROMSTAGE_CBMEM_INIT_HOOK(migrate_ehci_debug);
 #endif
 
 int dbgp_ep_is_active(struct dbgp_pipe *pipe)
diff --git a/src/include/cbmem.h b/src/include/cbmem.h
index 7afe960..55b04b4 100644
--- a/src/include/cbmem.h
+++ b/src/include/cbmem.h
@@ -22,6 +22,7 @@
 #define _CBMEM_H_
 
 #include <cbmem_id.h>
+#include <rules.h>
 
 #if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME) && \
 	! IS_ENABLED(CONFIG_RELOCATABLE_RAMSTAGE)
@@ -112,6 +113,7 @@ void *cbmem_add(u32 id, u64 size);
 /* Find a cbmem entry of a given id. These return NULL on failure. */
 void *cbmem_find(u32 id);
 
+typedef void (* const cbmem_init_hook_t)(void);
 void cbmem_run_init_hooks(void);
 void cbmem_fail_resume(void);
 
@@ -122,6 +124,26 @@ void cbmem_add_bootmem(void);
 void cbmem_list(void);
 #endif /* __PRE_RAM__ */
 
+#if ENV_RAMSTAGE
+#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \
+	init_fn_ ## _unused_ __attribute__((unused)) = init_fn_;
+#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) \
+	static cbmem_init_hook_t init_fn_ ## _ptr_ __attribute__((used, \
+	section(".rodata.cbmem_init_hooks"))) = init_fn_;
+#elif ENV_ROMSTAGE
+#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) \
+	static cbmem_init_hook_t init_fn_ ## _ptr_ __attribute__((used, \
+	section(".rodata.cbmem_init_hooks"))) = init_fn_;
+#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \
+	init_fn_ ## _unused_ __attribute__((unused)) = init_fn_;
+#else
+#define ROMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \
+	init_fn_ ## _unused_ __attribute__((unused)) = init_fn_;
+#define RAMSTAGE_CBMEM_INIT_HOOK(init_fn_) static cbmem_init_hook_t \
+	init_fn_ ## _unused2_ __attribute__((unused)) = init_fn_;
+#endif /* ENV_RAMSTAGE */
+
+
 /* These are for compatibility with old boards only. Any new chipset and board
  * must implement cbmem_top() for both romstage and ramstage to support
  * early features like COLLECT_TIMESTAMPS and CBMEM_CONSOLE.
diff --git a/src/include/console/cbmem_console.h b/src/include/console/cbmem_console.h
index e9ec66e..06013f2 100644
--- a/src/include/console/cbmem_console.h
+++ b/src/include/console/cbmem_console.h
@@ -25,12 +25,6 @@
 void cbmemc_init(void);
 void cbmemc_tx_byte(unsigned char data);
 
-#if CONFIG_CONSOLE_CBMEM
-void cbmemc_reinit(void);
-#else
-static inline void cbmemc_reinit(void) {}
-#endif
-
 #define __CBMEM_CONSOLE_ENABLE__	CONFIG_CONSOLE_CBMEM && \
 	(ENV_RAMSTAGE || (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && \
 	(ENV_ROMSTAGE || (ENV_BOOTBLOCK && CONFIG_BOOTBLOCK_CONSOLE))))
diff --git a/src/include/cpu/x86/gdt.h b/src/include/cpu/x86/gdt.h
index 8525a3c..a96b0e4 100644
--- a/src/include/cpu/x86/gdt.h
+++ b/src/include/cpu/x86/gdt.h
@@ -28,7 +28,4 @@ extern char _secondary_gdt_addr[];
 extern char _secondary_start[];
 extern char _secondary_start_end[];
 
-/* Defined in src/arch/x86/boot/gdt.c */
-void move_gdt(void);
-
 #endif /* CPU_X86_GDT */
diff --git a/src/include/symbols.h b/src/include/symbols.h
index 4a47de1..9102e82 100644
--- a/src/include/symbols.h
+++ b/src/include/symbols.h
@@ -33,6 +33,10 @@ extern u8 _epreram_cbmem_console[];
 #define _preram_cbmem_console_size \
 		(_epreram_cbmem_console - _preram_cbmem_console)
 
+extern u8 _cbmem_init_hooks[];
+extern u8 _ecbmem_init_hooks[];
+#define _cbmem_init_hooks_size (_ecbmem_init_hooks - _cbmem_init_hooks)
+
 extern u8 _stack[];
 extern u8 _estack[];
 #define _stack_size (_estack - _stack)
diff --git a/src/include/timestamp.h b/src/include/timestamp.h
index d9afeea..a248ea4 100644
--- a/src/include/timestamp.h
+++ b/src/include/timestamp.h
@@ -92,12 +92,10 @@ enum timestamp_id {
 void timestamp_init(uint64_t base);
 void timestamp_add(enum timestamp_id id, uint64_t ts_time);
 void timestamp_add_now(enum timestamp_id id);
-void timestamp_reinit(void);
 #else
 #define timestamp_init(base)
 #define timestamp_add(id, time)
 #define timestamp_add_now(id)
-#define timestamp_reinit()
 #endif
 
 /* Implemented by the architecture code */
diff --git a/src/lib/cbmem_common.c b/src/lib/cbmem_common.c
index e9beb5f..496bafa 100644
--- a/src/lib/cbmem_common.c
+++ b/src/lib/cbmem_common.c
@@ -20,30 +20,28 @@
 #include <cbmem.h>
 #include <bootstate.h>
 #include <rules.h>
+#include <symbols.h>
 #if IS_ENABLED(CONFIG_ARCH_X86) && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
 #include <arch/acpi.h>
 #endif
 
-/* FIXME: Remove after CBMEM_INIT_HOOKS. */
-#include <console/cbmem_console.h>
-#include <timestamp.h>
-
-
-/* FIXME: Replace with CBMEM_INIT_HOOKS API. */
-#if !IS_ENABLED(CONFIG_ARCH_X86)
 void cbmem_run_init_hooks(void)
 {
-	/* Relocate CBMEM console. */
-	cbmemc_reinit();
+	cbmem_init_hook_t *init_hook_ptr = (cbmem_init_hook_t*) &_cbmem_init_hooks;
+	cbmem_init_hook_t *einit_hook_ptr =  (cbmem_init_hook_t*) &_ecbmem_init_hooks;
 
-	/* Relocate timestamps stash. */
-	timestamp_reinit();
+	if (_cbmem_init_hooks_size == 0)
+		return;
+
+	while (init_hook_ptr !=  einit_hook_ptr) {
+		(*init_hook_ptr)();
+		init_hook_ptr++;
+	}
 }
 
 void __attribute__((weak)) cbmem_fail_resume(void)
 {
 }
-#endif
 
 #if ENV_RAMSTAGE && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
 static void init_cbmem_post_device(void *unused)
diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c
index e9607f3..4866454 100644
--- a/src/lib/cbmem_console.c
+++ b/src/lib/cbmem_console.c
@@ -208,7 +208,7 @@ static void copy_console_buffer(struct cbmem_console *old_cons_p,
 	new_cons_p->buffer_cursor = cursor;
 }
 
-void cbmemc_reinit(void)
+static void cbmemc_reinit(void)
 {
 	struct cbmem_console *cbm_cons_p;
 	const size_t size = CONFIG_CONSOLE_CBMEM_BUFFER_SIZE;
@@ -233,6 +233,8 @@ void cbmemc_reinit(void)
 
 	init_console_ptr(cbm_cons_p, size, flags);
 }
+ROMSTAGE_CBMEM_INIT_HOOK(cbmemc_reinit)
+RAMSTAGE_CBMEM_INIT_HOOK(cbmemc_reinit)
 
 #if IS_ENABLED(CONFIG_CONSOLE_CBMEM_DUMP_TO_UART)
 void cbmem_dump_console(void)
@@ -249,6 +251,3 @@ void cbmem_dump_console(void)
 		uart_tx_byte(0, cbm_cons_p->buffer_body[cursor]);
 }
 #endif
-
-/* Call cbmemc_reinit() at CAR migration time. */
-CAR_MIGRATE(cbmemc_reinit)
diff --git a/src/lib/ramstage.ld b/src/lib/ramstage.ld
index 30b18a7..402f495 100644
--- a/src/lib/ramstage.ld
+++ b/src/lib/ramstage.ld
@@ -64,6 +64,9 @@
 	LONG(0);
 	LONG(0);
 	_bs_init_end = .;
+	_cbmem_init_hooks = .;
+	KEEP(*(.rodata.cbmem_init_hooks));
+	_ecbmem_init_hooks = .;
 
 	*(.rodata)
 	*(.rodata.*)
diff --git a/src/lib/rmodule.ld b/src/lib/rmodule.ld
index 70a2d3d..0e9c880 100644
--- a/src/lib/rmodule.ld
+++ b/src/lib/rmodule.ld
@@ -55,6 +55,9 @@ SECTIONS
 		LONG(0);
 		LONG(0);
 		_bs_init_end = .;
+		_cbmem_init_hooks = .;
+		KEEP(*(.rodata.cbmem_init_hooks));
+		_ecbmem_init_hooks = .;
 
 		. = ALIGN(8);
 
diff --git a/src/lib/romstage.ld b/src/lib/romstage.ld
index 34e76c0..7d552a7 100644
--- a/src/lib/romstage.ld
+++ b/src/lib/romstage.ld
@@ -29,6 +29,10 @@
 } : to_load
 
 .data . : {
+	. = ALIGN(8);
+	_cbmem_init_hooks = .;
+	KEEP(*(.rodata.cbmem_init_hooks));
+	_ecbmem_init_hooks = .;
 	*(.rodata);
 	*(.rodata.*);
 	*(.data);
diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c
index 8c82649..3b886b6 100644
--- a/src/lib/timestamp.c
+++ b/src/lib/timestamp.c
@@ -157,7 +157,7 @@ void timestamp_init(uint64_t base)
 #endif
 }
 
-void timestamp_reinit(void)
+static void timestamp_reinit(void)
 {
 	if (!timestamp_should_run())
 		return;
@@ -172,8 +172,9 @@ void timestamp_reinit(void)
 		timestamp_do_sync();
 }
 
-/* Call timestamp_reinit at CAR migration time. */
-CAR_MIGRATE(timestamp_reinit)
+/* Call timestamp_reinit CBMEM init hooks. */
+ROMSTAGE_CBMEM_INIT_HOOK(timestamp_reinit)
+RAMSTAGE_CBMEM_INIT_HOOK(timestamp_reinit)
 
 /* Provide default timestamp implementation using monotonic timer. */
 uint64_t  __attribute__((weak)) timestamp_get(void)
diff --git a/src/soc/intel/baytrail/romstage/romstage.c b/src/soc/intel/baytrail/romstage/romstage.c
index a32db02..3f35bde 100644
--- a/src/soc/intel/baytrail/romstage/romstage.c
+++ b/src/soc/intel/baytrail/romstage/romstage.c
@@ -158,7 +158,7 @@ static void migrate_power_state(void)
 	}
 	memcpy(ps_cbmem, ps_car, sizeof(*ps_cbmem));
 }
-CAR_MIGRATE(migrate_power_state);
+ROMSTAGE_CBMEM_INIT_HOOK(migrate_power_state)
 
 static struct chipset_power_state *fill_power_state(void)
 {
diff --git a/src/soc/intel/broadwell/romstage/power_state.c b/src/soc/intel/broadwell/romstage/power_state.c
index 22ec8a6..ce52b49 100644
--- a/src/soc/intel/broadwell/romstage/power_state.c
+++ b/src/soc/intel/broadwell/romstage/power_state.c
@@ -50,7 +50,7 @@ static void migrate_power_state(void)
 	}
 	memcpy(ps_cbmem, ps_car, sizeof(*ps_cbmem));
 }
-CAR_MIGRATE(migrate_power_state);
+ROMSTAGE_CBMEM_INIT_HOOK(migrate_power_state)
 
 /* Return 0, 3, or 5 to indicate the previous sleep state. */
 static int prev_sleep_state(struct chipset_power_state *ps)
diff --git a/src/soc/nvidia/tegra132/romstage.c b/src/soc/nvidia/tegra132/romstage.c
index fedc1d4..6476e06 100644
--- a/src/soc/nvidia/tegra132/romstage.c
+++ b/src/soc/nvidia/tegra132/romstage.c
@@ -76,8 +76,6 @@ void romstage(void)
 
 	romstage_mainboard_init();
 
-	cbmemc_reinit();
-
 	run_ramstage();
 }
 



More information about the coreboot-gerrit mailing list