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

Merge tag 'acpi-6.5-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki:
"Fix suspend-to-idle breakage on multiple systems introduced by one of
the recent commits that may cause the affected systems to overheat
while suspended"

* tag 'acpi-6.5-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: EC: Fix acpi_ec_dispatch_gpe()

+12 -6
+12 -6
drivers/acpi/ec.c
··· 1267 1267 spin_unlock_irq(&ec->lock); 1268 1268 } 1269 1269 1270 - static void acpi_ec_handle_interrupt(struct acpi_ec *ec) 1270 + static void clear_gpe_and_advance_transaction(struct acpi_ec *ec, bool interrupt) 1271 1271 { 1272 - unsigned long flags; 1273 - 1274 - spin_lock_irqsave(&ec->lock, flags); 1275 - 1276 1272 /* 1277 1273 * Clear GPE_STS upfront to allow subsequent hardware GPE_STS 0->1 1278 1274 * changes to always trigger a GPE interrupt. ··· 1285 1289 acpi_clear_gpe(NULL, ec->gpe); 1286 1290 1287 1291 advance_transaction(ec, true); 1292 + } 1293 + 1294 + static void acpi_ec_handle_interrupt(struct acpi_ec *ec) 1295 + { 1296 + unsigned long flags; 1297 + 1298 + spin_lock_irqsave(&ec->lock, flags); 1299 + 1300 + clear_gpe_and_advance_transaction(ec, true); 1301 + 1288 1302 spin_unlock_irqrestore(&ec->lock, flags); 1289 1303 } 1290 1304 ··· 2089 2083 if (acpi_ec_gpe_status_set(first_ec)) { 2090 2084 pm_pr_dbg("ACPI EC GPE status set\n"); 2091 2085 2092 - advance_transaction(first_ec, false); 2086 + clear_gpe_and_advance_transaction(first_ec, false); 2093 2087 work_in_progress = acpi_ec_work_in_progress(first_ec); 2094 2088 } 2095 2089