> From: "Rafael J. Wysocki" <rafael@xxxxxxxxxx> > Date: Mon, 27 May 2024 12:52:19 +0200 > Subject: Re: [PATCH] fix kdump kernel cannot find ACPI RSDP > To: Chunjie Zhu <chunjie.zhu@xxxxxxxxx> > Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>, Len Brown <lenb@xxxxxxxxxx>, linux-acpi@xxxxxxxxxxxxxxx, > linux-kernel@xxxxxxxxxxxxxxx > > On Fri, May 24, 2024 at 11:43=E2=80=AFAM Chunjie Zhu <chunjie.zhu@xxxxxxxxx= > > wrote: > > > > kexec/kdump must pass acpi_rsdp (physical address of ACPI RSDP table) to = > the > > crash kernel, especially in EFI case, otherwise, the crash kernel fails t= > o > > locate ACPI RSDP table. Consequently, ACPI init runs into error, and APIC > > mmio read page fault happens, finally crash kernel gets stuck. > > Fair enough. > > So has this ever worked before? Presumably it has, in which case it > has regressed and so it would be prudent to say when it broke and why > and explain why the proposed change is the right one to make. The existing code works only if the kexec() system call (CONFIG_KEXEC) is enabled, however, we can enter the kdump kernel by one of the following methods, 1. kexec_file system call (CONFIG_KEXEC_FILE) 2. Xen-initiated crash Instead of CONFIG_KEXEC, setup_acpi_rsdp should depend on CONFIG_KEXEC_CORE, which should be enabled in any case where kernel is used as a kdump kernel. > > > Signed-off-by: Chunjie Zhu <chunjie.zhu@xxxxxxxxx> > > --- > > drivers/acpi/osl.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c > > index f725813d0cce..39474468dba1 100644 > > --- a/drivers/acpi/osl.c > > +++ b/drivers/acpi/osl.c > > @@ -174,7 +174,7 @@ void acpi_os_vprintf(const char *fmt, va_list args) > > #endif > > } > > > > -#ifdef CONFIG_KEXEC > > +#ifdef CONFIG_KEXEC_CORE > > static unsigned long acpi_rsdp; > > static int __init setup_acpi_rsdp(char *arg) > > { > > @@ -187,7 +187,7 @@ acpi_physical_address __init acpi_os_get_root_pointer= > (void) > > { > > acpi_physical_address pa; > > > > -#ifdef CONFIG_KEXEC > > +#ifdef CONFIG_KEXEC_CORE > > /* > > * We may have been provided with an RSDP on the command line, > > * but if a malicious user has done so they may be pointing us > > -- > > 2.34.1 > > >