On 01/25/15 00:04, Laszlo Ersek wrote:
> The code in AcpiTableDxe handles the installation of FADT and FACS in both
> possible orders. In the [FADT, FACS] installation order, the FACS is at
> once linked into the FADT. In the [FACS, FADT] installation order, the
> FACS is stashed temporarily, and it is linked into the FADT when the FADT
> is installed later.
> 
> According to the ACPI specification, *at most one* of FADT.FirmwareCtrl
> and FADT.XFirmwareCtrl may be nonzero. The code is aware of this
> requirement, and it never sets both of them to nonzero values at once.
> 
> However, the code doesn't expect the following:
> 
> - The caller first installs the FACS, which is stashed. The address that
>   is saved happens to fall below 4GB.
> 
> - The caller then installs a FADT, with a zero FirmwareCtrl field, and a
>   nonzero (pre-populated) XFirmwareCtrl field.
> 
> In this case the code sets FADT.FirmwareCtrl to the less-than-4GB address
> of the stashed FACS, and leaves the different nonzero value in
> FADT.XFirmwareCtrl. This violates the ACPI specification.
> 
> Prevent this by always zeroing the field that we do *not* set.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Laszlo Ersek <[email protected]>
> ---
>  MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 4 ++++
>  1 file changed, 4 insertions(+)

Committed to SVN as r16659, with Yao Jiewen's R-b:

http://thread.gmane.org/gmane.comp.bios.tianocore.devel/12163

Thanks for that!
Laszlo


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to