x86/boot changes for v3.6
Subsystems (2)
Linus,
Please pull the latest x86-boot-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-boot-for-linus
HEAD: c5e5c42a68be66cb87573e5c2fcce6f1b5d82bd5 x86, doc: Assign a bootloader ID for "Minimal Linux Bootloader"
Kernel image size reduction and assorted fixes and other small improvements.
Thanks,
Ingo
------------------>
Gokul Caushik (1):
x86, boot: Exclude cmdline.c if you can't use it
H. Peter Anvin (1):
x86, doc: Assign a bootloader ID for "Minimal Linux Bootloader"
Joe Millenbach (6):
x86, boot: Removed quiet flag and switched quiet output to debug flag x86, boot: Wrap debug printing in a new debug_putstr function
x86, boot: Changed error putstr path to match new debug_putstr format x86, boot: Switch output functions from command-line flags to conditional compilation x86, boot: Removed unused debug flag and set code
x86, boot: Exclude early_serial_console.c if can't use it.
Documentation/x86/boot.txt | 5 +++- arch/x86/boot/compressed/cmdline.c | 4 +++ arch/x86/boot/compressed/early_serial_console.c | 4 +++ arch/x86/boot/compressed/misc.c | 31 ++++++----------------- arch/x86/boot/compressed/misc.h | 27 +++++++++++++++++--- 5 files changed, 44 insertions(+), 27 deletions(-)
Documentation/x86/boot.txt +4 -1
@@ -363,7 +363,8 @@ Protocol: 2.00+ ext_loader_type <- 0x05 ext_loader_ver <- 0x23 - Assigned boot loader ids: + Assigned boot loader ids (hexadecimal): + 0 LILO (0x00 reserved for pre-2.00 bootloader) 1 Loadlin 2 bootsect-loader (0x20, all other values reserved)
@@ -378,6 +379,8 @@ Protocol: 2.00+ C Arcturus Networks uCbootloader E Extended (see ext_loader_type) F Special (0xFF = undefined) + 10 Reserved + 11 Minimal Linux Bootloader <http://sebastian-plotz.blogspot.de> Please contact <[email protected]> if you need a bootloader ID value assigned.
arch/x86/boot/compressed/cmdline.c +4 -0
@@ -1,5 +1,7 @@#include "misc.h" +#ifdef CONFIG_EARLY_PRINTK +static unsigned long fs;static inline void set_fs (unsigned long seg) {
@@ -19,3 +21,5 @@ int cmdline_find_option_bool(const char *option) {return __cmdline_find_option_bool (real_mode->hdr.cmd_line_ptr, option); } + +#endif
arch/x86/boot/compressed/early_serial_console.c +4 -0
@@ -1,5 +1,9 @@#include "misc.h" +#ifdef CONFIG_EARLY_PRINTK +int early_serial_base;#include "../early_serial_console.c" + +#endif
arch/x86/boot/compressed/misc.c +8 -23
@@ -108,8 +108,6 @@ static void error(char *m);* This is set up by the setup-routine at boot-time */ struct boot_params *real_mode;/* Pointer to real-mode data */ -static int quiet; -static int debug;void *memset (void *s,int c,size_t n);void *memcpy (void *dest,const void *src,size_t n);
@@ -170,15 +168,11 @@ static void serial_putchar(int ch)outb (ch, early_serial_base +TXR ); } -void __putstr (int error,const char *s) +void __putstr (const char *s) {int x, y, pos;char c; -#ifndef CONFIG_X86_VERBOSE_BOOTUP -if (!error) -return ; -#endif if (early_serial_base) {const char *str = s;while (*str) {
@@ -265,9 +259,9 @@ void *memcpy(void *dest, const void *src, size_t n)static void error (char *x) { -__putstr (1 ,"\n\n" ); -__putstr (1 , x); -__putstr (1 ,"\n\n -- System halted" ); +error_putstr ("\n\n" ); +error_putstr (x); +error_putstr ("\n\n -- System halted" );while (1 ) asm("hlt" );
@@ -294,8 +288,7 @@ static void parse_elf(void *output)return ; } -if (!quiet) -putstr ("Parsing ELF... " ); +debug_putstr ("Parsing ELF... " ); phdrs =malloc (sizeof (*phdrs) * ehdr.e_phnum);if (!phdrs)
@@ -332,11 +325,6 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap, { real_mode = rmode; -if (cmdline_find_option_bool ("quiet" )) - quiet =1 ; -if (cmdline_find_option_bool ("debug" )) - debug =1 ; -if (real_mode->screen_info.orig_video_mode ==7 ) { vidmem = (char *)0xb0000 ; vidport =0x3b4 ;
@@ -349,8 +337,7 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap, cols = real_mode->screen_info.orig_video_cols;console_init (); -if (debug) -putstr ("early console in decompress_kernel\n" ); +debug_putstr ("early console in decompress_kernel\n" ); free_mem_ptr = heap;/* Heap */ free_mem_end_ptr = heap +BOOT_HEAP_SIZE ;
@@ -369,11 +356,9 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,error ("Wrong destination address" );#endif -if (!quiet) -putstr ("\nDecompressing Linux... " ); +debug_putstr ("\nDecompressing Linux... " );decompress (input_data, input_len,NULL ,NULL , output,NULL , error);parse_elf (output); -if (!quiet) -putstr ("done.\nBooting the kernel.\n" ); +debug_putstr ("done.\nBooting the kernel.\n" );return ; }
arch/x86/boot/compressed/misc.h +24 -3
@@ -24,9 +24,21 @@/* misc.c */ extern struct boot_params *real_mode;/* Pointer to real-mode data */ -void __putstr (int error,const char *s); -#define putstr (__x) __putstr(0, __x) -#define puts (__x) __putstr(0, __x) +void __putstr (const char *s); +#define error_putstr (__x) __putstr(__x) + +#ifdef CONFIG_X86_VERBOSE_BOOTUP + +#define debug_putstr (__x) __putstr(__x) + +#else + +static inline void debug_putstr (const char *s) +{ } + +#endif + +#ifdef CONFIG_EARLY_PRINTK /* cmdline.c */ int cmdline_find_option (const char *option,char *buffer,int bufsize);
@@ -36,4 +48,13 @@ int cmdline_find_option_bool(const char *option);extern int early_serial_base;void console_init (void ); +#else + +/* early_serial_console.c */ +static const int early_serial_base; +static inline void console_init (void ) +{ } + +#endif +#endif