[SeaBIOS] system_powerdown not working for qemu-kvm 0.12.4?

Ruben Kerkhof ruben at rubenkerkhof.com
Fri Oct 15 16:26:04 CEST 2010


On Fri, Oct 15, 2010 at 09:01, Gleb Natapov <gleb at redhat.com> wrote:
> On Fri, Oct 15, 2010 at 03:45:06AM +0200, Ruben Kerkhof wrote:
>> Is there anything I can do to help resolve this?
>> Would rolling back this commit have any impact on other operating systems?
>>
> Patch below should fix the problem.
>
> diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
> index bb0a176..dafcf45 100644
> --- a/src/acpi-dsdt.dsl
> +++ b/src/acpi-dsdt.dsl
> @@ -73,7 +73,7 @@ DefinitionBlock (
>  #define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
>                prt_slot0(0x0000),
>                /* Device 1 is power mgmt device, and can only use irq 9 */
> -               Package() { 0x0001ffff, 0, 0, 9 },
> +               Package() { 0x0001ffff, 0, LNKS, 0 },
>                Package() { 0x0001ffff, 1, LNKB, 0 },
>                Package() { 0x0001ffff, 2, LNKC, 0 },
>                Package() { 0x0001ffff, 3, LNKD, 0 },
> @@ -634,6 +634,46 @@ DefinitionBlock (
>                     Store (TMP, PRQ3)
>                 }
>         }
> +        Device(LNKS){
> +                Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
> +                Name(_UID, 5)
> +                Name(_PRS, ResourceTemplate(){
> +                    Interrupt (, Level, ActiveHigh, Shared)
> +                        { 9 }
> +                })
> +                Method (_STA, 0, NotSerialized)
> +                {
> +                    Store (0x0B, Local0)
> +                    If (And (0x80, PRQ0, Local1))
> +                    {
> +                         Store (0x09, Local0)
> +                    }
> +                    Return (Local0)
> +                }
> +                Method (_DIS, 0, NotSerialized)
> +                {
> +                    Or (PRQ0, 0x80, PRQ0)
> +                }
> +                Method (_CRS, 0, NotSerialized)
> +                {
> +                    Name (PRR0, ResourceTemplate ()
> +                    {
> +                        Interrupt (, Level, ActiveHigh, Shared)
> +                            {9}
> +                    })
> +                    CreateDWordField (PRR0, 0x05, TMP)
> +                    Store (PRQ0, Local0)
> +                    If (LLess (Local0, 0x80))
> +                    {
> +                        Store (Local0, TMP)
> +                    }
> +                    Else
> +                    {
> +                        Store (Zero, TMP)
> +                    }
> +                    Return (PRR0)
> +                }
> +        }
>     }
>
>     /*
> --
>                        Gleb.
>

It does indeed.

Thanks a lot!

Ruben


More information about the SeaBIOS mailing list