From: Tom Rini OK. One thing which __setup functions are allowed to do, which __early_param are not is to eat the command line (typically foo = strchr(str, ','); *foo++ = 0). So I've audited all of the converts of __setup to __early_param, and got the following: - Drop the hunk of early-param-i386.patch that changes drivers/pci/pci.c - This is a fix for console= which inadvertantly does ... strcpy(name, str, sizeof(name)) ... ... options = strchr(str, ',') ... *options++ = 0; ... fiddle with name ... --- 25-akpm/kernel/printk.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN kernel/printk.c~early-param-fixes kernel/printk.c --- 25/kernel/printk.c~early-param-fixes 2004-03-30 19:49:04.370274200 -0800 +++ 25-akpm/kernel/printk.c 2004-03-30 19:49:04.372273896 -0800 @@ -131,7 +131,7 @@ static int __init console_setup(char *st } else strncpy(name, str, sizeof(name) - 1); name[sizeof(name) - 1] = 0; - if ((options = strchr(str, ',')) != NULL) + if ((options = strchr(name, ',')) != NULL) *(options++) = 0; #ifdef __sparc__ if (!strcmp(str, "ttya")) _