qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 4/4] pc: merge DSDT common parts into acpi-ds


From: Michael S. Tsirkin
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

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

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 via email to

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