arch/x86/boot/compressed/head_64.S clears BSS after relocated. If early serial is set up before clearing BSS, the early_serial_base will be reset to 0.
Initializing early_serial_base as -1 to push it to .data section. Signed-off-by: Pingfan Liu <kernelf...@gmail.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Ingo Molnar <mi...@redhat.com> Cc: Borislav Petkov <b...@alien8.de> Cc: "H. Peter Anvin" <h...@zytor.com> Cc: Jordan Borgner <m...@jordan-borgner.de> Cc: linux-kernel@vger.kernel.org --- arch/x86/boot/compressed/early_serial_console.c | 2 +- arch/x86/boot/early_serial_console.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/boot/compressed/early_serial_console.c b/arch/x86/boot/compressed/early_serial_console.c index 261e81f..624e334 100644 --- a/arch/x86/boot/compressed/early_serial_console.c +++ b/arch/x86/boot/compressed/early_serial_console.c @@ -1,5 +1,5 @@ #include "misc.h" -int early_serial_base; +int early_serial_base = -1; #include "../early_serial_console.c" diff --git a/arch/x86/boot/early_serial_console.c b/arch/x86/boot/early_serial_console.c index 023bf1c..d8de15a 100644 --- a/arch/x86/boot/early_serial_console.c +++ b/arch/x86/boot/early_serial_console.c @@ -149,6 +149,6 @@ void console_init(void) { parse_earlyprintk(); - if (!early_serial_base) + if (early_serial_base <= 0) parse_console_uart8250(); } -- 2.7.4