qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] ACPI DSDT: Make control method `IQCR` serialize


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PATCH] ACPI DSDT: Make control method `IQCR` serialized
Date: Thu, 14 Nov 2013 15:37:39 +0200

On Thu, 2013-11-14 at 14:16 +0200, Michael S. Tsirkin wrote:
> Forward-port the following commit from seabios:
> 
> commit 995bbeef78b338370f426bf8d0399038c3fa259c
> Author: Paul Menzel <address@hidden>
> Date:   Thu Oct 3 11:30:52 2013 +0200
> 
>     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 <address@hidden>
> 
> Reported-by: Marcel Apfelbaum <address@hidden>
> Signed-off-by: Michael S. Tsirkin <address@hidden>

Dumped the acpi tables and verified  that is ok now. Thanks!
Tested-by: Marcel Apfelbaum <address@hidden>

> ---
>  hw/i386/acpi-dsdt.dsl               | 2 +-
>  hw/i386/acpi-dsdt.hex.generated     | 4 ++--
>  hw/i386/q35-acpi-dsdt.dsl           | 2 +-
>  hw/i386/q35-acpi-dsdt.hex.generated | 4 ++--
>  4 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/i386/acpi-dsdt.dsl b/hw/i386/acpi-dsdt.dsl
> index 90efce0..a377424 100644
> --- a/hw/i386/acpi-dsdt.dsl
> +++ b/hw/i386/acpi-dsdt.dsl
> @@ -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 }
> diff --git a/hw/i386/acpi-dsdt.hex.generated b/hw/i386/acpi-dsdt.hex.generated
> index 2c01107..f8bd4ea 100644
> --- a/hw/i386/acpi-dsdt.hex.generated
> +++ b/hw/i386/acpi-dsdt.hex.generated
> @@ -8,7 +8,7 @@ static unsigned char AcpiDsdtAmlCode[] = {
>  0x0,
>  0x0,
>  0x1,
> -0xe0,
> +0xd8,
>  0x42,
>  0x58,
>  0x50,
> @@ -3379,7 +3379,7 @@ static unsigned char AcpiDsdtAmlCode[] = {
>  0x51,
>  0x43,
>  0x52,
> -0x1,
> +0x9,
>  0x8,
>  0x50,
>  0x52,
> diff --git a/hw/i386/q35-acpi-dsdt.dsl b/hw/i386/q35-acpi-dsdt.dsl
> index 21c89b0..575c5d7 100644
> --- a/hw/i386/q35-acpi-dsdt.dsl
> +++ b/hw/i386/q35-acpi-dsdt.dsl
> @@ -333,7 +333,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 }
> diff --git a/hw/i386/q35-acpi-dsdt.hex.generated 
> b/hw/i386/q35-acpi-dsdt.hex.generated
> index 32c16ff..111ad3e 100644
> --- a/hw/i386/q35-acpi-dsdt.hex.generated
> +++ b/hw/i386/q35-acpi-dsdt.hex.generated
> @@ -8,7 +8,7 @@ static unsigned char Q35AcpiDsdtAmlCode[] = {
>  0x0,
>  0x0,
>  0x1,
> -0x6,
> +0xfe,
>  0x42,
>  0x58,
>  0x50,
> @@ -5338,7 +5338,7 @@ static unsigned char Q35AcpiDsdtAmlCode[] = {
>  0x51,
>  0x43,
>  0x52,
> -0x1,
> +0x9,
>  0x8,
>  0x50,
>  0x52,






reply via email to

[Prev in Thread] Current Thread [Next in Thread]