On 08/28/2014 11:28 PM, Sahara wrote:
On Wed, 27 Aug 2014, Thierry Reding wrote:
On Thu, Aug 14, 2014 at 07:13:36PM +0900, kpark3469@xxxxxxxxx wrote:*val, const char *unused)
From: Sahara <keun-o.park@xxxxxxxxxxxxx>
Although there are many obs_kernel_param and its names are
earlyprintk and also EARLY_PRINTK is also enabled, we could not
see the early_printk output properly until now. This patch
considers earlycon as well as earlyprintk.
Signed-off-by: Sahara <keun-o.park@xxxxxxxxxxxxx>
---
init/main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/init/main.c b/init/main.c
index bb1aed9..235d248 100644
--- a/init/main.c
+++ b/init/main.c
@@ -426,7 +426,8 @@ static int __init do_early_param(char *param, char
param);for (p = __setup_start; p < __setup_end; p++) {
if ((p->early && parameq(param, p->str)) ||
(strcmp(param, "console") == 0 &&
- strcmp(p->str, "earlycon") == 0)
+ ((strcmp(p->str, "earlycon") == 0) ||
+ (strcmp(p->str, "earlyprintk") == 0)))
) {
if (p->setup_func(val) != 0)
pr_warn("Malformed early option '%s'\n",
(thierry.reding@ulmo) (gcc version 4.9.0 (GCC) ) #18 SMP PREEMPT Wed Aug
It seems like this patch causes the following warning for me during
boot:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.17.0-rc2-next-20140827
27 17:08:12 CEST 2014
[ 0.000000] CPU: ARMv7 Processor [413fc0f3] revision 3 (ARMv7),cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instructioncache
[ 0.000000] Machine model: NVIDIA Tegra124 Jetson TK1/home/thierry.reding/src/kernel/linux-work.git/kernel/printk/printk.c:2402
[ 0.000000] bootconsole [earlycon0] enabled
[ 0.000000] debug: ignoring loglevel setting.
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: CPU: 0 PID: 0 at
register_console+0x60/0x37c()
[ 0.000000] console 'earlycon0' already registered3.17.0-rc2-next-20140827 #18
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted
[ 0.000000] [<c0015fec>] (unwind_backtrace) from [<c0011aac>](show_stack+0x10/0x14)
[ 0.000000] [<c0011aac>] (show_stack) from [<c062b700>](dump_stack+0x98/0xd8)
[ 0.000000] [<c062b700>] (dump_stack) from [<c0025ba0>](warn_slowpath_common+0x70/0x8c)
[ 0.000000] [<c0025ba0>] (warn_slowpath_common) from [<c0025bec>](warn_slowpath_fmt+0x30/0x40)
[ 0.000000] [<c0025bec>] (warn_slowpath_fmt) from [<c00639b8>](register_console+0x60/0x37c)
[ 0.000000] [<c00639b8>] (register_console) from [<c0883870>](setup_early_printk+0x20/0x28)
[ 0.000000] [<c0883870>] (setup_early_printk) from [<c087f43c>](do_early_param+0x6c/0xd0)
[ 0.000000] [<c087f43c>] (do_early_param) from [<c003cba0>](parse_args+0x238/0x3d0)
[ 0.000000] [<c003cba0>] (parse_args) from [<c087f814>](parse_early_options+0x38/0x40)
[ 0.000000] [<c087f814>] (parse_early_options) from [<c087f84c>](parse_early_param+0x30/0x40)
[ 0.000000] [<c087f84c>] (parse_early_param) from [<c088206c>](setup_arch+0x4b4/0x974)
[ 0.000000] [<c088206c>] (setup_arch) from [<c087f8f8>](start_kernel+0x98/0x3a8)
[ 0.000000] [<c087f8f8>] (start_kernel) from [<80008074>](0x80008074)
[ 0.000000] ---[ end trace cb88537fdc8fa200 ]---e67b7000
[ 0.000000] cma: Reserved 128 MiB at a7800000
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] On node 0 totalpages: 524032
[ 0.000000] free_area_init_node: node 0, pgdat c091cc00, node_mem_map
[ 0.000000] Normal zone: 1520 pages used for memmapu32768
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 194560 pages, LIFO batch:31
[ 0.000000] HighMem zone: 2574 pages used for memmap
[ 0.000000] HighMem zone: 329472 pages, LIFO batch:31
[ 0.000000] PERCPU: Embedded 8 pages/cpu @e6767000 s8832 r8192 d15744
[ 0.000000] pcpu-alloc: s8832 r8192 d15744 u32768 alloc=8*4096Total pages: 522512
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on.
[ 0.000000] Kernel command line: console=ttyS0,115200n8ignore_loglevel rootwait ro earlyprintk ip=:::::eth0:dhcp root=/dev/nfs
nfsroot=192.168.69.100:/srv/nfs/tegra124 drm.debug=0xf cma=128M
Reverting the patch eliminates the warning. earlyprintk does work fine
for me without this patch.
Thierry
This warning message is caused by specifying 'earlyprintk' in
your command line args. Same problem may happen if you specify 'earlycon'
in your command line args and enable CONFIG_SERIAL_EARLYCON with
the current code without this patch. I think it's appropriate result
letting a developer know that both ways of using earlyprintk are enabled.
With current code, although a developer enables CONFIG_EARLY_PRINTK and
has "console=" arg in command line args, he/she should specify the
'earlyprintk' in command line args also to see early_printk() outputs.
With this patch, simply enabling CONFIG_EARLY_PRINTK and having 'console='
line make you be able to the early_printk().
Nonetheless I want to retract this patch. It's good for ARM, but not good
for other architectures such as x86. And, because CONFIG_EARLY_PRINTK is
depending on DEBUG_LL in ARM, making a relation with "console=" is absurd.
(see strcmp(param, "console") == 0 && strcmp(p->str, "earlyprintk") == 0)
Even on ARM, this patch feels like the wrong thing. After all, I can build a DEBUG_LL enabled multi-platform kernel, and boot it on a bunch of different SoCs. However, earlyprintk will only work on one (or zero) of those SoCs, and hence shouldn't automatically enable itself; specifically requesting activation using the earlyprintk kernel command-line parameter is the correct approach.