From f1cbea148c1d1392302bf1469fad26aea6cf3659 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Wed, 2 Sep 2015 18:45:40 +0000 Subject: [PATCH] OvmfPkg: AcpiTables: serialize control methods that create named objects Bruce Cran reported the following issue: With iasl version 20150410-64 building OvmfX64 (using OvmfPkg/build.sh -a X64 -t GCC49 -b RELEASE) results in a couple of warnings about methods that should be serialized: .../OvmfPkg/AcpiTables/AcpiTables/OUTPUT/./Dsdt.iiii 95: Method (_CRS, 0) { Remark 2120 - Control Method should be made Serialized ^ (due to creation of named objects within) .../OvmfPkg/AcpiTables/AcpiTables/OUTPUT/./Dsdt.iiii 235: Method (PCRS, 1, NotSerialized) { Remark 2120 - Control Method should be made Serialized ^ (due to creation of named objects within) The ACPI 6.0 spec justifies the above warnings in "19.6.82 Method (Declare Control Method)": [...] The serialize rule can be used to prevent reentering of a method. This is especially useful if the method creates namespace objects. Without the serialize rule, the reentering of a method will fail when it attempts to create the same namespace object. [...] Cc: Bruce Cran Reported-by: Bruce Cran Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Jordan Justen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18392 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/AcpiTables/Dsdt.asl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/AcpiTables/Dsdt.asl b/OvmfPkg/AcpiTables/Dsdt.asl index 519a31250a..2c3a314af6 100644 --- a/OvmfPkg/AcpiTables/Dsdt.asl +++ b/OvmfPkg/AcpiTables/Dsdt.asl @@ -130,7 +130,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 1, "INTEL ", "OVMF ", 4) { ) }) - Method (_CRS, 0) { + Method (_CRS, 0, Serialized) { // // see the FIRMWARE_DATA structure in "OvmfPkg/AcpiPlatformDxe/Qemu.c" // @@ -360,7 +360,7 @@ DefinitionBlock ("Dsdt.aml", "DSDT", 1, "INTEL ", "OVMF ", 4) { // _CRS method for LNKA, LNKB, LNKC, LNKD // Arg0[in]: value of PIRA / PIRB / PIRC / PIRD // - Method (PCRS, 1, NotSerialized) { + Method (PCRS, 1, Serialized) { // // create temporary buffer with an Extended Interrupt Descriptor // whose single vector defaults to zero