Messages in this thread Patch in this message | | | Date | Fri, 8 Mar 2013 13:46:11 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH v3] early_printk: consolidate random copies of identical code |
| |
On Fri, 8 Mar 2013 11:11:20 -0500 Paul Gortmaker <paul.gortmaker@windriver.com> wrote:
> The early console implementations are the same all over the place. Move > the print function to kernel/printk and get rid of the copies. > > ... > > [v3: drop sparc bits as suggested by tglx, redo build tests on sparc > sparc32, Randy's randconfig, ppc, mips, arm...] > > [v2: essentially unchanged since v1, so I've left the acked/reviewed > tags. There was a compile fail[1] for a randconfig with EARLY_PRINTK=y > and PRINTK=n, because the early_console struct and early_printk calls > were nested within an #ifdef CONFIG_PRINTK -- moving that whole block > exactly as-is to be outside the #ifdef CONFIG_PRINTK fixes the randconfig > and still works for everyday sane configs too.] > [1] http://marc.info/?l=linux-next&m=136219350914998&w=2
I queued the below delta.
I suspect arch/powerpc/kernel/udbg.c is still broken with CONFIG_EARLY_PRINTK=n? My powerpc crosscompiler broke and I need to buy a new one :(
arch/sparc/kernel/setup_32.c | 1 arch/sparc/kernel/setup_64.c | 8 ----- kernel/printk.c | 46 ++++++++++++++++----------------- 3 files changed, 24 insertions(+), 31 deletions(-)
diff -puN arch/sparc/kernel/setup_32.c~early_printk-consolidate-random-copies-of-identical-code-v3 arch/sparc/kernel/setup_32.c --- a/arch/sparc/kernel/setup_32.c~early_printk-consolidate-random-copies-of-identical-code-v3 +++ a/arch/sparc/kernel/setup_32.c @@ -309,7 +309,6 @@ void __init setup_arch(char **cmdline_p) boot_flags_init(*cmdline_p); - early_console = &prom_early_console; register_console(&prom_early_console); printk("ARCH: "); diff -puN arch/sparc/kernel/setup_64.c~early_printk-consolidate-random-copies-of-identical-code-v3 arch/sparc/kernel/setup_64.c --- a/arch/sparc/kernel/setup_64.c~early_printk-consolidate-random-copies-of-identical-code-v3 +++ a/arch/sparc/kernel/setup_64.c @@ -551,12 +551,6 @@ static void __init init_sparc64_elf_hwca pause_patch(); } -static inline void register_prom_console(void) -{ - early_console = &prom_early_console; - register_console(&prom_early_console); -} - void __init setup_arch(char **cmdline_p) { /* Initialize PROM console and command line. */ @@ -568,7 +562,7 @@ void __init setup_arch(char **cmdline_p) #ifdef CONFIG_EARLYFB if (btext_find_display()) #endif - register_prom_console(); + register_console(&prom_early_console); if (tlb_type == hypervisor) printk("ARCH: SUN4V\n"); diff -puN kernel/printk.c~early_printk-consolidate-random-copies-of-identical-code-v3 kernel/printk.c --- a/kernel/printk.c~early_printk-consolidate-random-copies-of-identical-code-v3 +++ a/kernel/printk.c @@ -759,29 +759,6 @@ module_param(ignore_loglevel, bool, S_IR MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to" "print all kernel messages to the console."); -#ifdef CONFIG_EARLY_PRINTK -struct console *early_console; - -void early_vprintk(const char *fmt, va_list ap) -{ - if (early_console) { - char buf[512]; - int n = vscnprintf(buf, sizeof(buf), fmt, ap); - - early_console->write(early_console, buf, n); - } -} - -asmlinkage void early_printk(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - early_vprintk(fmt, ap); - va_end(ap); -} -#endif - #ifdef CONFIG_BOOT_PRINTK_DELAY static int boot_delay; /* msecs delay after each printk during bootup */ @@ -1743,6 +1720,29 @@ static size_t cont_print_text(char *text #endif /* CONFIG_PRINTK */ +#ifdef CONFIG_EARLY_PRINTK +struct console *early_console; + +void early_vprintk(const char *fmt, va_list ap) +{ + if (early_console) { + char buf[512]; + int n = vscnprintf(buf, sizeof(buf), fmt, ap); + + early_console->write(early_console, buf, n); + } +} + +asmlinkage void early_printk(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + early_vprintk(fmt, ap); + va_end(ap); +} +#endif + static int __add_preferred_console(char *name, int idx, char *options, char *brl_options) { _
| |