From: Tom Rini <trini@kernel.crashing.org>

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 ...

- Apply the following to get back pci=noacpi being parsed early.  I do
  not know if this option must be called this early, but it was before
  the early_param stuff, so I assume it was done with reason (tested,
  and apci=force (needed on my testbox) pci=noacpi works as expected):



---

 25-akpm/arch/i386/kernel/setup.c |    8 ++++++++
 1 files changed, 8 insertions(+)

diff -puN arch/i386/kernel/setup.c~early-param-pci-fix arch/i386/kernel/setup.c
--- 25/arch/i386/kernel/setup.c~early-param-pci-fix	2004-03-30 19:49:05.364123112 -0800
+++ 25-akpm/arch/i386/kernel/setup.c	2004-03-30 19:49:05.367122656 -0800
@@ -603,6 +603,14 @@ static int __init early_acpi(char *from)
 }
 __early_param("acpi=", early_acpi);
 
+static int __init early_pci_noacpi(char *ign)
+{
+	acpi_noirq_set();
+
+	return 0;
+}
+__early_param("pci=noacpi", early_pci_noacpi);
+
 static int __init early_acpi_sci(char *from)
 {
 	if (!memcmp(from, "edge", 4))

_