Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'acpi-5.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fixes from Rafael Wysocki:
"These fix an ACPI initialization ordering issue introduced in the 4.17
time frame and causing functional problems to appear on multiple
systems and fix some fallout of the recent change to enable building
kernels with ACPI support and without PCI.

Specifics:

- Restore the ACPI initialization ordering changed implicitly by the
module-level AML handling rework during the 4.17 development cycle
that caused the EC address space handler based on information from
ECDT to be set up before loading AML definition blocks, making it
effectively not accessible by AML on some systems that don't work
as expected any more (Rafael Wysocki).

- Add direct dependencies on PCI to Kconfig in multiple places for
code that depends on both ACPI and PCI, but the PCI dependency was
implicitly satisfied by the ACPI dependency before, to prevent
invalid configurations from being created, for example by
randconfig (Sinan Kaya)"

* tag 'acpi-5.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: EC: Look for ECDT EC after calling acpi_load_tables()
drivers: thermal: int340x_thermal: Make PCI dependency explicit
x86/intel/lpss: Make PCI dependency explicit
platform/x86: apple-gmux: Make PCI dependency explicit
platform/x86: intel_pmc: Make PCI dependency explicit
platform/x86: intel_ips: make PCI dependency explicit
vga-switcheroo: make PCI dependency explicit
ata: pata_acpi: Make PCI dependency explicit
ACPI / LPSS: Make PCI dependency explicit

+25 -19
+1 -1
arch/x86/Kconfig
··· 617 617 618 618 config X86_INTEL_LPSS 619 619 bool "Intel Low Power Subsystem Support" 620 - depends on X86 && ACPI 620 + depends on X86 && ACPI && PCI 621 621 select COMMON_CLK 622 622 select PINCTRL 623 623 select IOSF_MBI
+2 -1
drivers/acpi/Makefile
··· 41 41 acpi-$(CONFIG_ACPI_DOCK) += dock.o 42 42 acpi-$(CONFIG_PCI) += pci_root.o pci_link.o pci_irq.o 43 43 obj-$(CONFIG_ACPI_MCFG) += pci_mcfg.o 44 - acpi-y += acpi_lpss.o acpi_apd.o 44 + acpi-$(CONFIG_PCI) += acpi_lpss.o 45 + acpi-y += acpi_apd.o 45 46 acpi-y += acpi_platform.o 46 47 acpi-y += acpi_pnp.o 47 48 acpi-$(CONFIG_ARM_AMBA) += acpi_amba.o
+12 -12
drivers/acpi/bus.c
··· 1054 1054 goto error0; 1055 1055 } 1056 1056 1057 - /* 1058 - * ACPI 2.0 requires the EC driver to be loaded and work before 1059 - * the EC device is found in the namespace (i.e. before 1060 - * acpi_load_tables() is called). 1061 - * 1062 - * This is accomplished by looking for the ECDT table, and getting 1063 - * the EC parameters out of that. 1064 - * 1065 - * Ignore the result. Not having an ECDT is not fatal. 1066 - */ 1067 - status = acpi_ec_ecdt_probe(); 1068 - 1069 1057 #ifdef CONFIG_X86 1070 1058 if (!acpi_ioapic) { 1071 1059 /* compatible (0) means level (3) */ ··· 1129 1141 "Unable to load the System Description Tables\n"); 1130 1142 goto error1; 1131 1143 } 1144 + 1145 + /* 1146 + * ACPI 2.0 requires the EC driver to be loaded and work before the EC 1147 + * device is found in the namespace. 1148 + * 1149 + * This is accomplished by looking for the ECDT table and getting the EC 1150 + * parameters out of that. 1151 + * 1152 + * Do that before calling acpi_initialize_objects() which may trigger EC 1153 + * address space accesses. 1154 + */ 1155 + acpi_ec_ecdt_probe(); 1132 1156 1133 1157 status = acpi_enable_subsystem(ACPI_NO_ACPI_ENABLE); 1134 1158 if (ACPI_FAILURE(status)) {
+4
drivers/acpi/internal.h
··· 81 81 #else 82 82 static inline void acpi_debugfs_init(void) { return; } 83 83 #endif 84 + #ifdef CONFIG_PCI 84 85 void acpi_lpss_init(void); 86 + #else 87 + static inline void acpi_lpss_init(void) {} 88 + #endif 85 89 86 90 void acpi_apd_init(void); 87 91
+1 -1
drivers/ata/Kconfig
··· 1091 1091 1092 1092 config PATA_ACPI 1093 1093 tristate "ACPI firmware driver for PATA" 1094 - depends on ATA_ACPI && ATA_BMDMA 1094 + depends on ATA_ACPI && ATA_BMDMA && PCI 1095 1095 help 1096 1096 This option enables an ACPI method driver which drives 1097 1097 motherboard PATA controller interfaces through the ACPI
+1
drivers/gpu/vga/Kconfig
··· 21 21 bool "Laptop Hybrid Graphics - GPU switching support" 22 22 depends on X86 23 23 depends on ACPI 24 + depends on PCI 24 25 select VGA_ARB 25 26 help 26 27 Many laptops released in 2008/9/10 have two GPUs with a multiplexer
+3 -3
drivers/platform/x86/Kconfig
··· 1009 1009 1010 1010 config INTEL_IPS 1011 1011 tristate "Intel Intelligent Power Sharing" 1012 - depends on ACPI 1012 + depends on ACPI && PCI 1013 1013 ---help--- 1014 1014 Intel Calpella platforms support dynamic power sharing between the 1015 1015 CPU and GPU, maximizing performance in a given TDP. This driver, ··· 1135 1135 1136 1136 config APPLE_GMUX 1137 1137 tristate "Apple Gmux Driver" 1138 - depends on ACPI 1138 + depends on ACPI && PCI 1139 1139 depends on PNP 1140 1140 depends on BACKLIGHT_CLASS_DEVICE 1141 1141 depends on BACKLIGHT_APPLE=n || BACKLIGHT_APPLE ··· 1174 1174 1175 1175 config INTEL_PMC_IPC 1176 1176 tristate "Intel PMC IPC Driver" 1177 - depends on ACPI 1177 + depends on ACPI && PCI 1178 1178 ---help--- 1179 1179 This driver provides support for PMC control on some Intel platforms. 1180 1180 The PMC is an ARC processor which defines IPC commands for communication
+1 -1
drivers/thermal/intel/int340x_thermal/Kconfig
··· 4 4 5 5 config INT340X_THERMAL 6 6 tristate "ACPI INT340X thermal drivers" 7 - depends on X86 && ACPI 7 + depends on X86 && ACPI && PCI 8 8 select THERMAL_GOV_USER_SPACE 9 9 select ACPI_THERMAL_REL 10 10 select ACPI_FAN