]> xenbits.xensource.com Git - seabios.git/commitdiff
ACPI DSDT: Make control method `IQCR` serialized
authorPaul Menzel <paulepanter@users.sourceforge.net>
Thu, 3 Oct 2013 09:30:52 +0000 (11:30 +0200)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 26 Oct 2013 14:15:04 +0000 (10:15 -0400)
The ASL Optimizing Compiler version 20130823-32 [Sep 11 2013] issues the
following warning.

        $ make
        […]
          Compiling IASL out/src/fw/acpi-dsdt.hex
        out/src/fw/acpi-dsdt.dsl.i    360:         Method(IQCR, 1, NotSerialized) {
        Remark   2120 -                                     ^ Control Method should be made Serialized (due to creation of named objects within)
        […]
        ASL Input:     out/src/fw/acpi-dsdt.dsl.i - 475 lines, 19181 bytes, 316 keywords
        AML Output:    out/src/fw/acpi-dsdt.aml - 4407 bytes, 159 named objects, 157 executable opcodes
        Listing File:  out/src/fw/acpi-dsdt.lst - 143715 bytes
        Hex Dump:      out/src/fw/acpi-dsdt.hex - 41661 bytes

        Compilation complete. 0 Errors, 0 Warnings, 1 Remarks, 246 Optimizations
        […]

After changing the parameter from `NotSerialized` to `Serialized`, the
remark is indeed gone and there is no size change.

The remark was added in ACPICA version 20130517 [1] and gives the
following explanation.

        If a thread blocks within the method for any reason, and another thread
        enters the method, the method will fail because an attempt will be
        made to create the same (named) object twice.

        In this case, issue a remark that the method should be marked
        serialized. ACPICA BZ 909.

[1] https://github.com/acpica/acpica/commit/ba84d0fc18ba910a47a3f71c68a43543c06e6831

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
src/fw/acpi-dsdt.dsl
src/fw/q35-acpi-dsdt.dsl

index 158f6b4d00d259564cc8c26de7d0a88d1e53e97d..56243c3f43d5bc63543bb13ed5a50d391cd5a45a 100644 (file)
@@ -235,7 +235,7 @@ DefinitionBlock (
             }
             Return (0x0B)
         }
-        Method(IQCR, 1, NotSerialized) {
+        Method(IQCR, 1, Serialized) {
             // _CRS method - get current settings
             Name(PRR0, ResourceTemplate() {
                 Interrupt(, Level, ActiveHigh, Shared) { 0 }
index c031d839e9b130e0094adc0f4c7b5fc8a9ee09b6..5dec54146c0d4d2eddb7943fb0780ee9df52f226 100644 (file)
@@ -331,7 +331,7 @@ DefinitionBlock (
             }
             Return (0x0B)
         }
-        Method(IQCR, 1, NotSerialized) {
+        Method(IQCR, 1, Serialized) {
             // _CRS method - get current settings
             Name(PRR0, ResourceTemplate() {
                 Interrupt(, Level, ActiveHigh, Shared) { 0 }