On Thu, 10 Mar 2011 22:10:43 +0800 Amerigo Wang wrote: > From: Takao Indoh <tindoh@xxxxxxxxxx> > > There is a problem with putting the first kernel in EFI virtual mode, > it is that when the second kernel comes up it tries to initialize the > EFI again and once we have put EFI in virtual mode we can not really > do that. > > Actually, EFI is not necessary for kdump, we can boot the second kernel > with "noefi" parameter, but the boot will mostly fail because 2nd kernel > cannot find RSDP. > > In this situation, we introduced "acpi_addr=" kernel parameter, > so that kexec-tools can pass the "noefi acpi_addr=X" to the second kernel > to make kdump works. > > Signed-off-by: Takao Indoh <tindoh@xxxxxxxxxx> > [amwang@xxxxxxxxxx: Add documentation.] > Signed-off-by: WANG Cong <amwang@xxxxxxxxxx> > Cc: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> > Cc: Vivek Goyal <vgoyal@xxxxxxxxxx> > > --- > > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > index f4a04c0..0fbbdc6 100644 > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -163,6 +163,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > > See also Documentation/power/pm.txt, pci=noacpi > > + acpi_addr= [ACPI,EFI] > + Pass the RSDP address to the kernel, mostly used > + on machines running EFI runtime service to boot the > + second kernel for kdump. > + I think that "acpi_addr" is a bit too generic. How about acpi_rsdp or acpi_root instead? > acpi_apic_instance= [ACPI, IOAPIC] > Format: <int> > 2: use 2nd APIC table, if available > diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c > index c90c76a..06dfec0 100644 > --- a/drivers/acpi/osl.c > +++ b/drivers/acpi/osl.c > @@ -238,8 +238,19 @@ void acpi_os_vprintf(const char *fmt, va_list args) > #endif > } > > +static unsigned long acpi_addr; > +static int __init setup_acpi_addr(char *arg) > +{ > + acpi_addr = simple_strtoul(arg, NULL, 16); > + return 0; > +} > +early_param("acpi_addr", setup_acpi_addr); > + > acpi_physical_address __init acpi_os_get_root_pointer(void) > { > + if (acpi_addr) > + return acpi_addr; > + > if (efi_enabled) { > if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) > return efi.acpi20; --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html