ACPI / battery: If _BIX fails, retry with _BIF
authorDave Lambley <linux@davel.me.uk>
Fri, 4 Nov 2016 01:05:40 +0000 (01:05 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 16 Nov 2016 22:09:45 +0000 (23:09 +0100)
commit2d09af4a88d99a8dd0429263451b7b88e6d92738
treeabaee425ecd9e7dfc0611c8754c5c6419b943268
parenta25f0944ba9b1d8a6813fd6f1a86f1bd59ac25a6
ACPI / battery: If _BIX fails, retry with _BIF

The Lenovo Yoga 300 laptop's firmware advertises that it provides the _BIX
the method to retrieve battery information. Unfortunately (some versions
of?) the implementation return with an error.

[   21.712228] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000010) is beyond end of object (length 0xD) (20160422/exoparg2-427)
[   21.712244] ACPI Error: Method parse/execution failed [\_SB.PCI0.LPCB.H_EC.BAT1._BIX] (Node ffff95f8ff0b20f0), AE_AML_PACKAGE_LIMIT (20160422/psparse-542)

The _BIF method does succeed and returns convincing data. We detect _BIX
failing and automatically retry with _BIF.

Signed-off-by: Dave Lambley <linux@davel.me.uk>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/battery.c