• Lv Zheng's avatar
    ACPICA: Tables: Enable both 32-bit and 64-bit FACS · c04e1fb4
    Lv Zheng authored
    ACPICA commit f7b86f35416e3d1f71c3d816ff5075ddd33ed486
    
    The following commit is reported to have broken s2ram on some platforms:
     Commit: 0249ed24
     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: default avatarOswald Buddenhagen <ossi@kde.org>
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    c04e1fb4
tbxfload.c 12.4 KB