linux/include/acpi
Lv Zheng c04e1fb439 ACPICA: Tables: Enable both 32-bit and 64-bit FACS
ACPICA commit f7b86f35416e3d1f71c3d816ff5075ddd33ed486

The following commit is reported to have broken s2ram on some platforms:
 Commit: 0249ed2444
 ACPICA: Add option to favor 32-bit FADT addresses.
The platform reports 2 FACS tables (which is not allowed by ACPI
specification) and the new 32-bit address favor rule forces OSPMs to use
the FACS table reported via FADT's X_FIRMWARE_CTRL field.

The root cause of the reported bug might be one of the followings:
1. BIOS may favor the 64-bit firmware waking vector address when the
   version of the FACS is greater than 0 and Linux currently only supports
   resuming from the real mode, so the 64-bit firmware waking vector has
   never been set and might be invalid to BIOS while the commit enables
   higher version FACS.
2. BIOS may favor the FACS reported via the "FIRMWARE_CTRL" field in the
   FADT while the commit doesn't set the firmware waking vector address of
   the FACS reported by "FIRMWARE_CTRL", it only sets the firware waking
   vector address of the FACS reported by "X_FIRMWARE_CTRL".

This patch excludes the cases that can trigger the bugs caused by the root
cause 2.

There is no handshaking mechanism can be used by OSPM to tell BIOS which
FACS is currently used. Thus the FACS reported by "FIRMWARE_CTRL" may still
be used by BIOS and the 0 value of the 32-bit firmware waking vector might
trigger such failure.

This patch tries to favor 32bit FACS address in another way where both the
FACS reported by "FIRMWARE_CTRL" and the FACS reported by "X_FIRMWARE_CTRL"
are loaded so that further commit can set firmware waking vector in the
both tables to ensure we can exclude the cases that trigger the bugs caused
by the root cause 2. The exclusion is split into 2 commits as this commit
is also useful for dumping more ACPI tables, it won't get reverted when
such exclusion is no longer necessary. Lv Zheng.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=74021
Link: https://github.com/acpica/acpica/commit/f7b86f35
Cc: 3.14.1+ <stable@vger.kernel.org> # 3.14.1+
Reported-and-tested-by: Oswald Buddenhagen <ossi@kde.org>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-07-01 23:17:52 +02:00
..
platform ACPICA: Linuxize: Reduce divergences for 20150616 release 2015-06-23 15:44:53 +02:00
acbuffer.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acconfig.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acexcep.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acnames.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acoutput.h kernel.h: remove ancient __FUNCTION__ hack 2015-02-12 18:54:13 -08:00
acpi.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acpi_bus.h Merge branch 'device-properties' 2015-04-13 00:35:54 +02:00
acpi_drivers.h ACPI / PCI: Stub out pci_acpi_crs_quirks() and make it x86 specific 2014-05-07 01:09:47 +02:00
acpi_io.h ACPI: fix acpi_os_ioremap for arm64 2015-03-25 11:49:30 +00:00
acpi_lpat.h ACPI / LPAT: Common table processing functions 2015-01-29 21:02:10 +08:00
acpi_numa.h ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static 2014-02-03 10:39:38 -07:00
acpiosxf.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
acpixf.h ACPICA: Tables: Enable both 32-bit and 64-bit FACS 2015-07-01 23:17:52 +02:00
acrestyp.h ACPICA: Update Copyright headers to 2015 2015-02-05 15:31:43 +01:00
actbl.h ACPICA: ACPI 6.0: Add changes for FADT table. 2015-05-22 03:22:19 +02:00
actbl1.h ACPICA: ACPI 6.0: Add support for NFIT table. 2015-05-22 03:22:21 +02:00
actbl2.h ACPICA: ACPI 6.0: Add support for IORT table. 2015-05-22 03:22:20 +02:00
actbl3.h ACPICA: ACPI 6.0: Add changes for DRTM table. 2015-05-22 03:22:20 +02:00
actypes.h ACPICA: ACPI 6.0: Add ACPI_SUB_PTR(). 2015-05-22 03:22:20 +02:00
acuuid.h ACPICA: Fix for ill-formed GUID strings for NFIT tables. 2015-05-25 23:42:34 +02:00
apei.h acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context. 2014-07-22 15:05:06 -07:00
button.h ACPI: make ACPI button funcs no-ops if not built in 2009-09-17 14:48:23 -07:00
ghes.h ACPICA: Restore error table definitions to reduce code differences between Linux and ACPICA upstream. 2014-06-16 22:33:50 +02:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI / processor: Introduce phys_cpuid_t for CPU hardware ID 2015-03-26 15:12:51 +00:00
reboot.h Add the ability to reset the machine using the RESET_REG in ACPI's FADT table. 2008-07-16 23:27:08 +02:00
video.h ACPI / i915: ignore firmware requests for backlight change 2014-07-07 23:38:05 +02:00