summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2016-05-11 07:44:56 -0700
committerBin Meng <bmeng.cn@gmail.com>2016-05-23 15:18:00 +0800
commit1e2f7b9e8e077cb6937204c305d554ef7a970be5 (patch)
tree344720ff67fb622fb644542e0232c3da3f55311b /arch/x86
parent91fc5bf652c1e959373cd21df4809a74d31e75fe (diff)
downloadblackbird-obmc-uboot-1e2f7b9e8e077cb6937204c305d554ef7a970be5.tar.gz
blackbird-obmc-uboot-1e2f7b9e8e077cb6937204c305d554ef7a970be5.zip
x86: Call board_final_cleanup() in last_stage_init()
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>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/cpu/coreboot/coreboot.c20
-rw-r--r--arch/x86/cpu/cpu.c10
-rw-r--r--arch/x86/lib/bootm.c9
3 files changed, 21 insertions, 18 deletions
diff --git a/arch/x86/cpu/coreboot/coreboot.c b/arch/x86/cpu/coreboot/coreboot.c
index 845f86a176..1b042037bb 100644
--- a/arch/x86/cpu/coreboot/coreboot.c
+++ b/arch/x86/cpu/coreboot/coreboot.c
@@ -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;
diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
index 233a6c8695..1482153d8b 100644
--- a/arch/x86/cpu/cpu.c
+++ b/arch/x86/cpu/cpu.c
@@ -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
diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c
index 783be691af..7cf9de4d7b 100644
--- a/arch/x86/lib/bootm.c
+++ b/arch/x86/lib/bootm.c
@@ -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)
OpenPOWER on IntegriCloud