]> git.sur5r.net Git - u-boot/commitdiff
x86: Call board_final_cleanup() in last_stage_init()
authorBin Meng <bmeng.cn@gmail.com>
Wed, 11 May 2016 14:44:56 +0000 (07:44 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 23 May 2016 07:18:00 +0000 (15:18 +0800)
At present board_final_cleanup() is called before booting a Linux
kernel. This actually needs to be done before booting anything,
like SeaBIOS, VxWorks or Windows.

Move the call to last_stage_init() instead.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/coreboot/coreboot.c
arch/x86/cpu/cpu.c
arch/x86/lib/bootm.c

index 845f86a1766c15afd9da5c0630978dcd3930b40d..1b042037bb2fb9ae0ff9a6c75a5916b02b421831 100644 (file)
@@ -39,15 +39,7 @@ int print_cpuinfo(void)
        return default_print_cpuinfo();
 }
 
-int last_stage_init(void)
-{
-       if (gd->flags & GD_FLG_COLD_BOOT)
-               timestamp_add_to_bootstage();
-
-       return 0;
-}
-
-void board_final_cleanup(void)
+static void board_final_cleanup(void)
 {
        /*
         * Un-cache the ROM so the kernel has one
@@ -79,6 +71,16 @@ void board_final_cleanup(void)
        }
 }
 
+int last_stage_init(void)
+{
+       if (gd->flags & GD_FLG_COLD_BOOT)
+               timestamp_add_to_bootstage();
+
+       board_final_cleanup();
+
+       return 0;
+}
+
 int misc_init_r(void)
 {
        return 0;
index 233a6c86958c993ed909a2ce6d5e7600606ff491..1482153d8b58c945773765b5a275cc2a21e99072 100644 (file)
@@ -661,10 +661,20 @@ void show_boot_progress(int val)
 }
 
 #ifndef CONFIG_SYS_COREBOOT
+/*
+ * Implement a weak default function for boards that optionally
+ * need to clean up the system before jumping to the kernel.
+ */
+__weak void board_final_cleanup(void)
+{
+}
+
 int last_stage_init(void)
 {
        write_tables();
 
+       board_final_cleanup();
+
        return 0;
 }
 #endif
index 783be691aff9afd9c83fb3895f9151a20d03854e..7cf9de4d7b53e083acda9e0035250568ae1435ba 100644 (file)
@@ -26,14 +26,6 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define COMMAND_LINE_OFFSET 0x9000
 
-/*
- * Implement a weak default function for boards that optionally
- * need to clean up the system before jumping to the kernel.
- */
-__weak void board_final_cleanup(void)
-{
-}
-
 void bootm_announce_and_cleanup(void)
 {
        printf("\nStarting kernel ...\n\n");
@@ -45,7 +37,6 @@ void bootm_announce_and_cleanup(void)
 #ifdef CONFIG_BOOTSTAGE_REPORT
        bootstage_report();
 #endif
-       board_final_cleanup();
 }
 
 #if defined(CONFIG_OF_LIBFDT) && !defined(CONFIG_OF_NO_KERNEL)