From: Greg Kroah-Hartman Date: Tue, 15 Jul 2014 23:14:37 +0000 (-0700) Subject: 3.10-stable patches X-Git-Tag: v3.4.99~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d4940e5cfebab2941241f31b913aff014b319370;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: acpi-battery-retry-to-get-battery-information-if-failed-during-probing.patch --- diff --git a/queue-3.10/acpi-battery-retry-to-get-battery-information-if-failed-during-probing.patch b/queue-3.10/acpi-battery-retry-to-get-battery-information-if-failed-during-probing.patch new file mode 100644 index 00000000000..0bec38ae3d1 --- /dev/null +++ b/queue-3.10/acpi-battery-retry-to-get-battery-information-if-failed-during-probing.patch @@ -0,0 +1,82 @@ +From 75646e758a0ecbed5024454507d5be5b9ea9dcbf Mon Sep 17 00:00:00 2001 +From: Lan Tianyu +Date: Mon, 7 Jul 2014 15:47:12 +0800 +Subject: ACPI / battery: Retry to get battery information if failed during probing + +From: Lan Tianyu + +commit 75646e758a0ecbed5024454507d5be5b9ea9dcbf upstream. + +Some machines (eg. Lenovo Z480) ECs are not stable during boot up +and causes battery driver fails to be loaded due to failure of getting +battery information from EC sometimes. After several retries, the +operation will work. This patch is to retry to get battery information 5 +times if the first try fails. + +[ backport to 3.14.5: removed second parameter in acpi_battery_update(), +introduced by the commit 9e50bc14a7f58b5d8a55973b2d69355852ae2dae (ACPI / +battery: Accelerate battery resume callback)] + +[naszar : backport to 3.14.5] +Link: https://bugzilla.kernel.org/show_bug.cgi?id=75581 +Reported-and-tested-by: naszar +Cc: All applicable +Signed-off-by: Lan Tianyu +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + drivers/acpi/battery.c | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +--- a/drivers/acpi/battery.c ++++ b/drivers/acpi/battery.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + + #ifdef CONFIG_ACPI_PROCFS_POWER +@@ -1081,6 +1082,28 @@ static struct dmi_system_id bat_dmi_tabl + {}, + }; + ++/* ++ * Some machines'(E,G Lenovo Z480) ECs are not stable ++ * during boot up and this causes battery driver fails to be ++ * probed due to failure of getting battery information ++ * from EC sometimes. After several retries, the operation ++ * may work. So add retry code here and 20ms sleep between ++ * every retries. ++ */ ++static int acpi_battery_update_retry(struct acpi_battery *battery) ++{ ++ int retry, ret; ++ ++ for (retry = 5; retry; retry--) { ++ ret = acpi_battery_update(battery); ++ if (!ret) ++ break; ++ ++ msleep(20); ++ } ++ return ret; ++} ++ + static int acpi_battery_add(struct acpi_device *device) + { + int result = 0; +@@ -1100,9 +1123,11 @@ static int acpi_battery_add(struct acpi_ + if (ACPI_SUCCESS(acpi_get_handle(battery->device->handle, + "_BIX", &handle))) + set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags); +- result = acpi_battery_update(battery); ++ ++ result = acpi_battery_update_retry(battery); + if (result) + goto fail; ++ + #ifdef CONFIG_ACPI_PROCFS_POWER + result = acpi_battery_add_fs(device); + #endif diff --git a/queue-3.10/series b/queue-3.10/series index 45fcd0f52d2..af62190e791 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -41,3 +41,4 @@ x86-espfix-fix-broken-header-guard.patch x86-espfix-make-espfix64-a-kconfig-option-fix-uml.patch x86-espfix-make-it-possible-to-disable-16-bit-support.patch x86-ioremap-speed-up-check-for-ram-pages.patch +acpi-battery-retry-to-get-battery-information-if-failed-during-probing.patch