lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 29 Aug 2014 14:28:38 +0900 (KST)
From:	Sahara <kpark3469@...il.com>
To:	Thierry Reding <thierry.reding@...il.com>
cc:	kpark3469@...il.com, akpm@...ux-foundation.org,
	keun-o.park@...driver.com, hpa@...or.com,
	rafael.j.wysocki@...el.com, peterz@...radead.org,
	rusty@...tcorp.com.au, kirill.shutemov@...ux.intel.com,
	oleg@...hat.com, prarit@...hat.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] earlyprintk: re-enable earlyprintk calling early_param



On Wed, 27 Aug 2014, Thierry Reding wrote:

> On Thu, Aug 14, 2014 at 07:13:36PM +0900, kpark3469@...il.com wrote:
>> From: Sahara <keun-o.park@...driver.com>
>>
>> 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@...driver.com>
>> ---
>>  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 
*val, const char *unused)
>>  	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", 
param);
>
> 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 
(thierry.reding@...o) (gcc version 4.9.0 (GCC) ) #18 SMP PREEMPT Wed Aug 
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 instruction 
cache
> [    0.000000] Machine model: NVIDIA Tegra124 Jetson TK1
> [    0.000000] bootconsole [earlycon0] enabled
> [    0.000000] debug: ignoring loglevel setting.
> [    0.000000] ------------[ cut here ]------------
> [    0.000000] WARNING: CPU: 0 PID: 0 at 
/home/thierry.reding/src/kernel/linux-work.git/kernel/printk/printk.c:2402 
register_console+0x60/0x37c()
> [    0.000000] console 'earlycon0' already registered
> [    0.000000] Modules linked in:
> [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 
3.17.0-rc2-next-20140827 #18
> [    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 ]---
> [    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 
e67b7000
> [    0.000000]   Normal zone: 1520 pages used for memmap
> [    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 
u32768
> [    0.000000] pcpu-alloc: s8832 r8192 d15744 u32768 alloc=8*4096
> [    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 522512
> [    0.000000] Kernel command line: console=ttyS0,115200n8 
ignore_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)

- Sahara
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ