diff --git a/debian/changelog b/debian/changelog index 60d254cb0..129c087d6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,8 @@ linux-2.6 (2.6.32-4) UNRELEASED; urgency=low [ Martin Michlmayr ] * Report model information on armel when filing a bug. + * ARM: Add an earlyprintk debug console (Catalin Marinas) + * [armel] Enable EARLY_PRINTK. -- Ben Hutchings Tue, 29 Dec 2009 15:32:44 +0100 diff --git a/debian/config/armel/config b/debian/config/armel/config index 84cb8501b..0915ef054 100644 --- a/debian/config/armel/config +++ b/debian/config/armel/config @@ -81,3 +81,6 @@ CONFIG_KERNEL_LZMA=y CONFIG_ECONET_AUNUDP=y CONFIG_ECONET_NATIVE=y +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y + diff --git a/debian/patches/features/arm/early-printk.patch b/debian/patches/features/arm/early-printk.patch new file mode 100644 index 000000000..8ff8ef2e8 --- /dev/null +++ b/debian/patches/features/arm/early-printk.patch @@ -0,0 +1,112 @@ +From: Catalin Marinas +Date: Wed, 9 Dec 2009 10:02:18 +0000 (+0000) +Subject: ARM: Add an earlyprintk debug console +X-Git-Tag: v2.6.33-rc1~286^2~4 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=93fd03a8c6728b58879f8af20ffd55d9c32a778b + +ARM: Add an earlyprintk debug console + +This patch allows an earlyprintk console if CONFIG_DEBUG_LL is enabled, +using the printch asm function. + +The patch is based on the original work by Sascha Hauer. + +Signed-off-by: Catalin Marinas +Cc: Sascha Hauer +Acked-by: Uwe Kleine-König +Acked-by: Pavel Machek +--- + +diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug +index 1a6f70e..feb7b11 100644 +--- a/arch/arm/Kconfig.debug ++++ b/arch/arm/Kconfig.debug +@@ -71,6 +71,14 @@ config DEBUG_LL + in the kernel. This is helpful if you are debugging code that + executes before the console is initialized. + ++config EARLY_PRINTK ++ bool "Early printk" ++ depends on DEBUG_LL ++ help ++ Say Y here if you want to have an early console using the ++ kernel low-level debugging functions. Add earlyprintk to your ++ kernel parameters to enable this console. ++ + config DEBUG_ICEDCC + bool "Kernel low-level debugging via EmbeddedICE DCC channel" + depends on DEBUG_LL +diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile +index 79087dd..d0e40b7 100644 +--- a/arch/arm/kernel/Makefile ++++ b/arch/arm/kernel/Makefile +@@ -52,5 +52,6 @@ endif + + head-y := head$(MMUEXT).o + obj-$(CONFIG_DEBUG_LL) += debug.o ++obj-$(CONFIG_EARLY_PRINTK) += early_printk.o + + extra-y := $(head-y) init_task.o vmlinux.lds +diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c +new file mode 100644 +index 0000000..85aa2b2 +--- /dev/null ++++ b/arch/arm/kernel/early_printk.c +@@ -0,0 +1,57 @@ ++/* ++ * linux/arch/arm/kernel/early_printk.c ++ * ++ * Copyright (C) 2009 Sascha Hauer ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++ ++extern void printch(int); ++ ++static void early_write(const char *s, unsigned n) ++{ ++ while (n-- > 0) { ++ if (*s == '\n') ++ printch('\r'); ++ printch(*s); ++ s++; ++ } ++} ++ ++static void early_console_write(struct console *con, const char *s, unsigned n) ++{ ++ early_write(s, n); ++} ++ ++static struct console early_console = { ++ .name = "earlycon", ++ .write = early_console_write, ++ .flags = CON_PRINTBUFFER | CON_BOOT, ++ .index = -1, ++}; ++ ++asmlinkage void early_printk(const char *fmt, ...) ++{ ++ char buf[512]; ++ int n; ++ va_list ap; ++ ++ va_start(ap, fmt); ++ n = vscnprintf(buf, sizeof(buf), fmt, ap); ++ early_write(buf, n); ++ va_end(ap); ++} ++ ++static int __init setup_early_printk(char *buf) ++{ ++ register_console(&early_console); ++ return 0; ++} ++ ++early_param("earlyprintk", setup_early_printk); diff --git a/debian/patches/series/4 b/debian/patches/series/4 index 0d23e2cb8..bed69e2bf 100644 --- a/debian/patches/series/4 +++ b/debian/patches/series/4 @@ -1 +1,2 @@ + bugfix/all/modules-Skip-empty-section-notes.patch ++ features/arm/early-printk.patch