• Rafael J. Wysocki's avatar
    ACPI / init: Switch over platform to the ACPI mode later · b064a8fa
    Rafael J. Wysocki authored
    Commit 73f7d1ca "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
    c4e1acbb "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: 73f7d1ca "ACPI / init: Run acpi_early_init() before timekeeping_init()"
    Reported-and-tested-by: default avatarMarius Tolzmann <tolzmann@molgen.mpg.de>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarToshi Kani <toshi.kani@hp.com>
    Reviewed-by: default avatarHanjun Guo <hanjun.guo@linaro.org>
    Reviewed-by: default avatarLee, Chun-Yi <jlee@suse.com>
    b064a8fa
acpi.h 24.6 KB