|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 02/21] acpi: Prevent GPL-only code from seeping into non-GPL binaries
Some code (specifically, introduced by commit 801d469ad ("[HVM] ACPI
support patch 3 of 4: ACPI _PRT table.")) has only been licensed under
GPLv2. We want to prevent this code from showing up in non-GPL
binaries which might become possible after we make ACPI builder code
available to users other than hvmloader.
There are two pieces that we need to be careful about:
(1) A small piece of code in dsdt.asl that implements _PIC method
(2) A fragment of ASL generator in mk_dsdt.c that describes PCI
interrupt routing.
The cleanest way to deal with this seems to be taking generatedi ASL
chunk from (2), adding it to dsdt.asl and keeping dsdt.asl GPL-only.
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
---
CC: Lars Kurth <lars.kurth@xxxxxxxxxx>
---
Changes in v4:
* New in v4
Added code in new dsdt.asl is
+ Scope ( \_SB.PCI0 )
+ {
+ Name ( BUFA, ResourceTemplate() { IRQ(Level, ActiveLow, Shared) { 5,
10, 11 } } )
...
+ })
+ }
tools/firmware/hvmloader/Makefile | 4 +
tools/firmware/hvmloader/acpi/Makefile | 9 +-
tools/firmware/hvmloader/acpi/dsdt.asl | 461 ----------------
tools/firmware/hvmloader/acpi/gpl/COPYING | 5 +
tools/firmware/hvmloader/acpi/gpl/dsdt.asl | 846 +++++++++++++++++++++++++++++
tools/firmware/hvmloader/acpi/mk_dsdt.c | 68 +--
6 files changed, 862 insertions(+), 531 deletions(-)
delete mode 100644 tools/firmware/hvmloader/acpi/dsdt.asl
create mode 100644 tools/firmware/hvmloader/acpi/gpl/COPYING
create mode 100644 tools/firmware/hvmloader/acpi/gpl/dsdt.asl
diff --git a/tools/firmware/hvmloader/Makefile
b/tools/firmware/hvmloader/Makefile
index 9f7357f..23b0a58 100644
--- a/tools/firmware/hvmloader/Makefile
+++ b/tools/firmware/hvmloader/Makefile
@@ -65,6 +65,10 @@ ROMBIOS_ROM := $(ROMBIOS_DIR)/BIOS-bochs-latest
ROMS += $(ROMBIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) $(ETHERBOOT_ROMS)
endif
+# Certain parts of ACPI builder are GPL-only
+GPL = y
+export GPL
+
.PHONY: all
all: subdirs-all
$(MAKE) hvmloader
diff --git a/tools/firmware/hvmloader/acpi/Makefile
b/tools/firmware/hvmloader/acpi/Makefile
index 76da073..32d8c22 100644
--- a/tools/firmware/hvmloader/acpi/Makefile
+++ b/tools/firmware/hvmloader/acpi/Makefile
@@ -17,7 +17,8 @@
XEN_ROOT = $(CURDIR)/../../../..
include $(XEN_ROOT)/tools/firmware/Rules.mk
-C_SRC = build.c dsdt_anycpu.c dsdt_15cpu.c static_tables.c
dsdt_anycpu_qemu_xen.c
+C_SRC-$(GPL) = build.c dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c
+C_SRC = build.c static_tables.c $(C_SRC-y)
OBJS = $(patsubst %.c,%.o,$(C_SRC))
CFLAGS += $(CFLAGS_xeninclude)
@@ -33,16 +34,18 @@ ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
mk_dsdt: mk_dsdt.c
$(HOSTCC) $(HOSTCFLAGS) $(CFLAGS_xeninclude) -o $@ mk_dsdt.c
-dsdt_anycpu_qemu_xen.asl: dsdt.asl dsdt_acpi_info.asl mk_dsdt
+ifeq ($(GPL),y)
+dsdt_anycpu_qemu_xen.asl: gpl/dsdt.asl dsdt_acpi_info.asl mk_dsdt
awk 'NR > 1 {print s} {s=$$0}' $< > $@
cat dsdt_acpi_info.asl >> $@
./mk_dsdt --debug=$(debug) --dm-version qemu-xen >> $@
# NB. awk invocation is a portable alternative to 'head -n -1'
-dsdt_%cpu.asl: dsdt.asl dsdt_acpi_info.asl mk_dsdt
+dsdt_%cpu.asl: gpl/dsdt.asl dsdt_acpi_info.asl mk_dsdt
awk 'NR > 1 {print s} {s=$$0}' $< > $@
cat dsdt_acpi_info.asl >> $@
./mk_dsdt --debug=$(debug) --maxcpu $* >> $@
+endif
$(filter dsdt_%.c,$(C_SRC)): %.c: iasl %.asl
iasl -vs -p $* -tc $*.asl
diff --git a/tools/firmware/hvmloader/acpi/dsdt.asl
b/tools/firmware/hvmloader/acpi/dsdt.asl
deleted file mode 100644
index 4f6db79..0000000
--- a/tools/firmware/hvmloader/acpi/dsdt.asl
+++ /dev/null
@@ -1,461 +0,0 @@
-/******************************************************************************
- * DSDT for Xen with Qemu device model
- *
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope 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/>.
- */
-
-DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
-{
- Name (\PMBS, 0x0C00)
- Name (\PMLN, 0x08)
- Name (\IOB1, 0x00)
- Name (\IOL1, 0x00)
- Name (\APCB, 0xFEC00000)
- Name (\APCL, 0x00010000)
- Name (\PUID, 0x00)
-
- /* _S3 and _S4 are in separate SSDTs */
- Name (\_S5, Package (0x04)
- {
- 0x00, /* PM1a_CNT.SLP_TYP */
- 0x00, /* PM1b_CNT.SLP_TYP */
- 0x00, /* reserved */
- 0x00 /* reserved */
- })
-
- Name(PICD, 0)
- Method(_PIC, 1)
- {
- Store(Arg0, PICD)
- }
-
- Scope (\_SB)
- {
-
- /* Fix HCT test for 0x400 pci memory:
- * - need to report low 640 MB mem as motherboard resource
- */
- Device(MEM0)
- {
- Name(_HID, EISAID("PNP0C02"))
- Name(_CRS, ResourceTemplate() {
- QWordMemory(
- ResourceConsumer, PosDecode, MinFixed,
- MaxFixed, Cacheable, ReadWrite,
- 0x00000000,
- 0x00000000,
- 0x0009ffff,
- 0x00000000,
- 0x000a0000)
- })
- }
-
- Device (PCI0)
- {
- Name (_HID, EisaId ("PNP0A03"))
- Name (_UID, 0x00)
- Name (_ADR, 0x00)
- Name (_BBN, 0x00)
-
- /* Make cirrues VGA S3 suspend/resume work in Windows XP/2003 */
- Device (VGA)
- {
- Name (_ADR, 0x00020000)
-
- Method (_S1D, 0, NotSerialized)
- {
- Return (0x00)
- }
- Method (_S2D, 0, NotSerialized)
- {
- Return (0x00)
- }
- Method (_S3D, 0, NotSerialized)
- {
- Return (0x00)
- }
- }
-
- Method (_CRS, 0, NotSerialized)
- {
- Store (ResourceTemplate ()
- {
- /* bus number is from 0 - 255*/
- WordBusNumber(
- ResourceProducer, MinFixed, MaxFixed, SubDecode,
- 0x0000,
- 0x0000,
- 0x00FF,
- 0x0000,
- 0x0100)
- IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
- WordIO(
- ResourceProducer, MinFixed, MaxFixed, PosDecode,
- EntireRange,
- 0x0000,
- 0x0000,
- 0x0CF7,
- 0x0000,
- 0x0CF8)
- WordIO(
- ResourceProducer, MinFixed, MaxFixed, PosDecode,
- EntireRange,
- 0x0000,
- 0x0D00,
- 0xFFFF,
- 0x0000,
- 0xF300)
-
- /* reserve memory for pci devices */
- DWordMemory(
- ResourceProducer, PosDecode, MinFixed, MaxFixed,
- WriteCombining, ReadWrite,
- 0x00000000,
- 0x000A0000,
- 0x000BFFFF,
- 0x00000000,
- 0x00020000)
-
- DWordMemory(
- ResourceProducer, PosDecode, MinFixed, MaxFixed,
- NonCacheable, ReadWrite,
- 0x00000000,
- 0xF0000000,
- 0xF4FFFFFF,
- 0x00000000,
- 0x05000000,
- ,, _Y01)
-
- QWordMemory (
- ResourceProducer, PosDecode, MinFixed, MaxFixed,
- NonCacheable, ReadWrite,
- 0x0000000000000000,
- 0x0000000FFFFFFFF0,
- 0x0000000FFFFFFFFF,
- 0x0000000000000000,
- 0x0000000000000010,
- ,, _Y02)
-
- }, Local1)
-
- CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MIN, MMIN)
- CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MAX, MMAX)
- CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._LEN, MLEN)
-
- Store(\_SB.PMIN, MMIN)
- Store(\_SB.PLEN, MLEN)
- Add(MMIN, MLEN, MMAX)
- Subtract(MMAX, One, MMAX)
-
- /*
- * WinXP / Win2K3 blue-screen for operations on 64-bit values.
- * Therefore we need to split the 64-bit calculations needed
- * here, but different iasl versions evaluate name references
- * to integers differently:
- * Year (approximate) 2006 2008 2012
- * \_SB.PCI0._CRS._Y02 zero valid valid
- * \_SB.PCI0._CRS._Y02._MIN valid valid huge
- */
- If(LEqual(Zero, \_SB.PCI0._CRS._Y02)) {
- Subtract(\_SB.PCI0._CRS._Y02._MIN, 14, Local0)
- } Else {
- Store(\_SB.PCI0._CRS._Y02, Local0)
- }
- CreateDWordField(Local1, Add(Local0, 14), MINL)
- CreateDWordField(Local1, Add(Local0, 18), MINH)
- CreateDWordField(Local1, Add(Local0, 22), MAXL)
- CreateDWordField(Local1, Add(Local0, 26), MAXH)
- CreateDWordField(Local1, Add(Local0, 38), LENL)
- CreateDWordField(Local1, Add(Local0, 42), LENH)
-
- Store(\_SB.LMIN, MINL)
- Store(\_SB.HMIN, MINH)
- Store(\_SB.LLEN, LENL)
- Store(\_SB.HLEN, LENH)
- Add(MINL, LENL, MAXL)
- Add(MINH, LENH, MAXH)
- If(LLess(MAXL, MINL)) {
- Add(MAXH, One, MAXH)
- }
- If(LOr(MINH, LENL)) {
- If(LEqual(MAXL, 0)) {
- Subtract(MAXH, One, MAXH)
- }
- Subtract(MAXL, One, MAXL)
- }
-
- Return (Local1)
- }
-
- Device(HPET) {
- Name(_HID, EISAID("PNP0103"))
- Name(_UID, 0)
- Method (_STA, 0, NotSerialized) {
- If(LEqual(\_SB.HPET, 0)) {
- Return(0x00)
- } Else {
- Return(0x0F)
- }
- }
- Name(_CRS, ResourceTemplate() {
- DWordMemory(
- ResourceConsumer, PosDecode, MinFixed, MaxFixed,
- NonCacheable, ReadWrite,
- 0x00000000,
- 0xFED00000,
- 0xFED003FF,
- 0x00000000,
- 0x00000400 /* 1K memory: FED00000 - FED003FF */
- )
- })
- }
-
- Device (ISA)
- {
- Name (_ADR, 0x00010000) /* device 1, fn 0 */
-
- OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
- Scope(\) {
- Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) {
- PIRA, 8,
- PIRB, 8,
- PIRC, 8,
- PIRD, 8
- }
- }
- Device (SYSR)
- {
- Name (_HID, EisaId ("PNP0C02"))
- Name (_UID, 0x01)
- Name (CRS, ResourceTemplate ()
- {
- /* TODO: list hidden resources */
- IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
- IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C)
- IO (Decode16, 0x0030, 0x0030, 0x00, 0x10)
- IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
- IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
- IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
- IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
- IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
- IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
- IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
- IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
- IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
- IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C)
- IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
- IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04)
- IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10)
- IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
- })
- Method (_CRS, 0, NotSerialized)
- {
- Return (CRS)
- }
- }
-
- Device (PIC)
- {
- Name (_HID, EisaId ("PNP0000"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
- IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
- IRQNoFlags () {2}
- })
- }
-
- Device (DMA0)
- {
- Name (_HID, EisaId ("PNP0200"))
- Name (_CRS, ResourceTemplate ()
- {
- DMA (Compatibility, BusMaster, Transfer8) {4}
- IO (Decode16, 0x0000, 0x0000, 0x00, 0x10)
- IO (Decode16, 0x0081, 0x0081, 0x00, 0x03)
- IO (Decode16, 0x0087, 0x0087, 0x00, 0x01)
- IO (Decode16, 0x0089, 0x0089, 0x00, 0x03)
- IO (Decode16, 0x008F, 0x008F, 0x00, 0x01)
- IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20)
- IO (Decode16, 0x0480, 0x0480, 0x00, 0x10)
- })
- }
-
- Device (TMR)
- {
- Name (_HID, EisaId ("PNP0100"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
- IRQNoFlags () {0}
- })
- }
-
- Device (RTC)
- {
- Name (_HID, EisaId ("PNP0B00"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
- IRQNoFlags () {8}
- })
- }
-
- Device (SPKR)
- {
- Name (_HID, EisaId ("PNP0800"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
- })
- }
-
- Device (PS2M)
- {
- Name (_HID, EisaId ("PNP0F13"))
- Name (_CID, 0x130FD041)
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0F)
- }
-
- Name (_CRS, ResourceTemplate ()
- {
- IRQNoFlags () {12}
- })
- }
-
- Device (PS2K)
- {
- Name (_HID, EisaId ("PNP0303"))
- Name (_CID, 0x0B03D041)
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0F)
- }
-
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
- IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
- IRQNoFlags () {1}
- })
- }
-
- Device (FDC0)
- {
- Name (_HID, EisaId ("PNP0700"))
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0F)
- }
-
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
- IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
- IRQNoFlags () {6}
- DMA (Compatibility, NotBusMaster, Transfer8) {2}
- })
- }
-
- Device (UAR1)
- {
- Name (_HID, EisaId ("PNP0501"))
- Name (_UID, 0x01)
- Method (_STA, 0, NotSerialized)
- {
- If(LEqual(\_SB.UAR1, 0)) {
- Return(0x00)
- } Else {
- Return(0x0F)
- }
- }
-
- Name (_CRS, ResourceTemplate()
- {
- IO (Decode16, 0x03F8, 0x03F8, 8, 8)
- IRQNoFlags () {4}
- })
- }
-
- Device (UAR2)
- {
- Name (_HID, EisaId ("PNP0501"))
- Name (_UID, 0x02)
- Method (_STA, 0, NotSerialized)
- {
- If(LEqual(\_SB.UAR2, 0)) {
- Return(0x00)
- } Else {
- Return(0x0F)
- }
- }
-
- Name (_CRS, ResourceTemplate()
- {
- IO (Decode16, 0x02F8, 0x02F8, 8, 8)
- IRQNoFlags () {3}
- })
- }
-
- Device (LTP1)
- {
- Name (_HID, EisaId ("PNP0400"))
- Name (_UID, 0x02)
- Method (_STA, 0, NotSerialized)
- {
- If(LEqual(\_SB.LTP1, 0)) {
- Return(0x00)
- } Else {
- Return(0x0F)
- }
- }
-
- Name (_CRS, ResourceTemplate()
- {
- IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
- IRQNoFlags () {7}
- })
- }
-
- Device(VGID) {
- Name(_HID, EisaId ("XEN0000"))
- Name(_UID, 0x00)
- Name(_CID, "VM_Gen_Counter")
- Name(_DDN, "VM_Gen_Counter")
- Method(_STA, 0, NotSerialized)
- {
- If(LEqual(\_SB.VGIA, 0x00000000)) {
- Return(0x00)
- } Else {
- Return(0x0F)
- }
- }
- Name(PKG, Package ()
- {
- 0x00000000,
- 0x00000000
- })
- Method(ADDR, 0, NotSerialized)
- {
- Store(\_SB.VGIA, Index(PKG, 0))
- Return(PKG)
- }
- }
- }
- }
- }
-}
diff --git a/tools/firmware/hvmloader/acpi/gpl/COPYING
b/tools/firmware/hvmloader/acpi/gpl/COPYING
new file mode 100644
index 0000000..8dfdf61
--- /dev/null
+++ b/tools/firmware/hvmloader/acpi/gpl/COPYING
@@ -0,0 +1,5 @@
+Unlike files in the directory above that are licensed under GNU Lesser
+General Public License version 2.1, files here are licensed under GNU
+General Public License version 2.
+
+A copy of this license can be obtained at <http://www.gnu.org/licenses/>
\ No newline at end of file
diff --git a/tools/firmware/hvmloader/acpi/gpl/dsdt.asl
b/tools/firmware/hvmloader/acpi/gpl/dsdt.asl
new file mode 100644
index 0000000..7c5cc14
--- /dev/null
+++ b/tools/firmware/hvmloader/acpi/gpl/dsdt.asl
@@ -0,0 +1,846 @@
+/******************************************************************************
+ * DSDT for Xen with Qemu device model
+ *
+ * Copyright (c) 2004, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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/>.
+ */
+
+DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
+{
+ Name (\PMBS, 0x0C00)
+ Name (\PMLN, 0x08)
+ Name (\IOB1, 0x00)
+ Name (\IOL1, 0x00)
+ Name (\APCB, 0xFEC00000)
+ Name (\APCL, 0x00010000)
+ Name (\PUID, 0x00)
+
+ /* _S3 and _S4 are in separate SSDTs */
+ Name (\_S5, Package (0x04)
+ {
+ 0x00, /* PM1a_CNT.SLP_TYP */
+ 0x00, /* PM1b_CNT.SLP_TYP */
+ 0x00, /* reserved */
+ 0x00 /* reserved */
+ })
+
+ Name(PICD, 0)
+ Method(_PIC, 1)
+ {
+ Store(Arg0, PICD)
+ }
+
+ Scope (\_SB)
+ {
+
+ /* Fix HCT test for 0x400 pci memory:
+ * - need to report low 640 MB mem as motherboard resource
+ */
+ Device(MEM0)
+ {
+ Name(_HID, EISAID("PNP0C02"))
+ Name(_CRS, ResourceTemplate() {
+ QWordMemory(
+ ResourceConsumer, PosDecode, MinFixed,
+ MaxFixed, Cacheable, ReadWrite,
+ 0x00000000,
+ 0x00000000,
+ 0x0009ffff,
+ 0x00000000,
+ 0x000a0000)
+ })
+ }
+
+ Device (PCI0)
+ {
+ Name (_HID, EisaId ("PNP0A03"))
+ Name (_UID, 0x00)
+ Name (_ADR, 0x00)
+ Name (_BBN, 0x00)
+
+ /* Make cirrues VGA S3 suspend/resume work in Windows XP/2003 */
+ Device (VGA)
+ {
+ Name (_ADR, 0x00020000)
+
+ Method (_S1D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ Method (_S2D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ Method (_S3D, 0, NotSerialized)
+ {
+ Return (0x00)
+ }
+ }
+
+ Method (_CRS, 0, NotSerialized)
+ {
+ Store (ResourceTemplate ()
+ {
+ /* bus number is from 0 - 255*/
+ WordBusNumber(
+ ResourceProducer, MinFixed, MaxFixed, SubDecode,
+ 0x0000,
+ 0x0000,
+ 0x00FF,
+ 0x0000,
+ 0x0100)
+ IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
+ WordIO(
+ ResourceProducer, MinFixed, MaxFixed, PosDecode,
+ EntireRange,
+ 0x0000,
+ 0x0000,
+ 0x0CF7,
+ 0x0000,
+ 0x0CF8)
+ WordIO(
+ ResourceProducer, MinFixed, MaxFixed, PosDecode,
+ EntireRange,
+ 0x0000,
+ 0x0D00,
+ 0xFFFF,
+ 0x0000,
+ 0xF300)
+
+ /* reserve memory for pci devices */
+ DWordMemory(
+ ResourceProducer, PosDecode, MinFixed, MaxFixed,
+ WriteCombining, ReadWrite,
+ 0x00000000,
+ 0x000A0000,
+ 0x000BFFFF,
+ 0x00000000,
+ 0x00020000)
+
+ DWordMemory(
+ ResourceProducer, PosDecode, MinFixed, MaxFixed,
+ NonCacheable, ReadWrite,
+ 0x00000000,
+ 0xF0000000,
+ 0xF4FFFFFF,
+ 0x00000000,
+ 0x05000000,
+ ,, _Y01)
+
+ QWordMemory (
+ ResourceProducer, PosDecode, MinFixed, MaxFixed,
+ NonCacheable, ReadWrite,
+ 0x0000000000000000,
+ 0x0000000FFFFFFFF0,
+ 0x0000000FFFFFFFFF,
+ 0x0000000000000000,
+ 0x0000000000000010,
+ ,, _Y02)
+
+ }, Local1)
+
+ CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MIN, MMIN)
+ CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._MAX, MMAX)
+ CreateDWordField(Local1, \_SB.PCI0._CRS._Y01._LEN, MLEN)
+
+ Store(\_SB.PMIN, MMIN)
+ Store(\_SB.PLEN, MLEN)
+ Add(MMIN, MLEN, MMAX)
+ Subtract(MMAX, One, MMAX)
+
+ /*
+ * WinXP / Win2K3 blue-screen for operations on 64-bit values.
+ * Therefore we need to split the 64-bit calculations needed
+ * here, but different iasl versions evaluate name references
+ * to integers differently:
+ * Year (approximate) 2006 2008 2012
+ * \_SB.PCI0._CRS._Y02 zero valid valid
+ * \_SB.PCI0._CRS._Y02._MIN valid valid huge
+ */
+ If(LEqual(Zero, \_SB.PCI0._CRS._Y02)) {
+ Subtract(\_SB.PCI0._CRS._Y02._MIN, 14, Local0)
+ } Else {
+ Store(\_SB.PCI0._CRS._Y02, Local0)
+ }
+ CreateDWordField(Local1, Add(Local0, 14), MINL)
+ CreateDWordField(Local1, Add(Local0, 18), MINH)
+ CreateDWordField(Local1, Add(Local0, 22), MAXL)
+ CreateDWordField(Local1, Add(Local0, 26), MAXH)
+ CreateDWordField(Local1, Add(Local0, 38), LENL)
+ CreateDWordField(Local1, Add(Local0, 42), LENH)
+
+ Store(\_SB.LMIN, MINL)
+ Store(\_SB.HMIN, MINH)
+ Store(\_SB.LLEN, LENL)
+ Store(\_SB.HLEN, LENH)
+ Add(MINL, LENL, MAXL)
+ Add(MINH, LENH, MAXH)
+ If(LLess(MAXL, MINL)) {
+ Add(MAXH, One, MAXH)
+ }
+ If(LOr(MINH, LENL)) {
+ If(LEqual(MAXL, 0)) {
+ Subtract(MAXH, One, MAXH)
+ }
+ Subtract(MAXL, One, MAXL)
+ }
+
+ Return (Local1)
+ }
+
+ Device(HPET) {
+ Name(_HID, EISAID("PNP0103"))
+ Name(_UID, 0)
+ Method (_STA, 0, NotSerialized) {
+ If(LEqual(\_SB.HPET, 0)) {
+ Return(0x00)
+ } Else {
+ Return(0x0F)
+ }
+ }
+ Name(_CRS, ResourceTemplate() {
+ DWordMemory(
+ ResourceConsumer, PosDecode, MinFixed, MaxFixed,
+ NonCacheable, ReadWrite,
+ 0x00000000,
+ 0xFED00000,
+ 0xFED003FF,
+ 0x00000000,
+ 0x00000400 /* 1K memory: FED00000 - FED003FF */
+ )
+ })
+ }
+
+ Device (ISA)
+ {
+ Name (_ADR, 0x00010000) /* device 1, fn 0 */
+
+ OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
+ Scope(\) {
+ Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) {
+ PIRA, 8,
+ PIRB, 8,
+ PIRC, 8,
+ PIRD, 8
+ }
+ }
+ Device (SYSR)
+ {
+ Name (_HID, EisaId ("PNP0C02"))
+ Name (_UID, 0x01)
+ Name (CRS, ResourceTemplate ()
+ {
+ /* TODO: list hidden resources */
+ IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
+ IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C)
+ IO (Decode16, 0x0030, 0x0030, 0x00, 0x10)
+ IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
+ IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
+ IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
+ IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
+ IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
+ IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
+ IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
+ IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
+ IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
+ IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C)
+ IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
+ IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04)
+ IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10)
+ IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
+ })
+ Method (_CRS, 0, NotSerialized)
+ {
+ Return (CRS)
+ }
+ }
+
+ Device (PIC)
+ {
+ Name (_HID, EisaId ("PNP0000"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
+ IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
+ IRQNoFlags () {2}
+ })
+ }
+
+ Device (DMA0)
+ {
+ Name (_HID, EisaId ("PNP0200"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ DMA (Compatibility, BusMaster, Transfer8) {4}
+ IO (Decode16, 0x0000, 0x0000, 0x00, 0x10)
+ IO (Decode16, 0x0081, 0x0081, 0x00, 0x03)
+ IO (Decode16, 0x0087, 0x0087, 0x00, 0x01)
+ IO (Decode16, 0x0089, 0x0089, 0x00, 0x03)
+ IO (Decode16, 0x008F, 0x008F, 0x00, 0x01)
+ IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20)
+ IO (Decode16, 0x0480, 0x0480, 0x00, 0x10)
+ })
+ }
+
+ Device (TMR)
+ {
+ Name (_HID, EisaId ("PNP0100"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
+ IRQNoFlags () {0}
+ })
+ }
+
+ Device (RTC)
+ {
+ Name (_HID, EisaId ("PNP0B00"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
+ IRQNoFlags () {8}
+ })
+ }
+
+ Device (SPKR)
+ {
+ Name (_HID, EisaId ("PNP0800"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
+ })
+ }
+
+ Device (PS2M)
+ {
+ Name (_HID, EisaId ("PNP0F13"))
+ Name (_CID, 0x130FD041)
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+
+ Name (_CRS, ResourceTemplate ()
+ {
+ IRQNoFlags () {12}
+ })
+ }
+
+ Device (PS2K)
+ {
+ Name (_HID, EisaId ("PNP0303"))
+ Name (_CID, 0x0B03D041)
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
+ IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
+ IRQNoFlags () {1}
+ })
+ }
+
+ Device (FDC0)
+ {
+ Name (_HID, EisaId ("PNP0700"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
+ IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
+ IRQNoFlags () {6}
+ DMA (Compatibility, NotBusMaster, Transfer8) {2}
+ })
+ }
+
+ Device (UAR1)
+ {
+ Name (_HID, EisaId ("PNP0501"))
+ Name (_UID, 0x01)
+ Method (_STA, 0, NotSerialized)
+ {
+ If(LEqual(\_SB.UAR1, 0)) {
+ Return(0x00)
+ } Else {
+ Return(0x0F)
+ }
+ }
+
+ Name (_CRS, ResourceTemplate()
+ {
+ IO (Decode16, 0x03F8, 0x03F8, 8, 8)
+ IRQNoFlags () {4}
+ })
+ }
+
+ Device (UAR2)
+ {
+ Name (_HID, EisaId ("PNP0501"))
+ Name (_UID, 0x02)
+ Method (_STA, 0, NotSerialized)
+ {
+ If(LEqual(\_SB.UAR2, 0)) {
+ Return(0x00)
+ } Else {
+ Return(0x0F)
+ }
+ }
+
+ Name (_CRS, ResourceTemplate()
+ {
+ IO (Decode16, 0x02F8, 0x02F8, 8, 8)
+ IRQNoFlags () {3}
+ })
+ }
+
+ Device (LTP1)
+ {
+ Name (_HID, EisaId ("PNP0400"))
+ Name (_UID, 0x02)
+ Method (_STA, 0, NotSerialized)
+ {
+ If(LEqual(\_SB.LTP1, 0)) {
+ Return(0x00)
+ } Else {
+ Return(0x0F)
+ }
+ }
+
+ Name (_CRS, ResourceTemplate()
+ {
+ IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
+ IRQNoFlags () {7}
+ })
+ }
+
+ Device(VGID) {
+ Name(_HID, EisaId ("XEN0000"))
+ Name(_UID, 0x00)
+ Name(_CID, "VM_Gen_Counter")
+ Name(_DDN, "VM_Gen_Counter")
+ Method(_STA, 0, NotSerialized)
+ {
+ If(LEqual(\_SB.VGIA, 0x00000000)) {
+ Return(0x00)
+ } Else {
+ Return(0x0F)
+ }
+ }
+ Name(PKG, Package ()
+ {
+ 0x00000000,
+ 0x00000000
+ })
+ Method(ADDR, 0, NotSerialized)
+ {
+ Store(\_SB.VGIA, Index(PKG, 0))
+ Return(PKG)
+ }
+ }
+ }
+ }
+ }
+
+ Scope ( \_SB.PCI0 )
+ {
+ Name ( BUFA, ResourceTemplate() { IRQ(Level, ActiveLow, Shared) { 5,
10, 11 } } )
+ Name ( BUFB, Buffer() { 0x23, 0x00, 0x00, 0x18, 0x79, 0 } )
+ CreateWordField ( BUFB, 0x01, IRQV )
+ Device ( LNKA ) {
+ Name ( _HID, EISAID("PNP0C0F") )
+ Name ( _UID, 1 )
+ Method ( _STA, 0 ) {
+ If ( And(PIRA, 0x80) ) {
+ Return ( 0x09 )
+ }
+ Else {
+ Return ( 0x0B )
+ }
+ }
+ Method ( _PRS ) {
+ Return ( BUFA )
+ }
+ Method ( _DIS ) {
+ Or ( PIRA, 0x80, PIRA )
+ }
+ Method ( _CRS ) {
+ And ( PIRA, 0x0f, Local0 )
+ ShiftLeft ( 0x1, Local0, IRQV )
+ Return ( BUFB )
+ }
+ Method ( _SRS, 1 ) {
+ CreateWordField ( ARG0, 0x01, IRQ1 )
+ FindSetRightBit ( IRQ1, Local0 )
+ Decrement ( Local0 )
+ Store ( Local0, PIRA )
+ }
+ }
+ Device ( LNKB ) {
+ Name ( _HID, EISAID("PNP0C0F") )
+ Name ( _UID, 2 )
+ Method ( _STA, 0 ) {
+ If ( And(PIRB, 0x80) ) {
+ Return ( 0x09 )
+ }
+ Else {
+ Return ( 0x0B )
+ }
+ }
+ Method ( _PRS ) {
+ Return ( BUFA )
+ }
+ Method ( _DIS ) {
+ Or ( PIRB, 0x80, PIRB )
+ }
+ Method ( _CRS ) {
+ And ( PIRB, 0x0f, Local0 )
+ ShiftLeft ( 0x1, Local0, IRQV )
+ Return ( BUFB )
+ }
+ Method ( _SRS, 1 ) {
+ CreateWordField ( ARG0, 0x01, IRQ1 )
+ FindSetRightBit ( IRQ1, Local0 )
+ Decrement ( Local0 )
+ Store ( Local0, PIRB )
+ }
+ }
+ Device ( LNKC ) {
+ Name ( _HID, EISAID("PNP0C0F") )
+ Name ( _UID, 3 )
+ Method ( _STA, 0 ) {
+ If ( And(PIRC, 0x80) ) {
+ Return ( 0x09 )
+ }
+ Else {
+ Return ( 0x0B )
+ }
+ }
+ Method ( _PRS ) {
+ Return ( BUFA )
+ }
+ Method ( _DIS ) {
+ Or ( PIRC, 0x80, PIRC )
+ }
+ Method ( _CRS ) {
+ And ( PIRC, 0x0f, Local0 )
+ ShiftLeft ( 0x1, Local0, IRQV )
+ Return ( BUFB )
+ }
+ Method ( _SRS, 1 ) {
+ CreateWordField ( ARG0, 0x01, IRQ1 )
+ FindSetRightBit ( IRQ1, Local0 )
+ Decrement ( Local0 )
+ Store ( Local0, PIRC )
+ }
+ }
+ Device ( LNKD ) {
+ Name ( _HID, EISAID("PNP0C0F") )
+ Name ( _UID, 4 )
+ Method ( _STA, 0 ) {
+ If ( And(PIRD, 0x80) ) {
+ Return ( 0x09 )
+ }
+ Else {
+ Return ( 0x0B )
+ }
+ }
+ Method ( _PRS ) {
+ Return ( BUFA )
+ }
+ Method ( _DIS ) {
+ Or ( PIRD, 0x80, PIRD )
+ }
+ Method ( _CRS ) {
+ And ( PIRD, 0x0f, Local0 )
+ ShiftLeft ( 0x1, Local0, IRQV )
+ Return ( BUFB )
+ }
+ Method ( _SRS, 1 ) {
+ CreateWordField ( ARG0, 0x01, IRQ1 )
+ FindSetRightBit ( IRQ1, Local0 )
+ Decrement ( Local0 )
+ Store ( Local0, PIRD )
+ }
+ }
+ Method ( _PRT, 0 ) {
+ If ( PICD ) {
+ Return ( PRTA )
+ }
+ Return ( PRTP )
+ }
+
+ Name(PRTP, Package()
+ {
+ Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x0005ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0005ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0005ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0005ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x0006ffff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x0006ffff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x0006ffff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x0006ffff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x0007ffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x0007ffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x0007ffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x0007ffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x0008ffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x0008ffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x0008ffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x0008ffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x0009ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0009ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0009ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0009ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x000affff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x000affff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x000affff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x000affff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x000bffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x000bffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x000bffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x000bffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x000cffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x000cffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x000cffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x000cffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x000dffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x000dffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x000dffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x000dffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x000effff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x000effff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x000effff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x000effff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x000fffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x000fffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x000fffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x000fffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x0010ffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x0010ffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x0010ffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x0010ffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x0011ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0011ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0011ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0011ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x0012ffff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x0012ffff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x0012ffff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x0012ffff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x0013ffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x0013ffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x0013ffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x0013ffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x0014ffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x0014ffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x0014ffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x0014ffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x0015ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0015ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0015ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0015ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x0016ffff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x0016ffff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x0016ffff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x0016ffff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x0017ffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x0017ffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x0017ffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x0017ffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x0018ffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x0018ffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x0018ffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x0018ffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x0019ffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x0019ffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x0019ffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x0019ffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x001affff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x001affff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x001affff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x001affff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x001bffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x001bffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x001bffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x001bffff, 3, \_SB.PCI0.LNKC, 0},
+ Package(){0x001cffff, 0, \_SB.PCI0.LNKA, 0},
+ Package(){0x001cffff, 1, \_SB.PCI0.LNKB, 0},
+ Package(){0x001cffff, 2, \_SB.PCI0.LNKC, 0},
+ Package(){0x001cffff, 3, \_SB.PCI0.LNKD, 0},
+ Package(){0x001dffff, 0, \_SB.PCI0.LNKB, 0},
+ Package(){0x001dffff, 1, \_SB.PCI0.LNKC, 0},
+ Package(){0x001dffff, 2, \_SB.PCI0.LNKD, 0},
+ Package(){0x001dffff, 3, \_SB.PCI0.LNKA, 0},
+ Package(){0x001effff, 0, \_SB.PCI0.LNKC, 0},
+ Package(){0x001effff, 1, \_SB.PCI0.LNKD, 0},
+ Package(){0x001effff, 2, \_SB.PCI0.LNKA, 0},
+ Package(){0x001effff, 3, \_SB.PCI0.LNKB, 0},
+ Package(){0x001fffff, 0, \_SB.PCI0.LNKD, 0},
+ Package(){0x001fffff, 1, \_SB.PCI0.LNKA, 0},
+ Package(){0x001fffff, 2, \_SB.PCI0.LNKB, 0},
+ Package(){0x001fffff, 3, \_SB.PCI0.LNKC, 0},
+ })
+
+ Name(PRTA, Package()
+ {
+ Package(){0x0001ffff, 0, 0, 20},
+ Package(){0x0001ffff, 1, 0, 21},
+ Package(){0x0001ffff, 2, 0, 22},
+ Package(){0x0001ffff, 3, 0, 23},
+ Package(){0x0002ffff, 0, 0, 24},
+ Package(){0x0002ffff, 1, 0, 25},
+ Package(){0x0002ffff, 2, 0, 26},
+ Package(){0x0002ffff, 3, 0, 27},
+ Package(){0x0003ffff, 0, 0, 28},
+ Package(){0x0003ffff, 1, 0, 29},
+ Package(){0x0003ffff, 2, 0, 30},
+ Package(){0x0003ffff, 3, 0, 31},
+ Package(){0x0004ffff, 0, 0, 32},
+ Package(){0x0004ffff, 1, 0, 33},
+ Package(){0x0004ffff, 2, 0, 34},
+ Package(){0x0004ffff, 3, 0, 35},
+ Package(){0x0005ffff, 0, 0, 36},
+ Package(){0x0005ffff, 1, 0, 37},
+ Package(){0x0005ffff, 2, 0, 38},
+ Package(){0x0005ffff, 3, 0, 39},
+ Package(){0x0006ffff, 0, 0, 40},
+ Package(){0x0006ffff, 1, 0, 41},
+ Package(){0x0006ffff, 2, 0, 42},
+ Package(){0x0006ffff, 3, 0, 43},
+ Package(){0x0007ffff, 0, 0, 44},
+ Package(){0x0007ffff, 1, 0, 45},
+ Package(){0x0007ffff, 2, 0, 46},
+ Package(){0x0007ffff, 3, 0, 47},
+ Package(){0x0008ffff, 0, 0, 17},
+ Package(){0x0008ffff, 1, 0, 18},
+ Package(){0x0008ffff, 2, 0, 19},
+ Package(){0x0008ffff, 3, 0, 20},
+ Package(){0x0009ffff, 0, 0, 21},
+ Package(){0x0009ffff, 1, 0, 22},
+ Package(){0x0009ffff, 2, 0, 23},
+ Package(){0x0009ffff, 3, 0, 24},
+ Package(){0x000affff, 0, 0, 25},
+ Package(){0x000affff, 1, 0, 26},
+ Package(){0x000affff, 2, 0, 27},
+ Package(){0x000affff, 3, 0, 28},
+ Package(){0x000bffff, 0, 0, 29},
+ Package(){0x000bffff, 1, 0, 30},
+ Package(){0x000bffff, 2, 0, 31},
+ Package(){0x000bffff, 3, 0, 32},
+ Package(){0x000cffff, 0, 0, 33},
+ Package(){0x000cffff, 1, 0, 34},
+ Package(){0x000cffff, 2, 0, 35},
+ Package(){0x000cffff, 3, 0, 36},
+ Package(){0x000dffff, 0, 0, 37},
+ Package(){0x000dffff, 1, 0, 38},
+ Package(){0x000dffff, 2, 0, 39},
+ Package(){0x000dffff, 3, 0, 40},
+ Package(){0x000effff, 0, 0, 41},
+ Package(){0x000effff, 1, 0, 42},
+ Package(){0x000effff, 2, 0, 43},
+ Package(){0x000effff, 3, 0, 44},
+ Package(){0x000fffff, 0, 0, 45},
+ Package(){0x000fffff, 1, 0, 46},
+ Package(){0x000fffff, 2, 0, 47},
+ Package(){0x000fffff, 3, 0, 16},
+ Package(){0x0010ffff, 0, 0, 18},
+ Package(){0x0010ffff, 1, 0, 19},
+ Package(){0x0010ffff, 2, 0, 20},
+ Package(){0x0010ffff, 3, 0, 21},
+ Package(){0x0011ffff, 0, 0, 22},
+ Package(){0x0011ffff, 1, 0, 23},
+ Package(){0x0011ffff, 2, 0, 24},
+ Package(){0x0011ffff, 3, 0, 25},
+ Package(){0x0012ffff, 0, 0, 26},
+ Package(){0x0012ffff, 1, 0, 27},
+ Package(){0x0012ffff, 2, 0, 28},
+ Package(){0x0012ffff, 3, 0, 29},
+ Package(){0x0013ffff, 0, 0, 30},
+ Package(){0x0013ffff, 1, 0, 31},
+ Package(){0x0013ffff, 2, 0, 32},
+ Package(){0x0013ffff, 3, 0, 33},
+ Package(){0x0014ffff, 0, 0, 34},
+ Package(){0x0014ffff, 1, 0, 35},
+ Package(){0x0014ffff, 2, 0, 36},
+ Package(){0x0014ffff, 3, 0, 37},
+ Package(){0x0015ffff, 0, 0, 38},
+ Package(){0x0015ffff, 1, 0, 39},
+ Package(){0x0015ffff, 2, 0, 40},
+ Package(){0x0015ffff, 3, 0, 41},
+ Package(){0x0016ffff, 0, 0, 42},
+ Package(){0x0016ffff, 1, 0, 43},
+ Package(){0x0016ffff, 2, 0, 44},
+ Package(){0x0016ffff, 3, 0, 45},
+ Package(){0x0017ffff, 0, 0, 46},
+ Package(){0x0017ffff, 1, 0, 47},
+ Package(){0x0017ffff, 2, 0, 16},
+ Package(){0x0017ffff, 3, 0, 17},
+ Package(){0x0018ffff, 0, 0, 19},
+ Package(){0x0018ffff, 1, 0, 20},
+ Package(){0x0018ffff, 2, 0, 21},
+ Package(){0x0018ffff, 3, 0, 22},
+ Package(){0x0019ffff, 0, 0, 23},
+ Package(){0x0019ffff, 1, 0, 24},
+ Package(){0x0019ffff, 2, 0, 25},
+ Package(){0x0019ffff, 3, 0, 26},
+ Package(){0x001affff, 0, 0, 27},
+ Package(){0x001affff, 1, 0, 28},
+ Package(){0x001affff, 2, 0, 29},
+ Package(){0x001affff, 3, 0, 30},
+ Package(){0x001bffff, 0, 0, 31},
+ Package(){0x001bffff, 1, 0, 32},
+ Package(){0x001bffff, 2, 0, 33},
+ Package(){0x001bffff, 3, 0, 34},
+ Package(){0x001cffff, 0, 0, 35},
+ Package(){0x001cffff, 1, 0, 36},
+ Package(){0x001cffff, 2, 0, 37},
+ Package(){0x001cffff, 3, 0, 38},
+ Package(){0x001dffff, 0, 0, 39},
+ Package(){0x001dffff, 1, 0, 40},
+ Package(){0x001dffff, 2, 0, 41},
+ Package(){0x001dffff, 3, 0, 42},
+ Package(){0x001effff, 0, 0, 43},
+ Package(){0x001effff, 1, 0, 44},
+ Package(){0x001effff, 2, 0, 45},
+ Package(){0x001effff, 3, 0, 46},
+ Package(){0x001fffff, 0, 0, 47},
+ Package(){0x001fffff, 1, 0, 16},
+ Package(){0x001fffff, 2, 0, 17},
+ Package(){0x001fffff, 3, 0, 18},
+ })
+ }
+}
diff --git a/tools/firmware/hvmloader/acpi/mk_dsdt.c
b/tools/firmware/hvmloader/acpi/mk_dsdt.c
index b2ade89..7656b5d 100644
--- a/tools/firmware/hvmloader/acpi/mk_dsdt.c
+++ b/tools/firmware/hvmloader/acpi/mk_dsdt.c
@@ -91,7 +91,7 @@ static struct option options[] = {
int main(int argc, char **argv)
{
- unsigned int slot, dev, intx, link, cpu, max_cpus = HVM_MAX_VCPUS;
+ unsigned int slot, cpu, max_cpus = HVM_MAX_VCPUS;
dm_version dm_version = QEMU_XEN_TRADITIONAL;
for ( ; ; )
@@ -273,72 +273,6 @@ int main(int argc, char **argv)
}
} pop_block();
- /*** PCI-ISA link definitions ***/
- /* BUFA: List of ISA IRQs available for linking to PCI INTx. */
- stmt("Name", "BUFA, ResourceTemplate() { "
- "IRQ(Level, ActiveLow, Shared) { 5, 10, 11 } }");
- /* BUFB: IRQ descriptor for returning from link-device _CRS methods. */
- stmt("Name", "BUFB, Buffer() { "
- "0x23, 0x00, 0x00, 0x18, " /* IRQ descriptor */
- "0x79, 0 }"); /* End tag, null checksum */
- stmt("CreateWordField", "BUFB, 0x01, IRQV");
- /* Create four PCI-ISA link devices: LNKA, LNKB, LNKC, LNKD. */
- for ( link = 0; link < 4; link++ )
- {
- push_block("Device", "LNK%c", 'A'+link);
- stmt("Name", "_HID, EISAID(\"PNP0C0F\")"); /* PCI interrupt link */
- stmt("Name", "_UID, %u", link+1);
- push_block("Method", "_STA, 0");
- push_block("If", "And(PIR%c, 0x80)", 'A'+link);
- stmt("Return", "0x09");
- pop_block();
- push_block("Else", NULL);
- stmt("Return", "0x0B");
- pop_block();
- pop_block();
- push_block("Method", "_PRS");
- stmt("Return", "BUFA");
- pop_block();
- push_block("Method", "_DIS");
- stmt("Or", "PIR%c, 0x80, PIR%c", 'A'+link, 'A'+link);
- pop_block();
- push_block("Method", "_CRS");
- stmt("And", "PIR%c, 0x0f, Local0", 'A'+link);
- stmt("ShiftLeft", "0x1, Local0, IRQV");
- stmt("Return", "BUFB");
- pop_block();
- push_block("Method", "_SRS, 1");
- stmt("CreateWordField", "ARG0, 0x01, IRQ1");
- stmt("FindSetRightBit", "IRQ1, Local0");
- stmt("Decrement", "Local0");
- stmt("Store", "Local0, PIR%c", 'A'+link);
- pop_block();
- pop_block();
- }
-
- /*** PCI interrupt routing definitions***/
- /* _PRT: Method to return routing table. */
- push_block("Method", "_PRT, 0");
- push_block("If", "PICD");
- stmt("Return", "PRTA");
- pop_block();
- stmt("Return", "PRTP");
- pop_block();
- /* PRTP: PIC routing table (via ISA links). */
- printf("Name(PRTP, Package() {\n");
- for ( dev = 1; dev < 32; dev++ )
- for ( intx = 0; intx < 4; intx++ ) /* INTA-D */
- printf("Package(){0x%04xffff, %u, \\_SB.PCI0.LNK%c, 0},\n",
- dev, intx, 'A'+((dev+intx)&3));
- printf("})\n");
- /* PRTA: APIC routing table (via non-legacy IOAPIC GSIs). */
- printf("Name(PRTA, Package() {\n");
- for ( dev = 1; dev < 32; dev++ )
- for ( intx = 0; intx < 4; intx++ ) /* INTA-D */
- printf("Package(){0x%04xffff, %u, 0, %u},\n",
- dev, intx, ((dev*4+dev/8+intx)&31)+16);
- printf("})\n");
-
/*
* Each PCI hotplug slot needs at least two methods to handle
* the ACPI event:
--
1.8.3.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |