lkml.org 
[lkml]   [2013]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [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)
    {
    _


    \
     
     \ /
      Last update: 2013-03-08 23:41    [W:8.607 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site