Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933321AbbFJWwD (ORCPT ); Wed, 10 Jun 2015 18:52:03 -0400 Received: from v094114.home.net.pl ([79.96.170.134]:58040 "HELO v094114.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S932488AbbFJWvt (ORCPT ); Wed, 10 Jun 2015 18:51:49 -0400 From: "Rafael J. Wysocki" To: Hanjun Guo Cc: Toshi Kani , ACPI Devel Maling List , Linux Kernel Mailing List , Len Brown , Marius Tolzmann , Matt Fleming , Chun-Yi , Aaron Lu , Lv Zheng Subject: Re: [PATCH] ACPI / init: Switch over platform to the ACPI mode later Date: Thu, 11 Jun 2015 01:17:38 +0200 Message-ID: <2586130.FMgQktF91L@vostro.rjw.lan> User-Agent: KMail/4.11.5 (Linux/4.1.0-rc5+; KDE/4.11.5; x86_64; ; ) In-Reply-To: <55779BB0.6030900@linaro.org> References: <12578608.kKCTgirQ6f@vostro.rjw.lan> <13170654.9h99FfQLut@vostro.rjw.lan> <55779BB0.6030900@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="utf-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4948 Lines: 110 On Wednesday, June 10, 2015 10:06:40 AM Hanjun Guo wrote: > On 06/10/2015 07:48 AM, Rafael J. Wysocki wrote: > > On Wednesday, June 03, 2015 11:13:57 AM Toshi Kani wrote: > >> On Sat, 2015-05-30 at 14:21 +0200, Rafael J. Wysocki wrote: > >>> From: Rafael J. Wysocki > >>> > >>> Commit 73f7d1ca3263 "ACPI / init: Run acpi_early_init() before > >>> timekeeping_init()" moved the ACPI subsystem initialization, > >>> including the ACPI mode enabling, to an earlier point in the > >>> initialization sequence, to allow the timekeeping subsystem > >>> use ACPI early. Unfortunately, that resulted in boot regressions > >>> on some systems and the early ACPI initialization was moved toward > >>> its original position in the kernel initialization code by commit > >>> c4e1acbb35e4 "ACPI / init: Invoke early ACPI initialization later". > >>> > >>> However, that turns out to be insufficient, as boot is still broken > >>> on the Tyan S8812 mainboard. > >>> > >>> To fix that issue, split the ACPI early initialization code into > >>> two pieces so the majority of it still located in acpi_early_init() > >>> and the part switching over the platform into the ACPI mode goes into > >>> a new function, acpi_subsystem_init(), executed at the original early > >>> ACPI initialization spot. > >>> > >>> That fixes the Tyan S8812 boot problem, but still allows ACPI > >>> tables to be loaded earlier which is useful to the EFI code in > >>> efi_enter_virtual_mode(). > >>> > >>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=97141 > >>> Reported-and-tested-by: Marius Tolzmann > >>> Signed-off-by: Rafael J. Wysocki > >> > >> Can you add comments to acpi_early_init() and acpi_subsystem_init() to > >> clarify what ACPI features are enabled at each phase, and what > >> dependency they have in the boot sequence? (The same goes to > >> early_acpi_boot_init() and acpi_boot_init().) > > > > OK, update follows. > > > > --- > > From: Rafael J. Wysocki > > Subject: ACPI / init: Switch over platform to the ACPI mode later > > > > Commit 73f7d1ca3263 "ACPI / init: Run acpi_early_init() before > > timekeeping_init()" moved the ACPI subsystem initialization, > > including the ACPI mode enabling, to an earlier point in the > > initialization sequence, to allow the timekeeping subsystem > > use ACPI early. Unfortunately, that resulted in boot regressions > > on some systems and the early ACPI initialization was moved toward > > its original position in the kernel initialization code by commit > > c4e1acbb35e4 "ACPI / init: Invoke early ACPI initialization later". > > > > However, that turns out to be insufficient, as boot is still broken > > on the Tyan S8812 mainboard. > > > > To fix that issue, split the ACPI early initialization code into > > two pieces so the majority of it still located in acpi_early_init() > > and the part switching over the platform into the ACPI mode goes into > > a new function, acpi_subsystem_init(), executed at the original early > > ACPI initialization spot. > > > > That fixes the Tyan S8812 boot problem, but still allows ACPI > > tables to be loaded earlier which is useful to the EFI code in > > efi_enter_virtual_mode(). > > > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=97141 > > Fixes: 73f7d1ca3263 "ACPI / init: Run acpi_early_init() before timekeeping_init()" > > Reported-and-tested-by: Marius Tolzmann > > Signed-off-by: Rafael J. Wysocki > > Acked-by: Toshi Kani > > --- > > drivers/acpi/bus.c | 56 +++++++++++++++++++++++++++++++++++++-------------- > > include/linux/acpi.h | 2 + > > init/main.c | 1 > > 3 files changed, 44 insertions(+), 15 deletions(-) > > > > Index: linux-pm/drivers/acpi/bus.c > > =================================================================== > > --- linux-pm.orig/drivers/acpi/bus.c > > +++ linux-pm/drivers/acpi/bus.c > > @@ -470,6 +470,16 @@ static int __init acpi_bus_init_irq(void > > return 0; > > } > > > > +/** > > + * acpi_early_init - Initialize ACPICA and populate the ACPI namespace. > > + * > > + * The ACPI tables are accessible after this, but the handling of events has not > > Maybe we need to explicitly say that it's DSDT/SSDT, because static > tables such as FADT and MADT are accessible in the very early stage > of boot (in setup_arch()). Well, it never says that none of the tables are accessible earlier. > Other than that, > > Reviewed-by: Hanjun Guo Thanks! -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/