linux/drivers/acpi
Rafael J. Wysocki f9f5819101 ACPI / init: Switch over platform to the ACPI mode later
[ Upstream commit cdbbeb69d4 ]

commit b064a8fa77 upstream.

Commit 73f7d1ca32 "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
c4e1acbb35 "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: 73f7d1ca32 "ACPI / init: Run acpi_early_init() before timekeeping_init()"
Reported-and-tested-by: Marius Tolzmann <tolzmann@molgen.mpg.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Toshi Kani <toshi.kani@hp.com>
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Reviewed-by: Lee, Chun-Yi <jlee@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-08-27 13:25:39 -04:00
..
acpica ACPICA: Tables: Fix an issue that FACS initialization is performed twice 2015-08-04 14:33:56 -04:00
apei ACPI and power management updates for 3.17-rc1 2014-08-06 20:34:19 -07:00
ac.c Revert "ACPI / AC: Remove AC's proc directory." 2014-07-07 01:13:46 +02:00
acpi_cmos_rtc.c ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses 2014-09-08 15:38:41 +02:00
acpi_extlog.c ACPI and power management updates for 3.17-rc1 2014-08-06 20:34:19 -07:00
acpi_ipmi.c ACPI / IPMI: Cleanup coding styles 2013-09-30 19:46:13 +02:00
acpi_lpss.c ACPI / LPSS: provide con_id for the clkdev 2015-03-23 21:02:51 -04:00
acpi_memhotplug.c ACPI / scan: always register memory hotplug scan handler 2014-05-30 16:04:36 +02:00
acpi_pad.c ACPI / PAD: Use time_before() for time comparison 2014-05-27 01:38:23 +02:00
acpi_platform.c ACPI and power management updates for 3.18-rc2 2014-10-24 11:29:31 -07:00
acpi_pnp.c ACPI / PNP: add two IDs to list for PNPACPI device enumeration 2015-05-23 15:42:32 -04:00
acpi_processor.c ACPI: Don't use acpi_lapic in ACPI core code 2014-07-21 13:50:58 +02:00
battery.c ACPI / battery: Replace strnicmp with strncasecmp 2014-09-24 23:26:32 +02:00
battery.h ACPI / battery: move some ACPI_BATTERY_* definitions to header 2014-03-19 01:57:46 +01:00
bgrt.c acpi: bgrt: fix build error due to attribute change 2013-08-22 08:34:39 -07:00
blacklist.c ACPI / blacklist: blacklist Win8 OSI for Dell Vostro 3546 2014-10-30 01:32:43 +01:00
bus.c ACPI / init: Switch over platform to the ACPI mode later 2015-08-27 13:25:39 -04:00
button.c ACPI / button: Do not propagate wakeup-from-suspend events 2014-07-23 00:59:04 +02:00
cm_sbs.c ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" 2014-05-06 01:52:09 +02:00
container.c ACPI / hotplug: Generate online uevents for ACPI containers 2014-09-21 02:58:18 +02:00
custom_method.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
debugfs.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
device_pm.c ACPI / PM: Add missing pm_generic_complete() invocation 2015-07-03 23:02:26 -04:00
dock.c ACPI / dock: Drop dock_device_ids[] table 2014-04-07 14:11:35 +02:00
ec.c ACPI / EC: Fix regression due to conflicting firmware behavior between Samsung and Acer. 2014-10-29 16:52:35 +01:00
ec_sys.c ACPI / EC: Mark the function acpi_ec_add_debugfs() as static in ec_sys.c 2014-01-06 00:13:22 +01:00
event.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
fan.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2014-10-24 11:21:43 -07:00
glue.c ACPI / scan: Add bind/unbind callbacks to struct acpi_scan_handler 2014-02-11 00:35:46 +01:00
hed.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
int340x_thermal.c Thermal: introduce int3400 thermal driver 2014-10-10 13:57:09 +08:00
internal.h ACPI: Add support for device specific properties 2015-06-28 13:39:20 -04:00
Kconfig Thermal: int340x thermal: select ACPI fan driver 2014-10-17 14:30:41 +08:00
Makefile ACPI: Add support for device specific properties 2015-06-28 13:39:20 -04:00
numa.c ACPI / numa: Use __weak, not the gcc-specific version 2014-02-03 10:39:43 -07:00
nvs.c ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
osl.c ACPI / init: Fix the ordering of acpi_reserve_resources() 2015-06-10 13:42:40 -04:00
pci_irq.c x86, irq, PCI: Keep IRQ assignment for runtime power management 2014-08-29 13:38:00 +02:00
pci_link.c ACPI: Remove duplicate definitions of PREFIX 2014-03-19 02:01:57 +01:00
pci_root.c ACPI: Support _OSI("Darwin") correctly 2014-09-24 23:31:12 +02:00
pci_slot.c ACPI / PCI: Include appropriate header file in pci_slot.c 2014-01-06 00:13:22 +01:00
power.c ACPI: Remove duplicate definitions of PREFIX 2014-03-19 02:01:57 +01:00
proc.c ACPI / proc: remove unneeded NULL check 2014-02-05 01:06:21 +01:00
processor_core.c ACPI / processor: use container_of instead of casting first structure member 2014-09-24 23:13:02 +02:00
processor_driver.c ACPI / processor: Make acpi_cpu_soft_notify() process CPU FROZEN events 2014-08-06 22:22:03 +02:00
processor_idle.c cpuidle: ACPI: do not overwrite name and description of C0 2015-04-24 17:13:57 -04:00
processor_pdc.c ACPI / processor: Introduce ARCH_MIGHT_HAVE_ACPI_PDC 2014-07-21 13:50:58 +02:00
processor_perflib.c ACPI / processor: use acpi_evaluate_ost() to replace open-coded version 2014-02-21 00:27:47 +01:00
processor_thermal.c ACPI: correct minor typos 2013-12-07 01:38:45 +01:00
processor_throttling.c ACPI / processor: Rework processor throttling with work_on_cpu() 2014-02-27 00:21:05 +01:00
property.c Driver core: Unified device properties interface for platform firmware 2015-06-28 13:39:20 -04:00
reboot.c Revert "ACPI: ignore FADT reset-reg-sup flag" 2012-04-20 11:19:35 -07:00
resource.c ACPI / resources: only reject zero length resources based at address zero 2014-07-07 22:11:09 +02:00
sbs.c ACPI / SBS: Enable battery manager when present 2015-05-17 19:12:39 -04:00
sbshc.c ACPI / SBS: Add 5 us delay to fix SBS hangs on MacBook 2015-05-23 15:41:42 -04:00
sbshc.h ACPI: SBS: Ignore alarms coming from unknown devices 2007-12-14 15:14:06 -05:00
scan.c ACPI: Add support for device specific properties 2015-06-28 13:39:20 -04:00
sleep.c ACPI / sleep: Rework the handling of ACPI GPE wakeup from suspend-to-idle 2014-09-30 21:06:07 +02:00
sleep.h ACPI: Drop power resources driver 2013-01-17 14:11:06 +01:00
sysfs.c ACPICA: Events: Reduce source code difference for the ACPI_EVENT_FLAG_HANDLE renaming. 2014-10-21 00:39:40 +02:00
tables.c ACPI: use kstrto*() instead of simple_strto*() 2014-06-17 14:01:56 +02:00
thermal.c Thermal: move the KELVIN_TO_MILLICELSIUS macro to thermal.h 2014-10-10 13:57:15 +08:00
utils.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2014-10-24 11:21:43 -07:00
video.c ACPI / video: Load the module even if ACPI is disabled 2015-03-23 21:02:51 -04:00
video_detect.c ACPI / video: force vendor backlight on Lenovo Ideapad Z570 2014-09-24 23:09:41 +02:00
wakeup.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00