Skip to content

Commit 6625914

Browse files
Lv Zhengrafaeljw
authored andcommitted
ACPI / EC: Drop EC noirq hooks to fix a regression
According to bug reports, although the busy polling mode can make noirq stages execute faster, it causes abnormal fan blowing up after system resume (see the first link below for a video demonstration) on Lenovo ThinkPad X1 Carbon - the 5th Generation. The problem can be fixed by upgrading the EC firmware on that machine. However, many reporters confirm that the problem can be fixed by stopping busy polling during suspend/resume and for some of them upgrading the EC firmware is not an option. For this reason, drop the noirq stage hooks from the EC driver to fix the regression. Fixes: c3a696b (ACPI / EC: Use busy polling mode when GPE is not enabled) Link: https://youtu.be/9NQ9x-Jm99Q Link: https://bugzilla.kernel.org/show_bug.cgi?id=196129 Reported-by: Andreas Lindhe <[email protected]> Tested-by: Gjorgji Jankovski <[email protected]> Tested-by: Damjan Georgievski <[email protected]> Tested-by: Fernando Chaves <[email protected]> Tested-by: Tomislav Ivek <[email protected]> Tested-by: Denis P. <[email protected]> Signed-off-by: Lv Zheng <[email protected]> Cc: All applicable <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent ef75040 commit 6625914

File tree

1 file changed

+0
-19
lines changed

1 file changed

+0
-19
lines changed

drivers/acpi/ec.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,24 +1870,6 @@ int __init acpi_ec_ecdt_probe(void)
18701870
}
18711871

18721872
#ifdef CONFIG_PM_SLEEP
1873-
static int acpi_ec_suspend_noirq(struct device *dev)
1874-
{
1875-
struct acpi_ec *ec =
1876-
acpi_driver_data(to_acpi_device(dev));
1877-
1878-
acpi_ec_enter_noirq(ec);
1879-
return 0;
1880-
}
1881-
1882-
static int acpi_ec_resume_noirq(struct device *dev)
1883-
{
1884-
struct acpi_ec *ec =
1885-
acpi_driver_data(to_acpi_device(dev));
1886-
1887-
acpi_ec_leave_noirq(ec);
1888-
return 0;
1889-
}
1890-
18911873
static int acpi_ec_suspend(struct device *dev)
18921874
{
18931875
struct acpi_ec *ec =
@@ -1909,7 +1891,6 @@ static int acpi_ec_resume(struct device *dev)
19091891
#endif
19101892

19111893
static const struct dev_pm_ops acpi_ec_pm = {
1912-
SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(acpi_ec_suspend_noirq, acpi_ec_resume_noirq)
19131894
SET_SYSTEM_SLEEP_PM_OPS(acpi_ec_suspend, acpi_ec_resume)
19141895
};
19151896

0 commit comments

Comments
 (0)