All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: imammedo@redhat.com, qemu-devel@nongnu.org, dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 4/4] pc: merge DSDT common parts into acpi-dsdt-common.dsl
Date: Mon, 19 Jan 2015 17:26:23 +0200	[thread overview]
Message-ID: <20150119152623.GC5240@redhat.com> (raw)
In-Reply-To: <1419437261-21113-5-git-send-email-pbonzini@redhat.com>

On Wed, Dec 24, 2014 at 05:07:38PM +0100, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

This isn't a dependency of patches 5 and on, is it?

> ---
>  hw/i386/acpi-dsdt-common.dsl      | 345 +++++++++++++++++++++++++++++++++++++-
>  hw/i386/acpi-dsdt-dbug.dsl        |  41 -----
>  hw/i386/acpi-dsdt-hpet.dsl        |  48 ------
>  hw/i386/acpi-dsdt-isa.dsl         | 132 ---------------
>  hw/i386/acpi-dsdt-mem-hotplug.dsl | 176 -------------------
>  5 files changed, 341 insertions(+), 401 deletions(-)
>  delete mode 100644 hw/i386/acpi-dsdt-dbug.dsl
>  delete mode 100644 hw/i386/acpi-dsdt-hpet.dsl
>  delete mode 100644 hw/i386/acpi-dsdt-isa.dsl
>  delete mode 100644 hw/i386/acpi-dsdt-mem-hotplug.dsl
> 
> diff --git a/hw/i386/acpi-dsdt-common.dsl b/hw/i386/acpi-dsdt-common.dsl
> index 1929f8f..19e9753 100644
> --- a/hw/i386/acpi-dsdt-common.dsl
> +++ b/hw/i386/acpi-dsdt-common.dsl
> @@ -24,10 +24,347 @@ DefinitionBlock ("acpi-dsdt-common.aml", "SSDT", 0x01, "BXPC", "BXSSDTCOMM", 0x1
>      External(\_SB.PCI0.PCI, DeviceObj)
>  
>  #include "hw/acpi/pc-hotplug.h"
> -#include "acpi-dsdt-dbug.dsl"
> -#include "acpi-dsdt-hpet.dsl"
> -#include "acpi-dsdt-isa.dsl"
> -#include "acpi-dsdt-mem-hotplug.dsl"
> +
> +/****************************************************************
> + * Debugging
> + ****************************************************************/
> +
> +    Scope(\) {
> +        /* Debug Output */
> +        OperationRegion(DBG, SystemIO, 0x0402, 0x01)
> +        Field(DBG, ByteAcc, NoLock, Preserve) {
> +            DBGB,   8,
> +        }
> +
> +        /* Debug method - use this method to send output to the QEMU
> +         * BIOS debug port.  This method handles strings, integers,
> +         * and buffers.  For example: DBUG("abc") DBUG(0x123) */
> +        Method(DBUG, 1) {
> +            ToHexString(Arg0, Local0)
> +            ToBuffer(Local0, Local0)
> +            Subtract(SizeOf(Local0), 1, Local1)
> +            Store(Zero, Local2)
> +            While (LLess(Local2, Local1)) {
> +                Store(DerefOf(Index(Local0, Local2)), DBGB)
> +                Increment(Local2)
> +            }
> +            Store(0x0A, DBGB)
> +        }
> +    }
> +
> +    /****************************************************************
> +     * HPET
> +     ****************************************************************/
> +
> +    Scope(\_SB) {
> +        Device(HPET) {
> +            Name(_HID, EISAID("PNP0103"))
> +            Name(_UID, 0)
> +            OperationRegion(HPTM, SystemMemory, 0xFED00000, 0x400)
> +            Field(HPTM, DWordAcc, Lock, Preserve) {
> +                VEND, 32,
> +                PRD, 32,
> +            }
> +            Method(_STA, 0, NotSerialized) {
> +                Store(VEND, Local0)
> +                Store(PRD, Local1)
> +                ShiftRight(Local0, 16, Local0)
> +                If (LOr(LEqual(Local0, 0), LEqual(Local0, 0xffff))) {
> +                    Return (0x0)
> +                }
> +                If (LOr(LEqual(Local1, 0), LGreater(Local1, 100000000))) {
> +                    Return (0x0)
> +                }
> +                Return (0x0F)
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                Memory32Fixed(ReadOnly,
> +                    0xFED00000,         // Address Base
> +                    0x00000400,         // Address Length
> +                    )
> +            })
> +        }
> +    }
> +
> +    /* Common legacy ISA style devices. */
> +    Scope(\_SB.PCI0.ISA) {
> +
> +        Device (SMC) {
> +            Name(_HID, EisaId("APP0001"))
> +            /* _STA will be patched to 0x0B if AppleSMC is present */
> +            ACPI_EXTRACT_NAME_BYTE_CONST dsdt_applesmc_sta
> +            Name(_STA, 0xF0)
> +            Name(_CRS, ResourceTemplate () {
> +                IO (Decode16, 0x0300, 0x0300, 0x01, 0x20)
> +                IRQNoFlags() { 6 }
> +            })
> +        }
> +
> +        Device(RTC) {
> +            Name(_HID, EisaId("PNP0B00"))
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x0070, 0x0070, 0x10, 0x02)
> +                IRQNoFlags() { 8 }
> +                IO(Decode16, 0x0072, 0x0072, 0x02, 0x06)
> +            })
> +        }
> +
> +        Device(KBD) {
> +            Name(_HID, EisaId("PNP0303"))
> +            Method(_STA, 0, NotSerialized) {
> +                Return (0x0f)
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x0060, 0x0060, 0x01, 0x01)
> +                IO(Decode16, 0x0064, 0x0064, 0x01, 0x01)
> +                IRQNoFlags() { 1 }
> +            })
> +        }
> +
> +        Device(MOU) {
> +            Name(_HID, EisaId("PNP0F13"))
> +            Method(_STA, 0, NotSerialized) {
> +                Return (0x0f)
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IRQNoFlags() { 12 }
> +            })
> +        }
> +
> +        External(FDEN)
> +        Device(FDC0) {
> +            Name(_HID, EisaId("PNP0700"))
> +            Method(_STA, 0, NotSerialized) {
> +                Store(FDEN, Local0)
> +                If (LEqual(Local0, 0)) {
> +                    Return (0x00)
> +                } Else {
> +                    Return (0x0F)
> +                }
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
> +                IO(Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
> +                IRQNoFlags() { 6 }
> +                DMA(Compatibility, NotBusMaster, Transfer8) { 2 }
> +            })
> +        }
> +
> +        External(LPEN)
> +        Device(LPT) {
> +            Name(_HID, EisaId("PNP0400"))
> +            Method(_STA, 0, NotSerialized) {
> +                Store(LPEN, Local0)
> +                If (LEqual(Local0, 0)) {
> +                    Return (0x00)
> +                } Else {
> +                    Return (0x0F)
> +                }
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x0378, 0x0378, 0x08, 0x08)
> +                IRQNoFlags() { 7 }
> +            })
> +        }
> +
> +        External(CAEN)
> +        Device(COM1) {
> +            Name(_HID, EisaId("PNP0501"))
> +            Name(_UID, 0x01)
> +            Method(_STA, 0, NotSerialized) {
> +                Store(CAEN, Local0)
> +                If (LEqual(Local0, 0)) {
> +                    Return (0x00)
> +                } Else {
> +                    Return (0x0F)
> +                }
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
> +                IRQNoFlags() { 4 }
> +            })
> +        }
> +
> +        External(CBEN)
> +        Device(COM2) {
> +            Name(_HID, EisaId("PNP0501"))
> +            Name(_UID, 0x02)
> +            Method(_STA, 0, NotSerialized) {
> +                Store(CBEN, Local0)
> +                If (LEqual(Local0, 0)) {
> +                    Return (0x00)
> +                } Else {
> +                    Return (0x0F)
> +                }
> +            }
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
> +                IRQNoFlags() { 3 }
> +            })
> +        }
> +    }
> +
> +    External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
> +
> +    Scope(\_SB.PCI0) {
> +        Device(MEMORY_HOTPLUG_DEVICE) {
> +            Name(_HID, "PNP0A06")
> +            Name(_UID, "Memory hotplug resources")
> +            External(MEMORY_SLOTS_NUMBER, IntObj)
> +
> +            /* Memory hotplug IO registers */
> +            OperationRegion(MEMORY_HOTPLUG_IO_REGION, SystemIO,
> +                            ACPI_MEMORY_HOTPLUG_BASE,
> +                            ACPI_MEMORY_HOTPLUG_IO_LEN)
> +
> +            Name(_CRS, ResourceTemplate() {
> +                IO(Decode16, ACPI_MEMORY_HOTPLUG_BASE, ACPI_MEMORY_HOTPLUG_BASE,
> +                   0, ACPI_MEMORY_HOTPLUG_IO_LEN, IO)
> +            })
> +
> +            Method(_STA, 0) {
> +                If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> +                    Return(0x0)
> +                }
> +                /* present, functioning, decoding, not shown in UI */
> +                Return(0xB)
> +            }
> +
> +            Field(MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
> +                MEMORY_SLOT_ADDR_LOW, 32,  // read only
> +                MEMORY_SLOT_ADDR_HIGH, 32, // read only
> +                MEMORY_SLOT_SIZE_LOW, 32,  // read only
> +                MEMORY_SLOT_SIZE_HIGH, 32, // read only
> +                MEMORY_SLOT_PROXIMITY, 32, // read only
> +            }
> +            Field(MEMORY_HOTPLUG_IO_REGION, ByteAcc, NoLock, Preserve) {
> +                Offset(20),
> +                MEMORY_SLOT_ENABLED,  1, // 1 if enabled, read only
> +                MEMORY_SLOT_INSERT_EVENT, 1, // (read) 1 if has a insert event. (write) 1 to clear event
> +            }
> +
> +            Mutex (MEMORY_SLOT_LOCK, 0)
> +            Field (MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
> +                MEMORY_SLOT_SLECTOR, 32,  // DIMM selector, write only
> +                MEMORY_SLOT_OST_EVENT, 32,  // _OST event code, write only
> +                MEMORY_SLOT_OST_STATUS, 32,  // _OST status code, write only
> +            }
> +
> +            Method(MEMORY_SLOT_SCAN_METHOD, 0) {
> +                If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> +                     Return(Zero)
> +                }
> +
> +                Store(Zero, Local0) // Mem devs iterrator
> +                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> +                while (LLess(Local0, MEMORY_SLOTS_NUMBER)) {
> +                    Store(Local0, MEMORY_SLOT_SLECTOR) // select Local0 DIMM
> +                    If (LEqual(MEMORY_SLOT_INSERT_EVENT, One)) { // Memory device needs check
> +                        MEMORY_SLOT_NOTIFY_METHOD(Local0, 1)
> +                        Store(1, MEMORY_SLOT_INSERT_EVENT)
> +                    }
> +                    // TODO: handle memory eject request
> +                    Add(Local0, One, Local0) // goto next DIMM
> +                }
> +                Release(MEMORY_SLOT_LOCK)
> +                Return(One)
> +            }
> +
> +            Method(MEMORY_SLOT_STATUS_METHOD, 1) {
> +                Store(Zero, Local0)
> +
> +                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> +                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> +
> +                If (LEqual(MEMORY_SLOT_ENABLED, One)) {
> +                    Store(0xF, Local0)
> +                }
> +
> +                Release(MEMORY_SLOT_LOCK)
> +                Return(Local0)
> +            }
> +
> +            Method(MEMORY_SLOT_CRS_METHOD, 1, Serialized) {
> +                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> +                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> +
> +                Name(MR64, ResourceTemplate() {
> +                    QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
> +                    Cacheable, ReadWrite,
> +                    0x0000000000000000,        // Address Space Granularity
> +                    0x0000000000000000,        // Address Range Minimum
> +                    0xFFFFFFFFFFFFFFFE,        // Address Range Maximum
> +                    0x0000000000000000,        // Address Translation Offset
> +                    0xFFFFFFFFFFFFFFFF,        // Address Length
> +                    ,, MW64, AddressRangeMemory, TypeStatic)
> +                })
> +
> +                CreateDWordField(MR64, 14, MINL)
> +                CreateDWordField(MR64, 18, MINH)
> +                CreateDWordField(MR64, 38, LENL)
> +                CreateDWordField(MR64, 42, LENH)
> +                CreateDWordField(MR64, 22, MAXL)
> +                CreateDWordField(MR64, 26, MAXH)
> +
> +                Store(MEMORY_SLOT_ADDR_HIGH, MINH)
> +                Store(MEMORY_SLOT_ADDR_LOW, MINL)
> +                Store(MEMORY_SLOT_SIZE_HIGH, LENH)
> +                Store(MEMORY_SLOT_SIZE_LOW, LENL)
> +
> +                // 64-bit math: MAX = MIN + LEN - 1
> +                Add(MINL, LENL, MAXL)
> +                Add(MINH, LENH, MAXH)
> +                If (LLess(MAXL, MINL)) {
> +                    Add(MAXH, One, MAXH)
> +                }
> +                If (LLess(MAXL, One)) {
> +                    Subtract(MAXH, One, MAXH)
> +                }
> +                Subtract(MAXL, One, MAXL)
> +
> +                If (LEqual(MAXH, Zero)){
> +                    Name(MR32, ResourceTemplate() {
> +                        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
> +                        Cacheable, ReadWrite,
> +                        0x00000000,        // Address Space Granularity
> +                        0x00000000,        // Address Range Minimum
> +                        0xFFFFFFFE,        // Address Range Maximum
> +                        0x00000000,        // Address Translation Offset
> +                        0xFFFFFFFF,        // Address Length
> +                        ,, MW32, AddressRangeMemory, TypeStatic)
> +                    })
> +                    CreateDWordField(MR32, MW32._MIN, MIN)
> +                    CreateDWordField(MR32, MW32._MAX, MAX)
> +                    CreateDWordField(MR32, MW32._LEN, LEN)
> +                    Store(MINL, MIN)
> +                    Store(MAXL, MAX)
> +                    Store(LENL, LEN)
> +
> +                    Release(MEMORY_SLOT_LOCK)
> +                    Return(MR32)
> +                }
> +
> +                Release(MEMORY_SLOT_LOCK)
> +                Return(MR64)
> +            }
> +
> +            Method(MEMORY_SLOT_PROXIMITY_METHOD, 1) {
> +                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> +                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> +                Store(MEMORY_SLOT_PROXIMITY, Local0)
> +                Release(MEMORY_SLOT_LOCK)
> +                Return(Local0)
> +            }
> +
> +            Method(MEMORY_SLOT_OST_METHOD, 4) {
> +                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> +                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> +                Store(Arg1, MEMORY_SLOT_OST_EVENT)
> +                Store(Arg2, MEMORY_SLOT_OST_STATUS)
> +                Release(MEMORY_SLOT_LOCK)
> +            }
> +        } // Device()
> +    } // Scope()
>  
>  
>  /****************************************************************
> diff --git a/hw/i386/acpi-dsdt-dbug.dsl b/hw/i386/acpi-dsdt-dbug.dsl
> deleted file mode 100644
> index 86230f7..0000000
> --- a/hw/i386/acpi-dsdt-dbug.dsl
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> -
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> -
> - * You should have received a copy of the GNU General Public License along
> - * with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/****************************************************************
> - * Debugging
> - ****************************************************************/
> -
> -Scope(\) {
> -    /* Debug Output */
> -    OperationRegion(DBG, SystemIO, 0x0402, 0x01)
> -    Field(DBG, ByteAcc, NoLock, Preserve) {
> -        DBGB,   8,
> -    }
> -
> -    /* Debug method - use this method to send output to the QEMU
> -     * BIOS debug port.  This method handles strings, integers,
> -     * and buffers.  For example: DBUG("abc") DBUG(0x123) */
> -    Method(DBUG, 1) {
> -        ToHexString(Arg0, Local0)
> -        ToBuffer(Local0, Local0)
> -        Subtract(SizeOf(Local0), 1, Local1)
> -        Store(Zero, Local2)
> -        While (LLess(Local2, Local1)) {
> -            Store(DerefOf(Index(Local0, Local2)), DBGB)
> -            Increment(Local2)
> -        }
> -        Store(0x0A, DBGB)
> -    }
> -}
> diff --git a/hw/i386/acpi-dsdt-hpet.dsl b/hw/i386/acpi-dsdt-hpet.dsl
> deleted file mode 100644
> index 44961b8..0000000
> --- a/hw/i386/acpi-dsdt-hpet.dsl
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> -
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> -
> - * You should have received a copy of the GNU General Public License along
> - * with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/****************************************************************
> - * HPET
> - ****************************************************************/
> -
> -Scope(\_SB) {
> -    Device(HPET) {
> -        Name(_HID, EISAID("PNP0103"))
> -        Name(_UID, 0)
> -        OperationRegion(HPTM, SystemMemory, 0xFED00000, 0x400)
> -        Field(HPTM, DWordAcc, Lock, Preserve) {
> -            VEND, 32,
> -            PRD, 32,
> -        }
> -        Method(_STA, 0, NotSerialized) {
> -            Store(VEND, Local0)
> -            Store(PRD, Local1)
> -            ShiftRight(Local0, 16, Local0)
> -            If (LOr(LEqual(Local0, 0), LEqual(Local0, 0xffff))) {
> -                Return (0x0)
> -            }
> -            If (LOr(LEqual(Local1, 0), LGreater(Local1, 100000000))) {
> -                Return (0x0)
> -            }
> -            Return (0x0F)
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            Memory32Fixed(ReadOnly,
> -                0xFED00000,         // Address Base
> -                0x00000400,         // Address Length
> -                )
> -        })
> -    }
> -}
> diff --git a/hw/i386/acpi-dsdt-isa.dsl b/hw/i386/acpi-dsdt-isa.dsl
> deleted file mode 100644
> index a8851b0..0000000
> --- a/hw/i386/acpi-dsdt-isa.dsl
> +++ /dev/null
> @@ -1,132 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> -
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> -
> - * You should have received a copy of the GNU General Public License along
> - * with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/* Common legacy ISA style devices. */
> -Scope(\_SB.PCI0.ISA) {
> -
> -    Device (SMC) {
> -        Name(_HID, EisaId("APP0001"))
> -        /* _STA will be patched to 0x0B if AppleSMC is present */
> -        ACPI_EXTRACT_NAME_BYTE_CONST dsdt_applesmc_sta
> -        Name(_STA, 0xF0)
> -        Name(_CRS, ResourceTemplate () {
> -            IO (Decode16, 0x0300, 0x0300, 0x01, 0x20)
> -            IRQNoFlags() { 6 }
> -        })
> -    }
> -
> -    Device(RTC) {
> -        Name(_HID, EisaId("PNP0B00"))
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x0070, 0x0070, 0x10, 0x02)
> -            IRQNoFlags() { 8 }
> -            IO(Decode16, 0x0072, 0x0072, 0x02, 0x06)
> -        })
> -    }
> -
> -    Device(KBD) {
> -        Name(_HID, EisaId("PNP0303"))
> -        Method(_STA, 0, NotSerialized) {
> -            Return (0x0f)
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x0060, 0x0060, 0x01, 0x01)
> -            IO(Decode16, 0x0064, 0x0064, 0x01, 0x01)
> -            IRQNoFlags() { 1 }
> -        })
> -    }
> -
> -    Device(MOU) {
> -        Name(_HID, EisaId("PNP0F13"))
> -        Method(_STA, 0, NotSerialized) {
> -            Return (0x0f)
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IRQNoFlags() { 12 }
> -        })
> -    }
> -
> -    External(FDEN)
> -    Device(FDC0) {
> -        Name(_HID, EisaId("PNP0700"))
> -        Method(_STA, 0, NotSerialized) {
> -            Store(FDEN, Local0)
> -            If (LEqual(Local0, 0)) {
> -                Return (0x00)
> -            } Else {
> -                Return (0x0F)
> -            }
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
> -            IO(Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
> -            IRQNoFlags() { 6 }
> -            DMA(Compatibility, NotBusMaster, Transfer8) { 2 }
> -        })
> -    }
> -
> -    External(LPEN)
> -    Device(LPT) {
> -        Name(_HID, EisaId("PNP0400"))
> -        Method(_STA, 0, NotSerialized) {
> -            Store(LPEN, Local0)
> -            If (LEqual(Local0, 0)) {
> -                Return (0x00)
> -            } Else {
> -                Return (0x0F)
> -            }
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x0378, 0x0378, 0x08, 0x08)
> -            IRQNoFlags() { 7 }
> -        })
> -    }
> -
> -    External(CAEN)
> -    Device(COM1) {
> -        Name(_HID, EisaId("PNP0501"))
> -        Name(_UID, 0x01)
> -        Method(_STA, 0, NotSerialized) {
> -            Store(CAEN, Local0)
> -            If (LEqual(Local0, 0)) {
> -                Return (0x00)
> -            } Else {
> -                Return (0x0F)
> -            }
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
> -            IRQNoFlags() { 4 }
> -        })
> -    }
> -
> -    External(CBEN)
> -    Device(COM2) {
> -        Name(_HID, EisaId("PNP0501"))
> -        Name(_UID, 0x02)
> -        Method(_STA, 0, NotSerialized) {
> -            Store(CBEN, Local0)
> -            If (LEqual(Local0, 0)) {
> -                Return (0x00)
> -            } Else {
> -                Return (0x0F)
> -            }
> -        }
> -        Name(_CRS, ResourceTemplate() {
> -            IO(Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
> -            IRQNoFlags() { 3 }
> -        })
> -    }
> -}
> diff --git a/hw/i386/acpi-dsdt-mem-hotplug.dsl b/hw/i386/acpi-dsdt-mem-hotplug.dsl
> deleted file mode 100644
> index 2a36c47..0000000
> --- a/hw/i386/acpi-dsdt-mem-hotplug.dsl
> +++ /dev/null
> @@ -1,176 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> -
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> -
> - * You should have received a copy of the GNU General Public License along
> - * with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -    External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
> -
> -    Scope(\_SB.PCI0) {
> -        Device(MEMORY_HOTPLUG_DEVICE) {
> -            Name(_HID, "PNP0A06")
> -            Name(_UID, "Memory hotplug resources")
> -            External(MEMORY_SLOTS_NUMBER, IntObj)
> -
> -            /* Memory hotplug IO registers */
> -            OperationRegion(MEMORY_HOTPLUG_IO_REGION, SystemIO,
> -                            ACPI_MEMORY_HOTPLUG_BASE,
> -                            ACPI_MEMORY_HOTPLUG_IO_LEN)
> -
> -            Name(_CRS, ResourceTemplate() {
> -                IO(Decode16, ACPI_MEMORY_HOTPLUG_BASE, ACPI_MEMORY_HOTPLUG_BASE,
> -                   0, ACPI_MEMORY_HOTPLUG_IO_LEN, IO)
> -            })
> -
> -            Method(_STA, 0) {
> -                If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> -                    Return(0x0)
> -                }
> -                /* present, functioning, decoding, not shown in UI */
> -                Return(0xB)
> -            }
> -
> -            Field(MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
> -                MEMORY_SLOT_ADDR_LOW, 32,  // read only
> -                MEMORY_SLOT_ADDR_HIGH, 32, // read only
> -                MEMORY_SLOT_SIZE_LOW, 32,  // read only
> -                MEMORY_SLOT_SIZE_HIGH, 32, // read only
> -                MEMORY_SLOT_PROXIMITY, 32, // read only
> -            }
> -            Field(MEMORY_HOTPLUG_IO_REGION, ByteAcc, NoLock, Preserve) {
> -                Offset(20),
> -                MEMORY_SLOT_ENABLED,  1, // 1 if enabled, read only
> -                MEMORY_SLOT_INSERT_EVENT, 1, // (read) 1 if has a insert event. (write) 1 to clear event
> -            }
> -
> -            Mutex (MEMORY_SLOT_LOCK, 0)
> -            Field (MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock, Preserve) {
> -                MEMORY_SLOT_SLECTOR, 32,  // DIMM selector, write only
> -                MEMORY_SLOT_OST_EVENT, 32,  // _OST event code, write only
> -                MEMORY_SLOT_OST_STATUS, 32,  // _OST status code, write only
> -            }
> -
> -            Method(MEMORY_SLOT_SCAN_METHOD, 0) {
> -                If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> -                     Return(Zero)
> -                }
> -
> -                Store(Zero, Local0) // Mem devs iterrator
> -                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> -                while (LLess(Local0, MEMORY_SLOTS_NUMBER)) {
> -                    Store(Local0, MEMORY_SLOT_SLECTOR) // select Local0 DIMM
> -                    If (LEqual(MEMORY_SLOT_INSERT_EVENT, One)) { // Memory device needs check
> -                        MEMORY_SLOT_NOTIFY_METHOD(Local0, 1)
> -                        Store(1, MEMORY_SLOT_INSERT_EVENT)
> -                    }
> -                    // TODO: handle memory eject request
> -                    Add(Local0, One, Local0) // goto next DIMM
> -                }
> -                Release(MEMORY_SLOT_LOCK)
> -                Return(One)
> -            }
> -
> -            Method(MEMORY_SLOT_STATUS_METHOD, 1) {
> -                Store(Zero, Local0)
> -
> -                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> -                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> -
> -                If (LEqual(MEMORY_SLOT_ENABLED, One)) {
> -                    Store(0xF, Local0)
> -                }
> -
> -                Release(MEMORY_SLOT_LOCK)
> -                Return(Local0)
> -            }
> -
> -            Method(MEMORY_SLOT_CRS_METHOD, 1, Serialized) {
> -                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> -                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> -
> -                Name(MR64, ResourceTemplate() {
> -                    QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
> -                    Cacheable, ReadWrite,
> -                    0x0000000000000000,        // Address Space Granularity
> -                    0x0000000000000000,        // Address Range Minimum
> -                    0xFFFFFFFFFFFFFFFE,        // Address Range Maximum
> -                    0x0000000000000000,        // Address Translation Offset
> -                    0xFFFFFFFFFFFFFFFF,        // Address Length
> -                    ,, MW64, AddressRangeMemory, TypeStatic)
> -                })
> -
> -                CreateDWordField(MR64, 14, MINL)
> -                CreateDWordField(MR64, 18, MINH)
> -                CreateDWordField(MR64, 38, LENL)
> -                CreateDWordField(MR64, 42, LENH)
> -                CreateDWordField(MR64, 22, MAXL)
> -                CreateDWordField(MR64, 26, MAXH)
> -
> -                Store(MEMORY_SLOT_ADDR_HIGH, MINH)
> -                Store(MEMORY_SLOT_ADDR_LOW, MINL)
> -                Store(MEMORY_SLOT_SIZE_HIGH, LENH)
> -                Store(MEMORY_SLOT_SIZE_LOW, LENL)
> -
> -                // 64-bit math: MAX = MIN + LEN - 1
> -                Add(MINL, LENL, MAXL)
> -                Add(MINH, LENH, MAXH)
> -                If (LLess(MAXL, MINL)) {
> -                    Add(MAXH, One, MAXH)
> -                }
> -                If (LLess(MAXL, One)) {
> -                    Subtract(MAXH, One, MAXH)
> -                }
> -                Subtract(MAXL, One, MAXL)
> -
> -                If (LEqual(MAXH, Zero)){
> -                    Name(MR32, ResourceTemplate() {
> -                        DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed,
> -                        Cacheable, ReadWrite,
> -                        0x00000000,        // Address Space Granularity
> -                        0x00000000,        // Address Range Minimum
> -                        0xFFFFFFFE,        // Address Range Maximum
> -                        0x00000000,        // Address Translation Offset
> -                        0xFFFFFFFF,        // Address Length
> -                        ,, MW32, AddressRangeMemory, TypeStatic)
> -                    })
> -                    CreateDWordField(MR32, MW32._MIN, MIN)
> -                    CreateDWordField(MR32, MW32._MAX, MAX)
> -                    CreateDWordField(MR32, MW32._LEN, LEN)
> -                    Store(MINL, MIN)
> -                    Store(MAXL, MAX)
> -                    Store(LENL, LEN)
> -
> -                    Release(MEMORY_SLOT_LOCK)
> -                    Return(MR32)
> -                }
> -
> -                Release(MEMORY_SLOT_LOCK)
> -                Return(MR64)
> -            }
> -
> -            Method(MEMORY_SLOT_PROXIMITY_METHOD, 1) {
> -                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> -                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> -                Store(MEMORY_SLOT_PROXIMITY, Local0)
> -                Release(MEMORY_SLOT_LOCK)
> -                Return(Local0)
> -            }
> -
> -            Method(MEMORY_SLOT_OST_METHOD, 4) {
> -                Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> -                Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) // select DIMM
> -                Store(Arg1, MEMORY_SLOT_OST_EVENT)
> -                Store(Arg2, MEMORY_SLOT_OST_STATUS)
> -                Release(MEMORY_SLOT_LOCK)
> -            }
> -        } // Device()
> -    } // Scope()
> -- 
> 1.8.3.1
> 
> 

  reply	other threads:[~2015-01-19 15:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-24 16:07 [Qemu-devel] [PATCH v2 0/4] acpi: move common parts of the SSDT to the DSDT (and preview of things to come) Paolo Bonzini
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 1/4] pc: append ssdt-misc.dsl to the DSDT Paolo Bonzini
2015-01-19 15:15   ` Igor Mammedov
2015-01-19 15:41     ` Paolo Bonzini
2015-01-19 17:14       ` Igor Mammedov
2015-01-19 17:26         ` Paolo Bonzini
2015-01-19 19:29           ` Michael S. Tsirkin
2015-01-19 19:33             ` Michael S. Tsirkin
2015-01-19 19:57               ` Paolo Bonzini
2015-01-19 21:27                 ` Michael S. Tsirkin
2015-01-20  9:59             ` Igor Mammedov
2015-01-20 10:34               ` Paolo Bonzini
2015-01-20 10:35               ` Michael S. Tsirkin
2015-01-20 12:41                 ` Igor Mammedov
2015-01-20 12:56                   ` Michael S. Tsirkin
2015-01-19 15:31   ` Michael S. Tsirkin
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 2/4] pc: rename ssdt-misc to dsdt-common Paolo Bonzini
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 3/4] pc: move common parts of the DSDT " Paolo Bonzini
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 4/4] pc: merge DSDT common parts into acpi-dsdt-common.dsl Paolo Bonzini
2015-01-19 15:26   ` Michael S. Tsirkin [this message]
2015-01-19 15:33     ` Paolo Bonzini
2015-01-19 15:38       ` Michael S. Tsirkin
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 5/4] pc: introduce new ACPI table sizing algorithm Paolo Bonzini
2015-01-19 15:33   ` Michael S. Tsirkin
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 6/4] pc: clean up pre-2.1 compatibility code Paolo Bonzini
2014-12-24 16:07 ` [Qemu-devel] [PATCH v2 7/4] pc: go back to smaller ACPI tables Paolo Bonzini
2015-01-19 15:36   ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150119152623.GC5240@redhat.com \
    --to=mst@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.